.character-select-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(10, 12, 20, 0.6);
  backdrop-filter: blur(3px);
  display: none;
  justify-content: center;
  align-items: center;
  z-index: 1000;
  font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
}

.character-select-popup {
  background: linear-gradient(145deg, #1e1e2e, #26263a);
  border: 3px solid rgba(74, 85, 104, 0.85);
  border-radius: 12px;
  box-shadow: 0 20px 50px rgba(0, 0, 0, 0.8),
    inset 0 1px 0 rgba(255, 255, 255, 0.06);
  width: 90%;
  max-width: 1000px;
  height: 85%;
  position: relative;
  padding: 30px;
  color: #e2e8f0;
  z-index: 1; /* above particles canvas */
}

.character-select-popup::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 60px;
  background: linear-gradient(90deg, #4a9eff, #6b46c1);
  border-radius: 9px 9px 0 0;
  z-index: -1;
}

.popup-header {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center; /* centers title */
  height: 60px;
  margin: -30px -30px 10px -30px; /* overlap to align with blue bar */
}

.popup-title {
  margin: 0;
  font-size: 28px;
  font-weight: bold;
  color: #ffffff;
  text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.7);
}

.close-popup {
  position: absolute;
  top: 12px;
  right: 16px;
  background: rgba(239, 68, 68, 0.8);
  border: 2px solid #ef4444;
  border-radius: 50%;
  color: white;
  font-size: 20px;
  width: 35px;
  height: 35px;
  cursor: pointer;
  transition: all 0.2s;
  display: flex;
  align-items: center;
  justify-content: center;
}

.close-popup:hover {
  background: #ef4444;
  transform: scale(1.1);
}

.characters-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 20px;
  padding: 10px;
  height: calc(100% - 80px);
  overflow-y: auto;
}

.character-card {
  background: linear-gradient(145deg, #2d3748, #4a5568);
  border: 2px solid #4a5568;
  border-radius: 8px;
  padding: 12px;
  cursor: pointer;
  transition: all 0.3s ease;
  display: flex;
  flex-direction: column;
  position: relative;
  box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3);
  overflow: hidden;
  height: fit-content;
  max-height: 360px;
}

.character-card::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, #4a9eff, #6b46c1);
  opacity: 0;
  transition: opacity 0.3s;
}

.character-card:hover {
  transform: translateY(-2px);
  border-color: #4a9eff;
  box-shadow: 0 8px 25px rgba(74, 158, 255, 0.4);
}

.character-card:hover::before {
  opacity: 1;
}

.character-card.selected {
  border-color: #10b981;
  background: linear-gradient(145deg, #065f46, #047857);
  box-shadow: 0 0 20px rgba(16, 185, 129, 0.5);
}

.character-card.selected::before {
  background: linear-gradient(90deg, #10b981, #059669);
  opacity: 1;
}

/* Locked state */
.character-card.locked {
  filter: brightness(0.9);
  border-color: #6b7280;
}
.character-card.locked .stat-fill {
  opacity: 0.5;
}
.character-card.locked .character-name,
.character-card.locked .character-description {
  color: #9ca3af;
}

/* non-blocking grey shade */
.character-card.locked::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(55, 65, 81, 0.5);
  pointer-events: none; /* allow button clicks */
  z-index: 1; /* ensure it's below the action buttons we raise */
}

/* Level badge in card corner */
.level-badge {
  position: absolute;
  top: 8px;
  right: 8px;
  width: 30px;
  height: 30px;
  object-fit: contain;
  pointer-events: none;
}

.character-header {
  display: grid;
  grid-template-columns: 96px 1fr;
  align-items: center;
  gap: 18px; /* increased gap between image and name/description */
  margin-bottom: 14px;
}

.character-image {
  width: 96px;
  height: 96px;
  object-fit: contain;
  margin-bottom: 0;
  border-radius: 8px;
  transition: all 0.3s ease;
}

/* intentionally no special border for selected image */

.character-info {
  width: 100%;
}

.character-name {
  font-size: 20px;
  font-weight: bold;
  margin: 0 0 8px 0; /* slightly more space under name */
  color: #f7fafc;
  text-transform: capitalize;
}

.character-description {
  font-size: 12px;
  color: #a0aec0;
  margin: 0;
  font-style: italic;
  line-height: 1.3;
}

.character-stats {
  font-size: 11px;
  line-height: 1.2;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 8px;
  margin-bottom: 12px;
}

.stat-section {
  background: rgba(0, 0, 0, 0.2);
  border-radius: 6px;
  padding: 8px;
  text-align: center;
  position: relative;
}

.stat-icon {
  width: 24px;
  height: 24px;
  margin: 0 auto 4px auto;
  display: block;
  opacity: 0.8;
}

.stat-section-title {
  font-weight: bold;
  color: #4a9eff;
  margin-bottom: 4px;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.stat-main-value {
  font-size: 14px;
  font-weight: bold;
  color: #f7fafc;
  margin-bottom: 4px;
}

.stat-bar {
  width: 100%;
  height: 4px;
  background: rgba(255, 255, 255, 0.1);
  border-radius: 2px;
  overflow: hidden;
  margin-bottom: 4px;
}

.stat-fill {
  height: 100%;
  border-radius: 2px;
  transition: width 0.8s ease;
}

.health-bar .stat-fill {
  background: linear-gradient(90deg, #ef4444, #f87171);
}

.attack-bar .stat-fill {
  background: linear-gradient(90deg, #f59e0b, #fbbf24);
}

.special-bar .stat-fill {
  background: linear-gradient(90deg, #8b5cf6, #a78bfa);
}

.stat-details {
  font-size: 9px;
  color: #cbd5e0;
  line-height: 1.1;
}

.select-button {
  background: linear-gradient(145deg, #4a9eff, #3182ce);
  color: white;
  border: none;
  padding: 8px 16px;
  border-radius: 6px;
  cursor: pointer;
  transition: all 0.2s;
  font-weight: 600;
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  box-shadow: 0 2px 8px rgba(74, 158, 255, 0.3);
  width: 100%;
}

.select-button:hover {
  background: linear-gradient(145deg, #3182ce, #2c5aa0);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(74, 158, 255, 0.4);
}

.select-button:disabled {
  background: linear-gradient(145deg, #10b981, #059669);
  cursor: default;
  transform: none;
}

.select-button:disabled:hover {
  transform: none;
}

.upgrade-button {
  background: linear-gradient(145deg, #f5c542, #d4a017);
  color: white;
  border: none;
  padding: 8px 16px;
  border-radius: 6px;
  cursor: pointer;
  transition: all 0.2s;
  font-weight: 600;
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  box-shadow: 0 2px 8px rgba(245, 197, 66, 0.3);
  width: 100%;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

.upgrade-button:hover {
  filter: brightness(1.06);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(245, 197, 66, 0.45);
}

.upgrade-icon {
  width: 16px;
  height: 16px;
  object-fit: contain;
}

/* Disabled/unaffordable: gray theme but still clickable */
.upgrade-button.disabled {
  background: linear-gradient(145deg, #4b5563, #374151); /* gray slate */
  color: #e5e7eb;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
}
.upgrade-button.disabled:hover {
  filter: none;
  transform: none;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
}

/* subtle gleam animation */
.gleam {
  position: relative;
  overflow: hidden;
}
.gleam::after {
  content: "";
  position: absolute;
  top: -50%;
  left: -40%;
  width: 40%;
  height: 200%;
  transform: rotate(25deg);
  background: linear-gradient(
    90deg,
    rgba(255, 255, 255, 0.3),
    rgba(255, 255, 255, 0)
  );
  animation: gleamMove 3.5s linear infinite;
}

@keyframes gleamMove {
  0% {
    left: -60%;
  }
  60% {
    left: 130%;
  }
  100% {
    left: 130%;
  }
}

.locked-button {
  background: linear-gradient(145deg, #5c79a2, #526c96);
  color: #e5e7eb;
  border: none;
  padding: 8px 16px;
  border-radius: 6px;
  font-weight: 600;
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
  width: 100%;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  position: relative;
  z-index: 2; /* sit above the grey filter */
  cursor: pointer;
}

.locked-button:hover {
  filter: brightness(1.05);
  transform: translateY(-1px);
}

.lock-icon {
  width: 16px;
  height: 16px;
  object-fit: contain;
  opacity: 0.9;
}

.button-price {
  margin-left: auto;
  padding: 2px 8px;
  border-radius: 999px;
  background: rgba(0, 0, 0, 0.25);
  border: 1px solid rgba(255, 255, 255, 0.35);
  font-weight: 800;
  color: #fff;
  text-shadow: 0 1px 1px rgba(0, 0, 0, 0.35);
}

.maxed-pill {
  width: 100%;
  text-align: center;
  padding: 8px 12px;
  border-radius: 6px;
  background: linear-gradient(145deg, #34d399, #059669);
  color: white;
  font-weight: 700;
  letter-spacing: 0.5px;
}

/* Fullscreen particle canvas inside overlay */
.particles-canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 0;
}

/* Confirmation modal */
.cs-vars,
:root {
  /* single source of truth for level badge size in dialogs */
  --cs-level-size: 80px; /* adjust this to change both badges together */
  --cs-level-wrap: calc(
    var(--cs-level-size) + 8px
  ); /* beams ring a bit larger */
}
.cs-confirm-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.55);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1100; /* above overlay */
}
.cs-confirm {
  width: 90%;
  max-width: 420px;
  background: #1f2937;
  color: #f3f4f6;
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 10px;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.6);
  padding: 16px 18px;
}
.cs-confirm-title {
  font-weight: 800;
  font-size: 18px;
  margin-bottom: 8px;
}
.cs-confirm-body p {
  margin: 6px 0;
  font-size: 14px;
  color: #e5e7eb;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.cs-price-row {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  vertical-align: middle;
}
.cs-confirm-actions {
  margin-top: 14px;
  display: flex;
  gap: 10px;
  justify-content: flex-end;
}
.cs-btn {
  padding: 8px 14px;
  border-radius: 6px;
  font-weight: 700;
  border: none;
  cursor: pointer;
}
.cs-btn.cancel {
  background: #374151;
  color: #e5e7eb;
}
.cs-btn.cancel:hover {
  filter: brightness(1.05);
}
.cs-btn.confirm {
  background: linear-gradient(145deg, #4a9eff, #3182ce);
  color: #fff;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.cs-btn.confirm:hover {
  filter: brightness(1.06);
}

.cs-currency {
  width: 18px;
  height: 18px;
  object-fit: contain;
  display: inline-block;
  vertical-align: middle;
}

/* level upgrade focus line with beams */
.cs-level-line {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  margin: 20px 0; /* larger top/bottom spacing */
}
.cs-level-img,
.cs-next-badge {
  width: var(--cs-level-size);
  height: var(--cs-level-size);
  object-fit: contain;
  filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.4));
  display: block; /* avoid baseline gaps and keep vertical centering stable */
}
.cs-arrow {
  width: 40px;
  height: 40px;
  opacity: 0.85;
}
.cs-next-wrap {
  position: relative;
  width: var(--cs-level-wrap);
  height: var(--cs-level-wrap);
  display: grid;
  place-items: center;
}
.cs-beams {
  position: absolute;
  inset: -6px;
  border-radius: 50%;
  background: repeating-conic-gradient(
    from 0deg,
    rgba(255, 255, 255, 0) 0deg 28deg,
    rgba(255, 255, 255, 0.22) 28deg 36deg
  );
  animation: csSpin 10s linear infinite; /* slower */
  filter: blur(3px) saturate(1.2);
  /* make rays appear wider toward outside */
  -webkit-mask-image: radial-gradient(
    circle,
    rgba(0, 0, 0, 0) 0 24%,
    rgba(0, 0, 0, 0.5) 62%,
    rgba(0, 0, 0, 1) 100%
  );
  mask-image: radial-gradient(
    circle,
    rgba(0, 0, 0, 0) 0 24%,
    rgba(0, 0, 0, 0.5) 62%,
    rgba(0, 0, 0, 1) 100%
  );
}
/* color themes for rays */
.cs-beams.coin {
  filter: hue-rotate(40deg) saturate(1.8) brightness(1.15);
}
.cs-beams.gem {
  filter: hue-rotate(210deg) saturate(1.8) brightness(1.1);
}
@keyframes csSpin {
  to {
    transform: rotate(360deg);
  }
}

/* character hero visual in confirm */
.cs-hero {
  position: relative;
  width: 100%;
  display: grid;
  place-items: center;
  margin-bottom: 8px;
}
.cs-hero-img {
  width: 96px;
  height: 96px;
  object-fit: contain;
  filter: drop-shadow(0 3px 6px rgba(0, 0, 0, 0.5));
}
.cs-hero-beams {
  position: absolute;
  width: 150px;
  height: 150px;
  border-radius: 50%;
  background: repeating-conic-gradient(
    from 0deg,
    rgba(255, 255, 255, 0) 0deg 28deg,
    rgba(255, 255, 255, 0.22) 28deg 36deg
  );
  animation: csSpin 14s linear infinite; /* slower */
  filter: blur(1px) saturate(1.2);
  -webkit-mask-image: radial-gradient(
    circle,
    rgba(0, 0, 0, 0) 0 20%,
    rgba(0, 0, 0, 0.5) 58%,
    rgba(0, 0, 0, 1) 100%
  );
  mask-image: radial-gradient(
    circle,
    rgba(0, 0, 0, 0) 0 20%,
    rgba(0, 0, 0, 0.5) 58%,
    rgba(0, 0, 0, 1) 100%
  );
}
.cs-hero-beams.gem {
  filter: hue-rotate(210deg) saturate(1.8) brightness(1.1);
}
.cs-hero-beams.coin {
  filter: hue-rotate(40deg) saturate(1.8) brightness(1.15);
}

/* Map legacy class to pill styling */
.maxed-button {
  width: 100%;
  text-align: center;
  padding: 8px 12px;
  box-sizing: border-box;
  border-radius: 6px;
  background: linear-gradient(145deg, #34d399, #059669);
  color: white;
  font-weight: 700;
  letter-spacing: 0.5px;
}

/* Success overlay displayed after unlock/upgrade */
.cs-card-success {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
  animation: cs-pop-in 250ms ease-out;
}
.cs-card-success.fade-out {
  animation: cs-fade-out 300ms ease-in forwards;
}
.cs-card-beams {
  position: absolute;
  width: 160px;
  height: 160px;
  border-radius: 50%;
  background: repeating-conic-gradient(
    rgba(255, 230, 150, 0) 0deg,
    rgba(255, 230, 150, 0) 8deg,
    rgba(255, 230, 150, 0.65) 12deg,
    rgba(255, 230, 150, 0.65) 20deg
  );
  mask: radial-gradient(
    circle at 50% 50%,
    rgba(0, 0, 0, 0) 0%,
    rgba(0, 0, 0, 0.8) 55%,
    rgba(0, 0, 0, 1) 100%
  );
  -webkit-mask: radial-gradient(
    circle at 50% 50%,
    rgba(0, 0, 0, 0) 0%,
    rgba(0, 0, 0, 0.8) 55%,
    rgba(0, 0, 0, 1) 100%
  );
  animation: cs-spin 6s linear infinite;
  filter: drop-shadow(0 0 10px rgba(255, 222, 96, 0.4));
}
.cs-card-beams.gem {
  filter: hue-rotate(210deg) saturate(1.2)
    drop-shadow(0 0 10px rgba(80, 180, 255, 0.5));
}
.cs-card-success-label {
  position: relative;
  z-index: 1;
  background: rgba(0, 0, 0, 0.65);
  color: #fff;
  font-weight: 700;
  padding: 6px 12px;
  border-radius: 999px;
  letter-spacing: 0.4px;
  box-shadow: 0 4px 18px rgba(0, 0, 0, 0.35);
}

@keyframes cs-pop-in {
  from {
    transform: scale(0.95);
    opacity: 0;
  }
  to {
    transform: scale(1);
    opacity: 1;
  }
}
@keyframes cs-fade-out {
  to {
    opacity: 0;
    transform: scale(1.02);
  }
}
@keyframes cs-spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

body {
  margin: 0;
  /* Use root-relative path served by Express/DevServer static from dist */
  background-image: url("/assets/lushy/lobbyBg.webp");
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  font-family: "Poppins", sans-serif;
  height: 100vh;
  overflow: hidden;
}

/* Utility */
.hidden {
  display: none !important;
}

.flex {
  display: flex;
  align-items: center;
}
h2 {
  margin-left: 10px;
}
h3 {
  margin: 0;
  font-weight: 200;
}

/* Fortnite-style navbar with gradient and glow */
#navbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  top: 0;
  height: 60px;
  padding: 5px 20px;
  box-sizing: border-box;
  background: linear-gradient(
    135deg,
    rgba(17, 17, 48, 0.95),
    rgba(8, 8, 16, 0.95)
  );
  color: white;
  border-bottom: 3px solid #00d4ff;
  box-shadow: 0 4px 20px rgba(0, 212, 255, 0.3);
  z-index: 1000;
  position: relative;
}

.button {
  padding: 5px 10px;
  border: none;
  border-radius: 5px;
  cursor: pointer;
}

.resources {
  margin-right: 20px;
  gap: 5px;
}

#party {
  height: 45px;
  background: linear-gradient(135deg, #00d4ff, #0099cc);
  border-radius: 8px;
  padding: 0px 15px;
  box-sizing: border-box;
  color: white;
  margin-left: 15px;
  cursor: pointer;
  transition: all 0.3s ease;
  border: 2px solid rgba(255, 255, 255, 0.3);
  box-shadow: 0 4px 15px rgba(0, 212, 255, 0.4);
  font-weight: 600;
}
#party:hover {
  background: linear-gradient(135deg, #0099cc, #007399);
  box-shadow: 0 6px 20px rgba(0, 212, 255, 0.6);
  transform: translateY(-2px);
}

/* Lobby area with platforms */
#lobby-area {
  position: relative;
  width: 100%;
  height: calc(100vh - 140px);
  margin-top: 20px;
}

/* Platform styling - responsive and mode-based sizing */
.platform {
  position: absolute;
  /* Remove background image from container to avoid overlap with character slot */
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0; /* ensure no space between children */
  padding-top: 10px;
  transition: all 0.3s ease;
}

/* Visual platform image placed as a separate element to stack vertically */
.platform-image {
  width: 100%;
  background-image: url("/assets/lobbyplatform.webp");
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center bottom;
  pointer-events: none;
  filter: drop-shadow(0 2px 6px rgba(0, 0, 0, 0.35));
}

/* 1v1 Mode - Much larger platforms utilizing more space */
.mode-1 .platform {
  width: min(35vw, 450px); /* Increased from 25vw, 300px */
  height: min(25vh, 200px); /* Increased from 15vh, 100px */
}

.mode-1 .platform-image {
  /* Never shrink too small; prefer viewport height but keep sensible bounds */
  height: clamp(70px, 10vh, 120px);
}

.mode-1 .platform.your-team-1 {
  left: 10%; /* Moved closer to center */
  top: 40%; /* Adjusted to use more bottom space */
  transform: translateY(-30%); /* Less centering to use bottom space */
}

.mode-1 .platform.op-team-1 {
  right: 10%; /* Moved closer to center */
  top: 40%; /* Adjusted to use more bottom space */
  transform: translateY(-30%); /* Less centering to use bottom space */
}

/* 2v2 Mode - Medium platforms positioned diagonally, bigger */
.mode-2 .platform {
  width: min(25vw, 350px); /* Increased from 18vw, 280px */
  height: min(18vh, 150px); /* Increased from 10vh, 120px */
}

.mode-2 .platform-image {
  height: clamp(60px, 8vh, 100px);
}

.mode-2 .platform.your-team-1 {
  left: 5%; /* Moved out slightly for bigger platforms */
  top: 25%; /* Adjusted to use more bottom space */
}

.mode-2 .platform.your-team-2 {
  left: 15%; /* Adjusted spacing */
  top: 50%; /* Moved down to use bottom space */
}

.mode-2 .platform.op-team-1 {
  right: 5%; /* Moved out slightly for bigger platforms */
  top: 25%; /* Adjusted to use more bottom space */
}

.mode-2 .platform.op-team-2 {
  right: 15%; /* Adjusted spacing */
  top: 50%; /* Moved down to use bottom space */
}

/* 3v3 Mode - Triangular formation with better spacing, bigger platforms */
.mode-3 .platform {
  width: min(22vw, 320px);
  height: min(18vh, 150px);
}

.mode-3 .platform-image {
  height: clamp(70px, 9vh, 120px);
}

.mode-3 .platform.your-team-1 {
  left: 3%; /* Slightly adjusted for bigger platforms */
  top: 20%; /* Moved up to use more bottom space */
}

.mode-3 .platform.your-team-2 {
  left: 12%; /* Adjusted spacing */
  top: 40%; /* Adjusted positioning */
}

.mode-3 .platform.your-team-3 {
  left: 21%; /* Adjusted spacing */
  top: 60%; /* Moved down to use bottom space */
}

.mode-3 .platform.op-team-1 {
  right: 3%; /* Slightly adjusted for bigger platforms */
  top: 20%; /* Moved up to use more bottom space */
}

.mode-3 .platform.op-team-2 {
  right: 12%; /* Adjusted spacing */
  top: 40%; /* Adjusted positioning */
}

.mode-3 .platform.op-team-3 {
  right: 21%; /* Adjusted spacing */
  top: 60%; /* Moved down to use bottom space */
}

/* VS indicator in the center */
#vs-container {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 100;
}

#vs {
  filter: drop-shadow(0 0 10px rgba(255, 255, 255, 0.8));
}

/* Character container on platforms - anchored so the character sits on the platform */
.character-slot {
  position: relative;
  width: min(8vw, 90px);
  height: min(13vh, 130px);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-end; /* push content to bottom so sprite sits on platform */
  cursor: pointer;
  transition: all 0.2s ease;
  margin-top: 0;
  /* No gap between character and platform; status will overlap the seam */
  margin-bottom: 0;
  border-radius: 8px;
  padding: 5px 5px 0px 5px;
  /* Ensure sprite stays at top regardless of platform size */
  min-height: 80px;
}

.character-slot.player-display {
  border: 2px solid #00d4ff;
  border-radius: 8px;
  background: linear-gradient(
    135deg,
    rgba(0, 212, 255, 0.15),
    rgba(0, 153, 204, 0.15)
  );
  box-shadow: 0 0 15px rgba(0, 212, 255, 0.4);
}

.character-slot.op-display {
  border: 2px solid #ff4757;
  border-radius: 8px;
  background: linear-gradient(
    135deg,
    rgba(255, 71, 87, 0.15),
    rgba(220, 56, 56, 0.15)
  );
  box-shadow: 0 0 15px rgba(255, 71, 87, 0.4);
}

/* Character sprite - responsive sizing, anchored to bottom */
.character-sprite {
  width: min(7vw, 90px);
  height: min(7vw, 100px);
  margin-top: auto; /* push sprite to bottom within the slot */
  margin-bottom: 0;
  filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.5));
  object-fit: contain;
  flex-shrink: 0; /* Prevent shrinking */
}

.switch-character {
  position: absolute;
  right: 2px;
  top: 2px;
  width: 20px;
  height: 20px;
  background-color: #a7e90e;
  border-radius: 5px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.2s ease;
}

.random {
  width: 60px;
  height: 60px;
  margin-bottom: 10px;
}

/* Username above character - positioned relative to sprite at top */
.username {
  position: absolute;
  top: -25px; /* Positioned above the sprite */
  left: 50%;
  transform: translateX(-50%);
  font-size: min(1.2vw, 11px);
  font-weight: 600;
  color: white;
  text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  z-index: 10; /* Ensure it appears above platform */
}

.username.op-player {
  color: #fff7f4;
}

/* Status indicator - overlaps seam between character and platform */
.status {
  position: absolute;
  bottom: -10px; /* Slight overlap into platform image */
  left: 50%;
  transform: translateX(-50%);
  font-size: min(1vw, 9px);
  font-weight: 600;
  padding: 1px 4px;
  border-radius: 3px;
  white-space: nowrap;
  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8);
  z-index: 50;
}

.status.ready {
  background: linear-gradient(135deg, #26b662, #5aaf2c);
  color: white;
}

.status.online {
  /* Distinct from ready: calming blue/cyan */
  background: linear-gradient(135deg, #1e90ff, #00bcd4);
  color: white;
}

.status.not-ready {
  background: linear-gradient(135deg, #ff4757, #ff3742);
  color: white;
}

.status.invite {
  background: linear-gradient(135deg, #ffa502, #ff6348);
  color: white;
  cursor: pointer;
}

/* Fortnite-style bottom UI */
#bottom-bar {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  height: 70px;
  background: linear-gradient(
    135deg,
    rgba(20, 20, 50, 0.3),
    rgba(40, 40, 80, 0.3)
  );
  box-shadow: 0 -4px 20px rgba(0, 212, 255, 0.3);
  backdrop-filter: blur(8px);
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0 30px;
  z-index: 1000;
}

/* Scope dropdown baseline styles to the bottom bar only */
#bottom-bar select.dropdown {
  border-radius: 8px;
  border: 2px solid rgba(255, 255, 255, 0.3);
  padding: 12px 20px;
  font-size: 16px;
  font-weight: 600;
  font-family: "Poppins", sans-serif;
  cursor: pointer;
  outline: none;
  transition: all 0.3s ease;
  box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3);
  color: #ffffff;
  /* Remove native arrow and add a consistent chevron */
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background-repeat: no-repeat;
  background-position: right 12px center;
  background-size: 14px 14px;
  padding-right: 42px; /* space for chevron */
  color-scheme: dark; /* hint UA to use dark popups */
}

/* Custom chevron using an inline SVG (white) */
#bottom-bar #character,
#bottom-bar #mode,
#bottom-bar #map {
  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="%23ffffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"/></svg>');
}

/* Improve readability in the native popup list */
#bottom-bar select.dropdown option {
  background-color: rgba(18, 22, 40, 0.98);
  color: #f5f7ff;
}
/* Selected option background tint per dropdown (best-effort; UA-dependent) */
#bottom-bar #character option:checked {
  background-color: rgba(61, 129, 177, 0.85);
}
#bottom-bar #mode option:checked {
  background-color: rgba(88, 178, 55, 0.85);
}
#bottom-bar #map option:checked {
  background-color: rgba(206, 150, 53, 0.85);
}

/* Hide default arrow in legacy IE */
#bottom-bar select.dropdown::-ms-expand {
  display: none;
}

/* Consistent focus ring behavior within the bottom bar */
#bottom-bar select.dropdown:focus {
  border-color: rgba(255, 255, 255, 0.6);
  box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.15), 0 4px 15px rgba(0, 0, 0, 0.3);
}

#bottom-bar #character {
  background: linear-gradient(135deg, #4da1dc, #3d81b1);
  color: white;
}
#bottom-bar #character:hover {
  background: linear-gradient(135deg, #3d81b1, #2d6191);
  box-shadow: 0 6px 20px rgba(77, 161, 220, 0.4);
}
#bottom-bar #character:focus {
  border-color: #4da1dc;
  box-shadow: 0 0 0 2px rgba(77, 161, 220, 0.35),
    0 6px 20px rgba(77, 161, 220, 0.4);
}

#bottom-bar #mode {
  background: linear-gradient(135deg, #49d15d, #58b237);
  color: white;
}
#bottom-bar #mode:hover {
  background: linear-gradient(135deg, #58b237, #48a227);
  box-shadow: 0 6px 20px rgba(73, 209, 93, 0.4);
}
#bottom-bar #mode:focus {
  border-color: #49d15d;
  box-shadow: 0 0 0 2px rgba(73, 209, 93, 0.35),
    0 6px 20px rgba(73, 209, 93, 0.4);
}

#bottom-bar #map {
  background: linear-gradient(135deg, #ce9635, #9f9814);
  color: rgb(255, 255, 255);
}
#bottom-bar #map:hover {
  background: linear-gradient(135deg, #9f9814, #8f8804);
  box-shadow: 0 6px 20px rgba(206, 150, 53, 0.4);
}
#bottom-bar #map:focus {
  border-color: #ce9635;
  box-shadow: 0 0 0 2px rgba(206, 150, 53, 0.35),
    0 6px 20px rgba(206, 150, 53, 0.4);
}

.dropdown-group {
  display: flex;
  gap: 15px;
}

#ready {
  background: linear-gradient(135deg, #eac809, #d4b000);
  border-radius: 8px;
  border: 2px solid rgba(255, 255, 255, 0.3);
  padding: 13px 35px;
  font-size: 18px;
  font-weight: 700;
  font-family: "Poppins", sans-serif;
  cursor: pointer;
  transition: all 0.3s ease;
  color: white;
  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
  box-shadow: 0 4px 15px rgba(234, 200, 9, 0.4);
}
#ready:hover {
  background: linear-gradient(135deg, #d4b000, #c4a000);
  box-shadow: 0 6px 20px rgba(234, 200, 9, 0.6);
}

/* Cancel (red) visual state for Ready button */
#ready.cancel {
  background: linear-gradient(135deg, #ff4757, #dc3545);
  box-shadow: 0 4px 15px rgba(255, 71, 87, 0.45);
}
#ready.cancel:hover {
  background: linear-gradient(135deg, #dc3545, #c82333);
  box-shadow: 0 6px 20px rgba(255, 71, 87, 0.65);
}

#username-text {
  margin-right: 10px;
}

.account {
  height: 35px;
  background: linear-gradient(135deg, #9aad44, #829e1c);
  border-radius: 8px;
  padding: 0px 15px;
  box-sizing: border-box;
  color: white;
  margin-left: 10px;
  cursor: pointer;
  transition: all 0.3s ease;
  border: 2px solid rgba(255, 255, 255, 0.3);
  font-weight: 400;
}
.account:hover {
  background: linear-gradient(135deg, #bb773c, #a2642a);
}

.party-button {
  position: fixed;
  top: 80px;
  left: 20px;
  background: linear-gradient(135deg, #6947ff, #8e35dc);
  width: 100px;
  height: 45px;
  border-radius: 8px;
  display: flex;
  justify-content: center;
  align-items: center;
  border: 2px solid rgba(255, 255, 255, 0.3);
  cursor: pointer;
  color: white;
  font-weight: 600;
  z-index: 1;
  transition: all 0.3s ease;
  box-shadow: 0 4px 15px rgba(255, 71, 87, 0.4);
}
.party-button:hover {
  background: linear-gradient(135deg, #7356f7, #9e50e3);
  box-shadow: 0 6px 20px rgba(255, 71, 87, 0.6);
  transform: translateY(-2px);
}

/* Drag and drop visual feedback - less obnoxious */
.platform.drag-over {
  filter: brightness(1.2) drop-shadow(0 0 10px #ffff00);
}

/* Empty slot styling - more subtle */
.character-slot.empty {
  border: 2px dashed rgba(255, 255, 255, 0.4);
  background: rgba(255, 255, 255, 0.05);
}

/* Party invite popup styling with higher z-index */
.party-popup {
  position: absolute;
  padding: 8px 12px;
  color: white;
  border-radius: 6px;
  background: linear-gradient(135deg, #2f2f2f, #1f1f1f);
  border: 1px solid rgba(255, 255, 255, 0.2);
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5);
  z-index: 10000;
  font-size: 12px;
  white-space: nowrap;
  backdrop-filter: blur(10px);
}

#your-slot-1:hover {
  background-color: #5a5a5a1c;
}
#your-slot-1:hover .switch-character {
  transform: rotate(-10deg);
}

/* Responsive adjustments for smaller screens */
@media (max-width: 768px) {
  .mode-1 .platform {
    width: min(40vw, 340px);
    height: min(20vh, 170px);
  }

  .mode-2 .platform {
    width: min(30vw, 250px);
    height: min(15vh, 120px);
  }

  .mode-2 .platform.your-team-2,
  .mode-2 .platform.op-team-2 {
    top: 55%;
  }

  .mode-3 .platform {
    width: min(27vw, 220px);
    height: min(14vh, 110px);
  }

  .mode-3 .platform.your-team-2,
  .mode-3 .platform.op-team-2 {
    top: 45%;
  }

  .mode-3 .platform.your-team-3,
  .mode-3 .platform.op-team-3 {
    top: 65%;
  }

  .character-slot {
    width: min(12vw, 80px);
    height: min(15vh, 100px);
    min-height: 70px;
    margin-bottom: 0;
  }

  .character-sprite {
    width: max(8vw, 50px);
    height: max(8vw, 50px);
  }
}

@media (max-width: 480px) {
  .mode-1 .platform {
    width: min(45vw, 250px);
    height: min(18vh, 120px);
  }

  .mode-2 .platform {
    width: min(35vw, 200px);
    height: min(14vh, 100px);
  }

  .mode-3 .platform {
    width: min(32vw, 170px);
    height: min(13vh, 90px);
  }

  .character-slot {
    width: min(15vw, 70px);
    height: min(18vh, 90px);
    min-height: 60px;
    margin-bottom: 0;
  }

  .character-sprite {
    width: min(10vw, 40px);
    height: min(10vw, 40px);
  }

  .username {
    font-size: min(2vw, 10px);
    top: -20px;
  }

  .status {
    font-size: min(1.5vw, 8px);
    bottom: -8px;
  }
}

/* Matchmaking Overlay */
.mm-overlay {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
}

.mm-bg {
  position: absolute;
  inset: 0;
  overflow: hidden;
  background: linear-gradient(
    120deg,
    rgba(18, 22, 40, 0.67),
    rgba(10, 12, 22, 0.7)
  );
}
.mm-bg::before {
  content: "";
  position: absolute;
  top: -50%;
  left: -50%;
  width: 200%;
  height: 200%;
  background: radial-gradient(
    ellipse at center,
    rgba(0, 212, 255, 0.5) 0%,
    rgba(0, 212, 255, 0.5) 40%,
    transparent 70%
  );
  transform: rotate(25deg);
  animation: beamPulse 6s ease-in-out infinite;
  pointer-events: none; /* don’t block clicks */
}

@keyframes beamPulse {
  0% {
    opacity: 0;
    transform: rotate(25deg) scale(0.8);
  }
  40% {
    opacity: 0.6;
    transform: rotate(25deg) scale(1);
  }
  60% {
    opacity: 0.6;
    transform: rotate(25deg) scale(1);
  }
  100% {
    opacity: 0;
    transform: rotate(25deg) scale(1.2);
  }
}

.mm-card {
  position: relative;
  width: 95vw;
  height: 90vh;
  padding: 28px;
  display: flex;
  flex-direction: column;
  align-items: center; /* centers the grid block itself */
  background: linear-gradient(
    135deg,
    rgba(24, 28, 48, 0.85),
    rgba(16, 18, 30, 0.85)
  );
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 16px;
  box-shadow: 0 10px 40px rgba(0, 0, 0, 0.45),
    0 0 0 1px rgba(0, 212, 255, 0.15) inset;
  color: #e8f2ff;
  backdrop-filter: blur(10px);
  animation: pulse 2.2s ease-in-out infinite;
}

.mm-heading {
  margin: 0;
  font-size: clamp(20px, 10vw, 80px);
  font-weight: 800;
  letter-spacing: 0.3px;
  text-align: center;
  text-shadow: 0 2px 10px rgba(0, 212, 255, 0.3);
}

.mm-progress {
  display: grid;
  grid-template-columns: 1fr;
  justify-items: center;
  gap: 6px;
  margin-bottom: 14px;
}
.mm-label {
  font-size: clamp(14px, 3vw, 24px);
  opacity: 0.9;
}

.mm-label::after {
  content: "";
  animation: dots 2s steps(4, end) infinite;
}

@keyframes dots {
  0% {
    content: "";
  }
  25% {
    content: ".";
  }
  50% {
    content: "..";
  }
  75% {
    content: "...";
  }
  100% {
    content: "";
  }
}
.mm-count {
  font-size: clamp(28px, 5vw, 46px);
  font-weight: 800;
  letter-spacing: 1px;
  margin-bottom: 10px;
}

.mm-info {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
  width: 80%;
}

.mm-meta {
  display: flex;
  gap: 18px;
  justify-content: center;
  flex-wrap: wrap;
  padding: 12px 14px;
  border-radius: 10px;
  background: linear-gradient(
    135deg,
    rgba(255, 255, 255, 0.06),
    rgba(255, 255, 255, 0.02)
  );
  border: 1px solid rgba(255, 255, 255, 0.08);
}

.mm-players-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 180px));
  gap: 12px;

  /* center the grid as a whole and the items within each cell */
  justify-content: center; /* centers the columns block */
  justify-items: center; /* centers item content inside each cell */

  /* optional: keep it from getting too wide */
  width: 100%;
  max-width: 960px;
  margin: 0 auto;
}

.mm-player {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 100%;
  box-sizing: border-box;
  padding: 10px 8px;
  border-radius: 10px;
  background: linear-gradient(
    135deg,
    rgba(255, 255, 255, 0.06),
    rgba(255, 255, 255, 0.02)
  );
  border: 1px solid rgba(255, 255, 255, 0.1);
  min-height: 140px;
  animation: popIn 260ms ease-out;
}

.mm-player img {
  width: 60px;
  height: 60px;
  object-fit: contain;
  filter: drop-shadow(0 2px 6px rgba(0, 0, 0, 0.5));
}

.mm-player .mm-name {
  margin-top: 8px;
  font-size: 12px;
  font-weight: 600;
  color: #f0f6ff;
}

.mm-player.placeholder {
  opacity: 0.5;
  border-style: dashed;
  border-color: rgba(255, 255, 255, 0.2);
}

.mm-actions {
  position: absolute;
  bottom: 28px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  justify-content: center;
}

.mm-btn {
  background: linear-gradient(135deg, #eac809, #d4b000);
  border-radius: 8px;
  border: 2px solid rgba(255, 255, 255, 0.3);
  padding: 12px 88px;
  font-size: 16px;
  font-weight: 700;
  font-family: "Poppins", sans-serif;
  cursor: pointer;
  transition: all 0.3s ease;
  color: white;
  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
  box-shadow: 0 4px 15px rgba(234, 200, 9, 0.35);
}

.mm-btn:hover {
  background: linear-gradient(135deg, #d4b000, #c4a000);
  box-shadow: 0 6px 20px rgba(234, 200, 9, 0.55);
}

/* Animations */
@keyframes popIn {
  0% {
    transform: scale(0.9);
    opacity: 0;
  }
  100% {
    transform: scale(1);
    opacity: 1;
  }
}
@keyframes pulse {
  0% {
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.45),
      0 0 0 1px rgba(0, 212, 255, 0.1) inset;
  }
  50% {
    box-shadow: 0 12px 46px rgba(0, 0, 0, 0.5),
      0 0 0 1px rgba(0, 212, 255, 0.2) inset;
  }
  100% {
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.45),
      0 0 0 1px rgba(0, 212, 255, 0.1) inset;
  }
}

/* Container: stack top-center with gap */
.sonner-wrap {
  position: fixed;
  top: 12px;
  left: 0;
  right: 0;
  display: flex;
  flex-direction: column;        /* stack vertically */
  align-items: center;           /* center horizontally */
  gap: 10px;                     /* space between toasts */
  pointer-events: none;
  z-index: 9999;
}

/* Toast card */
.sonner {
  pointer-events: auto;
  max-width: 500px;              /* a bit wider so inline layout breathes */
  width: calc(100% - 24px);
  box-sizing: border-box;
  background: #22202e;
  color: #fff;
  border: 1px solid rgba(255,255,255,.1);
  border-radius: 12px;
  box-shadow: 0 8px 24px rgba(0,0,0,.25);
  overflow: hidden;
  opacity: 0;
  transform: translateY(-16px);  /* enter from top */
  transition: transform .28s ease, opacity .28s ease;
  will-change: transform, opacity;
  font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;

  /* Inline layout: content + actions in one row */
  display: grid;
  grid-template-columns: 1fr auto;    /* text takes remaining space, button fits */
  grid-auto-rows: auto;
}

/* Entered state */
.sonner.show {
  opacity: 1;
  transform: translateY(0);
}

/* Inline content area */
.sonner__content {
  padding: 12px 12px 10px 14px;
  min-width: 0;                 /* allow text to wrap instead of overflowing */
}

.sonner__hdr {
  font-weight: 700;
  line-height: 1.1;
  margin-top: 3px;
  font-size: 15px;
  word-break: break-word;
}

.sonner__msg {
  margin: 4px 0 0 0;
  line-height: 1.35;
  font-size: 13px;
  word-break: break-word;
  white-space: pre-wrap;
}

/* Actions: inline with text, same row, aligned center */
.sonner__actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  padding: 8px 12px 8px 8px;
}

.sonner__btn {
  appearance: none;
  border: 0;
  border-radius: 10px;
  background: #fff;
  color: #111;
  padding: 8px 12px;
  font-weight: 600;
  font-size: 13px;
  cursor: pointer;
}
.sonner__btn:hover { filter: brightness(.95); }

/* Progress bar spans full width on its own row */
.sonner__progress {
  grid-column: 1 / -1;
  height: 3px;
  background: linear-gradient(to right, #18a0fb, #53f);
  width: 100%;
}
.sonner__progress.anim {
  animation: sonnerBar var(--sonner-duration, 5s) linear forwards;
}
@keyframes sonnerBar { from { width: 100% } to { width: 0 } }

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .sonner { transition: none; }
  .sonner__progress.anim { animation: none; }
}


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