/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/App.vue?vue&type=style&index=0&id=1b20717c&scoped=true&lang=css ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

/* Puedes agregar estilos aquí si es necesario */

/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/views/Level1.vue?vue&type=style&index=0&id=4b420e9d&scoped=true&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.custom-gradient[data-v-4b420e9d] {
  background: #01013d;
  background: linear-gradient(115deg, rgba(1, 1, 61, 1) 0%, rgba(26, 7, 89, 1) 35%, rgba(99, 19, 173, 1) 100%);
}
.bottom-right-help[data-v-4b420e9d] {
  position: absolute;
  bottom: 24px;
  right: 24px;
}
.help-icon[data-v-4b420e9d] {
  width: 48px;
  height: 48px;
  background: rgba(0, 0, 0, 0.4);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  color: white;
  cursor: pointer;
  transition: all 0.2s ease;
}
.help-icon[data-v-4b420e9d]:hover {
  background: rgba(0, 0, 0, 0.6);
}
.bottom-left-bulb[data-v-4b420e9d] {
  position: absolute;
  bottom: 24px;
  left: 24px;
}
.bulb-icon[data-v-4b420e9d] {
  width: 32px;
  height: 32px;
  background: rgba(255, 255, 255, 0.1);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  cursor: pointer;
  transition: all 0.2s ease;
  opacity: 0.7;
}
.bulb-icon[data-v-4b420e9d]:hover {
  background: rgba(255, 255, 255, 0.2);
  opacity: 1;
}
.dev-controls[data-v-4b420e9d] {
  position: absolute;
  top: 20px;
  right: 20px;
  display: flex;
  gap: 8px;
  background: rgba(0, 0, 0, 0.5);
  padding: 8px;
  border-radius: 8px;
}
.dev-btn[data-v-4b420e9d] {
  padding: 6px 12px;
  background: rgba(255, 255, 255, 0.2);
  border: none;
  color: white;
  border-radius: 4px;
  cursor: pointer;
  font-size: 12px;
}
.dev-btn[data-v-4b420e9d]:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
.level-select[data-v-4b420e9d] {
  background: rgba(0, 0, 0, 0.5);
  color: white;
  border: 1px solid rgba(255, 255, 255, 0.3);
  border-radius: 4px;
  padding: 6px;
  font-size: 12px;
}
.solution-panel[data-v-4b420e9d] {
  position: absolute;
  bottom: 80px;
  left: 20px;
  background: rgba(0, 0, 0, 0.8);
  padding: 12px;
  border-radius: 8px;
  max-width: 280px;
  font-size: 12px;
}
@media (max-width: 768px) {
.text-9xl[data-v-4b420e9d] {
    font-size: 6rem;
}
div[class*="max-w-lg"][data-v-4b420e9d] {
    margin: 0 16px;
    padding: 24px;
}
.text-2xl[data-v-4b420e9d] {
    font-size: 1.25rem;
}
.text-lg[data-v-4b420e9d] {
    font-size: 1rem;
}
}

/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/views/Level2.vue?vue&type=style&index=0&id=4b50261e&scoped=true&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.custom-green-gradient[data-v-4b50261e] {
  background: #0b2101;
  background: linear-gradient(115deg, rgba(11, 33, 1, 1) 0%, rgba(10, 105, 32, 1) 35%, rgba(10, 145, 17, 1) 100%);
}

/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/views/Level3.vue?vue&type=style&index=0&id=4b5e3d9f&scoped=true&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.custom-amber-gradient[data-v-4b5e3d9f] {
  background: #452600;
  background: linear-gradient(115deg, rgba(69, 38, 0, 1) 0%, rgba(105, 59, 3, 1) 35%, rgba(219, 139, 18, 1) 100%);
}

/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/views/Level4.vue?vue&type=style&index=0&id=4b6c5520&scoped=true&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.custom-purple-gradient[data-v-4b6c5520] {
  background: #2e003b;
  background: linear-gradient(
    115deg,
    rgba(46, 0, 59, 1) 0%,
    rgba(128, 17, 145, 1) 35%,
    rgba(160, 91, 171, 1) 100%
  );
}
.select-text[data-v-4b6c5520] {
  user-select: text;
  -webkit-user-select: text;
  -moz-user-select: text;
  -ms-user-select: text;
}
.text-slate-800.opacity-5[data-v-4b6c5520]::selection {
  background-color: rgba(148, 163, 184, 0.3);
  color: rgb(148, 163, 184);
}
@media (max-width: 768px) {
.text-6xl[data-v-4b6c5520] {
    font-size: 4rem;
}
.max-w-2xl[data-v-4b6c5520] {
    margin: 0 16px;
}
}

/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/views/Level5.vue?vue&type=style&index=0&id=4b7a6ca1&scoped=true&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.custom-purple-gradient[data-v-4b7a6ca1] {
  background: #020024;
  background: linear-gradient(133deg, rgba(2, 0, 36, 1) 0%, rgba(9, 9, 121, 1) 51%, rgba(11, 55, 133, 1) 100%);
}
.select-text[data-v-4b7a6ca1] {
  user-select: text;
  -webkit-user-select: text;
  -moz-user-select: text;
  -ms-user-select: text;
}
.text-slate-800.opacity-5[data-v-4b7a6ca1]::selection {
  background-color: rgba(148, 163, 184, 0.3);
  color: rgb(148, 163, 184);
}
@media (max-width: 768px) {
.text-6xl[data-v-4b7a6ca1] {
    font-size: 4rem;
}
.max-w-2xl[data-v-4b7a6ca1] {
    margin: 0 16px;
}
}

/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/views/Level6.vue?vue&type=style&index=0&id=4b888422&scoped=true&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.container[data-v-4b888422] {
  padding: 24px;
}
.table-title[data-v-4b888422] {
  font-size: 24px;
  margin: 0;
}
.custom-purple-gradient[data-v-4b888422] {
background: #001d24;
background: linear-gradient(133deg, rgba(0, 29, 36, 1) 0%, rgba(9, 65, 121, 1) 51%, rgba(11, 105, 133, 1) 100%);
}
.select-text[data-v-4b888422] {
  user-select: text;
  -webkit-user-select: text;
  -moz-user-select: text;
  -ms-user-select: text;
}
.text-slate-800.opacity-5[data-v-4b888422]::selection {
  background-color: rgba(148, 163, 184, 0.3);
  color: rgb(148, 163, 184);
}
@media (max-width: 768px) {
.text-6xl[data-v-4b888422] {
    font-size: 4rem;
}
.max-w-2xl[data-v-4b888422] {
    margin: 0 16px;
}
}

/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/views/Level7.vue?vue&type=style&index=0&id=4b969ba3&scoped=true&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.container[data-v-4b969ba3] {
  padding: 24px;
}
.table-title[data-v-4b969ba3] {
  font-size: 24px;
  margin: 0;
}
.custom-purple-gradient[data-v-4b969ba3] {
  background: #240900;
  background: linear-gradient(133deg, rgba(36, 9, 0, 1) 0%, rgba(56, 23, 4, 1) 51%, rgba(171, 52, 12, 1) 100%);
}
.select-text[data-v-4b969ba3] {
  user-select: text;
  -webkit-user-select: text;
  -moz-user-select: text;
  -ms-user-select: text;
}
.text-slate-800.opacity-5[data-v-4b969ba3]::selection {
  background-color: rgba(148, 163, 184, 0.3);
  color: rgb(148, 163, 184);
}
@media (max-width: 768px) {
.text-6xl[data-v-4b969ba3] {
    font-size: 4rem;
}
.max-w-2xl[data-v-4b969ba3] {
    margin: 0 16px;
}
}

/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/views/Level8.vue?vue&type=style&index=0&id=4ba4b324&scoped=true&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.nivel8-gradient[data-v-4ba4b324] {
  background: #002405;
  background: linear-gradient(133deg, rgba(0, 36, 5, 1) 0%, rgba(4, 56, 42, 1) 51%, rgba(12, 171, 102, 1) 100%);
}

/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/views/Level11.vue?vue&type=style&index=0&id=1d0956e4&scoped=true&lang=css ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.container[data-v-1d0956e4] {
  padding: 24px;
}
.table-title[data-v-1d0956e4] {
  font-size: 24px;
  margin: 0;
}
.custom-purple-gradient[data-v-1d0956e4] {
  background: #01013d;
  background: linear-gradient(115deg, rgba(1, 1, 61, 1) 0%, rgba(26, 7, 89, 1) 35%, rgba(99, 19, 173, 1) 100%);
}
.select-text[data-v-1d0956e4] {
  user-select: text;
  -webkit-user-select: text;
  -moz-user-select: text;
  -ms-user-select: text;
}
.text-slate-800.opacity-5[data-v-1d0956e4]::selection {
  background-color: rgba(148, 163, 184, 0.3);
  color: rgb(148, 163, 184);
}
@media (max-width: 768px) {
.text-6xl[data-v-1d0956e4] {
    font-size: 4rem;
}
.max-w-2xl[data-v-1d0956e4] {
    margin: 0 16px;
}
}
@keyframes jump-1d0956e4 {
0%, 100% {
    transform: translateY(0);
}
50% {
    transform: translateY(-20px);
}
}
.animate-jump-1[data-v-1d0956e4] {
  animation: jump-1d0956e4 0.88s ease-in-out infinite;
}
.animate-jump-2[data-v-1d0956e4] {
  animation: jump-1d0956e4 0.88s ease-in-out infinite;
  animation-delay: 0.2s; /* Retraso del segundo icono */
}
.animate-jump-3[data-v-1d0956e4] {
  animation: jump-1d0956e4 0.88s ease-in-out infinite;
  animation-delay: 0.4s; /* Retraso del tercer icono */
}

/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/views/Loader.vue?vue&type=style&index=0&id=53318683&scoped=true&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.custom-amber-gradient[data-v-53318683] {
  background: #452600;
  background: linear-gradient(115deg, rgba(69, 38, 0, 1) 0%, rgba(105, 59, 3, 1) 35%, rgba(219, 139, 18, 1) 100%);
}

/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/components/sidebars/DashboardSidebar.vue?vue&type=style&index=0&id=11988c16&scoped=true&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

/* Icono e inline layout */
.icon[data-v-11988c16] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  margin-right: 10px;
}
.position-sidebar-options[data-v-11988c16] {
  align-items: center;
  display: flex;
  width: auto;
}
.label[data-v-11988c16] {
  font-size: 16px;
  font-weight: 500;
  display: inline-block;
  white-space: normal;
  width: auto;
}

/* Borde y border-radius en el Sider */
.bordered-sider[data-v-11988c16] {
  border: 1px solid #e5e7eb;         /* gris claro */
  border-radius: 12px;                /* esquinas redondeadas */
  overflow: hidden;                   /* recorta contenidos para que sigan el radio */
  margin: 8px;                        /* respiración visual opcional */
  background: #ffffff;                /* ayuda a que el borde se vea */
}

/* Ajustes de tamaño */
.ant-layout-sider[data-v-11988c16] {
  width: auto;
  min-width: 250px;
}
.ant-layout-sider-primary[data-v-11988c16] {
  transition: width 0.2s ease-in-out;
}

/* (Opcional) un sutil borde a cada item al hover/focus para reforzar el estilo */
[data-v-11988c16] .ant-menu-item {
  border-radius: 8px;
}
[data-v-11988c16] .ant-menu-item:hover,[data-v-11988c16] .ant-menu-item-active,[data-v-11988c16] .ant-menu-item-selected {
  background: rgba(58, 65, 111, 0.06);
}

/* Botón de sesión */
.logout-button-container[data-v-11988c16] {
  text-align: center;
  margin-top: 20px;
}
@media (max-width: 768px) {
.position-sidebar-options[data-v-11988c16] { font-size: 14px;
}
.ant-layout-sider[data-v-11988c16] { min-width: 200px;
}
}

/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/layouts/Dashboard.vue?vue&type=style&index=0&id=22f3ed6f&scoped=true&lang=css ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

/* Header */
.header[data-v-22f3ed6f] {
  background: #ffffff !important;
  display: flex;
  align-items: center;
  padding: 0 16px;
  justify-content: space-between;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); /* Sutil sombra para el header */
}

/* Botón del menú en móvil */
.menu-button[data-v-22f3ed6f] {
  font-size: 24px;
  display: none;
}

/* Breadcrumb */
.breadcrumb[data-v-22f3ed6f] {
  margin: 16px;
}

/* Contenido */
.content-box[data-v-22f3ed6f] {
  padding: 24px;
  background: #fff;
  min-height: 360px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); /* Sombra suave alrededor */
}

/* Información del usuario en el header */
.user-info[data-v-22f3ed6f] {
  display: flex;
  align-items: center;
  font-size: 16px;
  font-weight: 500;
}
.user-name[data-v-22f3ed6f] {
  margin-left: 16px;
}

/* Overlay solo en móvil */
@media (max-width: 768px) {
.menu-button[data-v-22f3ed6f] {
    display: block;
}
.sidebar-overlay[data-v-22f3ed6f] {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.5);
    z-index: 998;
}
}

/*!*******************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./assets/styles/app.css ***!
  \*******************************************************************************************************************************************************************/
/*! tailwindcss v4.1.13 | MIT License | https://tailwindcss.com */
@layer properties;
@layer theme, base, components, utilities;
@layer theme {
  :root, :host {
    --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
      "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
    --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
      "Courier New", monospace;
    --color-red-400: oklch(70.4% 0.191 22.216);
    --color-red-500: oklch(63.7% 0.237 25.331);
    --color-red-600: oklch(57.7% 0.245 27.325);
    --color-red-700: oklch(50.5% 0.213 27.518);
    --color-red-900: oklch(39.6% 0.141 25.723);
    --color-orange-300: oklch(83.7% 0.128 66.29);
    --color-orange-400: oklch(75% 0.183 55.934);
    --color-orange-500: oklch(70.5% 0.213 47.604);
    --color-orange-600: oklch(64.6% 0.222 41.116);
    --color-orange-700: oklch(55.3% 0.195 38.402);
    --color-amber-200: oklch(92.4% 0.12 95.746);
    --color-amber-300: oklch(87.9% 0.169 91.605);
    --color-amber-500: oklch(76.9% 0.188 70.08);
    --color-amber-700: oklch(55.5% 0.163 48.998);
    --color-amber-800: oklch(47.3% 0.137 46.201);
    --color-yellow-200: oklch(94.5% 0.129 101.54);
    --color-yellow-400: oklch(85.2% 0.199 91.936);
    --color-yellow-500: oklch(79.5% 0.184 86.047);
    --color-yellow-600: oklch(68.1% 0.162 75.834);
    --color-yellow-800: oklch(47.6% 0.114 61.907);
    --color-green-200: oklch(92.5% 0.084 155.995);
    --color-green-300: oklch(87.1% 0.15 154.449);
    --color-green-400: oklch(79.2% 0.209 151.711);
    --color-green-500: oklch(72.3% 0.219 149.579);
    --color-green-600: oklch(62.7% 0.194 149.214);
    --color-green-700: oklch(52.7% 0.154 150.069);
    --color-green-800: oklch(44.8% 0.119 151.328);
    --color-green-950: oklch(26.6% 0.065 152.934);
    --color-emerald-300: oklch(84.5% 0.143 164.978);
    --color-emerald-400: oklch(76.5% 0.177 163.223);
    --color-emerald-950: oklch(26.2% 0.051 172.552);
    --color-teal-200: oklch(91% 0.096 180.426);
    --color-teal-300: oklch(85.5% 0.138 181.071);
    --color-teal-400: oklch(77.7% 0.152 181.912);
    --color-teal-500: oklch(70.4% 0.14 182.503);
    --color-cyan-200: oklch(91.7% 0.08 205.041);
    --color-cyan-300: oklch(86.5% 0.127 207.078);
    --color-cyan-400: oklch(78.9% 0.154 211.53);
    --color-cyan-600: oklch(60.9% 0.126 221.723);
    --color-cyan-700: oklch(52% 0.105 223.128);
    --color-cyan-800: oklch(45% 0.085 224.283);
    --color-cyan-900: oklch(39.8% 0.07 227.392);
    --color-blue-200: oklch(88.2% 0.059 254.128);
    --color-blue-300: oklch(80.9% 0.105 251.813);
    --color-blue-400: oklch(70.7% 0.165 254.624);
    --color-blue-500: oklch(62.3% 0.214 259.815);
    --color-blue-600: oklch(54.6% 0.245 262.881);
    --color-blue-700: oklch(48.8% 0.243 264.376);
    --color-blue-800: oklch(42.4% 0.199 265.638);
    --color-indigo-600: oklch(51.1% 0.262 276.966);
    --color-indigo-700: oklch(45.7% 0.24 277.023);
    --color-indigo-800: oklch(39.8% 0.195 277.366);
    --color-violet-950: oklch(28.3% 0.141 291.089);
    --color-purple-200: oklch(90.2% 0.063 306.703);
    --color-purple-300: oklch(82.7% 0.119 306.383);
    --color-purple-400: oklch(71.4% 0.203 305.504);
    --color-purple-500: oklch(62.7% 0.265 303.9);
    --color-purple-600: oklch(55.8% 0.288 302.321);
    --color-purple-700: oklch(49.6% 0.265 301.924);
    --color-purple-950: oklch(29.1% 0.149 302.717);
    --color-fuchsia-200: oklch(90.3% 0.076 319.62);
    --color-fuchsia-400: oklch(74% 0.238 322.16);
    --color-pink-400: oklch(71.8% 0.202 349.761);
    --color-pink-700: oklch(52.5% 0.223 3.958);
    --color-pink-800: oklch(45.9% 0.187 3.815);
    --color-slate-300: oklch(86.9% 0.022 252.894);
    --color-slate-400: oklch(70.4% 0.04 256.788);
    --color-slate-500: oklch(55.4% 0.046 257.417);
    --color-slate-600: oklch(44.6% 0.043 257.281);
    --color-slate-700: oklch(37.2% 0.044 257.287);
    --color-slate-800: oklch(27.9% 0.041 260.031);
    --color-slate-900: oklch(20.8% 0.042 265.755);
    --color-slate-950: oklch(12.9% 0.042 264.695);
    --color-gray-100: oklch(96.7% 0.003 264.542);
    --color-gray-200: oklch(92.8% 0.006 264.531);
    --color-gray-300: oklch(87.2% 0.01 258.338);
    --color-gray-400: oklch(70.7% 0.022 261.325);
    --color-gray-500: oklch(55.1% 0.027 264.364);
    --color-gray-600: oklch(44.6% 0.03 256.802);
    --color-gray-700: oklch(37.3% 0.034 259.733);
    --color-gray-800: oklch(27.8% 0.033 256.848);
    --color-gray-900: oklch(21% 0.034 264.665);
    --color-black: #000;
    --color-white: #fff;
    --spacing: 0.25rem;
    --container-xs: 20rem;
    --container-sm: 24rem;
    --container-md: 28rem;
    --container-lg: 32rem;
    --container-2xl: 42rem;
    --container-3xl: 48rem;
    --container-4xl: 56rem;
    --container-5xl: 64rem;
    --container-6xl: 72rem;
    --text-xs: 0.75rem;
    --text-xs--line-height: calc(1 / 0.75);
    --text-sm: 0.875rem;
    --text-sm--line-height: calc(1.25 / 0.875);
    --text-base: 1rem;
    --text-base--line-height: calc(1.5 / 1);
    --text-lg: 1.125rem;
    --text-lg--line-height: calc(1.75 / 1.125);
    --text-xl: 1.25rem;
    --text-xl--line-height: calc(1.75 / 1.25);
    --text-2xl: 1.5rem;
    --text-2xl--line-height: calc(2 / 1.5);
    --text-3xl: 1.875rem;
    --text-3xl--line-height: calc(2.25 / 1.875);
    --text-4xl: 2.25rem;
    --text-4xl--line-height: calc(2.5 / 2.25);
    --text-5xl: 3rem;
    --text-5xl--line-height: 1;
    --text-6xl: 3.75rem;
    --text-6xl--line-height: 1;
    --text-7xl: 4.5rem;
    --text-7xl--line-height: 1;
    --text-9xl: 8rem;
    --text-9xl--line-height: 1;
    --font-weight-light: 300;
    --font-weight-medium: 500;
    --font-weight-semibold: 600;
    --font-weight-bold: 700;
    --leading-relaxed: 1.625;
    --radius-md: 0.375rem;
    --radius-lg: 0.5rem;
    --radius-xl: 0.75rem;
    --radius-2xl: 1rem;
    --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
    --animate-spin: spin 1s linear infinite;
    --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
    --animate-bounce: bounce 1s infinite;
    --blur-sm: 8px;
    --default-transition-duration: 150ms;
    --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    --default-font-family: var(--font-sans);
    --default-mono-font-family: var(--font-mono);
  }
}
@layer base {
  *, ::after, ::before, ::backdrop, ::file-selector-button {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
    border: 0 solid;
  }
  html, :host {
    line-height: 1.5;
    -webkit-text-size-adjust: 100%;
    tab-size: 4;
    font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");
    font-feature-settings: var(--default-font-feature-settings, normal);
    font-variation-settings: var(--default-font-variation-settings, normal);
    -webkit-tap-highlight-color: transparent;
  }
  hr {
    height: 0;
    color: inherit;
    border-top-width: 1px;
  }
  abbr:where([title]) {
    -webkit-text-decoration: underline dotted;
    text-decoration: underline dotted;
  }
  h1, h2, h3, h4, h5, h6 {
    font-size: inherit;
    font-weight: inherit;
  }
  a {
    color: inherit;
    -webkit-text-decoration: inherit;
    text-decoration: inherit;
  }
  b, strong {
    font-weight: bolder;
  }
  code, kbd, samp, pre {
    font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);
    font-feature-settings: var(--default-mono-font-feature-settings, normal);
    font-variation-settings: var(--default-mono-font-variation-settings, normal);
    font-size: 1em;
  }
  small {
    font-size: 80%;
  }
  sub, sup {
    font-size: 75%;
    line-height: 0;
    position: relative;
    vertical-align: baseline;
  }
  sub {
    bottom: -0.25em;
  }
  sup {
    top: -0.5em;
  }
  table {
    text-indent: 0;
    border-color: inherit;
    border-collapse: collapse;
  }
  :-moz-focusring {
    outline: auto;
  }
  progress {
    vertical-align: baseline;
  }
  summary {
    display: list-item;
  }
  ol, ul, menu {
    list-style: none;
  }
  img, svg, video, canvas, audio, iframe, embed, object {
    display: block;
    vertical-align: middle;
  }
  img, video {
    max-width: 100%;
    height: auto;
  }
  button, input, select, optgroup, textarea, ::file-selector-button {
    font: inherit;
    font-feature-settings: inherit;
    font-variation-settings: inherit;
    letter-spacing: inherit;
    color: inherit;
    border-radius: 0;
    background-color: transparent;
    opacity: 1;
  }
  :where(select:is([multiple], [size])) optgroup {
    font-weight: bolder;
  }
  :where(select:is([multiple], [size])) optgroup option {
    padding-inline-start: 20px;
  }
  ::file-selector-button {
    margin-inline-end: 4px;
  }
  ::placeholder {
    opacity: 1;
  }
  @supports (not (-webkit-appearance: -apple-pay-button))  or (contain-intrinsic-size: 1px) {
    ::placeholder {
      color: currentcolor;
      @supports (color: color-mix(in lab, red, red)) {
        color: color-mix(in oklab, currentcolor 50%, transparent);
      }
    }
  }
  textarea {
    resize: vertical;
  }
  ::-webkit-search-decoration {
    -webkit-appearance: none;
  }
  ::-webkit-date-and-time-value {
    min-height: 1lh;
    text-align: inherit;
  }
  ::-webkit-datetime-edit {
    display: inline-flex;
  }
  ::-webkit-datetime-edit-fields-wrapper {
    padding: 0;
  }
  ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {
    padding-block: 0;
  }
  ::-webkit-calendar-picker-indicator {
    line-height: 1;
  }
  :-moz-ui-invalid {
    box-shadow: none;
  }
  button, input:where([type="button"], [type="reset"], [type="submit"]), ::file-selector-button {
    appearance: button;
  }
  ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {
    height: auto;
  }
  [hidden]:where(:not([hidden="until-found"])) {
    display: none !important;
  }
}
@layer utilities {
  .pointer-events-none {
    pointer-events: none;
  }
  .absolute {
    position: absolute;
  }
  .fixed {
    position: fixed;
  }
  .relative {
    position: relative;
  }
  .static {
    position: static;
  }
  .top-0 {
    top: calc(var(--spacing) * 0);
  }
  .top-4 {
    top: calc(var(--spacing) * 4);
  }
  .top-6 {
    top: calc(var(--spacing) * 6);
  }
  .right-4 {
    right: calc(var(--spacing) * 4);
  }
  .bottom-4 {
    bottom: calc(var(--spacing) * 4);
  }
  .bottom-20 {
    bottom: calc(var(--spacing) * 20);
  }
  .left-1\/2 {
    left: calc(1/2 * 100%);
  }
  .left-4 {
    left: calc(var(--spacing) * 4);
  }
  .left-6 {
    left: calc(var(--spacing) * 6);
  }
  .z-10 {
    z-index: 10;
  }
  .container {
    width: 100%;
    @media (width >= 40rem) {
      max-width: 40rem;
    }
    @media (width >= 48rem) {
      max-width: 48rem;
    }
    @media (width >= 64rem) {
      max-width: 64rem;
    }
    @media (width >= 80rem) {
      max-width: 80rem;
    }
    @media (width >= 96rem) {
      max-width: 96rem;
    }
  }
  .mx-3 {
    margin-inline: calc(var(--spacing) * 3);
  }
  .mx-4 {
    margin-inline: calc(var(--spacing) * 4);
  }
  .mx-auto {
    margin-inline: auto;
  }
  .my-2 {
    margin-block: calc(var(--spacing) * 2);
  }
  .mt-1 {
    margin-top: calc(var(--spacing) * 1);
  }
  .mt-2 {
    margin-top: calc(var(--spacing) * 2);
  }
  .mt-4 {
    margin-top: calc(var(--spacing) * 4);
  }
  .mt-5 {
    margin-top: calc(var(--spacing) * 5);
  }
  .mt-6 {
    margin-top: calc(var(--spacing) * 6);
  }
  .mt-8 {
    margin-top: calc(var(--spacing) * 8);
  }
  .mr-2 {
    margin-right: calc(var(--spacing) * 2);
  }
  .mr-3 {
    margin-right: calc(var(--spacing) * 3);
  }
  .mb-2 {
    margin-bottom: calc(var(--spacing) * 2);
  }
  .mb-3 {
    margin-bottom: calc(var(--spacing) * 3);
  }
  .mb-4 {
    margin-bottom: calc(var(--spacing) * 4);
  }
  .mb-5 {
    margin-bottom: calc(var(--spacing) * 5);
  }
  .mb-6 {
    margin-bottom: calc(var(--spacing) * 6);
  }
  .mb-8 {
    margin-bottom: calc(var(--spacing) * 8);
  }
  .mb-16 {
    margin-bottom: calc(var(--spacing) * 16);
  }
  .ml-2 {
    margin-left: calc(var(--spacing) * 2);
  }
  .block {
    display: block;
  }
  .flex {
    display: flex;
  }
  .grid {
    display: grid;
  }
  .inline {
    display: inline;
  }
  .inline-flex {
    display: inline-flex;
  }
  .h-2 {
    height: calc(var(--spacing) * 2);
  }
  .h-3 {
    height: calc(var(--spacing) * 3);
  }
  .h-8 {
    height: calc(var(--spacing) * 8);
  }
  .h-12 {
    height: calc(var(--spacing) * 12);
  }
  .h-14 {
    height: calc(var(--spacing) * 14);
  }
  .h-16 {
    height: calc(var(--spacing) * 16);
  }
  .h-72 {
    height: calc(var(--spacing) * 72);
  }
  .h-76 {
    height: calc(var(--spacing) * 76);
  }
  .h-96 {
    height: calc(var(--spacing) * 96);
  }
  .h-full {
    height: 100%;
  }
  .h-screen {
    height: 100vh;
  }
  .min-h-\[24rem\] {
    min-height: 24rem;
  }
  .min-h-screen {
    min-height: 100vh;
  }
  .w-2 {
    width: calc(var(--spacing) * 2);
  }
  .w-3 {
    width: calc(var(--spacing) * 3);
  }
  .w-8 {
    width: calc(var(--spacing) * 8);
  }
  .w-12 {
    width: calc(var(--spacing) * 12);
  }
  .w-14 {
    width: calc(var(--spacing) * 14);
  }
  .w-16 {
    width: calc(var(--spacing) * 16);
  }
  .w-96 {
    width: calc(var(--spacing) * 96);
  }
  .w-\[720px\] {
    width: 720px;
  }
  .w-full {
    width: 100%;
  }
  .max-w-2xl {
    max-width: var(--container-2xl);
  }
  .max-w-3xl {
    max-width: var(--container-3xl);
  }
  .max-w-4xl {
    max-width: var(--container-4xl);
  }
  .max-w-5xl {
    max-width: var(--container-5xl);
  }
  .max-w-6xl {
    max-width: var(--container-6xl);
  }
  .max-w-fit {
    max-width: fit-content;
  }
  .max-w-lg {
    max-width: var(--container-lg);
  }
  .max-w-md {
    max-width: var(--container-md);
  }
  .max-w-sm {
    max-width: var(--container-sm);
  }
  .max-w-xs {
    max-width: var(--container-xs);
  }
  .min-w-3xl {
    min-width: var(--container-3xl);
  }
  .min-w-5xl {
    min-width: var(--container-5xl);
  }
  .flex-1 {
    flex: 1;
  }
  .-translate-x-1\/2 {
    --tw-translate-x: calc(calc(1/2 * 100%) * -1);
    translate: var(--tw-translate-x) var(--tw-translate-y);
  }
  .-translate-y-1\/2 {
    --tw-translate-y: calc(calc(1/2 * 100%) * -1);
    translate: var(--tw-translate-x) var(--tw-translate-y);
  }
  .transform {
    transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);
  }
  .animate-bounce {
    animation: var(--animate-bounce);
  }
  .animate-pulse {
    animation: var(--animate-pulse);
  }
  .animate-spin {
    animation: var(--animate-spin);
  }
  .cursor-help {
    cursor: help;
  }
  .cursor-not-allowed {
    cursor: not-allowed;
  }
  .cursor-pointer {
    cursor: pointer;
  }
  .resize {
    resize: both;
  }
  .grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .flex-col {
    flex-direction: column;
  }
  .items-center {
    align-items: center;
  }
  .justify-between {
    justify-content: space-between;
  }
  .justify-center {
    justify-content: center;
  }
  .gap-1 {
    gap: calc(var(--spacing) * 1);
  }
  .gap-2 {
    gap: calc(var(--spacing) * 2);
  }
  .gap-4 {
    gap: calc(var(--spacing) * 4);
  }
  .gap-5 {
    gap: calc(var(--spacing) * 5);
  }
  .gap-6 {
    gap: calc(var(--spacing) * 6);
  }
  .gap-8 {
    gap: calc(var(--spacing) * 8);
  }
  .space-y-2 {
    :where(& > :not(:last-child)) {
      --tw-space-y-reverse: 0;
      margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));
      margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));
    }
  }
  .space-y-3 {
    :where(& > :not(:last-child)) {
      --tw-space-y-reverse: 0;
      margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));
      margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));
    }
  }
  .space-y-4 {
    :where(& > :not(:last-child)) {
      --tw-space-y-reverse: 0;
      margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));
      margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));
    }
  }
  .space-y-5 {
    :where(& > :not(:last-child)) {
      --tw-space-y-reverse: 0;
      margin-block-start: calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));
      margin-block-end: calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)));
    }
  }
  .space-y-6 {
    :where(& > :not(:last-child)) {
      --tw-space-y-reverse: 0;
      margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));
      margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));
    }
  }
  .space-y-8 {
    :where(& > :not(:last-child)) {
      --tw-space-y-reverse: 0;
      margin-block-start: calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));
      margin-block-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)));
    }
  }
  .gap-x-10 {
    column-gap: calc(var(--spacing) * 10);
  }
  .space-x-1 {
    :where(& > :not(:last-child)) {
      --tw-space-x-reverse: 0;
      margin-inline-start: calc(calc(var(--spacing) * 1) * var(--tw-space-x-reverse));
      margin-inline-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-x-reverse)));
    }
  }
  .space-x-2 {
    :where(& > :not(:last-child)) {
      --tw-space-x-reverse: 0;
      margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));
      margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));
    }
  }
  .space-x-3 {
    :where(& > :not(:last-child)) {
      --tw-space-x-reverse: 0;
      margin-inline-start: calc(calc(var(--spacing) * 3) * var(--tw-space-x-reverse));
      margin-inline-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-x-reverse)));
    }
  }
  .space-x-8 {
    :where(& > :not(:last-child)) {
      --tw-space-x-reverse: 0;
      margin-inline-start: calc(calc(var(--spacing) * 8) * var(--tw-space-x-reverse));
      margin-inline-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-x-reverse)));
    }
  }
  .rounded {
    border-radius: 0.25rem;
  }
  .rounded-2xl {
    border-radius: var(--radius-2xl);
  }
  .rounded-full {
    border-radius: calc(infinity * 1px);
  }
  .rounded-lg {
    border-radius: var(--radius-lg);
  }
  .rounded-md {
    border-radius: var(--radius-md);
  }
  .rounded-xl {
    border-radius: var(--radius-xl);
  }
  .border {
    border-style: var(--tw-border-style);
    border-width: 1px;
  }
  .border-2 {
    border-style: var(--tw-border-style);
    border-width: 2px;
  }
  .border-4 {
    border-style: var(--tw-border-style);
    border-width: 4px;
  }
  .border-\[\#356dc7\] {
    border-color: #356dc7;
  }
  .border-\[\#bebebe\] {
    border-color: #bebebe;
  }
  .border-amber-700 {
    border-color: var(--color-amber-700);
  }
  .border-amber-800 {
    border-color: var(--color-amber-800);
  }
  .border-blue-400\/50 {
    border-color: color-mix(in srgb, oklch(70.7% 0.165 254.624) 50%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      border-color: color-mix(in oklab, var(--color-blue-400) 50%, transparent);
    }
  }
  .border-blue-500\/50 {
    border-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 50%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      border-color: color-mix(in oklab, var(--color-blue-500) 50%, transparent);
    }
  }
  .border-cyan-700 {
    border-color: var(--color-cyan-700);
  }
  .border-cyan-800 {
    border-color: var(--color-cyan-800);
  }
  .border-fuchsia-200 {
    border-color: var(--color-fuchsia-200);
  }
  .border-fuchsia-400 {
    border-color: var(--color-fuchsia-400);
  }
  .border-gray-300 {
    border-color: var(--color-gray-300);
  }
  .border-gray-500 {
    border-color: var(--color-gray-500);
  }
  .border-gray-500\/50 {
    border-color: color-mix(in srgb, oklch(55.1% 0.027 264.364) 50%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      border-color: color-mix(in oklab, var(--color-gray-500) 50%, transparent);
    }
  }
  .border-green-400 {
    border-color: var(--color-green-400);
  }
  .border-green-500\/30 {
    border-color: color-mix(in srgb, oklch(72.3% 0.219 149.579) 30%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      border-color: color-mix(in oklab, var(--color-green-500) 30%, transparent);
    }
  }
  .border-orange-500 {
    border-color: var(--color-orange-500);
  }
  .border-purple-500\/30 {
    border-color: color-mix(in srgb, oklch(62.7% 0.265 303.9) 30%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      border-color: color-mix(in oklab, var(--color-purple-500) 30%, transparent);
    }
  }
  .border-purple-500\/50 {
    border-color: color-mix(in srgb, oklch(62.7% 0.265 303.9) 50%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      border-color: color-mix(in oklab, var(--color-purple-500) 50%, transparent);
    }
  }
  .border-slate-400 {
    border-color: var(--color-slate-400);
  }
  .border-slate-600 {
    border-color: var(--color-slate-600);
  }
  .border-slate-700 {
    border-color: var(--color-slate-700);
  }
  .border-teal-300 {
    border-color: var(--color-teal-300);
  }
  .border-teal-400\/40 {
    border-color: color-mix(in srgb, oklch(77.7% 0.152 181.912) 40%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      border-color: color-mix(in oklab, var(--color-teal-400) 40%, transparent);
    }
  }
  .border-teal-400\/50 {
    border-color: color-mix(in srgb, oklch(77.7% 0.152 181.912) 50%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      border-color: color-mix(in oklab, var(--color-teal-400) 50%, transparent);
    }
  }
  .border-teal-400\/60 {
    border-color: color-mix(in srgb, oklch(77.7% 0.152 181.912) 60%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      border-color: color-mix(in oklab, var(--color-teal-400) 60%, transparent);
    }
  }
  .border-yellow-400 {
    border-color: var(--color-yellow-400);
  }
  .border-t-transparent {
    border-top-color: transparent;
  }
  .bg-\[\#0f172a\] {
    background-color: #0f172a;
  }
  .bg-\[\#1e293b\] {
    background-color: #1e293b;
  }
  .bg-black\/50 {
    background-color: color-mix(in srgb, #000 50%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-black) 50%, transparent);
    }
  }
  .bg-black\/80 {
    background-color: color-mix(in srgb, #000 80%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-black) 80%, transparent);
    }
  }
  .bg-blue-500 {
    background-color: var(--color-blue-500);
  }
  .bg-blue-600 {
    background-color: var(--color-blue-600);
  }
  .bg-gray-100 {
    background-color: var(--color-gray-100);
  }
  .bg-gray-700 {
    background-color: var(--color-gray-700);
  }
  .bg-gray-800 {
    background-color: var(--color-gray-800);
  }
  .bg-gray-900 {
    background-color: var(--color-gray-900);
  }
  .bg-green-400\/50 {
    background-color: color-mix(in srgb, oklch(79.2% 0.209 151.711) 50%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-green-400) 50%, transparent);
    }
  }
  .bg-green-500 {
    background-color: var(--color-green-500);
  }
  .bg-green-600\/80 {
    background-color: color-mix(in srgb, oklch(62.7% 0.194 149.214) 80%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-green-600) 80%, transparent);
    }
  }
  .bg-purple-400\/30 {
    background-color: color-mix(in srgb, oklch(71.4% 0.203 305.504) 30%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-purple-400) 30%, transparent);
    }
  }
  .bg-purple-400\/50 {
    background-color: color-mix(in srgb, oklch(71.4% 0.203 305.504) 50%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-purple-400) 50%, transparent);
    }
  }
  .bg-purple-500 {
    background-color: var(--color-purple-500);
  }
  .bg-red-700 {
    background-color: var(--color-red-700);
  }
  .bg-red-900 {
    background-color: var(--color-red-900);
  }
  .bg-slate-700 {
    background-color: var(--color-slate-700);
  }
  .bg-slate-700\/30 {
    background-color: color-mix(in srgb, oklch(37.2% 0.044 257.287) 30%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-slate-700) 30%, transparent);
    }
  }
  .bg-slate-700\/95 {
    background-color: color-mix(in srgb, oklch(37.2% 0.044 257.287) 95%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-slate-700) 95%, transparent);
    }
  }
  .bg-slate-800 {
    background-color: var(--color-slate-800);
  }
  .bg-slate-800\/50 {
    background-color: color-mix(in srgb, oklch(27.9% 0.041 260.031) 50%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-slate-800) 50%, transparent);
    }
  }
  .bg-slate-800\/80 {
    background-color: color-mix(in srgb, oklch(27.9% 0.041 260.031) 80%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-slate-800) 80%, transparent);
    }
  }
  .bg-slate-800\/90 {
    background-color: color-mix(in srgb, oklch(27.9% 0.041 260.031) 90%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-slate-800) 90%, transparent);
    }
  }
  .bg-slate-800\/95 {
    background-color: color-mix(in srgb, oklch(27.9% 0.041 260.031) 95%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-slate-800) 95%, transparent);
    }
  }
  .bg-slate-900 {
    background-color: var(--color-slate-900);
  }
  .bg-slate-900\/90 {
    background-color: color-mix(in srgb, oklch(20.8% 0.042 265.755) 90%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-slate-900) 90%, transparent);
    }
  }
  .bg-slate-900\/95 {
    background-color: color-mix(in srgb, oklch(20.8% 0.042 265.755) 95%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-slate-900) 95%, transparent);
    }
  }
  .bg-teal-500 {
    background-color: var(--color-teal-500);
  }
  .bg-transparent {
    background-color: transparent;
  }
  .bg-white {
    background-color: var(--color-white);
  }
  .bg-white\/10 {
    background-color: color-mix(in srgb, #fff 10%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-white) 10%, transparent);
    }
  }
  .bg-white\/20 {
    background-color: color-mix(in srgb, #fff 20%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      background-color: color-mix(in oklab, var(--color-white) 20%, transparent);
    }
  }
  .bg-gradient-to-br {
    --tw-gradient-position: to bottom right in oklab;
    background-image: linear-gradient(var(--tw-gradient-stops));
  }
  .bg-gradient-to-r {
    --tw-gradient-position: to right in oklab;
    background-image: linear-gradient(var(--tw-gradient-stops));
  }
  .from-\[\#0f172a\] {
    --tw-gradient-from: #0f172a;
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-blue-500 {
    --tw-gradient-from: var(--color-blue-500);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-blue-600 {
    --tw-gradient-from: var(--color-blue-600);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-cyan-600 {
    --tw-gradient-from: var(--color-cyan-600);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-gray-400 {
    --tw-gradient-from: var(--color-gray-400);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-green-500 {
    --tw-gradient-from: var(--color-green-500);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-green-600\/25 {
    --tw-gradient-from: color-mix(in srgb, oklch(62.7% 0.194 149.214) 25%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-gradient-from: color-mix(in oklab, var(--color-green-600) 25%, transparent);
    }
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-purple-600 {
    --tw-gradient-from: var(--color-purple-600);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-purple-600\/25 {
    --tw-gradient-from: color-mix(in srgb, oklch(55.8% 0.288 302.321) 25%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-gradient-from: color-mix(in oklab, var(--color-purple-600) 25%, transparent);
    }
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-red-600 {
    --tw-gradient-from: var(--color-red-600);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-slate-600 {
    --tw-gradient-from: var(--color-slate-600);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-slate-800 {
    --tw-gradient-from: var(--color-slate-800);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-slate-900 {
    --tw-gradient-from: var(--color-slate-900);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-slate-900\/75 {
    --tw-gradient-from: color-mix(in srgb, oklch(20.8% 0.042 265.755) 75%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-gradient-from: color-mix(in oklab, var(--color-slate-900) 75%, transparent);
    }
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-slate-950 {
    --tw-gradient-from: var(--color-slate-950);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .from-yellow-600\/25 {
    --tw-gradient-from: color-mix(in srgb, oklch(68.1% 0.162 75.834) 25%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-gradient-from: color-mix(in oklab, var(--color-yellow-600) 25%, transparent);
    }
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .via-green-950 {
    --tw-gradient-via: var(--color-green-950);
    --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
    --tw-gradient-stops: var(--tw-gradient-via-stops);
  }
  .via-violet-950 {
    --tw-gradient-via: var(--color-violet-950);
    --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
    --tw-gradient-stops: var(--tw-gradient-via-stops);
  }
  .to-\[\#0b1120\] {
    --tw-gradient-to: #0b1120;
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-blue-600 {
    --tw-gradient-to: var(--color-blue-600);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-blue-700 {
    --tw-gradient-to: var(--color-blue-700);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-cyan-900 {
    --tw-gradient-to: var(--color-cyan-900);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-emerald-950 {
    --tw-gradient-to: var(--color-emerald-950);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-gray-400 {
    --tw-gradient-to: var(--color-gray-400);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-green-700 {
    --tw-gradient-to: var(--color-green-700);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-green-800\/25 {
    --tw-gradient-to: color-mix(in srgb, oklch(44.8% 0.119 151.328) 25%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-gradient-to: color-mix(in oklab, var(--color-green-800) 25%, transparent);
    }
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-indigo-600 {
    --tw-gradient-to: var(--color-indigo-600);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-indigo-800\/25 {
    --tw-gradient-to: color-mix(in srgb, oklch(39.8% 0.195 277.366) 25%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-gradient-to: color-mix(in oklab, var(--color-indigo-800) 25%, transparent);
    }
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-orange-600 {
    --tw-gradient-to: var(--color-orange-600);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-pink-700 {
    --tw-gradient-to: var(--color-pink-700);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-purple-950 {
    --tw-gradient-to: var(--color-purple-950);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-slate-700 {
    --tw-gradient-to: var(--color-slate-700);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-slate-800\/75 {
    --tw-gradient-to: color-mix(in srgb, oklch(27.9% 0.041 260.031) 75%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-gradient-to: color-mix(in oklab, var(--color-slate-800) 75%, transparent);
    }
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-slate-900 {
    --tw-gradient-to: var(--color-slate-900);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-yellow-800\/25 {
    --tw-gradient-to: color-mix(in srgb, oklch(47.6% 0.114 61.907) 25%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-gradient-to: color-mix(in oklab, var(--color-yellow-800) 25%, transparent);
    }
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .object-cover {
    object-fit: cover;
  }
  .p-2 {
    padding: calc(var(--spacing) * 2);
  }
  .p-3 {
    padding: calc(var(--spacing) * 3);
  }
  .p-4 {
    padding: calc(var(--spacing) * 4);
  }
  .p-5 {
    padding: calc(var(--spacing) * 5);
  }
  .p-6 {
    padding: calc(var(--spacing) * 6);
  }
  .p-8 {
    padding: calc(var(--spacing) * 8);
  }
  .p-10 {
    padding: calc(var(--spacing) * 10);
  }
  .px-3 {
    padding-inline: calc(var(--spacing) * 3);
  }
  .px-4 {
    padding-inline: calc(var(--spacing) * 4);
  }
  .px-5 {
    padding-inline: calc(var(--spacing) * 5);
  }
  .px-6 {
    padding-inline: calc(var(--spacing) * 6);
  }
  .px-7 {
    padding-inline: calc(var(--spacing) * 7);
  }
  .px-8 {
    padding-inline: calc(var(--spacing) * 8);
  }
  .px-12 {
    padding-inline: calc(var(--spacing) * 12);
  }
  .px-20 {
    padding-inline: calc(var(--spacing) * 20);
  }
  .py-1 {
    padding-block: calc(var(--spacing) * 1);
  }
  .py-2 {
    padding-block: calc(var(--spacing) * 2);
  }
  .py-3 {
    padding-block: calc(var(--spacing) * 3);
  }
  .py-4 {
    padding-block: calc(var(--spacing) * 4);
  }
  .py-5 {
    padding-block: calc(var(--spacing) * 5);
  }
  .py-6 {
    padding-block: calc(var(--spacing) * 6);
  }
  .py-10 {
    padding-block: calc(var(--spacing) * 10);
  }
  .pt-8 {
    padding-top: calc(var(--spacing) * 8);
  }
  .pb-4 {
    padding-bottom: calc(var(--spacing) * 4);
  }
  .text-center {
    text-align: center;
  }
  .text-left {
    text-align: left;
  }
  .text-start {
    text-align: start;
  }
  .font-mono {
    font-family: var(--font-mono);
  }
  .text-2xl {
    font-size: var(--text-2xl);
    line-height: var(--tw-leading, var(--text-2xl--line-height));
  }
  .text-3xl {
    font-size: var(--text-3xl);
    line-height: var(--tw-leading, var(--text-3xl--line-height));
  }
  .text-4xl {
    font-size: var(--text-4xl);
    line-height: var(--tw-leading, var(--text-4xl--line-height));
  }
  .text-5xl {
    font-size: var(--text-5xl);
    line-height: var(--tw-leading, var(--text-5xl--line-height));
  }
  .text-6xl {
    font-size: var(--text-6xl);
    line-height: var(--tw-leading, var(--text-6xl--line-height));
  }
  .text-7xl {
    font-size: var(--text-7xl);
    line-height: var(--tw-leading, var(--text-7xl--line-height));
  }
  .text-9xl {
    font-size: var(--text-9xl);
    line-height: var(--tw-leading, var(--text-9xl--line-height));
  }
  .text-base {
    font-size: var(--text-base);
    line-height: var(--tw-leading, var(--text-base--line-height));
  }
  .text-lg {
    font-size: var(--text-lg);
    line-height: var(--tw-leading, var(--text-lg--line-height));
  }
  .text-sm {
    font-size: var(--text-sm);
    line-height: var(--tw-leading, var(--text-sm--line-height));
  }
  .text-xl {
    font-size: var(--text-xl);
    line-height: var(--tw-leading, var(--text-xl--line-height));
  }
  .text-xs {
    font-size: var(--text-xs);
    line-height: var(--tw-leading, var(--text-xs--line-height));
  }
  .text-\[13px\] {
    font-size: 13px;
  }
  .leading-relaxed {
    --tw-leading: var(--leading-relaxed);
    line-height: var(--leading-relaxed);
  }
  .font-bold {
    --tw-font-weight: var(--font-weight-bold);
    font-weight: var(--font-weight-bold);
  }
  .font-light {
    --tw-font-weight: var(--font-weight-light);
    font-weight: var(--font-weight-light);
  }
  .font-medium {
    --tw-font-weight: var(--font-weight-medium);
    font-weight: var(--font-weight-medium);
  }
  .font-semibold {
    --tw-font-weight: var(--font-weight-semibold);
    font-weight: var(--font-weight-semibold);
  }
  .text-amber-200 {
    color: var(--color-amber-200);
  }
  .text-amber-300 {
    color: var(--color-amber-300);
  }
  .text-amber-500 {
    color: var(--color-amber-500);
  }
  .text-blue-200 {
    color: var(--color-blue-200);
  }
  .text-blue-300 {
    color: var(--color-blue-300);
  }
  .text-blue-400 {
    color: var(--color-blue-400);
  }
  .text-blue-500 {
    color: var(--color-blue-500);
  }
  .text-cyan-200 {
    color: var(--color-cyan-200);
  }
  .text-cyan-400 {
    color: var(--color-cyan-400);
  }
  .text-emerald-300 {
    color: var(--color-emerald-300);
  }
  .text-emerald-400 {
    color: var(--color-emerald-400);
  }
  .text-fuchsia-200 {
    color: var(--color-fuchsia-200);
  }
  .text-fuchsia-400 {
    color: var(--color-fuchsia-400);
  }
  .text-gray-200 {
    color: var(--color-gray-200);
  }
  .text-gray-300 {
    color: var(--color-gray-300);
  }
  .text-gray-400 {
    color: var(--color-gray-400);
  }
  .text-gray-700 {
    color: var(--color-gray-700);
  }
  .text-green-200 {
    color: var(--color-green-200);
  }
  .text-green-300 {
    color: var(--color-green-300);
  }
  .text-green-400 {
    color: var(--color-green-400);
  }
  .text-orange-300 {
    color: var(--color-orange-300);
  }
  .text-pink-400 {
    color: var(--color-pink-400);
  }
  .text-purple-200 {
    color: var(--color-purple-200);
  }
  .text-purple-300 {
    color: var(--color-purple-300);
  }
  .text-purple-400 {
    color: var(--color-purple-400);
  }
  .text-red-400 {
    color: var(--color-red-400);
  }
  .text-red-500 {
    color: var(--color-red-500);
  }
  .text-red-600 {
    color: var(--color-red-600);
  }
  .text-slate-300 {
    color: var(--color-slate-300);
  }
  .text-slate-400 {
    color: var(--color-slate-400);
  }
  .text-slate-500 {
    color: var(--color-slate-500);
  }
  .text-slate-700 {
    color: var(--color-slate-700);
  }
  .text-slate-800 {
    color: var(--color-slate-800);
  }
  .text-teal-200 {
    color: var(--color-teal-200);
  }
  .text-teal-300 {
    color: var(--color-teal-300);
  }
  .text-teal-400 {
    color: var(--color-teal-400);
  }
  .text-transparent {
    color: transparent;
  }
  .text-white {
    color: var(--color-white);
  }
  .text-white\/80 {
    color: color-mix(in srgb, #fff 80%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      color: color-mix(in oklab, var(--color-white) 80%, transparent);
    }
  }
  .text-yellow-200 {
    color: var(--color-yellow-200);
  }
  .text-yellow-400 {
    color: var(--color-yellow-400);
  }
  .text-yellow-500 {
    color: var(--color-yellow-500);
  }
  .italic {
    font-style: italic;
  }
  .placeholder-slate-400 {
    &::placeholder {
      color: var(--color-slate-400);
    }
  }
  .opacity-0 {
    opacity: 0%;
  }
  .opacity-15 {
    opacity: 15%;
  }
  .opacity-50 {
    opacity: 50%;
  }
  .opacity-60 {
    opacity: 60%;
  }
  .opacity-70 {
    opacity: 70%;
  }
  .shadow-2xl {
    --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .shadow-\[0_4px_16px_rgba\(0\,255\,255\,0\.20\)\] {
    --tw-shadow: 0 4px 16px var(--tw-shadow-color, rgba(0,255,255,0.20));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .shadow-\[0_4px_16px_rgba\(0\,255\,255\,0\.25\)\] {
    --tw-shadow: 0 4px 16px var(--tw-shadow-color, rgba(0,255,255,0.25));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .shadow-\[0_4px_16px_rgba\(34\,197\,94\,0\.3\)\] {
    --tw-shadow: 0 4px 16px var(--tw-shadow-color, rgba(34,197,94,0.3));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .shadow-\[0_4px_16px_rgba\(255\,99\,0\,0\.3\)\] {
    --tw-shadow: 0 4px 16px var(--tw-shadow-color, rgba(255,99,0,0.3));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .shadow-\[0_4px_16px_rgba\(255\,193\,7\,0\.25\)\] {
    --tw-shadow: 0 4px 16px var(--tw-shadow-color, rgba(255,193,7,0.25));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .shadow-lg {
    --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .shadow-md {
    --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .shadow-sm {
    --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .shadow-xl {
    --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .ring {
    --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .shadow-blue-500\/10 {
    --tw-shadow-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 10%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-blue-500) 10%, transparent) var(--tw-shadow-alpha), transparent);
    }
  }
  .shadow-blue-500\/20 {
    --tw-shadow-color: color-mix(in srgb, oklch(62.3% 0.214 259.815) 20%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-blue-500) 20%, transparent) var(--tw-shadow-alpha), transparent);
    }
  }
  .shadow-green-500\/10 {
    --tw-shadow-color: color-mix(in srgb, oklch(72.3% 0.219 149.579) 10%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-green-500) 10%, transparent) var(--tw-shadow-alpha), transparent);
    }
  }
  .shadow-green-500\/20 {
    --tw-shadow-color: color-mix(in srgb, oklch(72.3% 0.219 149.579) 20%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-green-500) 20%, transparent) var(--tw-shadow-alpha), transparent);
    }
  }
  .shadow-green-500\/40 {
    --tw-shadow-color: color-mix(in srgb, oklch(72.3% 0.219 149.579) 40%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-green-500) 40%, transparent) var(--tw-shadow-alpha), transparent);
    }
  }
  .shadow-purple-500\/10 {
    --tw-shadow-color: color-mix(in srgb, oklch(62.7% 0.265 303.9) 10%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-purple-500) 10%, transparent) var(--tw-shadow-alpha), transparent);
    }
  }
  .shadow-purple-500\/20 {
    --tw-shadow-color: color-mix(in srgb, oklch(62.7% 0.265 303.9) 20%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-purple-500) 20%, transparent) var(--tw-shadow-alpha), transparent);
    }
  }
  .shadow-purple-500\/50 {
    --tw-shadow-color: color-mix(in srgb, oklch(62.7% 0.265 303.9) 50%, transparent);
    @supports (color: color-mix(in lab, red, red)) {
      --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-purple-500) 50%, transparent) var(--tw-shadow-alpha), transparent);
    }
  }
  .ring-cyan-300 {
    --tw-ring-color: var(--color-cyan-300);
  }
  .backdrop-blur-sm {
    --tw-backdrop-blur: blur(var(--blur-sm));
    -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
    backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
  }
  .transition {
    transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;
    transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
    transition-duration: var(--tw-duration, var(--default-transition-duration));
  }
  .transition-all {
    transition-property: all;
    transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
    transition-duration: var(--tw-duration, var(--default-transition-duration));
  }
  .transition-colors {
    transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
    transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
    transition-duration: var(--tw-duration, var(--default-transition-duration));
  }
  .transition-opacity {
    transition-property: opacity;
    transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
    transition-duration: var(--tw-duration, var(--default-transition-duration));
  }
  .transition-transform {
    transition-property: transform, translate, scale, rotate;
    transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
    transition-duration: var(--tw-duration, var(--default-transition-duration));
  }
  .duration-200 {
    --tw-duration: 200ms;
    transition-duration: 200ms;
  }
  .duration-300 {
    --tw-duration: 300ms;
    transition-duration: 300ms;
  }
  .ease-in-out {
    --tw-ease: var(--ease-in-out);
    transition-timing-function: var(--ease-in-out);
  }
  .outline-none {
    --tw-outline-style: none;
    outline-style: none;
  }
  .select-none {
    -webkit-user-select: none;
    user-select: none;
  }
  .select-text {
    -webkit-user-select: text;
    user-select: text;
  }
  .group-hover\:opacity-100 {
    &:is(:where(.group):hover *) {
      @media (hover: hover) {
        opacity: 100%;
      }
    }
  }
  .placeholder\:text-gray-400 {
    &::placeholder {
      color: var(--color-gray-400);
    }
  }
  .hover\:-translate-y-0\.5 {
    &:hover {
      @media (hover: hover) {
        --tw-translate-y: calc(var(--spacing) * -0.5);
        translate: var(--tw-translate-x) var(--tw-translate-y);
      }
    }
  }
  .hover\:-translate-y-1 {
    &:hover {
      @media (hover: hover) {
        --tw-translate-y: calc(var(--spacing) * -1);
        translate: var(--tw-translate-x) var(--tw-translate-y);
      }
    }
  }
  .hover\:scale-110 {
    &:hover {
      @media (hover: hover) {
        --tw-scale-x: 110%;
        --tw-scale-y: 110%;
        --tw-scale-z: 110%;
        scale: var(--tw-scale-x) var(--tw-scale-y);
      }
    }
  }
  .hover\:border-gray-400\/70 {
    &:hover {
      @media (hover: hover) {
        border-color: color-mix(in srgb, oklch(70.7% 0.022 261.325) 70%, transparent);
        @supports (color: color-mix(in lab, red, red)) {
          border-color: color-mix(in oklab, var(--color-gray-400) 70%, transparent);
        }
      }
    }
  }
  .hover\:border-green-400\/50 {
    &:hover {
      @media (hover: hover) {
        border-color: color-mix(in srgb, oklch(79.2% 0.209 151.711) 50%, transparent);
        @supports (color: color-mix(in lab, red, red)) {
          border-color: color-mix(in oklab, var(--color-green-400) 50%, transparent);
        }
      }
    }
  }
  .hover\:bg-blue-500 {
    &:hover {
      @media (hover: hover) {
        background-color: var(--color-blue-500);
      }
    }
  }
  .hover\:bg-blue-600 {
    &:hover {
      @media (hover: hover) {
        background-color: var(--color-blue-600);
      }
    }
  }
  .hover\:bg-gray-400\/10 {
    &:hover {
      @media (hover: hover) {
        background-color: color-mix(in srgb, oklch(70.7% 0.022 261.325) 10%, transparent);
        @supports (color: color-mix(in lab, red, red)) {
          background-color: color-mix(in oklab, var(--color-gray-400) 10%, transparent);
        }
      }
    }
  }
  .hover\:bg-gray-600 {
    &:hover {
      @media (hover: hover) {
        background-color: var(--color-gray-600);
      }
    }
  }
  .hover\:bg-slate-600 {
    &:hover {
      @media (hover: hover) {
        background-color: var(--color-slate-600);
      }
    }
  }
  .hover\:bg-slate-700\/90 {
    &:hover {
      @media (hover: hover) {
        background-color: color-mix(in srgb, oklch(37.2% 0.044 257.287) 90%, transparent);
        @supports (color: color-mix(in lab, red, red)) {
          background-color: color-mix(in oklab, var(--color-slate-700) 90%, transparent);
        }
      }
    }
  }
  .hover\:bg-white\/20 {
    &:hover {
      @media (hover: hover) {
        background-color: color-mix(in srgb, #fff 20%, transparent);
        @supports (color: color-mix(in lab, red, red)) {
          background-color: color-mix(in oklab, var(--color-white) 20%, transparent);
        }
      }
    }
  }
  .hover\:bg-white\/30 {
    &:hover {
      @media (hover: hover) {
        background-color: color-mix(in srgb, #fff 30%, transparent);
        @supports (color: color-mix(in lab, red, red)) {
          background-color: color-mix(in oklab, var(--color-white) 30%, transparent);
        }
      }
    }
  }
  .hover\:from-blue-600 {
    &:hover {
      @media (hover: hover) {
        --tw-gradient-from: var(--color-blue-600);
        --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
      }
    }
  }
  .hover\:from-blue-700 {
    &:hover {
      @media (hover: hover) {
        --tw-gradient-from: var(--color-blue-700);
        --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
      }
    }
  }
  .hover\:from-cyan-800 {
    &:hover {
      @media (hover: hover) {
        --tw-gradient-from: var(--color-cyan-800);
        --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
      }
    }
  }
  .hover\:from-green-600 {
    &:hover {
      @media (hover: hover) {
        --tw-gradient-from: var(--color-green-600);
        --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
      }
    }
  }
  .hover\:from-purple-700 {
    &:hover {
      @media (hover: hover) {
        --tw-gradient-from: var(--color-purple-700);
        --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
      }
    }
  }
  .hover\:from-red-700 {
    &:hover {
      @media (hover: hover) {
        --tw-gradient-from: var(--color-red-700);
        --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
      }
    }
  }
  .hover\:from-slate-700 {
    &:hover {
      @media (hover: hover) {
        --tw-gradient-from: var(--color-slate-700);
        --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
      }
    }
  }
  .hover\:to-blue-700 {
    &:hover {
      @media (hover: hover) {
        --tw-gradient-to: var(--color-blue-700);
        --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
      }
    }
  }
  .hover\:to-blue-800 {
    &:hover {
      @media (hover: hover) {
        --tw-gradient-to: var(--color-blue-800);
        --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
      }
    }
  }
  .hover\:to-cyan-900 {
    &:hover {
      @media (hover: hover) {
        --tw-gradient-to: var(--color-cyan-900);
        --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
      }
    }
  }
  .hover\:to-green-800 {
    &:hover {
      @media (hover: hover) {
        --tw-gradient-to: var(--color-green-800);
        --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
      }
    }
  }
  .hover\:to-indigo-700 {
    &:hover {
      @media (hover: hover) {
        --tw-gradient-to: var(--color-indigo-700);
        --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
      }
    }
  }
  .hover\:to-orange-700 {
    &:hover {
      @media (hover: hover) {
        --tw-gradient-to: var(--color-orange-700);
        --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
      }
    }
  }
  .hover\:to-pink-800 {
    &:hover {
      @media (hover: hover) {
        --tw-gradient-to: var(--color-pink-800);
        --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
      }
    }
  }
  .hover\:to-slate-600 {
    &:hover {
      @media (hover: hover) {
        --tw-gradient-to: var(--color-slate-600);
        --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
      }
    }
  }
  .hover\:to-slate-800 {
    &:hover {
      @media (hover: hover) {
        --tw-gradient-to: var(--color-slate-800);
        --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
      }
    }
  }
  .hover\:text-green-400 {
    &:hover {
      @media (hover: hover) {
        color: var(--color-green-400);
      }
    }
  }
  .hover\:text-slate-400 {
    &:hover {
      @media (hover: hover) {
        color: var(--color-slate-400);
      }
    }
  }
  .hover\:opacity-100 {
    &:hover {
      @media (hover: hover) {
        opacity: 100%;
      }
    }
  }
  .hover\:shadow-lg {
    &:hover {
      @media (hover: hover) {
        --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
        box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
      }
    }
  }
  .hover\:shadow-xl {
    &:hover {
      @media (hover: hover) {
        --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
        box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
      }
    }
  }
  .hover\:shadow-purple-500\/30 {
    &:hover {
      @media (hover: hover) {
        --tw-shadow-color: color-mix(in srgb, oklch(62.7% 0.265 303.9) 30%, transparent);
        @supports (color: color-mix(in lab, red, red)) {
          --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-purple-500) 30%, transparent) var(--tw-shadow-alpha), transparent);
        }
      }
    }
  }
  .hover\:brightness-110 {
    &:hover {
      @media (hover: hover) {
        --tw-brightness: brightness(110%);
        filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
      }
    }
  }
  .focus\:border-orange-400 {
    &:focus {
      border-color: var(--color-orange-400);
    }
  }
  .focus\:border-purple-400 {
    &:focus {
      border-color: var(--color-purple-400);
    }
  }
  .focus\:ring-0 {
    &:focus {
      --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
      box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
    }
  }
  .focus\:ring-2 {
    &:focus {
      --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
      box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
    }
  }
  .focus\:ring-\[\#bebebe\] {
    &:focus {
      --tw-ring-color: #bebebe;
    }
  }
  .focus\:ring-blue-500 {
    &:focus {
      --tw-ring-color: var(--color-blue-500);
    }
  }
  .focus\:ring-gray-400 {
    &:focus {
      --tw-ring-color: var(--color-gray-400);
    }
  }
  .focus\:ring-purple-500\/20 {
    &:focus {
      --tw-ring-color: color-mix(in srgb, oklch(62.7% 0.265 303.9) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-ring-color: color-mix(in oklab, var(--color-purple-500) 20%, transparent);
      }
    }
  }
  .focus\:ring-slate-500\/20 {
    &:focus {
      --tw-ring-color: color-mix(in srgb, oklch(55.4% 0.046 257.417) 20%, transparent);
      @supports (color: color-mix(in lab, red, red)) {
        --tw-ring-color: color-mix(in oklab, var(--color-slate-500) 20%, transparent);
      }
    }
  }
  .focus\:outline-none {
    &:focus {
      --tw-outline-style: none;
      outline-style: none;
    }
  }
  .disabled\:cursor-not-allowed {
    &:disabled {
      cursor: not-allowed;
    }
  }
  .disabled\:opacity-50 {
    &:disabled {
      opacity: 50%;
    }
  }
  .sm\:mb-6 {
    @media (width >= 40rem) {
      margin-bottom: calc(var(--spacing) * 6);
    }
  }
  .sm\:h-2\.5 {
    @media (width >= 40rem) {
      height: calc(var(--spacing) * 2.5);
    }
  }
  .sm\:h-16 {
    @media (width >= 40rem) {
      height: calc(var(--spacing) * 16);
    }
  }
  .sm\:w-2\.5 {
    @media (width >= 40rem) {
      width: calc(var(--spacing) * 2.5);
    }
  }
  .sm\:w-16 {
    @media (width >= 40rem) {
      width: calc(var(--spacing) * 16);
    }
  }
  .sm\:max-w-md {
    @media (width >= 40rem) {
      max-width: var(--container-md);
    }
  }
  .sm\:grid-cols-4 {
    @media (width >= 40rem) {
      grid-template-columns: repeat(4, minmax(0, 1fr));
    }
  }
  .sm\:space-y-4 {
    @media (width >= 40rem) {
      :where(& > :not(:last-child)) {
        --tw-space-y-reverse: 0;
        margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));
        margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));
      }
    }
  }
  .sm\:space-y-8 {
    @media (width >= 40rem) {
      :where(& > :not(:last-child)) {
        --tw-space-y-reverse: 0;
        margin-block-start: calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));
        margin-block-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)));
      }
    }
  }
  .sm\:rounded-xl {
    @media (width >= 40rem) {
      border-radius: var(--radius-xl);
    }
  }
  .sm\:p-4 {
    @media (width >= 40rem) {
      padding: calc(var(--spacing) * 4);
    }
  }
  .sm\:p-6 {
    @media (width >= 40rem) {
      padding: calc(var(--spacing) * 6);
    }
  }
  .sm\:p-8 {
    @media (width >= 40rem) {
      padding: calc(var(--spacing) * 8);
    }
  }
  .sm\:text-2xl {
    @media (width >= 40rem) {
      font-size: var(--text-2xl);
      line-height: var(--tw-leading, var(--text-2xl--line-height));
    }
  }
  .sm\:text-4xl {
    @media (width >= 40rem) {
      font-size: var(--text-4xl);
      line-height: var(--tw-leading, var(--text-4xl--line-height));
    }
  }
  .sm\:text-base {
    @media (width >= 40rem) {
      font-size: var(--text-base);
      line-height: var(--tw-leading, var(--text-base--line-height));
    }
  }
  .sm\:text-lg {
    @media (width >= 40rem) {
      font-size: var(--text-lg);
      line-height: var(--tw-leading, var(--text-lg--line-height));
    }
  }
  .sm\:text-sm {
    @media (width >= 40rem) {
      font-size: var(--text-sm);
      line-height: var(--tw-leading, var(--text-sm--line-height));
    }
  }
  .sm\:text-xl {
    @media (width >= 40rem) {
      font-size: var(--text-xl);
      line-height: var(--tw-leading, var(--text-xl--line-height));
    }
  }
  .md\:p-8 {
    @media (width >= 48rem) {
      padding: calc(var(--spacing) * 8);
    }
  }
  .md\:text-2xl {
    @media (width >= 48rem) {
      font-size: var(--text-2xl);
      line-height: var(--tw-leading, var(--text-2xl--line-height));
    }
  }
  .md\:text-5xl {
    @media (width >= 48rem) {
      font-size: var(--text-5xl);
      line-height: var(--tw-leading, var(--text-5xl--line-height));
    }
  }
  .md\:text-xl {
    @media (width >= 48rem) {
      font-size: var(--text-xl);
      line-height: var(--tw-leading, var(--text-xl--line-height));
    }
  }
  .lg\:p-8 {
    @media (width >= 64rem) {
      padding: calc(var(--spacing) * 8);
    }
  }
}
body {
  background-color: lightgray;
}
@property --tw-translate-x {
  syntax: "*";
  inherits: false;
  initial-value: 0;
}
@property --tw-translate-y {
  syntax: "*";
  inherits: false;
  initial-value: 0;
}
@property --tw-translate-z {
  syntax: "*";
  inherits: false;
  initial-value: 0;
}
@property --tw-rotate-x {
  syntax: "*";
  inherits: false;
}
@property --tw-rotate-y {
  syntax: "*";
  inherits: false;
}
@property --tw-rotate-z {
  syntax: "*";
  inherits: false;
}
@property --tw-skew-x {
  syntax: "*";
  inherits: false;
}
@property --tw-skew-y {
  syntax: "*";
  inherits: false;
}
@property --tw-space-y-reverse {
  syntax: "*";
  inherits: false;
  initial-value: 0;
}
@property --tw-space-x-reverse {
  syntax: "*";
  inherits: false;
  initial-value: 0;
}
@property --tw-border-style {
  syntax: "*";
  inherits: false;
  initial-value: solid;
}
@property --tw-gradient-position {
  syntax: "*";
  inherits: false;
}
@property --tw-gradient-from {
  syntax: "<color>";
  inherits: false;
  initial-value: #0000;
}
@property --tw-gradient-via {
  syntax: "<color>";
  inherits: false;
  initial-value: #0000;
}
@property --tw-gradient-to {
  syntax: "<color>";
  inherits: false;
  initial-value: #0000;
}
@property --tw-gradient-stops {
  syntax: "*";
  inherits: false;
}
@property --tw-gradient-via-stops {
  syntax: "*";
  inherits: false;
}
@property --tw-gradient-from-position {
  syntax: "<length-percentage>";
  inherits: false;
  initial-value: 0%;
}
@property --tw-gradient-via-position {
  syntax: "<length-percentage>";
  inherits: false;
  initial-value: 50%;
}
@property --tw-gradient-to-position {
  syntax: "<length-percentage>";
  inherits: false;
  initial-value: 100%;
}
@property --tw-leading {
  syntax: "*";
  inherits: false;
}
@property --tw-font-weight {
  syntax: "*";
  inherits: false;
}
@property --tw-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-shadow-color {
  syntax: "*";
  inherits: false;
}
@property --tw-shadow-alpha {
  syntax: "<percentage>";
  inherits: false;
  initial-value: 100%;
}
@property --tw-inset-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-inset-shadow-color {
  syntax: "*";
  inherits: false;
}
@property --tw-inset-shadow-alpha {
  syntax: "<percentage>";
  inherits: false;
  initial-value: 100%;
}
@property --tw-ring-color {
  syntax: "*";
  inherits: false;
}
@property --tw-ring-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-inset-ring-color {
  syntax: "*";
  inherits: false;
}
@property --tw-inset-ring-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-ring-inset {
  syntax: "*";
  inherits: false;
}
@property --tw-ring-offset-width {
  syntax: "<length>";
  inherits: false;
  initial-value: 0px;
}
@property --tw-ring-offset-color {
  syntax: "*";
  inherits: false;
  initial-value: #fff;
}
@property --tw-ring-offset-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-backdrop-blur {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-brightness {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-contrast {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-grayscale {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-hue-rotate {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-invert {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-opacity {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-saturate {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-sepia {
  syntax: "*";
  inherits: false;
}
@property --tw-duration {
  syntax: "*";
  inherits: false;
}
@property --tw-ease {
  syntax: "*";
  inherits: false;
}
@property --tw-scale-x {
  syntax: "*";
  inherits: false;
  initial-value: 1;
}
@property --tw-scale-y {
  syntax: "*";
  inherits: false;
  initial-value: 1;
}
@property --tw-scale-z {
  syntax: "*";
  inherits: false;
  initial-value: 1;
}
@property --tw-blur {
  syntax: "*";
  inherits: false;
}
@property --tw-brightness {
  syntax: "*";
  inherits: false;
}
@property --tw-contrast {
  syntax: "*";
  inherits: false;
}
@property --tw-grayscale {
  syntax: "*";
  inherits: false;
}
@property --tw-hue-rotate {
  syntax: "*";
  inherits: false;
}
@property --tw-invert {
  syntax: "*";
  inherits: false;
}
@property --tw-opacity {
  syntax: "*";
  inherits: false;
}
@property --tw-saturate {
  syntax: "*";
  inherits: false;
}
@property --tw-sepia {
  syntax: "*";
  inherits: false;
}
@property --tw-drop-shadow {
  syntax: "*";
  inherits: false;
}
@property --tw-drop-shadow-color {
  syntax: "*";
  inherits: false;
}
@property --tw-drop-shadow-alpha {
  syntax: "<percentage>";
  inherits: false;
  initial-value: 100%;
}
@property --tw-drop-shadow-size {
  syntax: "*";
  inherits: false;
}
@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}
@keyframes pulse {
  50% {
    opacity: 0.5;
  }
}
@keyframes bounce {
  0%, 100% {
    transform: translateY(-25%);
    animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
  }
  50% {
    transform: none;
    animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
  }
}
@layer properties {
  @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
    *, ::before, ::after, ::backdrop {
      --tw-translate-x: 0;
      --tw-translate-y: 0;
      --tw-translate-z: 0;
      --tw-rotate-x: initial;
      --tw-rotate-y: initial;
      --tw-rotate-z: initial;
      --tw-skew-x: initial;
      --tw-skew-y: initial;
      --tw-space-y-reverse: 0;
      --tw-space-x-reverse: 0;
      --tw-border-style: solid;
      --tw-gradient-position: initial;
      --tw-gradient-from: #0000;
      --tw-gradient-via: #0000;
      --tw-gradient-to: #0000;
      --tw-gradient-stops: initial;
      --tw-gradient-via-stops: initial;
      --tw-gradient-from-position: 0%;
      --tw-gradient-via-position: 50%;
      --tw-gradient-to-position: 100%;
      --tw-leading: initial;
      --tw-font-weight: initial;
      --tw-shadow: 0 0 #0000;
      --tw-shadow-color: initial;
      --tw-shadow-alpha: 100%;
      --tw-inset-shadow: 0 0 #0000;
      --tw-inset-shadow-color: initial;
      --tw-inset-shadow-alpha: 100%;
      --tw-ring-color: initial;
      --tw-ring-shadow: 0 0 #0000;
      --tw-inset-ring-color: initial;
      --tw-inset-ring-shadow: 0 0 #0000;
      --tw-ring-inset: initial;
      --tw-ring-offset-width: 0px;
      --tw-ring-offset-color: #fff;
      --tw-ring-offset-shadow: 0 0 #0000;
      --tw-backdrop-blur: initial;
      --tw-backdrop-brightness: initial;
      --tw-backdrop-contrast: initial;
      --tw-backdrop-grayscale: initial;
      --tw-backdrop-hue-rotate: initial;
      --tw-backdrop-invert: initial;
      --tw-backdrop-opacity: initial;
      --tw-backdrop-saturate: initial;
      --tw-backdrop-sepia: initial;
      --tw-duration: initial;
      --tw-ease: initial;
      --tw-scale-x: 1;
      --tw-scale-y: 1;
      --tw-scale-z: 1;
      --tw-blur: initial;
      --tw-brightness: initial;
      --tw-contrast: initial;
      --tw-grayscale: initial;
      --tw-hue-rotate: initial;
      --tw-invert: initial;
      --tw-opacity: initial;
      --tw-saturate: initial;
      --tw-sepia: initial;
      --tw-drop-shadow: initial;
      --tw-drop-shadow-color: initial;
      --tw-drop-shadow-alpha: 100%;
      --tw-drop-shadow-size: initial;
    }
  }
}

/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/layouts/AuthLayout.vue?vue&type=style&index=0&id=64f65ea7&scoped=true&lang=css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.auth-container[data-v-64f65ea7] {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    background-color: #f4f4f4;
}
  
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./assets/vue/controllers/layouts/MainLayout.vue?vue&type=style&index=0&id=fc4d3510&scoped=true&lang=css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.header[data-v-fc4d3510] {
    background: #fff;
    display: flex;
    align-items: center;
    padding: 0 16px;
    justify-content: space-between;
}
.menu-button[data-v-fc4d3510] {
    font-size: 24px;
    display: none;
}
  
  /* Mostramos el botón hamburguesa solo en móviles */
@media (max-width: 768px) {
.menu-button[data-v-fc4d3510] {
      display: block;
}
}
  
  /* Estilos para el overlay del sidebar SOLO en móviles */
.sidebar-overlay[data-v-fc4d3510] {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.5);
    z-index: 998;
    transition: opacity 0.3s ease-in-out;
}
  

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,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bUI7RUFBQTtFQUFuQjtJQUFBLGlDQUFtQjtFQUFBO0VBQW5CO0lBQUEsaUNBQW1CO0VBQUE7RUFBbkI7SUFBQSxpQ0FBbUI7RUFBQTtFQUFuQjtJQUFBLGtDQUFtQjtFQUFBO0VBQW5CO0lBQUEsd0NBQW1CO0VBQUE7RUFBbkI7SUFBQSx3Q0FBbUI7RUFBQTtFQUFuQjtJQUFBLHdDQUFtQjtFQUFBO0VBQW5CO0lBQUEsd0NBQW1CO0VBQUE7RUFBbkI7SUFBQSx3Q0FBbUI7RUFBQTtFQUFuQjtJQUFBLHdDQUFtQjtFQUFBO0VBQW5CO0lBQUEseUNBQW1CO0VBQUE7RUFBbkI7SUFBQSx5Q0FBbUI7RUFBQTtFQUFuQjtJQUFBLHVDQUFtQjtFQUFBO0VBQW5CO0lBQUEsdUNBQW1CO0VBQUE7RUFBbkI7SUFBQSx1Q0FBbUI7RUFBQTtFQUFuQjtJQUFBLHVDQUFtQjtFQUFBO0VBQW5CO0lBQUEsdUNBQW1CO0VBQUE7RUFBbkI7SUFBQSx1Q0FBbUI7RUFBQTtFQUFuQjtJQUFBLHdDQUFtQjtFQUFBO0VBQW5CO0lBQUEscUNBQW1CO0VBQUE7RUFBbkI7SUFBQSx3Q0FBbUI7RUFBQTtFQUFuQjtJQUFBLGtCQUFtQjtFQUFBO0VBQW5CO0lBQUEsZ0JBQW1CO0VBQUE7RUFBbkI7SUFBQSxpQkFBbUI7RUFBQTtFQUFuQjtJQUFBLDZCQUFtQjtFQUFBO0VBQW5CO0lBQUEsMEJBQW1CO0lBQW5CLDREQUFtQjtFQUFBO0VBQW5CO0lBQUEsMEJBQW1CO0lBQW5CLDREQUFtQjtFQUFBO0VBQW5CO0lBQUEsMEJBQW1CO0lBQW5CLDREQUFtQjtFQUFBO0VBQW5CO0lBQUEsMEJBQW1CO0lBQW5CLDREQUFtQjtFQUFBO0VBQW5CO0lBQUEsMEJBQW1CO0lBQW5CLDREQUFtQjtFQUFBO0VBQW5CO0lBQUEsMEJBQW1CO0lBQW5CLDREQUFtQjtFQUFBO0VBQW5CO0lBQUEsMEJBQW1CO0lBQW5CLDREQUFtQjtFQUFBO0VBQW5CO0lBQUEsMkJBQW1CO0lBQW5CLDZEQUFtQjtFQUFBO0VBQW5CO0lBQUEseUJBQW1CO0lBQW5CLDJEQUFt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O0VBQUE7RUFBbkI7SUFBQTtNQUFBO1FBQUEseUNBQW1CO1FBQW5CLDhMQUFtQjtNQUFBO0lBQUE7RUFBQTtFQUFuQjtJQUFBO01BQUE7UUFBQSx5Q0FBbUI7UUFBbkIsOExBQW1CO01BQUE7SUFBQTtFQUFBO0VBQW5CO0lBQUE7TUFBQTtRQUFBLHlDQUFtQjtRQUFuQiw4TEFBbUI7TUFBQTtJQUFBO0VBQUE7RUFBbkI7SUFBQTtNQUFBO1FBQUEsMENBQW1CO1FBQW5CLDhMQUFtQjtNQUFBO0lBQUE7RUFBQTtFQUFuQjtJQUFBO01BQUE7UUFBQSwyQ0FBbUI7UUFBbkIsOExBQW1CO01BQUE7SUFBQTtFQUFBO0VBQW5CO0lBQUE7TUFBQTtRQUFBLHdDQUFtQjtRQUFuQiw4TEFBbUI7TUFBQTtJQUFBO0VBQUE7RUFBbkI7SUFBQTtNQUFBO1FBQUEsMENBQW1CO1FBQW5CLDhMQUFtQjtNQUFBO0lBQUE7RUFBQTtFQUFuQjtJQUFBO01BQUE7UUFBQSx1Q0FBbUI7UUFBbkIsOExBQW1CO01BQUE7SUFBQTtFQUFBO0VBQW5CO0lBQUE7TUFBQTtRQUFBLHVDQUFtQjtRQUFuQiw4TEFBbUI7TUFBQTtJQUFBO0VBQUE7RUFBbkI7SUFBQTtNQUFBO1FBQUEsdUNBQW1CO1FBQW5CLDhMQUFtQjtNQUFBO0lBQUE7RUFBQTtFQUFuQjtJQUFBO01BQUE7UUFBQSx3Q0FBbUI7UUFBbkIsOExBQW1CO01BQUE7SUFBQTtFQUFBO0VBQW5CO0lBQUE7TUFBQTtRQUFBLHlDQUFtQjtRQUFuQiw4TEFBbUI7TUFBQTtJQUFBO0VBQUE7RUFBbkI7SUFBQTtNQUFBO1FBQUEseUNBQW1CO1FBQW5CLDhMQUFtQjtNQUFBO0lBQUE7RUFBQTtFQUFuQjtJQUFBO01BQUE7UUFBQSx1Q0FBbUI7UUFBbkIsOExBQW1CO01BQUE7SUFBQTtFQUFBO0VBQW5CO0lBQUE7TUFBQTtRQUFBLHdDQUFtQjtRQUFuQiw4TEFBbUI7TUFBQTtJQUFBO0VBQUE7RUFBbkI7SUFBQTtNQUFBO1FBQUEsd0NBQW1CO1FBQW5CLDhMQUFtQjtNQUFBO0lBQUE7RUFB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QUFuQjtFQUFBLFdBQW1CO0VBQW5CLGVBQW1CO0FBQUE7QUFBbkI7RUFBQSxXQUFtQjtFQUFuQixlQUFtQjtBQUFBO0FBQW5CO0VBQUEsV0FBbUI7RUFBbkIsZUFBbUI7RUFBbkIsd0JBQW1CO0FBQUE7QUFBbkI7RUFBQSxXQUFtQjtFQUFuQixlQUFtQjtBQUFBO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CLGVBQW1CO0VBQW5CLG1CQUFtQjtBQUFBO0FBQW5CO0VBQUEsV0FBbUI7RUFBbkIsZUFBbUI7RUFBbkIsd0JBQW1CO0FBQUE7QUFBbkI7RUFBQSxXQUFtQjtFQUFuQixlQUFtQjtBQUFBO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CLGVBQW1CO0VBQW5CLG1CQUFtQjtBQUFBO0FBQW5CO0VBQUEsV0FBbUI7RUFBbkIsZUFBbUI7QUFBQTtBQUFuQjtFQUFBLFdBQW1CO0VBQW5CLGVBQW1CO0VBQW5CLHdCQUFtQjtBQUFBO0FBQW5CO0VBQUEsV0FBbUI7RUFBbkIsZUFBbUI7QUFBQTtBQUFuQjtFQUFBLFdBQW1CO0VBQW5CLGVBQW1CO0VBQW5CLHdCQUFtQjtBQUFBO0FBQW5CO0VBQUEsV0FBbUI7RUFBbkIsZUFBbUI7QUFBQTtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQixlQUFtQjtFQUFuQixrQkFBbUI7QUFBQTtBQUFuQjtFQUFBLFdBQW1CO0VBQW5CLGVBQW1CO0VBQW5CLG1CQUFtQjtBQUFBO0FBQW5CO0VBQUEsV0FBbUI7RUFBbkIsZUFBbUI7RUFBbkIsd0JBQW1CO0FBQUE7QUFBbkI7RUFBQSxXQUFtQjtFQUFuQixlQUFtQjtBQUFBO0FBQW5CO0VBQUEsV0FBbUI7RUFBbkIsZUFBbUI7QUFBQTtBQUFuQjtFQUFBLFdBQW1CO0VBQW5CLGVBQW1CO0FBQUE7QUFBbkI7RUFBQSxXQUFtQjtFQUFuQixlQUFtQjtBQUFBO0FBQW5CO0VBQUEsV0FBbUI7RUFBbkIsZUFBbUI7QUFBQTtBQUFuQjtFQUFBLFdBQW1CO0VBQW5CLGVBQW1CO0FBQUE7QUFBbkI7RUFBQSxXQUFtQjtFQUFuQixlQUFtQjtBQUFB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QzNCOzs7Ozs7QUMyREE7SUFDRSxnQkFBZ0I7SUFDaEIsYUFBYTtJQUNiLG1CQUFtQjtJQUNuQixlQUFlO0lBQ2YsOEJBQThCO0FBQ2hDO0FBRUE7SUFDRSxlQUFlO0lBQ2YsYUFBYTtBQUNmOztFQUVBLG1EQUFtRDtBQUNuRDtBQUNFO01BQ0UsY0FBYztBQUNoQjtBQUNGOztFQUVBLHdEQUF3RDtBQUN4RDtJQUNFLGVBQWU7SUFDZixNQUFNO0lBQ04sT0FBTztJQUNQLFdBQVc7SUFDWCxZQUFZO0lBQ1osOEJBQThCO0lBQzlCLFlBQVk7SUFDWixvQ0FBb0M7QUFDdEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvdnVlL2NvbnRyb2xsZXJzL0FwcC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3Z1ZS9jb250cm9sbGVycy92aWV3cy9MZXZlbDEudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy92dWUvY29udHJvbGxlcnMvdmlld3MvTGV2ZWwyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvdnVlL2NvbnRyb2xsZXJzL3ZpZXdzL0xldmVsMy52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3Z1ZS9jb250cm9sbGVycy92aWV3cy9MZXZlbDQudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy92dWUvY29udHJvbGxlcnMvdmlld3MvTGV2ZWw1LnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvdnVlL2NvbnRyb2xsZXJzL3ZpZXdzL0xldmVsNi52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3Z1ZS9jb250cm9sbGVycy92aWV3cy9MZXZlbDcudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy92dWUvY29udHJvbGxlcnMvdmlld3MvTGV2ZWw4LnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvdnVlL2NvbnRyb2xsZXJzL3ZpZXdzL0xldmVsMTEudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy92dWUvY29udHJvbGxlcnMvdmlld3MvTG9hZGVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvdnVlL2NvbnRyb2xsZXJzL2NvbXBvbmVudHMvc2lkZWJhcnMvRGFzaGJvYXJkU2lkZWJhci52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3Z1ZS9jb250cm9sbGVycy9sYXlvdXRzL0Rhc2hib2FyZC52dWUiLCJ3ZWJwYWNrOi8vLzxubyBzb3VyY2U+Iiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy90YWlsd2luZGNzcy9pbmRleC5jc3MiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3N0eWxlcy9hcHAuY3NzIiwid2VicGFjazovLy8uL2Fzc2V0cy92dWUvY29udHJvbGxlcnMvbGF5b3V0cy9BdXRoTGF5b3V0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvdnVlL2NvbnRyb2xsZXJzL2xheW91dHMvTWFpbkxheW91dC52dWUiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG4gIDxkaXYgaWQ9XCJhcHBcIj5cclxuICAgIDxjb21wb25lbnQgOmlzPVwibGF5b3V0XCI+XHJcbiAgICAgIDxyb3V0ZXItdmlldyA6a2V5PVwiJHJvdXRlLmZ1bGxQYXRoXCIgLz5cclxuICAgIDwvY29tcG9uZW50PlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdCBzZXR1cD5cclxuaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tIFwidnVlXCI7XHJcbmltcG9ydCB7IHVzZVJvdXRlIH0gZnJvbSBcInZ1ZS1yb3V0ZXJcIjtcclxuaW1wb3J0IHsgYXV0aFN0b3JlIH0gZnJvbSBcIi4vc3RvcmUvYXV0aFwiO1xyXG5cclxuY29uc3Qgcm91dGUgPSB1c2VSb3V0ZSgpO1xyXG5jb25zdCBzdG9yZSA9IGF1dGhTdG9yZSgpO1xyXG5cclxuLy8gU2kgbm8gZXN0w6EgYXV0ZW50aWNhZG8gc2UgY2FyZ2EgZWwgbGF5b3V0IGRlIGxvZ2luXHJcbmNvbnN0IGxheW91dCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAvLyBpZiAoIXN0b3JlLmlzQXV0aGVudGljYXRlZCkge1xyXG4gIC8vICAgcmV0dXJuIFwibGF5b3V0LWxvZ2luXCI7XHJcbiAgLy8gfVxyXG4gIC8vIGlmICh0eXBlb2Ygcm91dGUubWV0YS5sYXlvdXQgPT09IFwic3RyaW5nXCIpIHtcclxuICAvLyAgIHJldHVybiBgbGF5b3V0LSR7cm91dGUubWV0YS5sYXlvdXQudG9Mb3dlckNhc2UoKX1gO1xyXG4gIC8vIH1cclxuICByZXR1cm4gXCJsYXlvdXQtZGVmYXVsdFwiO1xyXG59KTtcclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGUgc2NvcGVkPlxyXG4vKiBQdWVkZXMgYWdyZWdhciBlc3RpbG9zIGFxdcOtIHNpIGVzIG5lY2VzYXJpbyAqL1xyXG48L3N0eWxlPlxyXG4iLCI8dGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cIm1pbi1oLXNjcmVlbiBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBwLTggY3VzdG9tLWdyYWRpZW50XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgdG9wLTYgbGVmdC02XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3LTEyIGgtMTIgYmctYmx1ZS02MDAgcm91bmRlZC14bCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LXdoaXRlIHRleHQteGwgc2hhZG93LWxnXCI+4pqhPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbWItMTZcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtOXhsIGZvbnQtbGlnaHQgdGV4dC13aGl0ZSBtYi0zXCI+e3sgY3VycmVudExldmVsSW5kZXggKyAxIH19PC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXdoaXRlLzgwIHRleHQtbGcgZm9udC1tb25vXCI+L25pdmVse3sgY3VycmVudExldmVsSW5kZXggKyAxIH19PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYmctc2xhdGUtODAwLzkwIGJhY2tkcm9wLWJsdXItc20gcm91bmRlZC0yeGwgcC0xMCBtYXgtdy1sZyB3LWZ1bGwgc2hhZG93LTJ4bFwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJ0ZXh0LTJ4bCBmb250LXNlbWlib2xkIHRleHQtY2VudGVyIG1iLTggdGV4dC13aGl0ZVwiPkJpZW52ZW5pZG9zIGFsIG5pdmVsIHt7IGN1cnJlbnRMZXZlbEluZGV4ICsgMSB9fTwvaDE+XHJcbiAgICAgIFxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3BhY2UteS04XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHRleHQtbGcgdGV4dC13aGl0ZSBsZWFkaW5nLXJlbGF4ZWRcIj5cclxuICAgICAgICAgIDxwPkJ1c2NhIGVsIDxzcGFuIGNsYXNzPVwidGV4dC1ncmVlbi00MDAgZm9udC1ib2xkXCI+Y2FtcGFtZW50bzwvc3Bhbj4gZW4gZWwgPHNwYW4gY2xhc3M9XCJ0ZXh0LWJsdWUtNDAwIGZvbnQtYm9sZFwiPm5pdmVse3sgY3VycmVudExldmVsSW5kZXggKyAyIH19PC9zcGFuPi48L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LXllbGxvdy00MDAgdGV4dC1sZyBpdGFsaWNcIj5cclxuICAgICAgICAgIFNpIG5vIGxvIGVuY3VlbnRyYXMsIG1pcmEgYXJyaWJhLlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICBjbGFzcz1cInctZnVsbCBwLTUgYmctdHJhbnNwYXJlbnQgYm9yZGVyIGJvcmRlci1ncmF5LTUwMC81MCByb3VuZGVkLXhsIHRleHQtZ3JheS00MDAgdGV4dC1iYXNlIGhvdmVyOmJnLWdyYXktNDAwLzEwIGhvdmVyOmJvcmRlci1ncmF5LTQwMC83MCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDAgdGV4dC1sZWZ0IGZsZXggaXRlbXMtY2VudGVyXCIgXHJcbiAgICAgICAgICAgIDpjbGFzcz1cInsgJ29wYWNpdHktNjAgY3Vyc29yLW5vdC1hbGxvd2VkJzogaGludFNob3duIH1cIiBcclxuICAgICAgICAgICAgQGNsaWNrPVwic2hvd0hpbnRcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yLTNcIj7wn6SUPC9zcGFuPlxyXG4gICAgICAgICAgICDCv0PDs21vIGxsZWdhcyBhbCBuaXZlbHt7IGN1cnJlbnRMZXZlbEluZGV4ICsgMiB9fSBzaSBubyBoYXkgYm90b25lcy4uLj9cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG48IS0tIFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgYm9yZGVyLWJsdWUtNDAwLzUwIHJvdW5kZWQteGwgcC02IGJnLXRyYW5zcGFyZW50XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1ibHVlLTMwMCB0ZXh0LWJhc2UgbWItNCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yLTNcIj7wn5SXPC9zcGFuPlxyXG4gICAgICAgICAgICDCv05lY2VzaXRhcyBhY2Nlc28gZGlyZWN0byBhbCBzaWd1aWVudGUgbml2ZWw/XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJiZy1ibHVlLTYwMCBob3ZlcjpiZy1ibHVlLTUwMCB0ZXh0LXdoaXRlIHB4LTYgcHktMyByb3VuZGVkLWxnIHRleHQtYmFzZSBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDAgaG92ZXI6LXRyYW5zbGF0ZS15LTAuNSBzaGFkb3ctbGcgZmxleCBpdGVtcy1jZW50ZXJcIiBcclxuICAgICAgICAgICAgICBAY2xpY2s9XCJnb1RvTmV4dExldmVsXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXItMlwiPuKeoe+4jzwvc3Bhbj5cclxuICAgICAgICAgICAgICBBY2NlZGVyIGFsIE5pdmVsIHt7IGN1cnJlbnRMZXZlbEluZGV4ICsgMiB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYm90dG9tLXJpZ2h0LWhlbHBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImhlbHAtaWNvblwiIEBjbGljaz1cInRvZ2dsZVNvbHV0aW9uXCI+PzwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiB2LWlmPVwic2hvd0RldkNvbnRyb2xzXCIgY2xhc3M9XCJkZXYtY29udHJvbHNcIj5cclxuICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJwcmV2aW91c0xldmVsXCIgOmRpc2FibGVkPVwiY3VycmVudExldmVsSW5kZXggPT09IDBcIiBjbGFzcz1cImRldi1idG5cIj5cclxuICAgICAgICDihpAgQW50ZXJpb3JcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIFxyXG4gICAgICA8c2VsZWN0IHYtbW9kZWw9XCJjdXJyZW50TGV2ZWxJbmRleFwiIEBjaGFuZ2U9XCJsb2FkTGV2ZWxcIiBjbGFzcz1cImxldmVsLXNlbGVjdFwiPlxyXG4gICAgICAgIDxvcHRpb24gdi1mb3I9XCIoXywgaW5kZXgpIGluIGxldmVsc1N0b3JlLkxJU1RBUkxFVkVMU1wiIDprZXk9XCJpbmRleFwiIDp2YWx1ZT1cImluZGV4XCI+XHJcbiAgICAgICAgICBOaXZlbCB7eyBpbmRleCArIDEgfX1cclxuICAgICAgICA8L29wdGlvbj5cclxuICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgIFxyXG4gICAgICA8YnV0dG9uIEBjbGljaz1cIm5leHRMZXZlbFwiIDpkaXNhYmxlZD1cImN1cnJlbnRMZXZlbEluZGV4ID49IGxldmVsc1N0b3JlLkxJU1RBUkxFVkVMUy5sZW5ndGggLSAxXCIgY2xhc3M9XCJkZXYtYnRuXCI+XHJcbiAgICAgICAgU2lndWllbnRlIOKGklxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgdi1pZj1cInNob3dTb2x1dGlvbiAmJiBsZXZlbFwiIGNsYXNzPVwic29sdXRpb24tcGFuZWxcIj5cclxuICAgICAgPGgzPlNvbHVjacOzbjo8L2gzPlxyXG4gICAgICA8cD57eyBsZXZlbC5sZXZlbF9zb2x1dGlvbiB9fTwvcD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gPGRpdiBjbGFzcz1cImJvdHRvbS1sZWZ0LWJ1bGJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImJ1bGItaWNvblwiIEBjbGljaz1cInRvZ2dsZURldkNvbnRyb2xzXCI+8J+SoTwvZGl2PlxyXG4gICAgPC9kaXY+IC0tPlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdCBzZXR1cD5cclxuaW1wb3J0IHsgcmVmLCBvbk1vdW50ZWQgfSBmcm9tICd2dWUnO1xyXG5pbXBvcnQgeyB1c2VMZXZlbHNTdG9yZSB9IGZyb20gJy4uL3N0b3JlL2xldmVsJztcclxuXHJcbmNvbnN0IGxldmVsc1N0b3JlID0gdXNlTGV2ZWxzU3RvcmUoKTtcclxuY29uc3QgbGV2ZWwgPSByZWYobnVsbCk7XHJcbmNvbnN0IGN1cnJlbnRMZXZlbEluZGV4ID0gcmVmKDApO1xyXG5jb25zdCBoaW50U2hvd24gPSByZWYoZmFsc2UpO1xyXG5jb25zdCBzaG93U29sdXRpb24gPSByZWYoZmFsc2UpO1xyXG5jb25zdCBzaG93RGV2Q29udHJvbHMgPSByZWYoZmFsc2UpO1xyXG5cclxuY29uc3QgbG9hZExldmVsID0gYXN5bmMgKCkgPT4ge1xyXG4gIGlmIChsZXZlbHNTdG9yZS5MSVNUQVJMRVZFTFMgJiYgbGV2ZWxzU3RvcmUuTElTVEFSTEVWRUxTW2N1cnJlbnRMZXZlbEluZGV4LnZhbHVlXSkge1xyXG4gICAgbGV2ZWwudmFsdWUgPSBsZXZlbHNTdG9yZS5MSVNUQVJMRVZFTFNbY3VycmVudExldmVsSW5kZXgudmFsdWVdO1xyXG4gICAgaGludFNob3duLnZhbHVlID0gZmFsc2U7XHJcbiAgICBzaG93U29sdXRpb24udmFsdWUgPSBmYWxzZTtcclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBuZXh0TGV2ZWwgPSAoKSA9PiB7XHJcbiAgaWYgKGN1cnJlbnRMZXZlbEluZGV4LnZhbHVlIDwgbGV2ZWxzU3RvcmUuTElTVEFSTEVWRUxTLmxlbmd0aCAtIDEpIHtcclxuICAgIGN1cnJlbnRMZXZlbEluZGV4LnZhbHVlKys7XHJcbiAgICBsb2FkTGV2ZWwoKTtcclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBwcmV2aW91c0xldmVsID0gKCkgPT4ge1xyXG4gIGlmIChjdXJyZW50TGV2ZWxJbmRleC52YWx1ZSA+IDApIHtcclxuICAgIGN1cnJlbnRMZXZlbEluZGV4LnZhbHVlLS07XHJcbiAgICBsb2FkTGV2ZWwoKTtcclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBzaG93SGludCA9ICgpID0+IHtcclxuICBoaW50U2hvd24udmFsdWUgPSB0cnVlO1xyXG59O1xyXG5cclxuY29uc3QgZ29Ub05leHRMZXZlbCA9ICgpID0+IHtcclxuICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAvbml2ZWwke2N1cnJlbnRMZXZlbEluZGV4LnZhbHVlICsgMn1gO1xyXG59O1xyXG5cclxuY29uc3QgdG9nZ2xlU29sdXRpb24gPSAoKSA9PiB7XHJcbiAgc2hvd1NvbHV0aW9uLnZhbHVlID0gIXNob3dTb2x1dGlvbi52YWx1ZTtcclxufTtcclxuXHJcbmNvbnN0IHRvZ2dsZURldkNvbnRyb2xzID0gKCkgPT4ge1xyXG4gIHNob3dEZXZDb250cm9scy52YWx1ZSA9ICFzaG93RGV2Q29udHJvbHMudmFsdWU7XHJcbn07XHJcblxyXG5vbk1vdW50ZWQoYXN5bmMgKCkgPT4ge1xyXG4gIGF3YWl0IGxldmVsc1N0b3JlLkdFVF9MRVZFTFMoKTtcclxuICBsb2FkTGV2ZWwoKTtcclxufSk7XHJcblxyXG5jb25zdCBoYW5kbGVOZXh0TGV2ZWwgPSBhc3luYyAoKSA9PiB7XHJcbiAgY29uc3QgZG5pID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2RuaScpOyAvLyBPYnRlbmVyIGVsIEROSSBkZXNkZSBlbCBsb2NhbFN0b3JhZ2VcclxuXHJcbiAgaWYgKCFkbmkpIHtcclxuICAgIGNvbnNvbGUubG9nKCdETkkgbm8gZW5jb250cmFkbycpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MucG9zdCgnL2FwaS91cGRhdGUtbGV2ZWwnLCB7ICdkbmknOiBkbmkgfSk7XHJcbiAgICBjb25zb2xlLmxvZygnUmVzcHVlc3RhIGRlbCBzZXJ2aWRvciBhbCBhY3R1YWxpemFyIG5pdmVsOicsIHJlc3BvbnNlKTtcclxuICAgIGNvbnN0IG5ld0xldmVsID0gcmVzcG9uc2UuZGF0YS5uZXdfbGV2ZWw7IC8vIEVsIG5pdmVsIHF1ZSBkZXZ1ZWx2ZSBsYSBBUElcclxuICAgIGNvbnN0IG5hbWVMZXZlbCA9IHJlc3BvbnNlLmRhdGEubml2ZWxfdXJsO1xyXG5cclxuICAgIC8vIEFjdHVhbGl6YSBlbCB2YWxvciBkZSAnbml2ZWxfbnVtJyBlbiBlbCBsb2NhbFN0b3JhZ2UgY29uIGVsIG51ZXZvIG5pdmVsXHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbml2ZWxfbnVtJywgbmV3TGV2ZWwpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ25pdmVsJywgbmFtZUxldmVsKTtcclxuICAgIGNvbnNvbGUubG9nKGBOaXZlbCBhY3R1YWxpemFkbyBhOiAke25ld0xldmVsfWApO1xyXG4gICAgcm91dGVyLnB1c2gobmFtZUxldmVsKTtcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgYWwgYWN0dWFsaXphciBlbCBuaXZlbDonLCBlcnJvci5yZXNwb25zZS5kYXRhKTtcclxuICB9XHJcbn07XHJcblxyXG5pZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ25pdmVsX251bScpID09IDApe1xyXG4gIGhhbmRsZU5leHRMZXZlbCgpO1xyXG59XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlIHNjb3BlZD5cclxuLmN1c3RvbS1ncmFkaWVudCB7XHJcbiAgYmFja2dyb3VuZDogIzAxMDEzZDtcclxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTE1ZGVnLCByZ2JhKDEsIDEsIDYxLCAxKSAwJSwgcmdiYSgyNiwgNywgODksIDEpIDM1JSwgcmdiYSg5OSwgMTksIDE3MywgMSkgMTAwJSk7XHJcbn1cclxuXHJcbi5ib3R0b20tcmlnaHQtaGVscCB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIGJvdHRvbTogMjRweDtcclxuICByaWdodDogMjRweDtcclxufVxyXG5cclxuLmhlbHAtaWNvbiB7XHJcbiAgd2lkdGg6IDQ4cHg7XHJcbiAgaGVpZ2h0OiA0OHB4O1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC40KTtcclxuICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGZvbnQtc2l6ZTogMThweDtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XHJcbn1cclxuXHJcbi5oZWxwLWljb246aG92ZXIge1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC42KTtcclxufVxyXG5cclxuLmJvdHRvbS1sZWZ0LWJ1bGIge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBib3R0b206IDI0cHg7XHJcbiAgbGVmdDogMjRweDtcclxufVxyXG5cclxuLmJ1bGItaWNvbiB7XHJcbiAgd2lkdGg6IDMycHg7XHJcbiAgaGVpZ2h0OiAzMnB4O1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcclxuICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGZvbnQtc2l6ZTogMTRweDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcclxuICBvcGFjaXR5OiAwLjc7XHJcbn1cclxuXHJcbi5idWxiLWljb246aG92ZXIge1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuICBvcGFjaXR5OiAxO1xyXG59XHJcblxyXG4uZGV2LWNvbnRyb2xzIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiAyMHB4O1xyXG4gIHJpZ2h0OiAyMHB4O1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZ2FwOiA4cHg7XHJcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjUpO1xyXG4gIHBhZGRpbmc6IDhweDtcclxuICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbn1cclxuXHJcbi5kZXYtYnRuIHtcclxuICBwYWRkaW5nOiA2cHggMTJweDtcclxuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxuICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIGZvbnQtc2l6ZTogMTJweDtcclxufVxyXG5cclxuLmRldi1idG46ZGlzYWJsZWQge1xyXG4gIG9wYWNpdHk6IDAuNTtcclxuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG59XHJcblxyXG4ubGV2ZWwtc2VsZWN0IHtcclxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNSk7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTtcclxuICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgcGFkZGluZzogNnB4O1xyXG4gIGZvbnQtc2l6ZTogMTJweDtcclxufVxyXG5cclxuLnNvbHV0aW9uLXBhbmVsIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgYm90dG9tOiA4MHB4O1xyXG4gIGxlZnQ6IDIwcHg7XHJcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjgpO1xyXG4gIHBhZGRpbmc6IDEycHg7XHJcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gIG1heC13aWR0aDogMjgwcHg7XHJcbiAgZm9udC1zaXplOiAxMnB4O1xyXG59XHJcblxyXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcclxuICAudGV4dC05eGwge1xyXG4gICAgZm9udC1zaXplOiA2cmVtO1xyXG4gIH1cclxuICBcclxuICBkaXZbY2xhc3MqPVwibWF4LXctbGdcIl0ge1xyXG4gICAgbWFyZ2luOiAwIDE2cHg7XHJcbiAgICBwYWRkaW5nOiAyNHB4O1xyXG4gIH1cclxuICBcclxuICAudGV4dC0yeGwge1xyXG4gICAgZm9udC1zaXplOiAxLjI1cmVtO1xyXG4gIH1cclxuICBcclxuICAudGV4dC1sZyB7XHJcbiAgICBmb250LXNpemU6IDFyZW07XHJcbiAgfVxyXG59XHJcbjwvc3R5bGU+IiwiPHRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJtaW4taC1zY3JlZW4gYmctYmFja2dyb3VuZCByZWxhdGl2ZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1pbi1oLXNjcmVlbiBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBwLTggY3VzdG9tLWdyZWVuLWdyYWRpZW50XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSB0b3AtNCBsZWZ0LTQgYmctZ3JlZW4tNjAwLzgwIHRleHQtd2hpdGUgcHgtMyBweS0yIHJvdW5kZWQtbGcgei0xMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zbVwiPuKchSBVUkwgY29ycmVjdGE8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICBcclxuICAgICAgPGRpdiBjbGFzcz1cIm1heC13LTR4bCBteC1hdXRvIHRleHQtY2VudGVyIHNwYWNlLXktOFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzcGFjZS15LTRcIj5cclxuICAgICAgICAgIDxoMSBjbGFzcz1cInRleHQtNnhsIGZvbnQtYm9sZCB0ZXh0LXdoaXRlXCI+e3sgY3VycmVudExldmVsSW5kZXggKyAxIH19PC9oMT5cclxuICAgICAgICAgIDxoMiBjbGFzcz1cInRleHQteGwgdGV4dC1zbGF0ZS0zMDBcIj4vbml2ZWx7eyBjdXJyZW50TGV2ZWxJbmRleCArIDEgfX08L2gyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJiZy1zbGF0ZS04MDAvNTAgcC0xMCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItc2xhdGUtNzAwIG1heC13LTV4bCBteC1hdXRvXCI+XHJcbiAgICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LTJ4bCBtYi02IHRleHQtd2hpdGVcIj5FbCBjYW1wYW1lbnRvIHRlIGVzcGVyYTwvaDM+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3BhY2UteS00IHRleHQtc2xhdGUtMzAwIG1iLTZcIj5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWxnXCI+U29sbyBkZWJlcyA8c3BhbiBjbGFzcz1cInRleHQtZ3JlZW4tNDAwIGZvbnQtc2VtaWJvbGRcIj5lbnRyYXI8L3NwYW4+LjwvcD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgPGltZyBcclxuICAgICAgICAgICAgICA6c3JjPVwiY2FtcGFtZW50SW1hZ2VcIiBcclxuICAgICAgICAgICAgICBhbHQ9XCJDYW1wYW1lbnRvIFNjb3V0XCIgXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgbXgtYXV0byByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItc2xhdGUtNjAwIGN1cnNvci1wb2ludGVyIGhvdmVyOmJyaWdodG5lc3MtMTEwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMCBzZWxlY3Qtbm9uZVwiIFxyXG4gICAgICAgICAgICAgIGRyYWdnYWJsZT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICB1c2VtYXA9XCIjaW1hZ2UtbWFwXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDxtYXAgbmFtZT1cImltYWdlLW1hcFwiIEBjbGljaz1cImhhbmRsZU5leHRMZXZlbFwiPlxyXG4gICAgICAgICAgICAgIDxhcmVhIHRhcmdldD1cIlwiIGFsdD1cIlwiIHRpdGxlPVwiXCIgY29vcmRzPVwiMzYyLDkxOCwzNTMsNjUwLDQ3NSw3MDEsNDY1LDY5OVwiIHNoYXBlPVwicG9seVwiPlxyXG4gICAgICAgICAgICAgIDxhcmVhIHRhcmdldD1cIlwiIGFsdD1cIlwiIHRpdGxlPVwiXCIgY29vcmRzPVwiNTU5LDczNyw1NjAsOTk1LDQ3NSw5NzRcIiBzaGFwZT1cInBvbHlcIj5cclxuICAgICAgICAgICAgICA8YXJlYSB0YXJnZXQ9XCJcIiBhbHQ9XCJcIiB0aXRsZT1cIlwiIGNvb3Jkcz1cIjQ2NSw2OTgsNTU5LDczMiw0NzUsOTcyLDQ2MSw2ODZcIiBzaGFwZT1cInBvbHlcIj5cclxuICAgICAgICAgICAgICA8YXJlYSB0YXJnZXQ9XCJcIiBhbHQ9XCJcIiB0aXRsZT1cIlwiIGNvb3Jkcz1cIjQ2NCw3MDcsMzYxLDkyMywzOTUsODQwXCIgc2hhcGU9XCJwb2x5XCI+XHJcbiAgICAgICAgICAgICAgPGFyZWEgdGFyZ2V0PVwiXCIgYWx0PVwiXCIgdGl0bGU9XCJcIiBjb29yZHM9XCIzNjIsOTE5LDM4MCw5MjYsMzk5LDg0NywzOTksODQ3XCIgc2hhcGU9XCJwb2x5XCI+XHJcbiAgICAgICAgICAgICAgPGFyZWEgdGFyZ2V0PVwiXCIgYWx0PVwiXCIgdGl0bGU9XCJcIiBjb29yZHM9XCI0MDgsODI0LDUxMiw3OTQsNDU5LDcxM1wiIHNoYXBlPVwicG9seVwiPlxyXG4gICAgICAgICAgICAgIDxhcmVhIHRhcmdldD1cIlwiIGFsdD1cIlwiIHRpdGxlPVwiXCIgY29vcmRzPVwiMzgxLDkyNiwzOTksODQ0LDQwNCw4NjYsNDA0LDg2M1wiIHNoYXBlPVwicG9seVwiPlxyXG4gICAgICAgICAgICAgIDxhcmVhIHRhcmdldD1cIlwiIGFsdD1cIlwiIHRpdGxlPVwiXCIgY29vcmRzPVwiXCIgc2hhcGU9XCJwb2x5XCI+XHJcbiAgICAgICAgICAgICAgPGFyZWEgdGFyZ2V0PVwiXCIgYWx0PVwiXCIgdGl0bGU9XCJcIiBjb29yZHM9XCI0NDksOTUwLDQzMyw5NjEsNDMxLDkzMCw0NDIsOTQxXCIgc2hhcGU9XCJwb2x5XCI+XHJcbiAgICAgICAgICAgICAgPGFyZWEgdGFyZ2V0PVwiXCIgYWx0PVwiXCIgdGl0bGU9XCJcIiBjb29yZHM9XCI0NzEsOTUxLDQ0OCw5MjIsNDY5LDg1NCw0NzQsOTczLDQzNiw5NjAsNDQ0LDk1NCw0NzQsOTU0XCIgc2hhcGU9XCJwb2x5XCI+XHJcbiAgICAgICAgICAgICAgPGFyZWEgdGFyZ2V0PVwiXCIgYWx0PVwiXCIgdGl0bGU9XCJcIiBjb29yZHM9XCI0NzIsOTY3LDQ2NCw5NDEsNDgwLDk1Myw0ODMsOTIyXCIgc2hhcGU9XCJwb2x5XCI+XHJcbiAgICAgICAgICAgICAgPGFyZWEgdGFyZ2V0PVwiXCIgYWx0PVwiXCIgdGl0bGU9XCJcIiBjb29yZHM9XCI0MzQsODgxLDQ0OSw5MTksNDY3LDg2NlwiIHNoYXBlPVwicG9seVwiPlxyXG4gICAgICAgICAgICAgIDxhcmVhIHRhcmdldD1cIlwiIGFsdD1cIlwiIHRpdGxlPVwiXCIgY29vcmRzPVwiNDUwLDg0OCw0NjgsODQwLDQ2OCw4ODBcIiBzaGFwZT1cInBvbHlcIj5cclxuICAgICAgICAgICAgICA8YXJlYSB0YXJnZXQ9XCJcIiBhbHQ9XCJcIiB0aXRsZT1cIlwiIGNvb3Jkcz1cIjQwNCw4MjMsNDcxLDgyNSw0NjgsODAyLDM4OCw4MzZcIiBzaGFwZT1cInBvbHlcIj5cclxuICAgICAgICAgICAgICA8YXJlYSB0YXJnZXQ9XCJcIiBhbHQ9XCJcIiB0aXRsZT1cIlwiIGNvb3Jkcz1cIjQ0Miw4MjMsNDUwLDgzNSw0NzIsODI5LDQ5Nyw4MjFcIiBzaGFwZT1cInBvbHlcIj5cclxuICAgICAgICAgICAgICA8YXJlYSB0YXJnZXQ9XCJcIiBhbHQ9XCJcIiB0aXRsZT1cIlwiIGNvb3Jkcz1cIjQ0OSw4NzMsNDUzLDg2NCw0NzUsODY3XCIgc2hhcGU9XCJwb2x5XCI+XHJcbiAgICAgICAgICAgICAgPGFyZWEgdGFyZ2V0PVwiXCIgYWx0PVwiXCIgdGl0bGU9XCJcIiBjb29yZHM9XCI0MDIsODcxLDQwOCw4NzEsMzk4LDg0MVwiIHNoYXBlPVwicG9seVwiPlxyXG4gICAgICAgICAgICAgIDxhcmVhIHRhcmdldD1cIlwiIGFsdD1cIlwiIHRpdGxlPVwiXCIgY29vcmRzPVwiNDUyLDg1MCw0NjMsODY5LDQ1Myw4NjRcIiBzaGFwZT1cInBvbHlcIj5cclxuICAgICAgICAgICAgICA8YXJlYSB0YXJnZXQ9XCJcIiBhbHQ9XCJcIiB0aXRsZT1cIlwiIGNvb3Jkcz1cIjM3MCw4NDEsMzk4LDg1Miw0MDYsODMwXCIgc2hhcGU9XCJwb2x5XCI+XHJcbiAgICAgICAgICAgICAgPGFyZWEgdGFyZ2V0PVwiXCIgYWx0PVwiXCIgdGl0bGU9XCJcIiBjb29yZHM9XCI0NTAsOTI1LDQ2Nyw5MzksNDU2LDkzNlwiIHNoYXBlPVwicG9seVwiPlxyXG4gICAgICAgICAgICAgIDxhcmVhIHRhcmdldD1cIlwiIGFsdD1cIlwiIHRpdGxlPVwiXCIgY29vcmRzPVwiNDM0LDk0OCw0NDYsOTYyLDQ0OSw5NTFcIiBzaGFwZT1cInBvbHlcIj5cclxuICAgICAgICAgIDwvbWFwPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTQgcC0zIGJnLXNsYXRlLTcwMC8zMCByb3VuZGVkIGJvcmRlciBib3JkZXItc2xhdGUtNjAwXCI+XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC14cyB0ZXh0LXNsYXRlLTUwMCB0ZXh0LWNlbnRlclwiPvCfj5XvuI8gRW5jdWVudHJhIGxhIGVudHJhZGEgYSBsYXMgY2FycGFzLi4uPC9wPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICBcclxuICAgICAgPGRpdiB2LWlmPVwic2hvd1NvbHV0aW9uXCIgY2xhc3M9XCJmaXhlZCBib3R0b20tMjAgcmlnaHQtNCBiZy1ibGFjay84MCB0ZXh0LXdoaXRlIHAtNCByb3VuZGVkLWxnIG1heC13LXhzIHRleHQtc21cIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJmb250LWJvbGQgbWItMlwiPlNvbHVjacOzbjo8L2gzPlxyXG4gICAgICAgIDxwPkhheiBjbGljIGVuIGVsIMOhcmVhIGNvcnJlY3RhIGRlbCBjYW1wYW1lbnRvIHBhcmEgYXZhbnphci48L3A+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IHYtaWY9XCJzaG93RGV2Q29udHJvbHNcIiBjbGFzcz1cImZpeGVkIHRvcC00IHJpZ2h0LTQgYmctYmxhY2svNTAgcC0yIHJvdW5kZWQtbGcgZmxleCBnYXAtMlwiPlxyXG4gICAgICAgIDxidXR0b24gQGNsaWNrPVwiZ29Ub0xldmVsKDEpXCIgY2xhc3M9XCJweC0zIHB5LTEgYmctd2hpdGUvMjAgdGV4dC13aGl0ZSByb3VuZGVkIHRleHQtc20gaG92ZXI6Ymctd2hpdGUvMzBcIj5cclxuICAgICAgICAgIOKGkCBOaXZlbCAxXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJnb1RvTGV2ZWwoMylcIiBjbGFzcz1cInB4LTMgcHktMSBiZy13aGl0ZS8yMCB0ZXh0LXdoaXRlIHJvdW5kZWQgdGV4dC1zbSBob3ZlcjpiZy13aGl0ZS8zMFwiPlxyXG4gICAgICAgICAgTml2ZWwgMyDihpJcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQgc2V0dXA+XHJcbmltcG9ydCB7IHJlZiwgY29tcHV0ZWQsIG9uTW91bnRlZCB9IGZyb20gJ3Z1ZSc7XHJcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XHJcbmltcG9ydCB7IHVzZVJvdXRlciB9IGZyb20gJ3Z1ZS1yb3V0ZXInO1xyXG5jb25zdCByb3V0ZXIgPSB1c2VSb3V0ZXIoKTtcclxuXHJcbi8vIPCfmoAgVkFMT1IgQ09SUkVHSURPIGJhc2FkbyBlbiB0dSBlbnRyYWRhICgxNTM2eDEwMjQpIPCfmoBcclxuY29uc3QgT1JJR0lOQUxfSU1BR0VfV0lEVEggPSAxNTM2OyBcclxuXHJcbmNvbnN0IGN1cnJlbnRMZXZlbEluZGV4ID0gcmVmKDEpO1xyXG5jb25zdCBzaG93U29sdXRpb24gPSByZWYoZmFsc2UpO1xyXG5jb25zdCBzaG93RGV2Q29udHJvbHMgPSByZWYoZmFsc2UpO1xyXG5cclxuY29uc3QgY2FtcGFtZW50SW1hZ2UgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgcmV0dXJuIFwiL2ltYWdlcy9uaXZlbDIucG5nXCI7XHJcbn0pO1xyXG5cclxuY29uc3QgbWFrZUltYWdlTWFwUmVzcG9uc2l2ZSA9ICgpID0+IHtcclxuICAgIGNvbnN0IGltZyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2ltZ1t1c2VtYXA9XCIjaW1hZ2UtbWFwXCJdJyk7XHJcbiAgICBpZiAoIWltZykgcmV0dXJuO1xyXG4gICAgXHJcbiAgICBjb25zdCByZXNpemVNYXAgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudFdpZHRoID0gaW1nLmNsaWVudFdpZHRoO1xyXG4gICAgICAgIGNvbnN0IHNjYWxlRmFjdG9yID0gY3VycmVudFdpZHRoIC8gT1JJR0lOQUxfSU1BR0VfV0lEVEg7XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgbWFwID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWFwW25hbWU9XCJpbWFnZS1tYXBcIl0nKTtcclxuICAgICAgICBpZiAobWFwKSB7XHJcbiAgICAgICAgICAgIG1hcC5xdWVyeVNlbGVjdG9yQWxsKCdhcmVhJykuZm9yRWFjaChhcmVhID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBvcmlnaW5hbENvb3JkcyA9IGFyZWEuZGF0YXNldC5vcmlnaW5hbENvb3JkcztcclxuICAgICAgICAgICAgICAgIGlmICghb3JpZ2luYWxDb29yZHMpIHtcclxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbENvb3JkcyA9IGFyZWEuY29vcmRzO1xyXG4gICAgICAgICAgICAgICAgICAgIGFyZWEuZGF0YXNldC5vcmlnaW5hbENvb3JkcyA9IG9yaWdpbmFsQ29vcmRzO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdDb29yZHMgPSBvcmlnaW5hbENvb3Jkcy5zcGxpdCgnLCcpLm1hcChjb29yZCA9PiBcclxuICAgICAgICAgICAgICAgICAgICBNYXRoLnJvdW5kKHBhcnNlSW50KGNvb3JkKSAqIHNjYWxlRmFjdG9yKVxyXG4gICAgICAgICAgICAgICAgKS5qb2luKCcsJyk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGFyZWEuY29vcmRzID0gbmV3Q29vcmRzO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICBpbWcub25sb2FkID0gcmVzaXplTWFwOyBcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVNYXApO1xyXG4gICAgaWYgKGltZy5jb21wbGV0ZSkge1xyXG4gICAgICAgIHJlc2l6ZU1hcCgpO1xyXG4gICAgfVxyXG59O1xyXG5cclxuXHJcbm9uTW91bnRlZCgoKSA9PiB7XHJcbiAgICBtYWtlSW1hZ2VNYXBSZXNwb25zaXZlKCk7XHJcbn0pO1xyXG5cclxuXHJcbmNvbnN0IHRvZ2dsZVNvbHV0aW9uID0gKCkgPT4ge1xyXG4gIHNob3dTb2x1dGlvbi52YWx1ZSA9ICFzaG93U29sdXRpb24udmFsdWU7XHJcbn07XHJcblxyXG5jb25zdCB0b2dnbGVEZXZDb250cm9scyA9ICgpID0+IHtcclxuICBzaG93RGV2Q29udHJvbHMudmFsdWUgPSAhc2hvd0RldkNvbnRyb2xzLnZhbHVlO1xyXG59O1xyXG5cclxuY29uc3QgZ29Ub0xldmVsID0gKGxldmVsTnVtYmVyKSA9PiB7XHJcbiAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgL25pdmVsJHtsZXZlbE51bWJlcn1gO1xyXG59O1xyXG5cclxuXHJcbmNvbnN0IGhhbmRsZU5leHRMZXZlbCA9IGFzeW5jICgpID0+IHtcclxuICBjb25zdCBkbmkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZG5pJyk7IC8vIE9idGVuZXIgZWwgRE5JIGRlc2RlIGVsIGxvY2FsU3RvcmFnZVxyXG5cclxuICBpZiAoIWRuaSkge1xyXG4gICAgY29uc29sZS5sb2coJ0ROSSBubyBlbmNvbnRyYWRvJyk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICB0cnkge1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0KCcvYXBpL3VwZGF0ZS1sZXZlbCcsIHsgJ2RuaSc6IGRuaSB9KTtcclxuICAgIGNvbnNvbGUubG9nKCdSZXNwdWVzdGEgZGVsIHNlcnZpZG9yIGFsIGFjdHVhbGl6YXIgbml2ZWw6JywgcmVzcG9uc2UpO1xyXG4gICAgY29uc3QgbmV3TGV2ZWwgPSByZXNwb25zZS5kYXRhLm5ld19sZXZlbDsgLy8gRWwgbml2ZWwgcXVlIGRldnVlbHZlIGxhIEFQSVxyXG4gICAgY29uc3QgbmFtZUxldmVsID0gcmVzcG9uc2UuZGF0YS5uaXZlbF91cmw7XHJcblxyXG4gICAgLy8gQWN0dWFsaXphIGVsIHZhbG9yIGRlICduaXZlbF9udW0nIGVuIGVsIGxvY2FsU3RvcmFnZSBjb24gZWwgbnVldm8gbml2ZWxcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCduaXZlbF9udW0nLCBuZXdMZXZlbCk7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbml2ZWwnLCBuYW1lTGV2ZWwpO1xyXG4gICAgY29uc29sZS5sb2coYE5pdmVsIGFjdHVhbGl6YWRvIGE6ICR7bmV3TGV2ZWx9YCk7XHJcbiAgICByb3V0ZXIucHVzaChuYW1lTGV2ZWwpO1xyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICBjb25zb2xlLmVycm9yKCdFcnJvciBhbCBhY3R1YWxpemFyIGVsIG5pdmVsOicsIGVycm9yLnJlc3BvbnNlLmRhdGEpO1xyXG4gIH1cclxufTtcclxuXHJcbmlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbml2ZWxfbnVtJykgPT0gMSl7XHJcbiAgaGFuZGxlTmV4dExldmVsKCk7XHJcbn1cclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGUgc2NvcGVkPlxyXG4uY3VzdG9tLWdyZWVuLWdyYWRpZW50IHtcclxuICBiYWNrZ3JvdW5kOiAjMGIyMTAxO1xyXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMTVkZWcsIHJnYmEoMTEsIDMzLCAxLCAxKSAwJSwgcmdiYSgxMCwgMTA1LCAzMiwgMSkgMzUlLCByZ2JhKDEwLCAxNDUsIDE3LCAxKSAxMDAlKTtcclxufVxyXG48L3N0eWxlPiIsIjx0ZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwibWluLWgtc2NyZWVuIGJnLWJhY2tncm91bmQgcmVsYXRpdmVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtaW4taC1zY3JlZW4gZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcC04IGN1c3RvbS1hbWJlci1ncmFkaWVudFwiPlxyXG4gICAgICBcclxuICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIHRvcC00IGxlZnQtNCBiZy10cmFuc3BhcmVudCB0ZXh0LXRyYW5zcGFyZW50IHB4LTMgcHktMiByb3VuZGVkLWxnIHBvaW50ZXItZXZlbnRzLW5vbmUgei0xMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTJcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zbVwiPlBsYWNlaG9sZGVyPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYXgtdy00eGwgbXgtYXV0byB0ZXh0LWNlbnRlciBzcGFjZS15LThcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3BhY2UteS00XCI+XHJcbiAgICAgICAgICA8aDEgY2xhc3M9XCJ0ZXh0LTZ4bCBmb250LWJvbGQgdGV4dC13aGl0ZVwiPjM8L2gxPlxyXG4gICAgICAgICAgPGgyIGNsYXNzPVwidGV4dC14bCB0ZXh0LXNsYXRlLTMwMFwiPi9uaXZlbDM8L2gyPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmctc2xhdGUtODAwLzUwIHAtMTAgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXNsYXRlLTcwMCBtYXgtdy01eGwgbXgtYXV0b1wiPlxyXG4gICAgICAgICAgPGgzIGNsYXNzPVwidGV4dC0yeGwgbWItNiB0ZXh0LXdoaXRlXCI+VGUgZGllcm9uIGxhIGRpcmVjY2nDs24gZXF1aXZvY2FkYTwvaDM+XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGFjZS15LTQgdGV4dC1zbGF0ZS0zMDAgbWItNlwiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtbGdcIj5ObyBzaWVtcHJlIGRlYmVzIDxzcGFuIGNsYXNzPVwidGV4dC15ZWxsb3ctNDAwIGZvbnQtc2VtaWJvbGRcIj5zZWd1aXIgbGFzIGluZGljYWNpb25lcyBhbCBwaWUgZGUgbGEgbGV0cmEuLi48L3NwYW4+PC9wPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgIDxpbWcgXHJcbiAgICAgICAgICAgICAgc3JjPVwiL2ltYWdlcy9kZXJlY2hhLnBuZ1wiIFxyXG4gICAgICAgICAgICAgIGFsdD1cIkJvc3F1ZSBjb24gZmxlY2hhIGRpcmVjY2lvbmFsXCIgXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgaC05NiBteC1hdXRvIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1zbGF0ZS02MDAgY3Vyc29yLXBvaW50ZXIgaG92ZXI6YnJpZ2h0bmVzcy0xMTAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwIHNlbGVjdC1ub25lIG9iamVjdC1jb3ZlclwiIFxyXG4gICAgICAgICAgICAgIGRyYWdnYWJsZT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICBAY2xpY2s9XCJoYW5kbGVJbWFnZUNsaWNrXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgIDxkaXYgdi1pZj1cInNob3dTb2x1dGlvblwiIGNsYXNzPVwiZml4ZWQgYm90dG9tLTIwIHJpZ2h0LTQgYmctYmxhY2svODAgdGV4dC13aGl0ZSBwLTQgcm91bmRlZC1sZyBtYXgtdy14cyB0ZXh0LXNtXCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwiZm9udC1ib2xkIG1iLTJcIj5QaXN0YTo8L2gzPlxyXG4gICAgICAgIDxwPkxhIGZsZWNoYSBhcHVudGEgaGFjaWEgbGEgZGVyZWNoYSwgcGVybyB0YWwgdmV6IGRlYmVyw61hcyBpciBlbiBsYSBkaXJlY2Npw7NuIG9wdWVzdGEuLi4gwr9IYXMgcHJvYmFkbyBtb2RpZmljYXIgbGEgVVJMIG1hbnVhbG1lbnRlPzwvcD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmaXhlZCBib3R0b20tNCBsZWZ0LTRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy04IGgtOCBiZy13aGl0ZS8xMCByb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1zbSBjdXJzb3ItcG9pbnRlciBob3ZlcjpiZy13aGl0ZS8yMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDAgb3BhY2l0eS03MCBob3ZlcjpvcGFjaXR5LTEwMFwiIEBjbGljaz1cInRvZ2dsZURldkNvbnRyb2xzXCI+XHJcbiAgICAgICAgICDwn5KhXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICAgIDxkaXYgdi1pZj1cInNob3dEZXZDb250cm9sc1wiIGNsYXNzPVwiZml4ZWQgdG9wLTQgcmlnaHQtNCBiZy1ibGFjay81MCBwLTIgcm91bmRlZC1sZyBmbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJnb1RvTGV2ZWwoMilcIiBjbGFzcz1cInB4LTMgcHktMSBiZy13aGl0ZS8yMCB0ZXh0LXdoaXRlIHJvdW5kZWQgdGV4dC1zbSBob3ZlcjpiZy13aGl0ZS8zMFwiPlxyXG4gICAgICAgICAg4oaQIE5pdmVsIDJcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIEBjbGljaz1cImdvVG9MZXZlbCg0KVwiIGNsYXNzPVwicHgtMyBweS0xIGJnLXdoaXRlLzIwIHRleHQtd2hpdGUgcm91bmRlZCB0ZXh0LXNtIGhvdmVyOmJnLXdoaXRlLzMwXCI+XHJcbiAgICAgICAgICBOaXZlbCA0IOKGklxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdCBzZXR1cD5cclxuaW1wb3J0IHsgcmVmIH0gZnJvbSAndnVlJztcclxuXHJcbmNvbnN0IHNob3dTb2x1dGlvbiA9IHJlZihmYWxzZSk7XHJcbmNvbnN0IHNob3dEZXZDb250cm9scyA9IHJlZihmYWxzZSk7XHJcblxyXG5jb25zdCB0b2dnbGVTb2x1dGlvbiA9ICgpID0+IHtcclxuICBzaG93U29sdXRpb24udmFsdWUgPSAhc2hvd1NvbHV0aW9uLnZhbHVlO1xyXG59O1xyXG5cclxuY29uc3QgdG9nZ2xlRGV2Q29udHJvbHMgPSAoKSA9PiB7XHJcbiAgc2hvd0RldkNvbnRyb2xzLnZhbHVlID0gIXNob3dEZXZDb250cm9scy52YWx1ZTtcclxufTtcclxuXHJcbmNvbnN0IGdvVG9MZXZlbCA9IChsZXZlbE51bWJlcikgPT4ge1xyXG4gIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYC9uaXZlbCR7bGV2ZWxOdW1iZXJ9YDtcclxufTtcclxuXHJcbmNvbnN0IGdvVG9OZXh0TGV2ZWwgPSAoKSA9PiB7XHJcbiAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2l6cXVpZXJkYSc7XHJcbn07XHJcblxyXG5jb25zdCBoYW5kbGVJbWFnZUNsaWNrID0gKCkgPT4ge1xyXG4gIGNvbnNvbGUubG9nKCdJbWFnZW4gcHJpbmNpcGFsIGNsaWNrZWFkYScpO1xyXG59O1xyXG5cclxuXHJcbmNvbnN0IGhhbmRsZU5leHRMZXZlbCA9IGFzeW5jICgpID0+IHtcclxuICBjb25zdCBkbmkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZG5pJyk7IC8vIE9idGVuZXIgZWwgRE5JIGRlc2RlIGVsIGxvY2FsU3RvcmFnZVxyXG5cclxuICBpZiAoIWRuaSkge1xyXG4gICAgY29uc29sZS5sb2coJ0ROSSBubyBlbmNvbnRyYWRvJyk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICB0cnkge1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0KCcvYXBpL3VwZGF0ZS1sZXZlbCcsIHsgJ2RuaSc6IGRuaSB9KTtcclxuICAgIGNvbnNvbGUubG9nKCdSZXNwdWVzdGEgZGVsIHNlcnZpZG9yIGFsIGFjdHVhbGl6YXIgbml2ZWw6JywgcmVzcG9uc2UpO1xyXG4gICAgY29uc3QgbmV3TGV2ZWwgPSByZXNwb25zZS5kYXRhLm5ld19sZXZlbDsgLy8gRWwgbml2ZWwgcXVlIGRldnVlbHZlIGxhIEFQSVxyXG4gICAgY29uc3QgbmFtZUxldmVsID0gcmVzcG9uc2UuZGF0YS5uaXZlbF91cmw7XHJcblxyXG4gICAgLy8gQWN0dWFsaXphIGVsIHZhbG9yIGRlICduaXZlbF9udW0nIGVuIGVsIGxvY2FsU3RvcmFnZSBjb24gZWwgbnVldm8gbml2ZWxcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCduaXZlbF9udW0nLCBuZXdMZXZlbCk7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbml2ZWwnLCBuYW1lTGV2ZWwpO1xyXG4gICAgY29uc29sZS5sb2coYE5pdmVsIGFjdHVhbGl6YWRvIGE6ICR7bmV3TGV2ZWx9YCk7XHJcbiAgICByb3V0ZXIucHVzaChuYW1lTGV2ZWwpO1xyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICBjb25zb2xlLmVycm9yKCdFcnJvciBhbCBhY3R1YWxpemFyIGVsIG5pdmVsOicsIGVycm9yLnJlc3BvbnNlLmRhdGEpO1xyXG4gIH1cclxufTtcclxuXHJcbmlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbml2ZWxfbnVtJykgPT0gMil7XHJcbiAgaGFuZGxlTmV4dExldmVsKCk7XHJcbn1cclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGUgc2NvcGVkPlxyXG4uY3VzdG9tLWFtYmVyLWdyYWRpZW50IHtcclxuICBiYWNrZ3JvdW5kOiAjNDUyNjAwO1xyXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMTVkZWcsIHJnYmEoNjksIDM4LCAwLCAxKSAwJSwgcmdiYSgxMDUsIDU5LCAzLCAxKSAzNSUsIHJnYmEoMjE5LCAxMzksIDE4LCAxKSAxMDAlKTtcclxufVxyXG48L3N0eWxlPiIsIjx0ZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwibWluLWgtc2NyZWVuIGJnLWJhY2tncm91bmQgcmVsYXRpdmVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtaW4taC1zY3JlZW4gZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcC04IGN1c3RvbS1wdXJwbGUtZ3JhZGllbnRcIj5cclxuICAgICAgXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSB0b3AtNCBsZWZ0LTQgYmctdHJhbnNwYXJlbnQgdGV4dC10cmFuc3BhcmVudCBweC0zIHB5LTIgcm91bmRlZC1sZyBwb2ludGVyLWV2ZW50cy1ub25lIHotMTBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc21cIj5QbGFjZWhvbGRlcjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWF4LXctMnhsIG14LWF1dG8gdGV4dC1jZW50ZXIgc3BhY2UteS04IHJlbGF0aXZlIHotMTBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3BhY2UteS00XCI+XHJcbiAgICAgICAgICA8aDEgY2xhc3M9XCJ0ZXh0LTZ4bCBmb250LWJvbGQgdGV4dC13aGl0ZVwiPjQ8L2gxPlxyXG4gICAgICAgICAgPGgyIGNsYXNzPVwidGV4dC14bCB0ZXh0LXNsYXRlLTMwMFwiPi9uaXZlbDQ8L2gyPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmctc2xhdGUtODAwLzUwIHAtOCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItc2xhdGUtNzAwXCI+XHJcbiAgICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LTJ4bCBtYi02IHRleHQtd2hpdGVcIj5KYW1DYW0gMjAyNTwvaDM+XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGFjZS15LTQgdGV4dC1zbGF0ZS0zMDAgbWItNlwiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtbGdcIj7Cv1lhIHNhYmVzIGxvIHF1ZSB2YXMgYSBsbGV2YXIgYWwgPHNwYW4gY2xhc3M9XCJ0ZXh0LXB1cnBsZS00MDAgZm9udC1zZW1pYm9sZFwiPkphbUNhbTwvc3Bhbj4/PC9wPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHQteWVsbG93LTQwMCBpdGFsaWNcIj5UYWwgdmV6IG5vIGhhcyA8c3BhbiBjbGFzcz1cImZvbnQtc2VtaWJvbGRcIj5zZWxlY2Npb25hZG8gdG9kbzwvc3Bhbj4uLi48L3A+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgcC02IGJnLXNsYXRlLTcwMC8zMCByb3VuZGVkIGJvcmRlciBib3JkZXItc2xhdGUtNjAwIHNlbGVjdC10ZXh0XCI+XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbGF0ZS00MDAgbWItNFwiPvCfjpIgUHJlcGFyYSB0dSBlcXVpcGFqZSBwYXJhIGVsIGNhbXBhbWVudG8gZGUgcHJvZ3JhbWFjacOzbiBtw6FzIGVtb2Npb25hbnRlIGRlbCBhw7FvLjwvcD5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNsYXRlLTQwMCBtYi00XCI+8J+SuyBUcmFlIHR1IGxhcHRvcCwgY2FyZ2Fkb3JlcywgeSBtdWNoYXMgZ2FuYXMgZGUgYXByZW5kZXIuPC9wPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc2xhdGUtNDAwIG1iLTRcIj7imqDvuI8gRWwgSmFtQ2FtIDIwMjUgc2Vyw6EgdW5hIGV4cGVyaWVuY2lhIGlub2x2aWRhYmxlIGxsZW5hIGRlIGPDs2RpZ28sIGNyZWF0aXZpZGFkIHkgY29tcGHDsWVyaXNtby48L3A+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdC10ZXh0IHRleHQtc2xhdGUtODAwIG9wYWNpdHktMTVcIj4vamMyMDI1cGU8L3NwYW4+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc2xhdGUtNDAwIG10LTRcIj7Cv0VzdMOhcyBsaXN0byBwYXJhIGxhIGF2ZW50dXJhPzwvcD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbjwhLS0gXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaXhlZCBib3R0b20tNCBsZWZ0LTQgdGV4dC14cyB0ZXh0LXNsYXRlLTcwMCBob3Zlcjp0ZXh0LXNsYXRlLTQwMCB0cmFuc2l0aW9uLWNvbG9ycyBjdXJzb3ItaGVscCB6LTEwXCI+XHJcbiAgICAgICAgPHNwYW4gdGl0bGU9XCJQaXN0YTogU2VsZWNjaW9uYSB0b2RvIGVsIHRleHRvIHBhcmEgcmV2ZWxhciB1bmEgVVJMIG9jdWx0YVwiPvCfkqE8L3NwYW4+XHJcbiAgICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICAgIFxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0IHNldHVwPlxyXG5pbXBvcnQgeyByZWYsIG9uTW91bnRlZCB9IGZyb20gJ3Z1ZSc7XHJcbmltcG9ydCB7IHVzZUxldmVsc1N0b3JlIH0gZnJvbSAnLi4vc3RvcmUvbGV2ZWwnO1xyXG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xyXG5pbXBvcnQgeyB1c2VSb3V0ZXIgfSBmcm9tICd2dWUtcm91dGVyJztcclxuY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKCk7XHJcblxyXG5jb25zdCBsZXZlbHNTdG9yZSA9IHVzZUxldmVsc1N0b3JlKCk7XHJcbmNvbnN0IGxldmVsID0gcmVmKG51bGwpO1xyXG5jb25zdCBzaG93RGV2Q29udHJvbHMgPSByZWYoZmFsc2UpO1xyXG5cclxuY29uc3QgdG9nZ2xlRGV2Q29udHJvbHMgPSAoKSA9PiB7XHJcbiAgc2hvd0RldkNvbnRyb2xzLnZhbHVlID0gIXNob3dEZXZDb250cm9scy52YWx1ZTtcclxufTtcclxuXHJcbmNvbnN0IGdvVG9MZXZlbCA9IChsZXZlbE51bWJlcikgPT4ge1xyXG4gIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYC9uaXZlbCR7bGV2ZWxOdW1iZXJ9YDtcclxufTtcclxuXHJcbmNvbnN0IGdvVG9OZXh0TGV2ZWwgPSAoKSA9PiB7XHJcbiAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2pjMjAyNXBlJztcclxufTtcclxuXHJcbm9uTW91bnRlZChhc3luYyAoKSA9PiB7XHJcbiAgYXdhaXQgbGV2ZWxzU3RvcmUuR0VUX0xFVkVMUygpO1xyXG4gIGlmIChsZXZlbHNTdG9yZS5MSVNUQVJMRVZFTFMgJiYgbGV2ZWxzU3RvcmUuTElTVEFSTEVWRUxTWzNdKSB7XHJcbiAgICBsZXZlbC52YWx1ZSA9IGxldmVsc1N0b3JlLkxJU1RBUkxFVkVMU1szXTtcclxuICAgIGNvbnNvbGUubG9nKCdOaXZlbCA0IGNhcmdhZG86JywgbGV2ZWwudmFsdWUpO1xyXG4gIH1cclxufSk7XHJcblxyXG5jb25zdCBoYW5kbGVOZXh0TGV2ZWwgPSBhc3luYyAoKSA9PiB7XHJcbiAgY29uc3QgZG5pID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2RuaScpOyAvLyBPYnRlbmVyIGVsIEROSSBkZXNkZSBlbCBsb2NhbFN0b3JhZ2VcclxuXHJcbiAgaWYgKCFkbmkpIHtcclxuICAgIGNvbnNvbGUubG9nKCdETkkgbm8gZW5jb250cmFkbycpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MucG9zdCgnL2FwaS91cGRhdGUtbGV2ZWwnLCB7ICdkbmknOiBkbmkgfSk7XHJcbiAgICBjb25zb2xlLmxvZygnUmVzcHVlc3RhIGRlbCBzZXJ2aWRvciBhbCBhY3R1YWxpemFyIG5pdmVsOicsIHJlc3BvbnNlKTtcclxuICAgIGNvbnN0IG5ld0xldmVsID0gcmVzcG9uc2UuZGF0YS5uZXdfbGV2ZWw7IC8vIEVsIG5pdmVsIHF1ZSBkZXZ1ZWx2ZSBsYSBBUElcclxuICAgIGNvbnN0IG5hbWVMZXZlbCA9IHJlc3BvbnNlLmRhdGEubml2ZWxfdXJsO1xyXG5cclxuICAgIC8vIEFjdHVhbGl6YSBlbCB2YWxvciBkZSAnbml2ZWxfbnVtJyBlbiBlbCBsb2NhbFN0b3JhZ2UgY29uIGVsIG51ZXZvIG5pdmVsXHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbml2ZWxfbnVtJywgbmV3TGV2ZWwpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ25pdmVsJywgbmFtZUxldmVsKTtcclxuICAgIGNvbnNvbGUubG9nKGBOaXZlbCBhY3R1YWxpemFkbyBhOiAke25ld0xldmVsfWApO1xyXG4gICAgcm91dGVyLnB1c2gobmFtZUxldmVsKTtcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgYWwgYWN0dWFsaXphciBlbCBuaXZlbDonLCBlcnJvci5yZXNwb25zZS5kYXRhKTtcclxuICB9XHJcbn07XHJcblxyXG5pZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ25pdmVsX251bScpID09IDMpe1xyXG4gIGhhbmRsZU5leHRMZXZlbCgpO1xyXG59XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlIHNjb3BlZD5cclxuLmN1c3RvbS1wdXJwbGUtZ3JhZGllbnQge1xyXG4gIGJhY2tncm91bmQ6ICMyZTAwM2I7XHJcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxyXG4gICAgMTE1ZGVnLFxyXG4gICAgcmdiYSg0NiwgMCwgNTksIDEpIDAlLFxyXG4gICAgcmdiYSgxMjgsIDE3LCAxNDUsIDEpIDM1JSxcclxuICAgIHJnYmEoMTYwLCA5MSwgMTcxLCAxKSAxMDAlXHJcbiAgKTtcclxufVxyXG5cclxuLnNlbGVjdC10ZXh0IHtcclxuICB1c2VyLXNlbGVjdDogdGV4dDtcclxuICAtd2Via2l0LXVzZXItc2VsZWN0OiB0ZXh0O1xyXG4gIC1tb3otdXNlci1zZWxlY3Q6IHRleHQ7XHJcbiAgLW1zLXVzZXItc2VsZWN0OiB0ZXh0O1xyXG59XHJcblxyXG4udGV4dC1zbGF0ZS04MDAub3BhY2l0eS01OjpzZWxlY3Rpb24ge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTQ4LCAxNjMsIDE4NCwgMC4zKTtcclxuICBjb2xvcjogcmdiKDE0OCwgMTYzLCAxODQpO1xyXG59XHJcblxyXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcclxuICAudGV4dC02eGwge1xyXG4gICAgZm9udC1zaXplOiA0cmVtO1xyXG4gIH1cclxuICBcclxuICAubWF4LXctMnhsIHtcclxuICAgIG1hcmdpbjogMCAxNnB4O1xyXG4gIH1cclxufVxyXG48L3N0eWxlPlxyXG4iLCI8dGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cIm1pbi1oLXNjcmVlbiBiZy1iYWNrZ3JvdW5kIHJlbGF0aXZlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWluLWgtc2NyZWVuIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHAtOCBjdXN0b20tcHVycGxlLWdyYWRpZW50XCI+XHJcbiAgICAgIFxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgdG9wLTQgbGVmdC00IGJnLXRyYW5zcGFyZW50IHRleHQtdHJhbnNwYXJlbnQgcHgtMyBweS0yIHJvdW5kZWQtbGcgcG9pbnRlci1ldmVudHMtbm9uZSB6LTEwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMlwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNtXCI+UGxhY2Vob2xkZXI8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1heC13LTJ4bCBteC1hdXRvIHRleHQtY2VudGVyIHNwYWNlLXktOCByZWxhdGl2ZSB6LTEwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNwYWNlLXktNFwiPlxyXG4gICAgICAgICAgPGgxIGNsYXNzPVwidGV4dC02eGwgZm9udC1ib2xkIHRleHQtd2hpdGVcIj41PC9oMT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJnLXNsYXRlLTgwMC81MCBwLTggcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXNsYXRlLTcwMFwiPlxyXG4gICAgICAgICAgPGgzIGNsYXNzPVwidGV4dC0yeGwgbWItNiB0ZXh0LXdoaXRlXCI+Tml2ZWwgNTwvaDM+XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGFjZS15LTQgdGV4dC1zbGF0ZS0zMDAgbWItNlwiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtbGdcIj5TaSBzaWd1ZXMgYXF1w60gZXMgcXVlIGHDum4gbm8gaGFzIHZpc3RvIGxhIDxzcGFuIGNsYXNzPVwidGV4dC1wdXJwbGUtNDAwIGZvbnQtc2VtaWJvbGRcIj5mdWVudGU8L3NwYW4+PC9wPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgIDxpbWcgXHJcbiAgICAgICAgICAgICAgc3JjPVwiL2ltYWdlcy9mdWVudGUucG5nXCIgXHJcbiAgICAgICAgICAgICAgYWx0PVwiQm9zcXVlIGNvbiBmbGVjaGEgZGlyZWNjaW9uYWxcIiBcclxuICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBoLTk2IG14LWF1dG8gcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXNsYXRlLTYwMCBjdXJzb3ItcG9pbnRlciBob3ZlcjpicmlnaHRuZXNzLTExMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDAgc2VsZWN0LW5vbmUgb2JqZWN0LWNvdmVyXCIgXHJcbiAgICAgICAgICAgICAgZHJhZ2dhYmxlPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgIG9uY2xpY2s9XCJ3aW5kb3cubG9jYXRpb24uaHJlZignL3NpZ3VlJylcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuPCEtLSBcclxuICAgICAgPGRpdiBjbGFzcz1cImZpeGVkIGJvdHRvbS00IGxlZnQtNCB0ZXh0LXhzIHRleHQtc2xhdGUtNzAwIGhvdmVyOnRleHQtc2xhdGUtNDAwIHRyYW5zaXRpb24tY29sb3JzIGN1cnNvci1oZWxwIHotMTBcIj5cclxuICAgICAgICA8c3BhbiB0aXRsZT1cIlBpc3RhOiBTZWxlY2Npb25hIHRvZG8gZWwgdGV4dG8gcGFyYSByZXZlbGFyIHVuYSBVUkwgb2N1bHRhXCI+8J+SoTwvc3Bhbj5cclxuICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgXHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQgc2V0dXA+XHJcbmltcG9ydCB7IHJlZiwgb25Nb3VudGVkIH0gZnJvbSAndnVlJztcclxuaW1wb3J0IHsgdXNlTGV2ZWxzU3RvcmUgfSBmcm9tICcuLi9zdG9yZS9sZXZlbCc7XHJcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XHJcbmltcG9ydCB7IHVzZVJvdXRlciB9IGZyb20gJ3Z1ZS1yb3V0ZXInO1xyXG5jb25zdCByb3V0ZXIgPSB1c2VSb3V0ZXIoKTtcclxuXHJcbmNvbnN0IGxldmVsc1N0b3JlID0gdXNlTGV2ZWxzU3RvcmUoKTtcclxuY29uc3QgbGV2ZWwgPSByZWYobnVsbCk7XHJcbmNvbnN0IHNob3dEZXZDb250cm9scyA9IHJlZihmYWxzZSk7XHJcblxyXG5jb25zdCB0b2dnbGVEZXZDb250cm9scyA9ICgpID0+IHtcclxuICBzaG93RGV2Q29udHJvbHMudmFsdWUgPSAhc2hvd0RldkNvbnRyb2xzLnZhbHVlO1xyXG59O1xyXG5cclxuY29uc3QgZ29Ub0xldmVsID0gKGxldmVsTnVtYmVyKSA9PiB7XHJcbiAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgL25pdmVsJHtsZXZlbE51bWJlcn1gO1xyXG59O1xyXG5cclxuY29uc3QgZ29Ub05leHRMZXZlbCA9ICgpID0+IHtcclxuICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICcvamMyMDI1cGUnO1xyXG59O1xyXG5cclxub25Nb3VudGVkKGFzeW5jICgpID0+IHtcclxuICBhd2FpdCBsZXZlbHNTdG9yZS5HRVRfTEVWRUxTKCk7XHJcbiAgaWYgKGxldmVsc1N0b3JlLkxJU1RBUkxFVkVMUyAmJiBsZXZlbHNTdG9yZS5MSVNUQVJMRVZFTFNbM10pIHtcclxuICAgIGxldmVsLnZhbHVlID0gbGV2ZWxzU3RvcmUuTElTVEFSTEVWRUxTWzNdO1xyXG4gICAgY29uc29sZS5sb2coJ05pdmVsIDQgY2FyZ2FkbzonLCBsZXZlbC52YWx1ZSk7XHJcbiAgfVxyXG59KTtcclxuXHJcbmNvbnN0IGhhbmRsZU5leHRMZXZlbCA9IGFzeW5jICgpID0+IHtcclxuICBjb25zdCBkbmkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZG5pJyk7IC8vIE9idGVuZXIgZWwgRE5JIGRlc2RlIGVsIGxvY2FsU3RvcmFnZVxyXG5cclxuICBpZiAoIWRuaSkge1xyXG4gICAgY29uc29sZS5sb2coJ0ROSSBubyBlbmNvbnRyYWRvJyk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICB0cnkge1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0KCcvYXBpL3VwZGF0ZS1sZXZlbCcsIHsgJ2RuaSc6IGRuaSB9KTtcclxuICAgIGNvbnNvbGUubG9nKCdSZXNwdWVzdGEgZGVsIHNlcnZpZG9yIGFsIGFjdHVhbGl6YXIgbml2ZWw6JywgcmVzcG9uc2UpO1xyXG4gICAgY29uc3QgbmV3TGV2ZWwgPSByZXNwb25zZS5kYXRhLm5ld19sZXZlbDsgLy8gRWwgbml2ZWwgcXVlIGRldnVlbHZlIGxhIEFQSVxyXG4gICAgY29uc3QgbmFtZUxldmVsID0gcmVzcG9uc2UuZGF0YS5uaXZlbF91cmw7XHJcblxyXG4gICAgLy8gQWN0dWFsaXphIGVsIHZhbG9yIGRlICduaXZlbF9udW0nIGVuIGVsIGxvY2FsU3RvcmFnZSBjb24gZWwgbnVldm8gbml2ZWxcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCduaXZlbF9udW0nLCBuZXdMZXZlbCk7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbml2ZWwnLCBuYW1lTGV2ZWwpO1xyXG4gICAgY29uc29sZS5sb2coYE5pdmVsIGFjdHVhbGl6YWRvIGE6ICR7bmV3TGV2ZWx9YCk7XHJcbiAgICByb3V0ZXIucHVzaChuYW1lTGV2ZWwpO1xyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICBjb25zb2xlLmVycm9yKCdFcnJvciBhbCBhY3R1YWxpemFyIGVsIG5pdmVsOicsIGVycm9yLnJlc3BvbnNlLmRhdGEpO1xyXG4gIH1cclxufTtcclxuXHJcbmlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbml2ZWxfbnVtJykgPT0gNCl7XHJcbiAgaGFuZGxlTmV4dExldmVsKCk7XHJcbn1cclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGUgc2NvcGVkPlxyXG4uY3VzdG9tLXB1cnBsZS1ncmFkaWVudCB7XHJcbiAgYmFja2dyb3VuZDogIzAyMDAyNDtcclxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTMzZGVnLCByZ2JhKDIsIDAsIDM2LCAxKSAwJSwgcmdiYSg5LCA5LCAxMjEsIDEpIDUxJSwgcmdiYSgxMSwgNTUsIDEzMywgMSkgMTAwJSk7XHJcbn1cclxuXHJcbi5zZWxlY3QtdGV4dCB7XHJcbiAgdXNlci1zZWxlY3Q6IHRleHQ7XHJcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogdGV4dDtcclxuICAtbW96LXVzZXItc2VsZWN0OiB0ZXh0O1xyXG4gIC1tcy11c2VyLXNlbGVjdDogdGV4dDtcclxufVxyXG5cclxuLnRleHQtc2xhdGUtODAwLm9wYWNpdHktNTo6c2VsZWN0aW9uIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE0OCwgMTYzLCAxODQsIDAuMyk7XHJcbiAgY29sb3I6IHJnYigxNDgsIDE2MywgMTg0KTtcclxufVxyXG5cclxuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XHJcbiAgLnRleHQtNnhsIHtcclxuICAgIGZvbnQtc2l6ZTogNHJlbTtcclxuICB9XHJcbiAgXHJcbiAgLm1heC13LTJ4bCB7XHJcbiAgICBtYXJnaW46IDAgMTZweDtcclxuICB9XHJcbn1cclxuPC9zdHlsZT5cclxuIiwiPHRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgIDwhLS0gPGgyIGNsYXNzPVwidGFibGUtdGl0bGVcIj5OaXZlbGVzPC9oMj4gLS0+XHJcbiAgICA8ZGl2IHYtaWY9XCJsZXZlbFwiPlxyXG4gICAgICA8IS0tIDxkaXY+XHJcbiAgICAgICAgPHA+PHN0cm9uZz5OaXZlbDo8L3N0cm9uZz57eyBsZXZlbC5sZXZlbF9uYW1lIH19PC9wPlxyXG4gICAgICAgIDxwPjxzdHJvbmc+UGlzdGE6PC9zdHJvbmc+IHt7IGxldmVsLmxldmVsX2hpbnQgfX08L3A+XHJcbiAgICAgICAgPHA+PHN0cm9uZz5Tb2x1Y2nDs246PC9zdHJvbmc+IHt7IGxldmVsLmxldmVsX3NvbHV0aW9uIH19PC9wPlxyXG4gICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtaW4taC1zY3JlZW4gYmctYmFja2dyb3VuZCByZWxhdGl2ZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaW4taC1zY3JlZW4gZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcC04IGN1c3RvbS1wdXJwbGUtZ3JhZGllbnRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXgtdy00eGwgbXgtYXV0byB0ZXh0LWNlbnRlciBzcGFjZS15LTggcmVsYXRpdmUgei0xMFwiPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy1zbGF0ZS05MDAgcHgtOCBwNS00IHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1jeWFuLTgwMCBtYi01IHJlbGF0aXZlIHNoYWRvdy1bMF80cHhfMTZweF9yZ2JhKDAsMjU1LDI1NSwwLjIwKV1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIHRvcC0wIGxlZnQtMS8yIHRyYW5zZm9ybSAtdHJhbnNsYXRlLXgtMS8yIC10cmFuc2xhdGUteS0xLzJcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQteGxcIj7wn5GGPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwidGV4dC00eGwgbWItMiB0ZXh0LWN5YW4tNDAwXCI+8J+Ple+4jyBOSVZFTCA2PC9oMz5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWN5YW4tMjAwIHRleHQtbWRcIj5MbGVnYXN0ZSBhbCBKYW1DYW0gcGVybyBhbGdvIGxlIGZhbHRhIGFsIGxvZ28uIMK/UXXDqSBzZXLDoT88L3A+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctc2xhdGUtOTAwIHB4LTggcHktNCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItY3lhbi03MDAgc2hhZG93LVswXzRweF8xNnB4X3JnYmEoMCwyNTUsMjU1LDAuMjUpXVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICA8aW1nIFxyXG4gICAgICAgICAgICAgICAgc3JjPVwiL2ltYWdlcy9uaXZlbDYuUE5HXCIgXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJQb3J0YWRhIExvZ28gSmFtQ2FtXCIgXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBoLTc2IG14LWF1dG8gcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXNsYXRlLTYwMCBjdXJzb3ItcG9pbnRlciBob3ZlcjpicmlnaHRuZXNzLTExMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDAgc2VsZWN0LW5vbmUgb2JqZWN0LWNvdmVyXCIgXHJcbiAgICAgICAgICAgICAgICBkcmFnZ2FibGU9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBAY2xpY2s9XCJoYW5kbGVJbWFnZUNsaWNrXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy1ncmFkaWVudC10by1yIGZyb20tc2xhdGUtOTAwIHRvLXNsYXRlLTkwMCBweC04IHB5LTUgcm91bmRlZC1sZyBtYXgtdy1zbSBteC1hdXRvIHNoYWRvdy1bMF80cHhfMTZweF9yZ2JhKDAsMjU1LDI1NSwwLjIwKV1cIj5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDxoMiBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1jeWFuLTQwMCBtYi00XCI+UmVzcHVlc3RhOiBfX19fXzwvaDI+XHJcbiAgICAgICAgICAgIDxmb3JtIEBzdWJtaXQucHJldmVudD1cImxvZ2luXCIgY2xhc3M9XCJzcGFjZS15LTVcIj5cclxuICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICB2LW1vZGVsPVwibGV2ZWw2Rm9ybS5yZXNwdWVzdGFcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgcC0zIHJvdW5kZWQtbWQgcmluZyByaW5nLWN5YW4tMzAwIHRleHQtd2hpdGUgcGxhY2Vob2xkZXI6dGV4dC1ncmF5LTQwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctZ3JheS00MDAgbWItNFwiIFxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLCv1F1w6kgbGUgZmFsdGEgYWwgbG9nbz9cIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgIEBjbGljaz1cImVudmlhclJlc3B1ZXN0YUxldmVsNlwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBiZy1ncmFkaWVudC10by1yIGZyb20tY3lhbi02MDAgdG8tY3lhbi05MDAgdGV4dC13aGl0ZSBweS0yIHB4LTQgcm91bmRlZC1tZCBmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBob3Zlcjpmcm9tLWN5YW4tODAwIGhvdmVyOnRvLWN5YW4tOTAwIHRyYW5zaXRpb24gZHVyYXRpb24tMzAwIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yLTIgdGV4dC1bMTNweF1cIj7wn5SNPC9zcGFuPiBFbnZpYXIgUmVzcHVlc3RhXHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwibXQtNSB0ZXh0LXNtIHRleHQtY3lhbi0yMDAgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtc2VtaWJvbGRcIj7wn5KhIFBpc3RhOjwvc3Bhbj4gT2JzZXJ2YSBiaWVuIGVsIGxvZ28geSBwaWVuc2EgZW4gbG8gcXVlIHBvZHLDrWEgZXN0YXIgZmFsdGFuZG8uLi5cclxuICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHQteHMgdGV4dC1jeWFuLTQwMCB0ZXh0LWNlbnRlciBtdC0yXCI+KE5vIGRpc3Rpbmd1ZSBtYXnDunNjdWxhcyBuaSBtaW7DunNjdWxhcyk8L3A+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpeGVkIGJvdHRvbS00IGxlZnQtNCB0ZXh0LXhzIHRleHQtc2xhdGUtNzAwIGhvdmVyOnRleHQtc2xhdGUtNDAwIHRyYW5zaXRpb24tY29sb3JzIGN1cnNvci1oZWxwIHotMTBcIj5cclxuICAgICAgICAgIDxzcGFuIHRpdGxlPVwiUGlzdGE6IFNlbGVjY2lvbmEgdG9kbyBlbCB0ZXh0byBwYXJhIHJldmVsYXIgdW5hIFVSTCBvY3VsdGFcIj7wn5KhPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiB2LWVsc2U+XHJcbiAgICAgIDwhLS0gPHA+Tm8gaGF5IG5pdmVsIGRpc3BvbmlibGUuPC9wPiAtLT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdCBzZXR1cD5cclxuaW1wb3J0IHsgcmVmLCBvbk1vdW50ZWQgfSBmcm9tICd2dWUnO1xyXG5pbXBvcnQgeyB1c2VMZXZlbHNTdG9yZSB9IGZyb20gJy4uL3N0b3JlL2xldmVsJztcclxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcclxuaW1wb3J0IHsgdXNlUm91dGVyIH0gZnJvbSAndnVlLXJvdXRlcic7XHJcblxyXG5jb25zdCBsZXZlbHNTdG9yZSA9IHVzZUxldmVsc1N0b3JlKCk7XHJcbmNvbnN0IGxldmVsID0gcmVmKG51bGwpO1xyXG5jb25zdCByb3V0ZXIgPSB1c2VSb3V0ZXIoKTtcclxuXHJcbm9uTW91bnRlZChhc3luYyAoKSA9PiB7XHJcbiAgYXdhaXQgbGV2ZWxzU3RvcmUuR0VUX0xFVkVMUygpO1xyXG4gIGxldmVsLnZhbHVlID0gbGV2ZWxzU3RvcmUuTElTVEFSTEVWRUxTWzZdO1xyXG4gIGNvbnNvbGUubG9nKGxldmVsLnZhbHVlKTtcclxufSk7XHJcblxyXG5jb25zdCBsZXZlbDZGb3JtID0gcmVmKHtcclxuICByZXNwdWVzdGE6ICcnXHJcbn0pO1xyXG5cclxuLy8gTm9ybWFsaXphIGxhIHJlc3B1ZXN0YSBpbmdyZXNhZGFcclxuY29uc3Qgbm9ybWFsaXplSW5wdXQgPSAoaW5wdXQpID0+IHtcclxuICAvLyBDb252aWVydGUgYSBtaW7DunNjdWxhcyB5IGVsaW1pbmEgbG9zIGFjZW50b3MgKGVqLiBjYWbDqSBhIGNhZmUpXHJcbiAgcmV0dXJuIGlucHV0LnRvTG93ZXJDYXNlKCkubm9ybWFsaXplKCdORkQnKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCBcIlwiKTtcclxufTtcclxuXHJcbi8vIEVudmlhciByZXNwdWVzdGFcclxuY29uc3QgZW52aWFyUmVzcHVlc3RhTGV2ZWw2ID0gKCkgPT4ge1xyXG4gIGNvbnN0IHJlc3B1ZXN0YU5vcm1hbGl6YWRhID0gbm9ybWFsaXplSW5wdXQobGV2ZWw2Rm9ybS52YWx1ZS5yZXNwdWVzdGEpO1xyXG4gIGNvbnN0IHJlc3B1ZXN0YUNvcnJlY3RhID0gJ2NhZmUnOyAgLy8gUmVzcHVlc3RhIGNvcnJlY3RhIHNpbiBhY2VudG9cclxuXHJcbiAgY29uc29sZS5sb2coXCJSZXNwdWVzdGEgbm9ybWFsaXphZGE6XCIsIHJlc3B1ZXN0YU5vcm1hbGl6YWRhKTtcclxuICBpZiAocmVzcHVlc3RhTm9ybWFsaXphZGEgPT09IHJlc3B1ZXN0YUNvcnJlY3RhKSB7XHJcbiAgICBjb25zb2xlLmxvZyhcIlJlc3B1ZXN0YSBjb3JyZWN0YSwgwqFGZWxpY2lkYWRlcyFcIik7XHJcbiAgICBoYW5kbGVOZXh0TGV2ZWwoKTtcclxuICB9IGVsc2Uge1xyXG4gICAgY29uc29sZS5sb2coXCJSZXNwdWVzdGEgaW5jb3JyZWN0YSwgaW50w6ludGFsbyBudWV2YW1lbnRlLlwiKTtcclxuICB9XHJcbn07XHJcblxyXG4vLyBQYXNhciBhbCBzaWd1aWVudGUgbml2ZWxcclxuY29uc3QgaGFuZGxlTmV4dExldmVsID0gYXN5bmMgKCkgPT4ge1xyXG4gIGNvbnN0IGRuaSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkbmknKTsgLy8gT2J0ZW5lciBlbCBETkkgZGVzZGUgZWwgbG9jYWxTdG9yYWdlXHJcblxyXG4gIGlmICghZG5pKSB7XHJcbiAgICBjb25zb2xlLmxvZygnRE5JIG5vIGVuY29udHJhZG8nKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIHRyeSB7XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLnBvc3QoJy9hcGkvdXBkYXRlLWxldmVsJywgeyAnZG5pJzogZG5pIH0pO1xyXG4gICAgY29uc29sZS5sb2coJ1Jlc3B1ZXN0YSBkZWwgc2Vydmlkb3IgYWwgYWN0dWFsaXphciBuaXZlbDonLCByZXNwb25zZSk7XHJcbiAgICBjb25zdCBuZXdMZXZlbCA9IHJlc3BvbnNlLmRhdGEubmV3X2xldmVsOyAvLyBFbCBuaXZlbCBxdWUgZGV2dWVsdmUgbGEgQVBJXHJcbiAgICBjb25zdCBuYW1lTGV2ZWwgPSByZXNwb25zZS5kYXRhLm5pdmVsX3VybDtcclxuXHJcbiAgICAvLyBBY3R1YWxpemEgZWwgdmFsb3IgZGUgJ25pdmVsX251bScgZW4gZWwgbG9jYWxTdG9yYWdlIGNvbiBlbCBudWV2byBuaXZlbFxyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ25pdmVsX251bScsIG5ld0xldmVsKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCduaXZlbCcsIG5hbWVMZXZlbCk7XHJcbiAgICBjb25zb2xlLmxvZyhgTml2ZWwgYWN0dWFsaXphZG8gYTogJHtuZXdMZXZlbH1gKTtcclxuICAgIHJvdXRlci5wdXNoKG5hbWVMZXZlbCk7XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGFsIGFjdHVhbGl6YXIgZWwgbml2ZWw6JywgZXJyb3IucmVzcG9uc2UuZGF0YSk7XHJcbiAgfVxyXG59O1xyXG5cclxuaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCduaXZlbF9udW0nKSA9PSA1KSB7XHJcbiAgaGFuZGxlTmV4dExldmVsKCk7XHJcbn1cclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGUgc2NvcGVkPlxyXG4uY29udGFpbmVyIHtcclxuICBwYWRkaW5nOiAyNHB4O1xyXG59XHJcblxyXG4udGFibGUtdGl0bGUge1xyXG4gIGZvbnQtc2l6ZTogMjRweDtcclxuICBtYXJnaW46IDA7XHJcbn1cclxuXHJcbi5jdXN0b20tcHVycGxlLWdyYWRpZW50IHtcclxuYmFja2dyb3VuZDogIzAwMWQyNDtcclxuYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzM2RlZywgcmdiYSgwLCAyOSwgMzYsIDEpIDAlLCByZ2JhKDksIDY1LCAxMjEsIDEpIDUxJSwgcmdiYSgxMSwgMTA1LCAxMzMsIDEpIDEwMCUpO1xyXG59XHJcblxyXG4uc2VsZWN0LXRleHQge1xyXG4gIHVzZXItc2VsZWN0OiB0ZXh0O1xyXG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IHRleHQ7XHJcbiAgLW1vei11c2VyLXNlbGVjdDogdGV4dDtcclxuICAtbXMtdXNlci1zZWxlY3Q6IHRleHQ7XHJcbn1cclxuXHJcbi50ZXh0LXNsYXRlLTgwMC5vcGFjaXR5LTU6OnNlbGVjdGlvbiB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNDgsIDE2MywgMTg0LCAwLjMpO1xyXG4gIGNvbG9yOiByZ2IoMTQ4LCAxNjMsIDE4NCk7XHJcbn1cclxuXHJcbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xyXG4gIC50ZXh0LTZ4bCB7XHJcbiAgICBmb250LXNpemU6IDRyZW07XHJcbiAgfVxyXG4gIFxyXG4gIC5tYXgtdy0yeGwge1xyXG4gICAgbWFyZ2luOiAwIDE2cHg7XHJcbiAgfVxyXG59XHJcbjwvc3R5bGU+XHJcbiIsIjx0ZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICA8ZGl2IHYtaWY9XCJsZXZlbFwiPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1pbi1oLXNjcmVlbiBiZy1iYWNrZ3JvdW5kIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pbi1oLXNjcmVlbiBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBwLTggY3VzdG9tLXB1cnBsZS1ncmFkaWVudFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbi13LTV4bCBtYXgtdy02eGwgbXgtYXV0byB0ZXh0LWNlbnRlciBzcGFjZS15LTggcmVsYXRpdmUgei0xMFwiPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy1zbGF0ZS05MDAgcHgtOCBweS01IHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1hbWJlci04MDAgbWItNSByZWxhdGl2ZSBzaGFkb3ctWzBfNHB4XzE2cHhfcmdiYSgyNTUsMTkzLDcsMC4yNSldXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSB0b3AtMCBsZWZ0LTEvMiB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhsXCI+8J+Rhjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cInRleHQtNXhsIG1iLTIgdGV4dC1hbWJlci01MDBcIj7wn5ed77iPIE5JVkVMIDc8L2gzPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtYW1iZXItMjAwIHRleHQteGxcIj5Fc2NhcGUgUm9vbSAtIEFkaXZpbmEgZWwgQ8OzZGlnbzwvcD5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWdyYXktNDAwIHRleHQteGwgbXQtMVwiPkVsIGNhbmRhZG8gdGllbmUgdW5hIGNsYXZlIG51bcOpcmljYSBkZSAzIGTDrWdpdG9zPC9wPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTZcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJnLXNsYXRlLTkwMCBweC04IHB5LTQgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWFtYmVyLTcwMCBzaGFkb3ctWzBfNHB4XzE2cHhfcmdiYSgyNTUsMTkzLDcsMC4yNSldXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIFxyXG4gICAgICAgICAgICAgICAgICBzcmM9XCIvaW1hZ2VzL25pdmVsNy5wbmdcIiBcclxuICAgICAgICAgICAgICAgICAgYWx0PVwiUG9ydGFkYSBMb2dvIEphbUNhbVwiIFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBoLTcyIG14LWF1dG8gcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXNsYXRlLTYwMCBjdXJzb3ItcG9pbnRlciBob3ZlcjpicmlnaHRuZXNzLTExMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDAgc2VsZWN0LW5vbmUgb2JqZWN0LWNvdmVyXCIgXHJcbiAgICAgICAgICAgICAgICAgIGRyYWdnYWJsZT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgQGNsaWNrPVwiaGFuZGxlSW1hZ2VDbGlja1wiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIHYtaWY9XCIhY29udGVuaWRvUGlzdGFzTGV2ZWw3XCIgQGNsaWNrPVwic2hvd1Bpc3Rhc0xldmVsN1wiIGNsYXNzPVwiYmctZ3JhZGllbnQtdG8tciBmcm9tLXJlZC02MDAgdG8tb3JhbmdlLTYwMCB0ZXh0LXdoaXRlIHB5LTIgcHgtNCByb3VuZGVkLW1kIGZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIGhvdmVyOmZyb20tcmVkLTcwMCBob3Zlcjp0by1vcmFuZ2UtNzAwIHRyYW5zaXRpb24gZHVyYXRpb24tMzAwIGN1cnNvci1wb2ludGVyIG10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yLTIgdGV4dC1bMTNweF1cIj7wn5SNPC9zcGFuPiBWZXIgUGlzdGFzIGRlbCBDw7NkaWdvXHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIHYtZWxzZSBAY2xpY2s9XCJjbG9zZVBpc3Rhc0xldmVsN1wiIGNsYXNzPVwiYmctZ3JhZGllbnQtdG8tciBmcm9tLXJlZC02MDAgdG8tb3JhbmdlLTYwMCB0ZXh0LXdoaXRlIHB5LTIgcHgtNCByb3VuZGVkLW1kIGZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIGhvdmVyOmZyb20tcmVkLTcwMCBob3Zlcjp0by1vcmFuZ2UtNzAwIHRyYW5zaXRpb24gZHVyYXRpb24tMzAwIGN1cnNvci1wb2ludGVyIG10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yLTIgdGV4dC1bMTNweF1cIj7wn5SNPC9zcGFuPiBPY3VsdGFyIFBpc3RhcyBkZWwgQ8OzZGlnb1xyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJnLXNsYXRlLTkwMCBweC04IHB5LTQgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWFtYmVyLTcwMCBzaGFkb3ctWzBfNHB4XzE2cHhfcmdiYSgyNTUsMTkzLDcsMC4yNSldIGZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VtdGVyIGZsZXgtY29sXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LTR4bFwiPvCflJA8L3NwYW4+ICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cInRleHQtM3hsIGZvbnQtc2VtaWJvbGQgdGV4dC1vcmFuZ2UtMzAwIG1iLTZcIj5JbmdyZXNhIGVsIEPDs2RpZ288L2gyPlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBzcGFjZS14LTIgbWItNiBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgdi1tb2RlbD1cImxldmVsN0Zvcm0uZGlnaXQxXCIgdHlwZT1cInRleHRcIiBtYXhsZW5ndGg9XCIxXCIgY2xhc3M9XCJyb3VuZGVkLXhsIHctMTYgaC0xNiB0ZXh0LWNlbnRlciB0ZXh0LXdoaXRlIHRleHQteGwgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTIgYm9yZGVyLW9yYW5nZS01MDAgb3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItb3JhbmdlLTQwMFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB2LW1vZGVsPVwibGV2ZWw3Rm9ybS5kaWdpdDJcIiB0eXBlPVwidGV4dFwiIG1heGxlbmd0aD1cIjFcIiBjbGFzcz1cInJvdW5kZWQteGwgdy0xNiBoLTE2IHRleHQtY2VudGVyIHRleHQtd2hpdGUgdGV4dC14bCBiZy10cmFuc3BhcmVudCBib3JkZXItMiBib3JkZXItb3JhbmdlLTUwMCBvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1vcmFuZ2UtNDAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IHYtbW9kZWw9XCJsZXZlbDdGb3JtLmRpZ2l0M1wiIHR5cGU9XCJ0ZXh0XCIgbWF4bGVuZ3RoPVwiMVwiIGNsYXNzPVwicm91bmRlZC14bCB3LTE2IGgtMTYgdGV4dC1jZW50ZXIgdGV4dC13aGl0ZSB0ZXh0LXhsIGJnLXRyYW5zcGFyZW50IGJvcmRlci0yIGJvcmRlci1vcmFuZ2UtNTAwIG91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLW9yYW5nZS00MDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgOmRpc2FibGVkPVwiIShsZXZlbDdGb3JtLmRpZ2l0MSAmJiBsZXZlbDdGb3JtLmRpZ2l0MiAmJiBsZXZlbDdGb3JtLmRpZ2l0MylcIiBcclxuICAgICAgICAgICAgICAgICAgQGNsaWNrPVwiZW52aWFyUmVzcHVlc3RhTGV2ZWw3XCIgXHJcbiAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIntcclxuICAgICAgICAgICAgICAgICAgICAnYmctZ3JhZGllbnQtdG8tciBmcm9tLXJlZC02MDAgdG8tb3JhbmdlLTYwMCBob3Zlcjpmcm9tLXJlZC03MDAgaG92ZXI6dG8tb3JhbmdlLTcwMCBjdXJzb3ItcG9pbnRlcic6IChsZXZlbDdGb3JtLmRpZ2l0MSAmJiBsZXZlbDdGb3JtLmRpZ2l0MiAmJiBsZXZlbDdGb3JtLmRpZ2l0MyksXHJcbiAgICAgICAgICAgICAgICAgICAgJ2JnLWdyYWRpZW50LXRvLXIgZnJvbS1ncmF5LTQwMCB0by1ncmF5LTQwMCBjdXJzb3Itbm90LWFsbG93ZWQgb3BhY2l0eS01MCc6ICEobGV2ZWw3Rm9ybS5kaWdpdDEgJiYgbGV2ZWw3Rm9ybS5kaWdpdDIgJiYgbGV2ZWw3Rm9ybS5kaWdpdDMpXHJcbiAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtd2hpdGUgcHktMiBweC02IHJvdW5kZWQtZnVsbCBzaGFkb3ctbGcgaG92ZXI6c2hhZG93LXhsIHRyYW5zaXRpb24gZHVyYXRpb24tMzAwXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtci0yXCI+8J+UkTwvc3Bhbj4gQWJyaXIgQ2FuZGFkb1xyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgIFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IHYtaWY9XCJjb250ZW5pZG9QaXN0YXNMZXZlbDdcIiBjbGFzcz1cImJnLXNsYXRlLTkwMCBweC04IHB5LTQgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWFtYmVyLTcwMCBzaGFkb3ctWzBfNHB4XzE2cHhfcmdiYSgyNTUsMTkzLDcsMC4yNSldXCI+XHJcbiAgICAgICAgICAgIDxpbWcgXHJcbiAgICAgICAgICAgICAgc3JjPVwiL2ltYWdlcy9uaXZlbDdfcGlzdGEucG5nXCIgXHJcbiAgICAgICAgICAgICAgYWx0PVwiUGlzdGEgbml2ZWwgN1wiIFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwidy1bNzIwcHhdIGgtZnVsbCBteC1hdXRvIHJvdW5kZWQtMnhsIGN1cnNvci1wb2ludGVyIGhvdmVyOmJyaWdodG5lc3MtMTEwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMCBzZWxlY3Qtbm9uZSBvYmplY3QtY292ZXIgcC01XCIgXHJcbiAgICAgICAgICAgICAgZHJhZ2dhYmxlPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgIEBjbGljaz1cImhhbmRsZUltYWdlQ2xpY2tcIlxyXG4gICAgICAgICAgICAvPiAgICBcclxuICAgICAgICAgICAgPGg2IGNsYXNzPVwidGV4dC1hbWJlci0yMDAgbWItNVwiPvCfkqEgQW5hbGl6YSBjYWRhIHBpc3RhIGN1aWRhZG9zYW1lbnRlIHBhcmEgZGVzY2lmcmFyIGVsIGPDs2RpZ28gZGUgMyBkw61naXRvczwvaDY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaXhlZCBib3R0b20tNCBsZWZ0LTQgdGV4dC14cyB0ZXh0LXNsYXRlLTcwMCBob3Zlcjp0ZXh0LXNsYXRlLTQwMCB0cmFuc2l0aW9uLWNvbG9ycyBjdXJzb3ItaGVscCB6LTEwXCI+XHJcbiAgICAgICAgICA8c3BhbiB0aXRsZT1cIlBpc3RhOiBTZWxlY2Npb25hIHRvZG8gZWwgdGV4dG8gcGFyYSByZXZlbGFyIHVuYSBVUkwgb2N1bHRhXCI+8J+SoTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiB2LWVsc2U+XHJcbiAgICAgIDxwPk5vIGhheSBuaXZlbCBkaXNwb25pYmxlLjwvcD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdCBzZXR1cD5cclxuaW1wb3J0IHsgcmVmLCBvbk1vdW50ZWQgfSBmcm9tICd2dWUnO1xyXG5pbXBvcnQgeyB1c2VMZXZlbHNTdG9yZSB9IGZyb20gJy4uL3N0b3JlL2xldmVsJztcclxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcclxuaW1wb3J0IHsgdXNlUm91dGVyIH0gZnJvbSAndnVlLXJvdXRlcic7XHJcblxyXG5jb25zdCBsZXZlbHNTdG9yZSA9IHVzZUxldmVsc1N0b3JlKCk7XHJcbmNvbnN0IGxldmVsID0gcmVmKG51bGwpO1xyXG5jb25zdCByb3V0ZXIgPSB1c2VSb3V0ZXIoKTtcclxuXHJcbm9uTW91bnRlZChhc3luYyAoKSA9PiB7XHJcbiAgYXdhaXQgbGV2ZWxzU3RvcmUuR0VUX0xFVkVMUygpO1xyXG4gIGxldmVsLnZhbHVlID0gbGV2ZWxzU3RvcmUuTElTVEFSTEVWRUxTWzZdOyAvLyBOaXZlbCA3IGVzIGVsIMOtbmRpY2UgNlxyXG59KTtcclxuXHJcbmNvbnN0IGxldmVsN0Zvcm0gPSByZWYoe1xyXG4gIGRpZ2l0MTogJycsXHJcbiAgZGlnaXQyOiAnJyxcclxuICBkaWdpdDM6ICcnXHJcbn0pO1xyXG5cclxuLy8gVmFsaWRhciByZXNwdWVzdGEgaW5ncmVzYWRhXHJcbmNvbnN0IG5vcm1hbGl6ZUlucHV0ID0gKGlucHV0KSA9PiB7XHJcbiAgcmV0dXJuIGlucHV0LnRvTG93ZXJDYXNlKCkubm9ybWFsaXplKCdORkQnKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCBcIlwiKTtcclxufTtcclxuXHJcbmNvbnN0IGNvbnRlbmlkb1Bpc3Rhc0xldmVsNyA9IHJlZihmYWxzZSlcclxuXHJcbiAgY29uc3Qgc2hvd1Bpc3Rhc0xldmVsNyA9ICgpID0+IHtcclxuICAgIGNvbnRlbmlkb1Bpc3Rhc0xldmVsNy52YWx1ZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBjb25zdCBjbG9zZVBpc3Rhc0xldmVsNyA9ICgpID0+IHtcclxuICAgIGNvbnRlbmlkb1Bpc3Rhc0xldmVsNy52YWx1ZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbi8vIEZ1bmNpw7NuIHBhcmEgbWFuZWphciBsYSByZXNwdWVzdGFcclxuY29uc3QgZW52aWFyUmVzcHVlc3RhTGV2ZWw3ID0gKCkgPT4ge1xyXG4gIGNvbnN0IHJlc3B1ZXN0YSA9IGAke2xldmVsN0Zvcm0udmFsdWUuZGlnaXQxfSR7bGV2ZWw3Rm9ybS52YWx1ZS5kaWdpdDJ9JHtsZXZlbDdGb3JtLnZhbHVlLmRpZ2l0M31gO1xyXG4gIGNvbnN0IHJlc3B1ZXN0YUNvcnJlY3RhID0gJzA0Mic7ICAvLyBSZXNwdWVzdGEgY29ycmVjdGFcclxuXHJcbiAgaWYgKHJlc3B1ZXN0YSA9PT0gcmVzcHVlc3RhQ29ycmVjdGEpIHtcclxuICAgIGNvbnNvbGUubG9nKFwiUmVzcHVlc3RhIGNvcnJlY3RhLCDCoUZlbGljaWRhZGVzIVwiKTtcclxuICAgIGhhbmRsZU5leHRMZXZlbCgpOyAgLy8gTGxhbWFyIGEgbGEgZnVuY2nDs24gcGFyYSBwYXNhciBhbCBzaWd1aWVudGUgbml2ZWxcclxuICB9IGVsc2Uge1xyXG4gICAgY29uc29sZS5sb2coXCJSZXNwdWVzdGEgaW5jb3JyZWN0YSwgaW50w6ludGFsbyBudWV2YW1lbnRlLlwiKTtcclxuICB9XHJcbn07XHJcblxyXG4vLyBBY3R1YWxpemFyIGVsIG5pdmVsIHkgcGFzYXIgYWwgc2lndWllbnRlIG5pdmVsXHJcbmNvbnN0IGhhbmRsZU5leHRMZXZlbCA9IGFzeW5jICgpID0+IHtcclxuICBjb25zdCBkbmkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZG5pJyk7IC8vIE9idGVuZXIgZWwgRE5JIGRlc2RlIGVsIGxvY2FsU3RvcmFnZVxyXG5cclxuICBpZiAoIWRuaSkge1xyXG4gICAgY29uc29sZS5sb2coJ0ROSSBubyBlbmNvbnRyYWRvJyk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICB0cnkge1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0KCcvYXBpL3VwZGF0ZS1sZXZlbCcsIHsgJ2RuaSc6IGRuaSB9KTtcclxuICAgIGNvbnNvbGUubG9nKCdSZXNwdWVzdGEgZGVsIHNlcnZpZG9yIGFsIGFjdHVhbGl6YXIgbml2ZWw6JywgcmVzcG9uc2UpO1xyXG4gICAgY29uc3QgbmV3TGV2ZWwgPSByZXNwb25zZS5kYXRhLm5ld19sZXZlbDsgLy8gRWwgbml2ZWwgcXVlIGRldnVlbHZlIGxhIEFQSVxyXG4gICAgY29uc3QgbmFtZUxldmVsID0gcmVzcG9uc2UuZGF0YS5uaXZlbF91cmw7XHJcblxyXG4gICAgLy8gQWN0dWFsaXphIGVsIHZhbG9yIGRlICduaXZlbF9udW0nIGVuIGVsIGxvY2FsU3RvcmFnZSBjb24gZWwgbnVldm8gbml2ZWxcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCduaXZlbF9udW0nLCBuZXdMZXZlbCk7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbml2ZWwnLCBuYW1lTGV2ZWwpO1xyXG4gICAgY29uc29sZS5sb2coYE5pdmVsIGFjdHVhbGl6YWRvIGE6ICR7bmV3TGV2ZWx9YCk7XHJcbiAgICByb3V0ZXIucHVzaChuYW1lTGV2ZWwpOyAgLy8gUmVkaXJpZ2lyIGFsIG51ZXZvIG5pdmVsXHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGFsIGFjdHVhbGl6YXIgZWwgbml2ZWw6JywgZXJyb3IucmVzcG9uc2UuZGF0YSk7XHJcbiAgfVxyXG59O1xyXG48L3NjcmlwdD5cclxuPHN0eWxlIHNjb3BlZD5cclxuLmNvbnRhaW5lciB7XHJcbiAgcGFkZGluZzogMjRweDtcclxufVxyXG5cclxuLnRhYmxlLXRpdGxlIHtcclxuICBmb250LXNpemU6IDI0cHg7XHJcbiAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4uY3VzdG9tLXB1cnBsZS1ncmFkaWVudCB7XHJcbiAgYmFja2dyb3VuZDogIzI0MDkwMDtcclxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTMzZGVnLCByZ2JhKDM2LCA5LCAwLCAxKSAwJSwgcmdiYSg1NiwgMjMsIDQsIDEpIDUxJSwgcmdiYSgxNzEsIDUyLCAxMiwgMSkgMTAwJSk7XHJcbn1cclxuXHJcbi5zZWxlY3QtdGV4dCB7XHJcbiAgdXNlci1zZWxlY3Q6IHRleHQ7XHJcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogdGV4dDtcclxuICAtbW96LXVzZXItc2VsZWN0OiB0ZXh0O1xyXG4gIC1tcy11c2VyLXNlbGVjdDogdGV4dDtcclxufVxyXG5cclxuLnRleHQtc2xhdGUtODAwLm9wYWNpdHktNTo6c2VsZWN0aW9uIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE0OCwgMTYzLCAxODQsIDAuMyk7XHJcbiAgY29sb3I6IHJnYigxNDgsIDE2MywgMTg0KTtcclxufVxyXG5cclxuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XHJcbiAgLnRleHQtNnhsIHtcclxuICAgIGZvbnQtc2l6ZTogNHJlbTtcclxuICB9XHJcbiAgXHJcbiAgLm1heC13LTJ4bCB7XHJcbiAgICBtYXJnaW46IDAgMTZweDtcclxuICB9XHJcbn1cclxuPC9zdHlsZT5cclxuIiwiPHRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJtaW4taC1zY3JlZW4gbml2ZWw4LWdyYWRpZW50XCI+XHJcbiAgICBcclxuICAgIDwhLS0gSGVhZGVyIENhcmQgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBwdC04IHBiLTRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImJnLXNsYXRlLTgwMC85NSBib3JkZXItMiBib3JkZXItdGVhbC00MDAvNjAgcm91bmRlZC0yeGwgcHgtMjAgcHktNCB0ZXh0LWNlbnRlciBiYWNrZHJvcC1ibHVyLXNtIHNoYWRvdy0yeGwgbWF4LXctNHhsIHctZnVsbCBteC00XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNwYWNlLXgtMyBtYi0yXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZ3JheS0zMDAgdGV4dC14bFwiPvCflI08L3NwYW4+XHJcbiAgICAgICAgICA8aDEgY2xhc3M9XCJ0ZXh0LXhsIGZvbnQtYm9sZCB0ZXh0LXRlYWwtNDAwXCI+TklWRUwgODwvaDE+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQteWVsbG93LTQwMCB0ZXh0LWxnXCI+4pqhPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxoMiBjbGFzcz1cInRleHQtbGcgdGV4dC10ZWFsLTMwMCBtYi0yXCI+QnVzY2EgYSA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LXRlYWwtMjAwXCI+QlA8L3NwYW4+PC9oMj5cclxuICAgICAgICA8cCBjbGFzcz1cInRleHQtZ3JheS00MDAgdGV4dC1zbVwiPkVuY3VlbnRyYSB5IGhheiBjbGljIGVuIGVsIHBlcnNvbmFqZSBjb3JyZWN0bzwvcD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEJQIFNlYXJjaCBDYXJkIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgbWItNFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYmctc2xhdGUtNzAwLzk1IGJvcmRlciBib3JkZXItdGVhbC00MDAvNTAgcm91bmRlZC14bCBweC04IHB5LTMgYmFja2Ryb3AtYmx1ci1zbSBzaGFkb3cteGwgbWF4LXctbWQgbXgtNFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBzcGFjZS14LTIgbWItM1wiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXJlZC00MDBcIj7wn5ONPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWdyYXktMzAwIHRleHQtc21cIj5CdXNjYSBhIGVzdGUgcGVyc29uYWplOjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJnLXRlYWwtNTAwIGJvcmRlciBib3JkZXItdGVhbC0zMDAgcm91bmRlZC1sZyBweC02IHB5LTIgdGV4dC1jZW50ZXIgc2hhZG93LWxnXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBzcGFjZS14LTJcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtd2hpdGUgdGV4dC1zbVwiPvCfkaQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXdoaXRlIGZvbnQtYm9sZFwiPkJQPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8IS0tIE1haW4gR2FtZSBJbWFnZSBDb250YWluZXIgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWF4LXctM3hsIG14LWF1dG8gcHgtNCBtYi00XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJiZy1zbGF0ZS04MDAvODAgYm9yZGVyLTIgYm9yZGVyLXRlYWwtNDAwLzUwIHJvdW5kZWQtMnhsIHAtMyBiYWNrZHJvcC1ibHVyLXNtIHNoYWRvdy0yeGxcIj5cclxuICAgICAgICA8aW1nIFxyXG4gICAgICAgICAgc3JjPVwiL2ltYWdlcy9icC5qcGdcIiBcclxuICAgICAgICAgIGFsdD1cIkJ1c2NhIGEgQlAgZW4gZXN0YSBlc2NlbmFcIiBcclxuICAgICAgICAgIGNsYXNzPVwidy1mdWxsIG14LWF1dG8gcm91bmRlZC14bCBjdXJzb3ItcG9pbnRlciBob3ZlcjpicmlnaHRuZXNzLTExMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDAgc2VsZWN0LW5vbmUgc2hhZG93LWxnXCIgXHJcbiAgICAgICAgICBkcmFnZ2FibGU9XCJmYWxzZVwiXHJcbiAgICAgICAgICB1c2VtYXA9XCIjaW1hZ2UtbWFwXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIFxyXG4gICAgICAgIDxtYXAgbmFtZT1cImltYWdlLW1hcFwiIEBjbGljaz1cImhhbmRsZU5leHRMZXZlbFwiPlxyXG4gICAgICAgICAgICA8YXJlYSB0YXJnZXQ9XCJcIiBhbHQ9XCJcIiB0aXRsZT1cIlwiIGNvb3Jkcz1cIjI5MCw4OCwyODMsMTExLDI5OSwxMTgsMzEwLDc3XCIgc2hhcGU9XCJwb2x5XCI+XHJcbiAgICAgICAgICAgIDxhcmVhIHRhcmdldD1cIlwiIGFsdD1cIlwiIHRpdGxlPVwiXCIgY29vcmRzPVwiMjkyLDUzLDI4NSw2NywzMDUsNTksMjg1LDY4XCIgc2hhcGU9XCJwb2x5XCI+XHJcbiAgICAgICAgICAgIDxhcmVhIHRhcmdldD1cIlwiIGFsdD1cIlwiIHRpdGxlPVwiXCIgY29vcmRzPVwiMjg4LDY2LDI5Niw4NSwzMDUsNzgsMzA3LDU5LDI5Myw1MVwiIHNoYXBlPVwicG9seVwiPlxyXG4gICAgICAgIDwvbWFwPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gQm90dG9tIEluc3RydWN0aW9ucyBCYXIgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWF4LXctNHhsIG14LWF1dG8gcHgtNCBtYi00XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJiZy1zbGF0ZS04MDAvODAgYm9yZGVyIGJvcmRlci10ZWFsLTQwMC80MCByb3VuZGVkLXhsIHB4LTYgcHktMyBiYWNrZHJvcC1ibHVyLXNtIHNoYWRvdy14bFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBzcGFjZS14LTggdGV4dC14c1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMiB0ZXh0LXBpbmstNDAwXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPvCfkpY8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuPkhheiBjbGljIGVuIEJQIGN1YW5kbyBsbyBlbmN1ZW50cmVzPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC0yIHRleHQtZ3JheS00MDBcIj5cclxuICAgICAgICAgICAgPHNwYW4+8J+RgDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4+T2JzZXJ2YSBiaWVuIGxvcyBkZXRhbGxlczwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMiB0ZXh0LXB1cnBsZS00MDBcIj5cclxuICAgICAgICAgICAgPHNwYW4+8J+RgDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4+wqFCw7pzY2FsbyBjb24gYXRlbmNpw7NuITwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gRGV2IENvbnRyb2xzIC0tPlxyXG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwiZml4ZWQgYm90dG9tLTQgbGVmdC00XCI+XHJcbiAgICAgIDxidXR0b24gXHJcbiAgICAgICAgQGNsaWNrPVwidG9nZ2xlRGV2Q29udHJvbHNcIiBcclxuICAgICAgICBjbGFzcz1cInctMTIgaC0xMiBiZy1zbGF0ZS04MDAvOTAgYm9yZGVyIGJvcmRlci10ZWFsLTQwMC81MCByb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgaG92ZXI6Ymctc2xhdGUtNzAwLzkwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMCBzaGFkb3ctbGcgdGV4dC1sZ1wiXHJcbiAgICAgID5cclxuICAgICAgICDwn5KhXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+IC0tPlxyXG5cclxuICAgIDxkaXYgdi1pZj1cInNob3dEZXZDb250cm9sc1wiIGNsYXNzPVwiZml4ZWQgdG9wLTQgcmlnaHQtNCBiZy1zbGF0ZS05MDAvOTUgYm9yZGVyIGJvcmRlci10ZWFsLTQwMC81MCByb3VuZGVkLWxnIHAtMyBiYWNrZHJvcC1ibHVyLXNtIHNoYWRvdy14bFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3BhY2UteS0yXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJnb1RvTGV2ZWwoOClcIiBjbGFzcz1cImJsb2NrIHctZnVsbCBweC0zIHB5LTIgYmctc2xhdGUtNzAwIGhvdmVyOmJnLXNsYXRlLTYwMCB0ZXh0LXdoaXRlIHJvdW5kZWQgdGV4dC1zbSB0cmFuc2l0aW9uLWNvbG9yc1wiPlxyXG4gICAgICAgICAg4oaQIE5pdmVsIDhcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIEBjbGljaz1cImdvVG9MZXZlbCgxMClcIiBjbGFzcz1cImJsb2NrIHctZnVsbCBweC0zIHB5LTIgYmctc2xhdGUtNzAwIGhvdmVyOmJnLXNsYXRlLTYwMCB0ZXh0LXdoaXRlIHJvdW5kZWQgdGV4dC1zbSB0cmFuc2l0aW9uLWNvbG9yc1wiPlxyXG4gICAgICAgICAgTml2ZWwgMTAg4oaSXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0IHNldHVwPlxyXG5pbXBvcnQgeyByZWYsIG9uTW91bnRlZCB9IGZyb20gJ3Z1ZSc7XHJcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XHJcbmltcG9ydCB7IHVzZVJvdXRlciB9IGZyb20gJ3Z1ZS1yb3V0ZXInO1xyXG5cclxuY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKCk7XHJcblxyXG4vLyDwn5qAIFZBTE9SIENPUlJFR0lETyBiYXNhZG8gZW4gdHUgaW1hZ2VuICg5NjB4NjgyKSDwn5qAXHJcbmNvbnN0IE9SSUdJTkFMX0lNQUdFX1dJRFRIID0gOTYwO1xyXG5cclxuY29uc3Qgc2hvd0RldkNvbnRyb2xzID0gcmVmKGZhbHNlKTtcclxuXHJcbmNvbnN0IG1ha2VJbWFnZU1hcFJlc3BvbnNpdmUgPSAoKSA9PiB7XHJcbiAgICBjb25zdCBpbWcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbWdbdXNlbWFwPVwiI2ltYWdlLW1hcFwiXScpO1xyXG4gICAgaWYgKCFpbWcpIHJldHVybjtcclxuICAgIFxyXG4gICAgY29uc3QgcmVzaXplTWFwID0gKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRXaWR0aCA9IGltZy5jbGllbnRXaWR0aDtcclxuICAgICAgICBjb25zdCBzY2FsZUZhY3RvciA9IGN1cnJlbnRXaWR0aCAvIE9SSUdJTkFMX0lNQUdFX1dJRFRIO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGNvbnN0IG1hcCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21hcFtuYW1lPVwiaW1hZ2UtbWFwXCJdJyk7XHJcbiAgICAgICAgaWYgKG1hcCkge1xyXG4gICAgICAgICAgICBtYXAucXVlcnlTZWxlY3RvckFsbCgnYXJlYScpLmZvckVhY2goYXJlYSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgb3JpZ2luYWxDb29yZHMgPSBhcmVhLmRhdGFzZXQub3JpZ2luYWxDb29yZHM7XHJcbiAgICAgICAgICAgICAgICBpZiAoIW9yaWdpbmFsQ29vcmRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxDb29yZHMgPSBhcmVhLmNvb3JkcztcclxuICAgICAgICAgICAgICAgICAgICBhcmVhLmRhdGFzZXQub3JpZ2luYWxDb29yZHMgPSBvcmlnaW5hbENvb3JkcztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3Q29vcmRzID0gb3JpZ2luYWxDb29yZHMuc3BsaXQoJywnKS5tYXAoY29vcmQgPT4gXHJcbiAgICAgICAgICAgICAgICAgICAgTWF0aC5yb3VuZChwYXJzZUludChjb29yZCkgKiBzY2FsZUZhY3RvcilcclxuICAgICAgICAgICAgICAgICkuam9pbignLCcpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBhcmVhLmNvb3JkcyA9IG5ld0Nvb3JkcztcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIFxyXG4gICAgaW1nLm9ubG9hZCA9IHJlc2l6ZU1hcDsgXHJcbiAgICAvLyBoYW5kbGVOZXh0TGV2ZWwoKTsgXHJcbiAgICBpZiAoaW1nLmNvbXBsZXRlKSB7XHJcbiAgICAgICAgcmVzaXplTWFwKCk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5jb25zdCBoYW5kbGVOZXh0TGV2ZWwgPSBhc3luYyAoKSA9PiB7XHJcbiAgY29uc3QgZG5pID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2RuaScpOyAvLyBPYnRlbmVyIGVsIEROSSBkZXNkZSBlbCBsb2NhbFN0b3JhZ2VcclxuXHJcbiAgaWYgKCFkbmkpIHtcclxuICAgIGNvbnNvbGUubG9nKCdETkkgbm8gZW5jb250cmFkbycpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MucG9zdCgnL2FwaS91cGRhdGUtbGV2ZWwnLCB7ICdkbmknOiBkbmkgfSk7XHJcbiAgICBjb25zb2xlLmxvZygnUmVzcHVlc3RhIGRlbCBzZXJ2aWRvciBhbCBhY3R1YWxpemFyIG5pdmVsOicsIHJlc3BvbnNlKTtcclxuICAgIGNvbnN0IG5ld0xldmVsID0gcmVzcG9uc2UuZGF0YS5uZXdfbGV2ZWw7IC8vIEVsIG5pdmVsIHF1ZSBkZXZ1ZWx2ZSBsYSBBUElcclxuICAgIGNvbnN0IG5hbWVMZXZlbCA9IHJlc3BvbnNlLmRhdGEubml2ZWxfdXJsO1xyXG5cclxuICAgIC8vIEFjdHVhbGl6YSBlbCB2YWxvciBkZSAnbml2ZWxfbnVtJyBlbiBlbCBsb2NhbFN0b3JhZ2UgY29uIGVsIG51ZXZvIG5pdmVsXHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbml2ZWxfbnVtJywgbmV3TGV2ZWwpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ25pdmVsJywgbmFtZUxldmVsKTtcclxuICAgIGNvbnNvbGUubG9nKGBOaXZlbCBhY3R1YWxpemFkbyBhOiAke25ld0xldmVsfWApO1xyXG4gICAgcm91dGVyLnB1c2gobmFtZUxldmVsKTsgIC8vIFJlZGlyaWdpciBhbCBudWV2byBuaXZlbFxyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICBjb25zb2xlLmVycm9yKCdFcnJvciBhbCBhY3R1YWxpemFyIGVsIG5pdmVsOicsIGVycm9yLnJlc3BvbnNlLmRhdGEpO1xyXG4gIH1cclxufTtcclxuXHJcbm9uTW91bnRlZCgoKSA9PiB7XHJcbiAgICBtYWtlSW1hZ2VNYXBSZXNwb25zaXZlKCk7XHJcbn0pO1xyXG5cclxuY29uc3QgdG9nZ2xlRGV2Q29udHJvbHMgPSAoKSA9PiB7XHJcbiAgc2hvd0RldkNvbnRyb2xzLnZhbHVlID0gIXNob3dEZXZDb250cm9scy52YWx1ZTtcclxufTtcclxuXHJcbi8vIGNvbnN0IGdvVG9MZXZlbCA9IChsZXZlbE51bWJlcikgPT4ge1xyXG4vLyAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYC9uaXZlbCR7bGV2ZWxOdW1iZXJ9YDtcclxuLy8gfTtcclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGUgc2NvcGVkPlxyXG4ubml2ZWw4LWdyYWRpZW50IHtcclxuICBiYWNrZ3JvdW5kOiAjMDAyNDA1O1xyXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzNkZWcsIHJnYmEoMCwgMzYsIDUsIDEpIDAlLCByZ2JhKDQsIDU2LCA0MiwgMSkgNTElLCByZ2JhKDEyLCAxNzEsIDEwMiwgMSkgMTAwJSk7XHJcbn1cclxuPC9zdHlsZT4iLCI8dGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgPGRpdiB2LWlmPVwibGV2ZWxcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1pbi1oLXNjcmVlbiBiZy1iYWNrZ3JvdW5kIHJlbGF0aXZlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pbi1oLXNjcmVlbiBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBwLTggY3VzdG9tLXB1cnBsZS1ncmFkaWVudFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbi13LTN4bCBteC1hdXRvIHRleHQtY2VudGVyIHNwYWNlLXktOCByZWxhdGl2ZSB6LTEwXCI+XHJcblxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LTd4bCBtYi01XCI+8J+OiTwvcD5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwidGV4dC0zeGwgbWItMiB0ZXh0LWFtYmVyLTMwMFwiPk5JVkVMIDExIC0gRklOQUw8L2gzPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJnLXNsYXRlLTkwMCBwLTEwIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1mdWNoc2lhLTIwMCBtYi01IHJlbGF0aXZlIHNoYWRvdy1bMF80cHhfMTZweF9yZ2JhKDI1NSw5OSwwLDAuMyldXCI+XHJcbiAgICAgICAgICAgIDxoMSBjbGFzcz1cInRleHQtZW1lcmFsZC0zMDAgdGV4dC0zeGxcIj5BaG9yYSBzaSwgaGFzIGxsZWdhZG8gYWwgZmluYWwgZGVsIHJldG8uPC9oMT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBnYXAtNSBweS0xMFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC02eGwgYW5pbWF0ZS1qdW1wLTFcIj7wn46KPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC02eGwgYW5pbWF0ZS1qdW1wLTJcIj7wn4+GPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC02eGwgYW5pbWF0ZS1qdW1wLTNcIj7inKg8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIDxoMyBjbGFzcz1cInRleHQtNXhsIG1iLTggdGV4dC1mdWNoc2lhLTIwMFwiPkZlbGljaXRhY2lvbmVzLjwvaDM+XHJcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXhsIHRleHQtZ3JheS0yMDBcIj5cclxuICAgICAgICAgICAgICAgIEhhcyBjb21wbGV0YWRvIHRvZG9zIGxvcyA8c3BhbiBjbGFzcz1cInRleHQteWVsbG93LTQwMFwiPjExIG5pdmVsZXM8L3NwYW4+IGRlbCBkZXNhZsOtbyB0ZWNub2zDs2dpY28gbcOhcyDDqXBpY28uXHJcbiAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC04IGJnLWdyYWRpZW50LXRvLXIgZnJvbS1wdXJwbGUtNjAwLzI1IHRvLWluZGlnby04MDAvMjUgcHgtOCBweS0xMCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZnVjaHNpYS00MDAgbWItNSByZWxhdGl2ZSBzaGFkb3ctWzBfNHB4XzE2cHhfcmdiYSgyNTUsOTksMCwwLjMpXVwiPlxyXG4gICAgICAgICAgICAgIDxoMyBjbGFzcz1cInRleHQtY2VudGVyIHRleHQteGwgdGV4dC1mdWNoc2lhLTQwMFwiPvCfjJ8gVHUgdHJhdmVzw61hIGluY2x1ecOzOjwvaDM+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTQgbXQtNiBweC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC13aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj7wn46vIE5hdmVnYWNpw7NuIGludHVpdGl2YTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPvCflJcgTWFuaXB1bGFjacOzbiBkZSBVUkxzPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+8J+Wse+4jyBJbnRlcmFjY2lvbmVzIHByZWNpc2FzPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+8J+noCBQZW5zYW1pZW50byBjcsOtdGljbzwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPvCflI0gVMOpY25pY2FzIGRlIGLDunNxdWVkYTwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtd2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPvCfkYAgSW5zcGVjY2nDs24gZGUgY8OzZGlnbzwvbGk+XHJcbiAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj7wn46oIFJlY29ub2NpbWllbnRvIHZpc3VhbDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj7wn5SQIFJlc29sdWNpw7NuIGRlIGFjZXJ0aWpvczwvbGk+XHJcbiAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj7wn46uIEdhbWluZyB5IGzDs2dpY2E8L2xpPlxyXG4gICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+8J+OriBHYW1pbmcgeSBsw7NnaWNhPC9saT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTggYmctZ3JhZGllbnQtdG8tciBmcm9tLWdyZWVuLTYwMC8yNSB0by1ncmVlbi04MDAvMjUgcHgtNSBweS0zIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ncmVlbi00MDAgbWItNSByZWxhdGl2ZSBzaGFkb3ctWzBfNHB4XzE2cHhfcmdiYSgzNCwxOTcsOTQsMC4zKV1cIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZW1lcmFsZC0zMDBcIj7wn4+V77iPIMKhRXN0w6FzIG3DoXMgcXVlIGxpc3RvIHBhcmEgY3VhbHF1aWVyIGRlc2Fmw61vIHRlY25vbMOzZ2ljbyBxdWUgdmVuZ2EhIPCfkrvinKg8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktNiB0ZXh0LW1kIG10LTggYmctZ3JhZGllbnQtdG8tciBmcm9tLXNsYXRlLTkwMC83NSB0by1zbGF0ZS04MDAvNzUgcHgtNiAgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXNsYXRlLTQwMCBtYi01IHJlbGF0aXZlIHNoYWRvdy1bMF80cHhfMTZweF9yZ2JhKDM0LDE5Nyw5NCwwLjMpXVwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LXdoaXRlIHRleHQteGxcIj7wn46vIERlc2Fmw61vIGNvbXBsZXRhZG8gYWwgPHNwYW4gY2xhc3M9XCJ0ZXh0LWVtZXJhbGQtNDAwIGZvbnQtYm9sZFwiPjEwMCU8L3NwYW4+PC9oMz5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwidGV4dC13aGl0ZSBmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBteS0yXCI+UHJvZ3Jlc286IFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0xIG14LTNcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMyBoLTMgYmctZ3JlZW4tNTAwIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0zIGgtMyBiZy1ncmVlbi01MDAgcm91bmRlZC1mdWxsXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTMgaC0zIGJnLWdyZWVuLTUwMCByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMyBoLTMgYmctZ3JlZW4tNTAwIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0zIGgtMyBiZy1ncmVlbi01MDAgcm91bmRlZC1mdWxsXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTMgaC0zIGJnLWdyZWVuLTUwMCByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMyBoLTMgYmctZ3JlZW4tNTAwIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0zIGgtMyBiZy1ncmVlbi01MDAgcm91bmRlZC1mdWxsXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTMgaC0zIGJnLWdyZWVuLTUwMCByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMyBoLTMgYmctZ3JlZW4tNTAwIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0zIGgtMyBiZy1ncmVlbi01MDAgcm91bmRlZC1mdWxsXCI+PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDExLzExXHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cInRleHQteWVsbG93LTIwMCB0ZXh0LXhsXCI+XHJcbiAgICAgICAgICAgICAg8J+MnyDCoU1BRVNUUk8gREUgTE9TIEFDRVJUSUpPUyEg8J+Mn1xyXG4gICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLThcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz1cImlySnVnYXJEZU51ZXZvXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBweC02IHB5LTMgYmctZ3JhZGllbnQtdG8tciBmcm9tLXB1cnBsZS02MDAgdG8tYmx1ZS02MDAgaG92ZXI6ZnJvbS1wdXJwbGUtNzAwIGhvdmVyOnRvLWJsdWUtNzAwIHRleHQtd2hpdGUgcm91bmRlZC1sZyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBzcGFjZS14LTIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0gdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIGhvdmVyOi10cmFuc2xhdGUteS0xXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZFwiPvCflIQgSnVnYXIgZGUgTnVldm88L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPVwiaXJBbEphbkNhbVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgcHgtNiBweS0zIGJnLWdyYWRpZW50LXRvLXIgZnJvbS1ncmVlbi01MDAgdG8tZ3JlZW4tNzAwIGhvdmVyOmZyb20tZ3JlZW4tNjAwIGhvdmVyOnRvLWdyZWVuLTgwMCB0ZXh0LXdoaXRlIHJvdW5kZWQtbGcgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc3BhY2UteC0yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0gdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwIGhvdmVyOi10cmFuc2xhdGUteS0xXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZFwiPvCfj5XvuI8gSXIgYWwgSmFtQ2FtPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtOCBiZy1ncmFkaWVudC10by1yIGZyb20teWVsbG93LTYwMC8yNSB0by15ZWxsb3ctODAwLzI1IHB4LTcgcHktNSByb3VuZGVkLWxnIGJvcmRlciBib3JkZXIteWVsbG93LTQwMCBtYi01IHJlbGF0aXZlIHNoYWRvdy1bMF80cHhfMTZweF9yZ2JhKDI1NSwgMTkzLCA3LCAwLjMpXVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQteWVsbG93LTUwMCBmb250LWJvbGRcIj7CoUdyYWNpYXMgcG9yIGNvbXBsZXRhciBlc3RlIGluY3Jlw61ibGUgdmlhamUgZGUgYWNlcnRpam9zISDwn5qAPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaXhlZCBib3R0b20tNCBsZWZ0LTQgdGV4dC14cyB0ZXh0LXNsYXRlLTcwMCBob3Zlcjp0ZXh0LXNsYXRlLTQwMCB0cmFuc2l0aW9uLWNvbG9ycyBjdXJzb3ItaGVscCB6LTEwXCI+XHJcbiAgICAgICAgICA8c3BhbiB0aXRsZT1cIlBpc3RhOiBTZWxlY2Npb25hIHRvZG8gZWwgdGV4dG8gcGFyYSByZXZlbGFyIHVuYSBVUkwgb2N1bHRhXCI+8J+SoTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IHYtZWxzZT5cclxuICAgICAgPHA+Tm8gaGF5IG5pdmVsIGRpc3BvbmlibGUuPC9wPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0IHNldHVwPlxyXG4gIGltcG9ydCB7IHJlZiwgb25Nb3VudGVkIH0gZnJvbSAndnVlJztcclxuICBpbXBvcnQgeyB1c2VMZXZlbHNTdG9yZSB9IGZyb20gJy4uL3N0b3JlL2xldmVsJztcclxuXHJcbiAgY29uc3QgbGV2ZWxzU3RvcmUgPSB1c2VMZXZlbHNTdG9yZSgpO1xyXG4gIGNvbnN0IGxldmVsID0gcmVmKG51bGwpO1xyXG5cclxuICBjb25zdCBpckp1Z2FyRGVOdWV2byA9ICgpID0+IHtcclxuICAgIGNvbnNvbGUubG9nKFwiSXIgYSBKdWdhciBkZSBOdWV2b1wiKVxyXG4gIH1cclxuXHJcbiAgY29uc3QgaXJBbEphbkNhbSA9ICgpID0+IHtcclxuICAgIGNvbnNvbGUubG9nKFwiSXIgYWwgSmFuQ2FtXCIpXHJcbiAgfVxyXG5cclxuICBvbk1vdW50ZWQoYXN5bmMgKCkgPT4ge1xyXG4gICAgYXdhaXQgbGV2ZWxzU3RvcmUuR0VUX0xFVkVMUygpO1xyXG4gICAgbGV2ZWwudmFsdWUgPSBsZXZlbHNTdG9yZS5MSVNUQVJMRVZFTFNbMTFdO1xyXG4gICAgY29uc29sZS5sb2cobGV2ZWwudmFsdWUpO1xyXG4gIH0pO1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQ+XHJcbi5jb250YWluZXIge1xyXG4gIHBhZGRpbmc6IDI0cHg7XHJcbn1cclxuXHJcbi50YWJsZS10aXRsZSB7XHJcbiAgZm9udC1zaXplOiAyNHB4O1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLmN1c3RvbS1wdXJwbGUtZ3JhZGllbnQge1xyXG4gIGJhY2tncm91bmQ6ICMwMTAxM2Q7XHJcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDExNWRlZywgcmdiYSgxLCAxLCA2MSwgMSkgMCUsIHJnYmEoMjYsIDcsIDg5LCAxKSAzNSUsIHJnYmEoOTksIDE5LCAxNzMsIDEpIDEwMCUpO1xyXG59XHJcblxyXG4uc2VsZWN0LXRleHQge1xyXG4gIHVzZXItc2VsZWN0OiB0ZXh0O1xyXG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IHRleHQ7XHJcbiAgLW1vei11c2VyLXNlbGVjdDogdGV4dDtcclxuICAtbXMtdXNlci1zZWxlY3Q6IHRleHQ7XHJcbn1cclxuXHJcbi50ZXh0LXNsYXRlLTgwMC5vcGFjaXR5LTU6OnNlbGVjdGlvbiB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNDgsIDE2MywgMTg0LCAwLjMpO1xyXG4gIGNvbG9yOiByZ2IoMTQ4LCAxNjMsIDE4NCk7XHJcbn1cclxuXHJcbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xyXG4gIC50ZXh0LTZ4bCB7XHJcbiAgICBmb250LXNpemU6IDRyZW07XHJcbiAgfVxyXG4gIFxyXG4gIC5tYXgtdy0yeGwge1xyXG4gICAgbWFyZ2luOiAwIDE2cHg7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGp1bXAge1xyXG4gIDAlLCAxMDAlIHtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcclxuICB9XHJcbiAgNTAlIHtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjBweCk7XHJcbiAgfVxyXG59XHJcblxyXG4uYW5pbWF0ZS1qdW1wLTEge1xyXG4gIGFuaW1hdGlvbjoganVtcCAwLjg4cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcclxufVxyXG5cclxuLmFuaW1hdGUtanVtcC0yIHtcclxuICBhbmltYXRpb246IGp1bXAgMC44OHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XHJcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjJzOyAvKiBSZXRyYXNvIGRlbCBzZWd1bmRvIGljb25vICovXHJcbn1cclxuXHJcbi5hbmltYXRlLWp1bXAtMyB7XHJcbiAgYW5pbWF0aW9uOiBqdW1wIDAuODhzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xyXG4gIGFuaW1hdGlvbi1kZWxheTogMC40czsgLyogUmV0cmFzbyBkZWwgdGVyY2VyIGljb25vICovXHJcbn1cclxuPC9zdHlsZT5cclxuIiwiPHRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJtaW4taC1zY3JlZW4gYmctYmFja2dyb3VuZCByZWxhdGl2ZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1pbi1oLXNjcmVlbiBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBwLTggY3VzdG9tLWFtYmVyLWdyYWRpZW50XCI+XHJcbiAgICAgIFxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWF4LXctNHhsIG14LWF1dG8gdGV4dC1jZW50ZXIgc3BhY2UteS04XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIiBwLTEwIHJvdW5kZWQtbGcgbWF4LXctNXhsIG14LWF1dG9cIj5cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xNiBoLTE2IGJvcmRlci00IGJvcmRlci15ZWxsb3ctNDAwIGJvcmRlci10LXRyYW5zcGFyZW50IHJvdW5kZWQtZnVsbCBhbmltYXRlLXNwaW5cIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC13aGl0ZSB0ZXh0LWxnIG10LTQgYW5pbWF0ZS1wdWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgQ2FyZ2FuZG8uLi5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHN0eWxlIHNjb3BlZD5cclxuLmN1c3RvbS1hbWJlci1ncmFkaWVudCB7XHJcbiAgYmFja2dyb3VuZDogIzQ1MjYwMDtcclxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTE1ZGVnLCByZ2JhKDY5LCAzOCwgMCwgMSkgMCUsIHJnYmEoMTA1LCA1OSwgMywgMSkgMzUlLCByZ2JhKDIxOSwgMTM5LCAxOCwgMSkgMTAwJSk7XHJcbn1cclxuPC9zdHlsZT4iLCI8dGVtcGxhdGU+XHJcbiAgPCEtLSBNYWluIFNpZGViYXIgLS0+XHJcbiAgPGEtbGF5b3V0LXNpZGVyXHJcbiAgICBjb2xsYXBzaWJsZVxyXG4gICAgY2xhc3M9XCJzaWRlci1wcmltYXJ5IGJvcmRlcmVkLXNpZGVyXCJcclxuICAgIGJyZWFrcG9pbnQ9XCJsZ1wiXHJcbiAgICBjb2xsYXBzZWQtd2lkdGg9XCIwXCJcclxuICAgIHdpZHRoPVwiMjUwcHhcIlxyXG4gICAgOmNvbGxhcHNlZD1cInNpZGViYXJDb2xsYXBzZWRcIlxyXG4gICAgQGNvbGxhcHNlPVwiJGVtaXQoJ3RvZ2dsZVNpZGViYXInLCAhc2lkZWJhckNvbGxhcHNlZClcIlxyXG4gICAgOnRyaWdnZXI9XCJudWxsXCJcclxuICAgIDpjbGFzcz1cIlsnYW50LWxheW91dC1zaWRlci0nICsgc2lkZWJhckNvbG9yLCAnYW50LWxheW91dC1zaWRlci0nICsgc2lkZWJhclRoZW1lXVwiXHJcbiAgICB0aGVtZT1cImxpZ2h0XCJcclxuICAgIDpzdHlsZT1cInsgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnIH1cIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJicmFuZFwiPlxyXG4gICAgICA8c3Bhbj5TaXN0ZW1hIEFkbWluaXN0cmFkb3I8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxociAvPlxyXG5cclxuICAgIDwhLS0gU2lkZWJhciBOYXZpZ2F0aW9uIE1lbnUgKHNpbiBzdWJtZW7DunMpIC0tPlxyXG4gICAgPGEtbWVudSB0aGVtZT1cImxpZ2h0XCIgbW9kZT1cImlubGluZVwiIDppbmxpbmVJbmRlbnQ9XCIyMFwiIHYtbW9kZWw6c2VsZWN0ZWRLZXlzPVwic2VsZWN0ZWRLZXlzXCI+XHJcbiAgICAgIDxhLW1lbnUtaXRlbSBrZXk9XCIxXCI+XHJcbiAgICAgICAgPHJvdXRlci1saW5rIHRvPVwiL2Rhc2hib2FyZFwiIGNsYXNzPVwicG9zaXRpb24tc2lkZWJhci1vcHRpb25zXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb25cIj5cclxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgPHBhdGggZD1cIk0zIDRDMyAzLjQ0NzcyIDMuNDQ3NzIgMyA0IDNIMTZDMTYuNTUyMyAzIDE3IDMuNDQ3NzIgMTcgNFY2QzE3IDYuNTUyMjggMTYuNTUyMyA3IDE2IDdINEMzLjQ0NzcyIDcgMyA2LjU1MjI4IDMgNlY0WlwiIGZpbGw9XCIjMTExODI3XCIvPlxyXG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMyAxMEMzIDkuNDQ3NzEgMy40NDc3MiA5IDQgOUgxMEMxMC41NTIzIDkgMTEgOS40NDc3MSAxMSAxMFYxNkMxMSAxNi41NTIzIDEwLjU1MjMgMTcgMTAgMTdINEMzLjQ0NzcyIDE3IDMgMTYuNTUyMyAzIDE2VjEwWlwiIGZpbGw9XCIjMTExODI3XCIvPlxyXG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTQgOUMxMy40NDc3IDkgMTMgOS40NDc3MSAxMyAxMFYxNkMxMyAxNi41NTIzIDEzLjQ0NzcgMTcgMTQgMTdIMTZDMTYuNTUyMyAxNyAxNyAxNi41NTIzIDE3IDE2VjEwQzE3IDkuNDQ3NzEgMTYuNTUyMyA5IDE2IDlIMTRaXCIgZmlsbD1cIiMxMTE4MjdcIi8+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPkRhc2hib2FyZDwvc3Bhbj5cclxuICAgICAgICA8L3JvdXRlci1saW5rPlxyXG4gICAgICA8L2EtbWVudS1pdGVtPlxyXG5cclxuICAgICAgPCEtLSBVc3VhcmlvcyAtLT5cclxuICAgICAgPGEtbWVudS1pdGVtIGtleT1cIjJcIj5cclxuICAgICAgICA8cm91dGVyLWxpbmsgdG89XCIvdXN1YXJpb3NcIiBjbGFzcz1cInBvc2l0aW9uLXNpZGViYXItb3B0aW9uc1wiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uXCI+8J+RpTwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5Vc3Vhcmlvczwvc3Bhbj5cclxuICAgICAgICA8L3JvdXRlci1saW5rPlxyXG4gICAgICA8L2EtbWVudS1pdGVtPlxyXG4gICAgICA8YS1tZW51LWl0ZW0ga2V5PVwiM1wiPlxyXG4gICAgICAgIDxyb3V0ZXItbGluayB0bz1cIi9wZXJzb25hc1wiIGNsYXNzPVwicG9zaXRpb24tc2lkZWJhci1vcHRpb25zXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb25cIj7wn5GkPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPlBlcnNvbmFzPC9zcGFuPlxyXG4gICAgICAgIDwvcm91dGVyLWxpbms+XHJcbiAgICAgIDwvYS1tZW51LWl0ZW0+XHJcbiAgICAgIDxhLW1lbnUtaXRlbSBrZXk9XCI0XCI+XHJcbiAgICAgICAgPHJvdXRlci1saW5rIHRvPVwiL2VtcGxlYWRvc1wiIGNsYXNzPVwicG9zaXRpb24tc2lkZWJhci1vcHRpb25zXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb25cIj7wn5K8PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPkVtcGxlYWRvczwvc3Bhbj5cclxuICAgICAgICA8L3JvdXRlci1saW5rPlxyXG4gICAgICA8L2EtbWVudS1pdGVtPlxyXG4gICAgICA8YS1tZW51LWl0ZW0ga2V5PVwiNS0xXCI+XHJcbiAgICAgICAgPHJvdXRlci1saW5rIHRvPVwiL3Byb3ZlZWRvcmVzXCIgY2xhc3M9XCJwb3NpdGlvbi1zaWRlYmFyLW9wdGlvbnNcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvblwiPvCfj7fvuI88L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+UHJvdmVlZG9yZXM8L3NwYW4+XHJcbiAgICAgICAgPC9yb3V0ZXItbGluaz5cclxuICAgICAgPC9hLW1lbnUtaXRlbT5cclxuXHJcbiAgICA8L2EtbWVudT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibG9nb3V0LWJ1dHRvbi1jb250YWluZXJcIj5cclxuICAgICAgPGEtYnV0dG9uIHR5cGU9XCJkZWZhdWx0XCIgQGNsaWNrPVwibG9nb3V0XCI+Q2VycmFyIFNlc2nDs248L2EtYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9hLWxheW91dC1zaWRlcj5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQgc2V0dXA+XHJcbmltcG9ydCB7IHJlZiwgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xyXG5pbXBvcnQgeyB1c2VSb3V0ZXIgfSBmcm9tICd2dWUtcm91dGVyJztcclxuaW1wb3J0IHsgYXV0aFN0b3JlIH0gZnJvbSAnLi4vLi4vc3RvcmUvYXV0aCc7XHJcblxyXG5jb25zdCBzZWxlY3RlZEtleXMgPSByZWYoWycnXSk7XHJcblxyXG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzKHtcclxuICBzaWRlYmFyQ29sbGFwc2VkOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXHJcbiAgc2lkZWJhckNvbG9yOiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJ3ByaW1hcnknIH0sXHJcbiAgc2lkZWJhclRoZW1lOiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJ2xpZ2h0JyB9LFxyXG59KTtcclxuXHJcbmNvbnN0IHJvdXRlciA9IHVzZVJvdXRlcigpO1xyXG5cclxuY29uc3QgbG9nb3V0ID0gKCkgPT4ge1xyXG4gIGNvbnN0IHN0b3JlID0gYXV0aFN0b3JlKCk7XHJcbiAgc3RvcmUubG9nb3V0KCk7XHJcbiAgcm91dGVyLnB1c2goJy9sb2dpbicpO1xyXG59O1xyXG5cclxuY29uc3Qgc3RvcmUgPSBhdXRoU3RvcmUoKTtcclxuY29uc3Qgc2hvd1Jlc3RyaWN0ZWRNZW51ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gIGNvbnN0IHJvbGVzID0gc3RvcmUudXNlcj8ucm9sZXMgfHwgW107XHJcbiAgcmV0dXJuIHJvbGVzLmluY2x1ZGVzKCdBRE1JTklTVFJBRE9SJykgfHwgcm9sZXMuaW5jbHVkZXMoJ0VOQ0dfQUxNQUNFTicpO1xyXG59KTtcclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGUgc2NvcGVkPlxyXG4vKiBJY29ubyBlIGlubGluZSBsYXlvdXQgKi9cclxuLmljb24ge1xyXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgd2lkdGg6IDIwcHg7XHJcbiAgaGVpZ2h0OiAyMHB4O1xyXG4gIG1hcmdpbi1yaWdodDogMTBweDtcclxufVxyXG5cclxuLnBvc2l0aW9uLXNpZGViYXItb3B0aW9ucyB7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIHdpZHRoOiBhdXRvO1xyXG59XHJcblxyXG4ubGFiZWwge1xyXG4gIGZvbnQtc2l6ZTogMTZweDtcclxuICBmb250LXdlaWdodDogNTAwO1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xyXG4gIHdpZHRoOiBhdXRvO1xyXG59XHJcblxyXG4vKiBCb3JkZSB5IGJvcmRlci1yYWRpdXMgZW4gZWwgU2lkZXIgKi9cclxuLmJvcmRlcmVkLXNpZGVyIHtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjZTVlN2ViOyAgICAgICAgIC8qIGdyaXMgY2xhcm8gKi9cclxuICBib3JkZXItcmFkaXVzOiAxMnB4OyAgICAgICAgICAgICAgICAvKiBlc3F1aW5hcyByZWRvbmRlYWRhcyAqL1xyXG4gIG92ZXJmbG93OiBoaWRkZW47ICAgICAgICAgICAgICAgICAgIC8qIHJlY29ydGEgY29udGVuaWRvcyBwYXJhIHF1ZSBzaWdhbiBlbCByYWRpbyAqL1xyXG4gIG1hcmdpbjogOHB4OyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlc3BpcmFjacOzbiB2aXN1YWwgb3BjaW9uYWwgKi9cclxuICBiYWNrZ3JvdW5kOiAjZmZmZmZmOyAgICAgICAgICAgICAgICAvKiBheXVkYSBhIHF1ZSBlbCBib3JkZSBzZSB2ZWEgKi9cclxufVxyXG5cclxuLyogQWp1c3RlcyBkZSB0YW1hw7FvICovXHJcbi5hbnQtbGF5b3V0LXNpZGVyIHtcclxuICB3aWR0aDogYXV0bztcclxuICBtaW4td2lkdGg6IDI1MHB4O1xyXG59XHJcblxyXG4uYW50LWxheW91dC1zaWRlci1wcmltYXJ5IHtcclxuICB0cmFuc2l0aW9uOiB3aWR0aCAwLjJzIGVhc2UtaW4tb3V0O1xyXG59XHJcblxyXG4vKiAoT3BjaW9uYWwpIHVuIHN1dGlsIGJvcmRlIGEgY2FkYSBpdGVtIGFsIGhvdmVyL2ZvY3VzIHBhcmEgcmVmb3J6YXIgZWwgZXN0aWxvICovXHJcbjpkZWVwKC5hbnQtbWVudS1pdGVtKSB7XHJcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG59XHJcbjpkZWVwKC5hbnQtbWVudS1pdGVtOmhvdmVyKSxcclxuOmRlZXAoLmFudC1tZW51LWl0ZW0tYWN0aXZlKSxcclxuOmRlZXAoLmFudC1tZW51LWl0ZW0tc2VsZWN0ZWQpIHtcclxuICBiYWNrZ3JvdW5kOiByZ2JhKDU4LCA2NSwgMTExLCAwLjA2KTtcclxufVxyXG5cclxuLyogQm90w7NuIGRlIHNlc2nDs24gKi9cclxuLmxvZ291dC1idXR0b24tY29udGFpbmVyIHtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgbWFyZ2luLXRvcDogMjBweDtcclxufVxyXG5cclxuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XHJcbiAgLnBvc2l0aW9uLXNpZGViYXItb3B0aW9ucyB7IGZvbnQtc2l6ZTogMTRweDsgfVxyXG4gIC5hbnQtbGF5b3V0LXNpZGVyIHsgbWluLXdpZHRoOiAyMDBweDsgfVxyXG59XHJcbjwvc3R5bGU+XHJcbiIsIjx0ZW1wbGF0ZT5cclxuICA8ZGl2PlxyXG4gICAgPCEtLSBEYXNoYm9hcmQgTGF5b3V0IC0tPlxyXG4gICAgPGEtbGF5b3V0XHJcbiAgICAgIGNsYXNzPVwibGF5b3V0LWRhc2hib2FyZFwiXHJcbiAgICAgIGlkPVwibGF5b3V0LWRhc2hib2FyZFwiXHJcbiAgICAgIDpjbGFzcz1cIltuYXZiYXJGaXhlZCA/ICduYXZiYXItZml4ZWQnIDogJycsICFzaWRlYmFyQ29sbGFwc2VkID8gJ2hhcy1zaWRlYmFyJyA6ICcnLCBsYXlvdXRDbGFzc11cIlxyXG4gICAgICBzdHlsZT1cIm92ZXJmbG93OiBoaWRkZW47XCJcclxuICAgID5cclxuICAgICAgPCEtLSBNYWluIFNpZGViYXIgLS0+XHJcbiAgICAgIDxEYXNoYm9hcmRTaWRlYmFyXHJcbiAgICAgICAgOnNpZGViYXJDb2xsYXBzZWQ9XCJzaWRlYmFyQ29sbGFwc2VkXCJcclxuICAgICAgICA6c2lkZWJhckNvbG9yPVwic2lkZWJhckNvbG9yXCJcclxuICAgICAgICA6c2lkZWJhclRoZW1lPVwic2lkZWJhclRoZW1lXCJcclxuICAgICAgICBAdG9nZ2xlU2lkZWJhcj1cInRvZ2dsZVNpZGViYXJcIlxyXG4gICAgICAvPlxyXG4gICAgICA8IS0tIC8gTWFpbiBTaWRlYmFyIC0tPlxyXG5cclxuICAgICAgPCEtLSBMYXlvdXQgQ29udGVudCAtLT5cclxuICAgICAgPGEtbGF5b3V0PlxyXG4gICAgICAgIDwhLS0gTGF5b3V0IEhlYWRlciAtLT5cclxuICAgICAgICA8YS1sYXlvdXQtaGVhZGVyIGNsYXNzPVwiaGVhZGVyXCIgc3R5bGU9XCJib3JkZXItcmFkaXVzOiAxMnB4O1wiPlxyXG4gICAgICAgICAgPGEtYnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJtZW51LWJ1dHRvblwiXHJcbiAgICAgICAgICAgIEBjbGljaz1cInRvZ2dsZVNpZGViYXJcIlxyXG4gICAgICAgICAgICB2LXNob3c9XCJpc01vYmlsZVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtZW51LW91dGxpbmVkIC8+XHJcbiAgICAgICAgICA8L2EtYnV0dG9uPlxyXG4gICAgICAgICAgPGEtYnJlYWRjcnVtYiBjbGFzcz1cImJyZWFkY3J1bWJcIj5cclxuICAgICAgICAgICAgPGEtYnJlYWRjcnVtYi1pdGVtPkluaWNpbzwvYS1icmVhZGNydW1iLWl0ZW0+XHJcbiAgICAgICAgICAgIDxhLWJyZWFkY3J1bWItaXRlbT57eyBjdXJyZW50Um91dGVOYW1lIH19PC9hLWJyZWFkY3J1bWItaXRlbT5cclxuICAgICAgICAgIDwvYS1icmVhZGNydW1iPlxyXG4gICAgICAgICAgPCEtLSBVc3VhcmlvIGxvZ3VlYWRvIC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItaW5mb1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVzZXItbmFtZVwiPnt7IGxvZ2dlZEluVXNlck5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2EtbGF5b3V0LWhlYWRlcj5cclxuICAgICAgICA8IS0tIC8gTGF5b3V0IEhlYWRlciAtLT5cclxuXHJcbiAgICAgICAgPCEtLSBQYWdlIENvbnRlbnQgLS0+XHJcbiAgICAgICAgPGEtbGF5b3V0LWNvbnRlbnQgY2xhc3M9XCJjb250ZW50LWJveFwiIHN0eWxlPVwiYm9yZGVyLXJhZGl1czogMTJweDtcIj5cclxuICAgICAgICAgIDxyb3V0ZXItdmlldyAvPlxyXG4gICAgICAgIDwvYS1sYXlvdXQtY29udGVudD5cclxuICAgICAgICA8IS0tIC8gUGFnZSBDb250ZW50IC0tPlxyXG5cclxuICAgICAgICA8IS0tIFNpZGViYXIgT3ZlcmxheSAoU29sbyBlbiBtw7N2aWwpIC0tPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic2lkZWJhci1vdmVybGF5XCJcclxuICAgICAgICAgIHYtaWY9XCIhc2lkZWJhckNvbGxhcHNlZCAmJiBpc01vYmlsZVwiXHJcbiAgICAgICAgICBAY2xpY2s9XCJjbG9zZVNpZGViYXJcIlxyXG4gICAgICAgID48L2Rpdj5cclxuICAgICAgICA8IS0tIC8gU2lkZWJhciBPdmVybGF5IC0tPlxyXG4gICAgICA8L2EtbGF5b3V0PlxyXG4gICAgICA8IS0tIC8gTGF5b3V0IENvbnRlbnQgLS0+XHJcbiAgICA8L2EtbGF5b3V0PlxyXG4gICAgPCEtLSAvIERhc2hib2FyZCBMYXlvdXQgLS0+XHJcbiAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0IHNldHVwPlxyXG5pbXBvcnQgeyByZWYsIGNvbXB1dGVkLCBvbk1vdW50ZWQgfSBmcm9tIFwidnVlXCI7XHJcbmltcG9ydCB7IHVzZVJvdXRlIH0gZnJvbSBcInZ1ZS1yb3V0ZXJcIjtcclxuaW1wb3J0IERhc2hib2FyZFNpZGViYXIgZnJvbSBcIi4uL2NvbXBvbmVudHMvc2lkZWJhcnMvRGFzaGJvYXJkU2lkZWJhci52dWVcIjtcclxuLy9pbXBvcnQgeyBNZW51T3V0bGluZWQgfSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnMtdnVlXCI7XHJcblxyXG4vLyBFc3RhZG8gUmVhY3Rpdm9cclxuY29uc3Qgc2lkZWJhckNvbGxhcHNlZCA9IHJlZihmYWxzZSk7XHJcbmNvbnN0IHNpZGViYXJDb2xvciA9IHJlZihcInByaW1hcnlcIik7XHJcbmNvbnN0IHNpZGViYXJUaGVtZSA9IHJlZihcImxpZ2h0XCIpO1xyXG5jb25zdCBuYXZiYXJGaXhlZCA9IHJlZihmYWxzZSk7XHJcbmNvbnN0IGlzTW9iaWxlID0gcmVmKGZhbHNlKTtcclxuY29uc3QgbG9nZ2VkSW5Vc2VyTmFtZSA9IHJlZihcIkpvaG4gRG9lXCIpOyAvLyBSZWVtcGxhemEgY29uIGVsIG5vbWJyZSBkZWwgdXN1YXJpbyBsb2d1ZWFkb1xyXG5cclxuY29uc3Qgcm91dGUgPSB1c2VSb3V0ZSgpO1xyXG5jb25zdCBsYXlvdXRDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHJvdXRlLm1ldGEubGF5b3V0Q2xhc3MgfHwgXCJcIik7XHJcbmNvbnN0IGN1cnJlbnRSb3V0ZU5hbWUgPSBjb21wdXRlZCgoKSA9PiByb3V0ZS5uYW1lIHx8IFwiRGFzaGJvYXJkXCIpO1xyXG5cclxuLy8gTcOpdG9kb3NcclxuY29uc3QgdG9nZ2xlU2lkZWJhciA9ICgpID0+IHtcclxuICBzaWRlYmFyQ29sbGFwc2VkLnZhbHVlID0gIXNpZGViYXJDb2xsYXBzZWQudmFsdWU7XHJcbn07XHJcblxyXG5jb25zdCBjbG9zZVNpZGViYXIgPSAoKSA9PiB7XHJcbiAgc2lkZWJhckNvbGxhcHNlZC52YWx1ZSA9IHRydWU7XHJcbn07XHJcblxyXG4vLyBEZXRlY3RhciBzaSBlcyBtw7N2aWxcclxuY29uc3QgY2hlY2tNb2JpbGUgPSAoKSA9PiB7XHJcbiAgaXNNb2JpbGUudmFsdWUgPSB3aW5kb3cuaW5uZXJXaWR0aCA8PSA3Njg7XHJcbn07XHJcblxyXG4vLyBNYW5lam8gZGVsIGNhbWJpbyBkZSB0YW1hw7FvXHJcbm9uTW91bnRlZCgoKSA9PiB7XHJcbiAgY2hlY2tNb2JpbGUoKTtcclxuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCBjaGVja01vYmlsZSk7XHJcbn0pO1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQ+XHJcbi8qIEhlYWRlciAqL1xyXG4uaGVhZGVyIHtcclxuICBiYWNrZ3JvdW5kOiAjZmZmZmZmICFpbXBvcnRhbnQ7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIHBhZGRpbmc6IDAgMTZweDtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsgLyogU3V0aWwgc29tYnJhIHBhcmEgZWwgaGVhZGVyICovXHJcbn1cclxuXHJcbi8qIEJvdMOzbiBkZWwgbWVuw7ogZW4gbcOzdmlsICovXHJcbi5tZW51LWJ1dHRvbiB7XHJcbiAgZm9udC1zaXplOiAyNHB4O1xyXG4gIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuXHJcbi8qIEJyZWFkY3J1bWIgKi9cclxuLmJyZWFkY3J1bWIge1xyXG4gIG1hcmdpbjogMTZweDtcclxufVxyXG5cclxuLyogQ29udGVuaWRvICovXHJcbi5jb250ZW50LWJveCB7XHJcbiAgcGFkZGluZzogMjRweDtcclxuICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gIG1pbi1oZWlnaHQ6IDM2MHB4O1xyXG4gIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMSk7IC8qIFNvbWJyYSBzdWF2ZSBhbHJlZGVkb3IgKi9cclxufVxyXG5cclxuLyogSW5mb3JtYWNpw7NuIGRlbCB1c3VhcmlvIGVuIGVsIGhlYWRlciAqL1xyXG4udXNlci1pbmZvIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZm9udC1zaXplOiAxNnB4O1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbn1cclxuXHJcbi51c2VyLW5hbWUge1xyXG4gIG1hcmdpbi1sZWZ0OiAxNnB4O1xyXG59XHJcblxyXG4vKiBPdmVybGF5IHNvbG8gZW4gbcOzdmlsICovXHJcbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xyXG4gIC5tZW51LWJ1dHRvbiB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICB9XHJcbiAgLnNpZGViYXItb3ZlcmxheSB7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNSk7XHJcbiAgICB6LWluZGV4OiA5OTg7XHJcbiAgfVxyXG59XHJcbjwvc3R5bGU+XHJcbiIsbnVsbCwiQGxheWVyIHRoZW1lLCBiYXNlLCBjb21wb25lbnRzLCB1dGlsaXRpZXM7XG5cbkBsYXllciB0aGVtZSB7XG4gIEB0aGVtZSBkZWZhdWx0IHtcbiAgICAtLWZvbnQtc2FuczpcbiAgICAgIHVpLXNhbnMtc2VyaWYsIHN5c3RlbS11aSwgc2Fucy1zZXJpZiwgXCJBcHBsZSBDb2xvciBFbW9qaVwiLFxuICAgICAgXCJTZWdvZSBVSSBFbW9qaVwiLCBcIlNlZ29lIFVJIFN5bWJvbFwiLCBcIk5vdG8gQ29sb3IgRW1vamlcIjtcbiAgICAtLWZvbnQtc2VyaWY6IHVpLXNlcmlmLCBHZW9yZ2lhLCBDYW1icmlhLCBcIlRpbWVzIE5ldyBSb21hblwiLCBUaW1lcywgc2VyaWY7XG4gICAgLS1mb250LW1vbm86XG4gICAgICB1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgXCJMaWJlcmF0aW9uIE1vbm9cIixcbiAgICAgIFwiQ291cmllciBOZXdcIiwgbW9ub3NwYWNlO1xuXG4gICAgLS1jb2xvci1yZWQtNTA6IG9rbGNoKDk3LjElIDAuMDEzIDE3LjM4KTtcbiAgICAtLWNvbG9yLXJlZC0xMDA6IG9rbGNoKDkzLjYlIDAuMDMyIDE3LjcxNyk7XG4gICAgLS1jb2xvci1yZWQtMjAwOiBva2xjaCg4OC41JSAwLjA2MiAxOC4zMzQpO1xuICAgIC0tY29sb3ItcmVkLTMwMDogb2tsY2goODAuOCUgMC4xMTQgMTkuNTcxKTtcbiAgICAtLWNvbG9yLXJlZC00MDA6IG9rbGNoKDcwLjQlIDAuMTkxIDIyLjIxNik7XG4gICAgLS1jb2xvci1yZWQtNTAwOiBva2xjaCg2My43JSAwLjIzNyAyNS4zMzEpO1xuICAgIC0tY29sb3ItcmVkLTYwMDogb2tsY2goNTcuNyUgMC4yNDUgMjcuMzI1KTtcbiAgICAtLWNvbG9yLXJlZC03MDA6IG9rbGNoKDUwLjUlIDAuMjEzIDI3LjUxOCk7XG4gICAgLS1jb2xvci1yZWQtODAwOiBva2xjaCg0NC40JSAwLjE3NyAyNi44OTkpO1xuICAgIC0tY29sb3ItcmVkLTkwMDogb2tsY2goMzkuNiUgMC4xNDEgMjUuNzIzKTtcbiAgICAtLWNvbG9yLXJlZC05NTA6IG9rbGNoKDI1LjglIDAuMDkyIDI2LjA0Mik7XG5cbiAgICAtLWNvbG9yLW9yYW5nZS01MDogb2tsY2goOTglIDAuMDE2IDczLjY4NCk7XG4gICAgLS1jb2xvci1vcmFuZ2UtMTAwOiBva2xjaCg5NS40JSAwLjAzOCA3NS4xNjQpO1xuICAgIC0tY29sb3Itb3JhbmdlLTIwMDogb2tsY2goOTAuMSUgMC4wNzYgNzAuNjk3KTtcbiAgICAtLWNvbG9yLW9yYW5nZS0zMDA6IG9rbGNoKDgzLjclIDAuMTI4IDY2LjI5KTtcbiAgICAtLWNvbG9yLW9yYW5nZS00MDA6IG9rbGNoKDc1JSAwLjE4MyA1NS45MzQpO1xuICAgIC0tY29sb3Itb3JhbmdlLTUwMDogb2tsY2goNzAuNSUgMC4yMTMgNDcuNjA0KTtcbiAgICAtLWNvbG9yLW9yYW5nZS02MDA6IG9rbGNoKDY0LjYlIDAuMjIyIDQxLjExNik7XG4gICAgLS1jb2xvci1vcmFuZ2UtNzAwOiBva2xjaCg1NS4zJSAwLjE5NSAzOC40MDIpO1xuICAgIC0tY29sb3Itb3JhbmdlLTgwMDogb2tsY2goNDclIDAuMTU3IDM3LjMwNCk7XG4gICAgLS1jb2xvci1vcmFuZ2UtOTAwOiBva2xjaCg0MC44JSAwLjEyMyAzOC4xNzIpO1xuICAgIC0tY29sb3Itb3JhbmdlLTk1MDogb2tsY2goMjYuNiUgMC4wNzkgMzYuMjU5KTtcblxuICAgIC0tY29sb3ItYW1iZXItNTA6IG9rbGNoKDk4LjclIDAuMDIyIDk1LjI3Nyk7XG4gICAgLS1jb2xvci1hbWJlci0xMDA6IG9rbGNoKDk2LjIlIDAuMDU5IDk1LjYxNyk7XG4gICAgLS1jb2xvci1hbWJlci0yMDA6IG9rbGNoKDkyLjQlIDAuMTIgOTUuNzQ2KTtcbiAgICAtLWNvbG9yLWFtYmVyLTMwMDogb2tsY2goODcuOSUgMC4xNjkgOTEuNjA1KTtcbiAgICAtLWNvbG9yLWFtYmVyLTQwMDogb2tsY2goODIuOCUgMC4xODkgODQuNDI5KTtcbiAgICAtLWNvbG9yLWFtYmVyLTUwMDogb2tsY2goNzYuOSUgMC4xODggNzAuMDgpO1xuICAgIC0tY29sb3ItYW1iZXItNjAwOiBva2xjaCg2Ni42JSAwLjE3OSA1OC4zMTgpO1xuICAgIC0tY29sb3ItYW1iZXItNzAwOiBva2xjaCg1NS41JSAwLjE2MyA0OC45OTgpO1xuICAgIC0tY29sb3ItYW1iZXItODAwOiBva2xjaCg0Ny4zJSAwLjEzNyA0Ni4yMDEpO1xuICAgIC0tY29sb3ItYW1iZXItOTAwOiBva2xjaCg0MS40JSAwLjExMiA0NS45MDQpO1xuICAgIC0tY29sb3ItYW1iZXItOTUwOiBva2xjaCgyNy45JSAwLjA3NyA0NS42MzUpO1xuXG4gICAgLS1jb2xvci15ZWxsb3ctNTA6IG9rbGNoKDk4LjclIDAuMDI2IDEwMi4yMTIpO1xuICAgIC0tY29sb3IteWVsbG93LTEwMDogb2tsY2goOTcuMyUgMC4wNzEgMTAzLjE5Myk7XG4gICAgLS1jb2xvci15ZWxsb3ctMjAwOiBva2xjaCg5NC41JSAwLjEyOSAxMDEuNTQpO1xuICAgIC0tY29sb3IteWVsbG93LTMwMDogb2tsY2goOTAuNSUgMC4xODIgOTguMTExKTtcbiAgICAtLWNvbG9yLXllbGxvdy00MDA6IG9rbGNoKDg1LjIlIDAuMTk5IDkxLjkzNik7XG4gICAgLS1jb2xvci15ZWxsb3ctNTAwOiBva2xjaCg3OS41JSAwLjE4NCA4Ni4wNDcpO1xuICAgIC0tY29sb3IteWVsbG93LTYwMDogb2tsY2goNjguMSUgMC4xNjIgNzUuODM0KTtcbiAgICAtLWNvbG9yLXllbGxvdy03MDA6IG9rbGNoKDU1LjQlIDAuMTM1IDY2LjQ0Mik7XG4gICAgLS1jb2xvci15ZWxsb3ctODAwOiBva2xjaCg0Ny42JSAwLjExNCA2MS45MDcpO1xuICAgIC0tY29sb3IteWVsbG93LTkwMDogb2tsY2goNDIuMSUgMC4wOTUgNTcuNzA4KTtcbiAgICAtLWNvbG9yLXllbGxvdy05NTA6IG9rbGNoKDI4LjYlIDAuMDY2IDUzLjgxMyk7XG5cbiAgICAtLWNvbG9yLWxpbWUtNTA6IG9rbGNoKDk4LjYlIDAuMDMxIDEyMC43NTcpO1xuICAgIC0tY29sb3ItbGltZS0xMDA6IG9rbGNoKDk2LjclIDAuMDY3IDEyMi4zMjgpO1xuICAgIC0tY29sb3ItbGltZS0yMDA6IG9rbGNoKDkzLjglIDAuMTI3IDEyNC4zMjEpO1xuICAgIC0tY29sb3ItbGltZS0zMDA6IG9rbGNoKDg5LjclIDAuMTk2IDEyNi42NjUpO1xuICAgIC0tY29sb3ItbGltZS00MDA6IG9rbGNoKDg0LjElIDAuMjM4IDEyOC44NSk7XG4gICAgLS1jb2xvci1saW1lLTUwMDogb2tsY2goNzYuOCUgMC4yMzMgMTMwLjg1KTtcbiAgICAtLWNvbG9yLWxpbWUtNjAwOiBva2xjaCg2NC44JSAwLjIgMTMxLjY4NCk7XG4gICAgLS1jb2xvci1saW1lLTcwMDogb2tsY2goNTMuMiUgMC4xNTcgMTMxLjU4OSk7XG4gICAgLS1jb2xvci1saW1lLTgwMDogb2tsY2goNDUuMyUgMC4xMjQgMTMwLjkzMyk7XG4gICAgLS1jb2xvci1saW1lLTkwMDogb2tsY2goNDAuNSUgMC4xMDEgMTMxLjA2Myk7XG4gICAgLS1jb2xvci1saW1lLTk1MDogb2tsY2goMjcuNCUgMC4wNzIgMTMyLjEwOSk7XG5cbiAgICAtLWNvbG9yLWdyZWVuLTUwOiBva2xjaCg5OC4yJSAwLjAxOCAxNTUuODI2KTtcbiAgICAtLWNvbG9yLWdyZWVuLTEwMDogb2tsY2goOTYuMiUgMC4wNDQgMTU2Ljc0Myk7XG4gICAgLS1jb2xvci1ncmVlbi0yMDA6IG9rbGNoKDkyLjUlIDAuMDg0IDE1NS45OTUpO1xuICAgIC0tY29sb3ItZ3JlZW4tMzAwOiBva2xjaCg4Ny4xJSAwLjE1IDE1NC40NDkpO1xuICAgIC0tY29sb3ItZ3JlZW4tNDAwOiBva2xjaCg3OS4yJSAwLjIwOSAxNTEuNzExKTtcbiAgICAtLWNvbG9yLWdyZWVuLTUwMDogb2tsY2goNzIuMyUgMC4yMTkgMTQ5LjU3OSk7XG4gICAgLS1jb2xvci1ncmVlbi02MDA6IG9rbGNoKDYyLjclIDAuMTk0IDE0OS4yMTQpO1xuICAgIC0tY29sb3ItZ3JlZW4tNzAwOiBva2xjaCg1Mi43JSAwLjE1NCAxNTAuMDY5KTtcbiAgICAtLWNvbG9yLWdyZWVuLTgwMDogb2tsY2goNDQuOCUgMC4xMTkgMTUxLjMyOCk7XG4gICAgLS1jb2xvci1ncmVlbi05MDA6IG9rbGNoKDM5LjMlIDAuMDk1IDE1Mi41MzUpO1xuICAgIC0tY29sb3ItZ3JlZW4tOTUwOiBva2xjaCgyNi42JSAwLjA2NSAxNTIuOTM0KTtcblxuICAgIC0tY29sb3ItZW1lcmFsZC01MDogb2tsY2goOTcuOSUgMC4wMjEgMTY2LjExMyk7XG4gICAgLS1jb2xvci1lbWVyYWxkLTEwMDogb2tsY2goOTUlIDAuMDUyIDE2My4wNTEpO1xuICAgIC0tY29sb3ItZW1lcmFsZC0yMDA6IG9rbGNoKDkwLjUlIDAuMDkzIDE2NC4xNSk7XG4gICAgLS1jb2xvci1lbWVyYWxkLTMwMDogb2tsY2goODQuNSUgMC4xNDMgMTY0Ljk3OCk7XG4gICAgLS1jb2xvci1lbWVyYWxkLTQwMDogb2tsY2goNzYuNSUgMC4xNzcgMTYzLjIyMyk7XG4gICAgLS1jb2xvci1lbWVyYWxkLTUwMDogb2tsY2goNjkuNiUgMC4xNyAxNjIuNDgpO1xuICAgIC0tY29sb3ItZW1lcmFsZC02MDA6IG9rbGNoKDU5LjYlIDAuMTQ1IDE2My4yMjUpO1xuICAgIC0tY29sb3ItZW1lcmFsZC03MDA6IG9rbGNoKDUwLjglIDAuMTE4IDE2NS42MTIpO1xuICAgIC0tY29sb3ItZW1lcmFsZC04MDA6IG9rbGNoKDQzLjIlIDAuMDk1IDE2Ni45MTMpO1xuICAgIC0tY29sb3ItZW1lcmFsZC05MDA6IG9rbGNoKDM3LjglIDAuMDc3IDE2OC45NCk7XG4gICAgLS1jb2xvci1lbWVyYWxkLTk1MDogb2tsY2goMjYuMiUgMC4wNTEgMTcyLjU1Mik7XG5cbiAgICAtLWNvbG9yLXRlYWwtNTA6IG9rbGNoKDk4LjQlIDAuMDE0IDE4MC43Mik7XG4gICAgLS1jb2xvci10ZWFsLTEwMDogb2tsY2goOTUuMyUgMC4wNTEgMTgwLjgwMSk7XG4gICAgLS1jb2xvci10ZWFsLTIwMDogb2tsY2goOTElIDAuMDk2IDE4MC40MjYpO1xuICAgIC0tY29sb3ItdGVhbC0zMDA6IG9rbGNoKDg1LjUlIDAuMTM4IDE4MS4wNzEpO1xuICAgIC0tY29sb3ItdGVhbC00MDA6IG9rbGNoKDc3LjclIDAuMTUyIDE4MS45MTIpO1xuICAgIC0tY29sb3ItdGVhbC01MDA6IG9rbGNoKDcwLjQlIDAuMTQgMTgyLjUwMyk7XG4gICAgLS1jb2xvci10ZWFsLTYwMDogb2tsY2goNjAlIDAuMTE4IDE4NC43MDQpO1xuICAgIC0tY29sb3ItdGVhbC03MDA6IG9rbGNoKDUxLjElIDAuMDk2IDE4Ni4zOTEpO1xuICAgIC0tY29sb3ItdGVhbC04MDA6IG9rbGNoKDQzLjclIDAuMDc4IDE4OC4yMTYpO1xuICAgIC0tY29sb3ItdGVhbC05MDA6IG9rbGNoKDM4LjYlIDAuMDYzIDE4OC40MTYpO1xuICAgIC0tY29sb3ItdGVhbC05NTA6IG9rbGNoKDI3LjclIDAuMDQ2IDE5Mi41MjQpO1xuXG4gICAgLS1jb2xvci1jeWFuLTUwOiBva2xjaCg5OC40JSAwLjAxOSAyMDAuODczKTtcbiAgICAtLWNvbG9yLWN5YW4tMTAwOiBva2xjaCg5NS42JSAwLjA0NSAyMDMuMzg4KTtcbiAgICAtLWNvbG9yLWN5YW4tMjAwOiBva2xjaCg5MS43JSAwLjA4IDIwNS4wNDEpO1xuICAgIC0tY29sb3ItY3lhbi0zMDA6IG9rbGNoKDg2LjUlIDAuMTI3IDIwNy4wNzgpO1xuICAgIC0tY29sb3ItY3lhbi00MDA6IG9rbGNoKDc4LjklIDAuMTU0IDIxMS41Myk7XG4gICAgLS1jb2xvci1jeWFuLTUwMDogb2tsY2goNzEuNSUgMC4xNDMgMjE1LjIyMSk7XG4gICAgLS1jb2xvci1jeWFuLTYwMDogb2tsY2goNjAuOSUgMC4xMjYgMjIxLjcyMyk7XG4gICAgLS1jb2xvci1jeWFuLTcwMDogb2tsY2goNTIlIDAuMTA1IDIyMy4xMjgpO1xuICAgIC0tY29sb3ItY3lhbi04MDA6IG9rbGNoKDQ1JSAwLjA4NSAyMjQuMjgzKTtcbiAgICAtLWNvbG9yLWN5YW4tOTAwOiBva2xjaCgzOS44JSAwLjA3IDIyNy4zOTIpO1xuICAgIC0tY29sb3ItY3lhbi05NTA6IG9rbGNoKDMwLjIlIDAuMDU2IDIyOS42OTUpO1xuXG4gICAgLS1jb2xvci1za3ktNTA6IG9rbGNoKDk3LjclIDAuMDEzIDIzNi42Mik7XG4gICAgLS1jb2xvci1za3ktMTAwOiBva2xjaCg5NS4xJSAwLjAyNiAyMzYuODI0KTtcbiAgICAtLWNvbG9yLXNreS0yMDA6IG9rbGNoKDkwLjElIDAuMDU4IDIzMC45MDIpO1xuICAgIC0tY29sb3Itc2t5LTMwMDogb2tsY2goODIuOCUgMC4xMTEgMjMwLjMxOCk7XG4gICAgLS1jb2xvci1za3ktNDAwOiBva2xjaCg3NC42JSAwLjE2IDIzMi42NjEpO1xuICAgIC0tY29sb3Itc2t5LTUwMDogb2tsY2goNjguNSUgMC4xNjkgMjM3LjMyMyk7XG4gICAgLS1jb2xvci1za3ktNjAwOiBva2xjaCg1OC44JSAwLjE1OCAyNDEuOTY2KTtcbiAgICAtLWNvbG9yLXNreS03MDA6IG9rbGNoKDUwJSAwLjEzNCAyNDIuNzQ5KTtcbiAgICAtLWNvbG9yLXNreS04MDA6IG9rbGNoKDQ0LjMlIDAuMTEgMjQwLjc5KTtcbiAgICAtLWNvbG9yLXNreS05MDA6IG9rbGNoKDM5LjElIDAuMDkgMjQwLjg3Nik7XG4gICAgLS1jb2xvci1za3ktOTUwOiBva2xjaCgyOS4zJSAwLjA2NiAyNDMuMTU3KTtcblxuICAgIC0tY29sb3ItYmx1ZS01MDogb2tsY2goOTclIDAuMDE0IDI1NC42MDQpO1xuICAgIC0tY29sb3ItYmx1ZS0xMDA6IG9rbGNoKDkzLjIlIDAuMDMyIDI1NS41ODUpO1xuICAgIC0tY29sb3ItYmx1ZS0yMDA6IG9rbGNoKDg4LjIlIDAuMDU5IDI1NC4xMjgpO1xuICAgIC0tY29sb3ItYmx1ZS0zMDA6IG9rbGNoKDgwLjklIDAuMTA1IDI1MS44MTMpO1xuICAgIC0tY29sb3ItYmx1ZS00MDA6IG9rbGNoKDcwLjclIDAuMTY1IDI1NC42MjQpO1xuICAgIC0tY29sb3ItYmx1ZS01MDA6IG9rbGNoKDYyLjMlIDAuMjE0IDI1OS44MTUpO1xuICAgIC0tY29sb3ItYmx1ZS02MDA6IG9rbGNoKDU0LjYlIDAuMjQ1IDI2Mi44ODEpO1xuICAgIC0tY29sb3ItYmx1ZS03MDA6IG9rbGNoKDQ4LjglIDAuMjQzIDI2NC4zNzYpO1xuICAgIC0tY29sb3ItYmx1ZS04MDA6IG9rbGNoKDQyLjQlIDAuMTk5IDI2NS42MzgpO1xuICAgIC0tY29sb3ItYmx1ZS05MDA6IG9rbGNoKDM3LjklIDAuMTQ2IDI2NS41MjIpO1xuICAgIC0tY29sb3ItYmx1ZS05NTA6IG9rbGNoKDI4LjIlIDAuMDkxIDI2Ny45MzUpO1xuXG4gICAgLS1jb2xvci1pbmRpZ28tNTA6IG9rbGNoKDk2LjIlIDAuMDE4IDI3Mi4zMTQpO1xuICAgIC0tY29sb3ItaW5kaWdvLTEwMDogb2tsY2goOTMlIDAuMDM0IDI3Mi43ODgpO1xuICAgIC0tY29sb3ItaW5kaWdvLTIwMDogb2tsY2goODclIDAuMDY1IDI3NC4wMzkpO1xuICAgIC0tY29sb3ItaW5kaWdvLTMwMDogb2tsY2goNzguNSUgMC4xMTUgMjc0LjcxMyk7XG4gICAgLS1jb2xvci1pbmRpZ28tNDAwOiBva2xjaCg2Ny4zJSAwLjE4MiAyNzYuOTM1KTtcbiAgICAtLWNvbG9yLWluZGlnby01MDA6IG9rbGNoKDU4LjUlIDAuMjMzIDI3Ny4xMTcpO1xuICAgIC0tY29sb3ItaW5kaWdvLTYwMDogb2tsY2goNTEuMSUgMC4yNjIgMjc2Ljk2Nik7XG4gICAgLS1jb2xvci1pbmRpZ28tNzAwOiBva2xjaCg0NS43JSAwLjI0IDI3Ny4wMjMpO1xuICAgIC0tY29sb3ItaW5kaWdvLTgwMDogb2tsY2goMzkuOCUgMC4xOTUgMjc3LjM2Nik7XG4gICAgLS1jb2xvci1pbmRpZ28tOTAwOiBva2xjaCgzNS45JSAwLjE0NCAyNzguNjk3KTtcbiAgICAtLWNvbG9yLWluZGlnby05NTA6IG9rbGNoKDI1LjclIDAuMDkgMjgxLjI4OCk7XG5cbiAgICAtLWNvbG9yLXZpb2xldC01MDogb2tsY2goOTYuOSUgMC4wMTYgMjkzLjc1Nik7XG4gICAgLS1jb2xvci12aW9sZXQtMTAwOiBva2xjaCg5NC4zJSAwLjAyOSAyOTQuNTg4KTtcbiAgICAtLWNvbG9yLXZpb2xldC0yMDA6IG9rbGNoKDg5LjQlIDAuMDU3IDI5My4yODMpO1xuICAgIC0tY29sb3ItdmlvbGV0LTMwMDogb2tsY2goODEuMSUgMC4xMTEgMjkzLjU3MSk7XG4gICAgLS1jb2xvci12aW9sZXQtNDAwOiBva2xjaCg3MC4yJSAwLjE4MyAyOTMuNTQxKTtcbiAgICAtLWNvbG9yLXZpb2xldC01MDA6IG9rbGNoKDYwLjYlIDAuMjUgMjkyLjcxNyk7XG4gICAgLS1jb2xvci12aW9sZXQtNjAwOiBva2xjaCg1NC4xJSAwLjI4MSAyOTMuMDA5KTtcbiAgICAtLWNvbG9yLXZpb2xldC03MDA6IG9rbGNoKDQ5LjElIDAuMjcgMjkyLjU4MSk7XG4gICAgLS1jb2xvci12aW9sZXQtODAwOiBva2xjaCg0My4yJSAwLjIzMiAyOTIuNzU5KTtcbiAgICAtLWNvbG9yLXZpb2xldC05MDA6IG9rbGNoKDM4JSAwLjE4OSAyOTMuNzQ1KTtcbiAgICAtLWNvbG9yLXZpb2xldC05NTA6IG9rbGNoKDI4LjMlIDAuMTQxIDI5MS4wODkpO1xuXG4gICAgLS1jb2xvci1wdXJwbGUtNTA6IG9rbGNoKDk3LjclIDAuMDE0IDMwOC4yOTkpO1xuICAgIC0tY29sb3ItcHVycGxlLTEwMDogb2tsY2goOTQuNiUgMC4wMzMgMzA3LjE3NCk7XG4gICAgLS1jb2xvci1wdXJwbGUtMjAwOiBva2xjaCg5MC4yJSAwLjA2MyAzMDYuNzAzKTtcbiAgICAtLWNvbG9yLXB1cnBsZS0zMDA6IG9rbGNoKDgyLjclIDAuMTE5IDMwNi4zODMpO1xuICAgIC0tY29sb3ItcHVycGxlLTQwMDogb2tsY2goNzEuNCUgMC4yMDMgMzA1LjUwNCk7XG4gICAgLS1jb2xvci1wdXJwbGUtNTAwOiBva2xjaCg2Mi43JSAwLjI2NSAzMDMuOSk7XG4gICAgLS1jb2xvci1wdXJwbGUtNjAwOiBva2xjaCg1NS44JSAwLjI4OCAzMDIuMzIxKTtcbiAgICAtLWNvbG9yLXB1cnBsZS03MDA6IG9rbGNoKDQ5LjYlIDAuMjY1IDMwMS45MjQpO1xuICAgIC0tY29sb3ItcHVycGxlLTgwMDogb2tsY2goNDMuOCUgMC4yMTggMzAzLjcyNCk7XG4gICAgLS1jb2xvci1wdXJwbGUtOTAwOiBva2xjaCgzOC4xJSAwLjE3NiAzMDQuOTg3KTtcbiAgICAtLWNvbG9yLXB1cnBsZS05NTA6IG9rbGNoKDI5LjElIDAuMTQ5IDMwMi43MTcpO1xuXG4gICAgLS1jb2xvci1mdWNoc2lhLTUwOiBva2xjaCg5Ny43JSAwLjAxNyAzMjAuMDU4KTtcbiAgICAtLWNvbG9yLWZ1Y2hzaWEtMTAwOiBva2xjaCg5NS4yJSAwLjAzNyAzMTguODUyKTtcbiAgICAtLWNvbG9yLWZ1Y2hzaWEtMjAwOiBva2xjaCg5MC4zJSAwLjA3NiAzMTkuNjIpO1xuICAgIC0tY29sb3ItZnVjaHNpYS0zMDA6IG9rbGNoKDgzLjMlIDAuMTQ1IDMyMS40MzQpO1xuICAgIC0tY29sb3ItZnVjaHNpYS00MDA6IG9rbGNoKDc0JSAwLjIzOCAzMjIuMTYpO1xuICAgIC0tY29sb3ItZnVjaHNpYS01MDA6IG9rbGNoKDY2LjclIDAuMjk1IDMyMi4xNSk7XG4gICAgLS1jb2xvci1mdWNoc2lhLTYwMDogb2tsY2goNTkuMSUgMC4yOTMgMzIyLjg5Nik7XG4gICAgLS1jb2xvci1mdWNoc2lhLTcwMDogb2tsY2goNTEuOCUgMC4yNTMgMzIzLjk0OSk7XG4gICAgLS1jb2xvci1mdWNoc2lhLTgwMDogb2tsY2goNDUuMiUgMC4yMTEgMzI0LjU5MSk7XG4gICAgLS1jb2xvci1mdWNoc2lhLTkwMDogb2tsY2goNDAuMSUgMC4xNyAzMjUuNjEyKTtcbiAgICAtLWNvbG9yLWZ1Y2hzaWEtOTUwOiBva2xjaCgyOS4zJSAwLjEzNiAzMjUuNjYxKTtcblxuICAgIC0tY29sb3ItcGluay01MDogb2tsY2goOTcuMSUgMC4wMTQgMzQzLjE5OCk7XG4gICAgLS1jb2xvci1waW5rLTEwMDogb2tsY2goOTQuOCUgMC4wMjggMzQyLjI1OCk7XG4gICAgLS1jb2xvci1waW5rLTIwMDogb2tsY2goODkuOSUgMC4wNjEgMzQzLjIzMSk7XG4gICAgLS1jb2xvci1waW5rLTMwMDogb2tsY2goODIuMyUgMC4xMiAzNDYuMDE4KTtcbiAgICAtLWNvbG9yLXBpbmstNDAwOiBva2xjaCg3MS44JSAwLjIwMiAzNDkuNzYxKTtcbiAgICAtLWNvbG9yLXBpbmstNTAwOiBva2xjaCg2NS42JSAwLjI0MSAzNTQuMzA4KTtcbiAgICAtLWNvbG9yLXBpbmstNjAwOiBva2xjaCg1OS4yJSAwLjI0OSAwLjU4NCk7XG4gICAgLS1jb2xvci1waW5rLTcwMDogb2tsY2goNTIuNSUgMC4yMjMgMy45NTgpO1xuICAgIC0tY29sb3ItcGluay04MDA6IG9rbGNoKDQ1LjklIDAuMTg3IDMuODE1KTtcbiAgICAtLWNvbG9yLXBpbmstOTAwOiBva2xjaCg0MC44JSAwLjE1MyAyLjQzMik7XG4gICAgLS1jb2xvci1waW5rLTk1MDogb2tsY2goMjguNCUgMC4xMDkgMy45MDcpO1xuXG4gICAgLS1jb2xvci1yb3NlLTUwOiBva2xjaCg5Ni45JSAwLjAxNSAxMi40MjIpO1xuICAgIC0tY29sb3Itcm9zZS0xMDA6IG9rbGNoKDk0LjElIDAuMDMgMTIuNTgpO1xuICAgIC0tY29sb3Itcm9zZS0yMDA6IG9rbGNoKDg5LjIlIDAuMDU4IDEwLjAwMSk7XG4gICAgLS1jb2xvci1yb3NlLTMwMDogb2tsY2goODElIDAuMTE3IDExLjYzOCk7XG4gICAgLS1jb2xvci1yb3NlLTQwMDogb2tsY2goNzEuMiUgMC4xOTQgMTMuNDI4KTtcbiAgICAtLWNvbG9yLXJvc2UtNTAwOiBva2xjaCg2NC41JSAwLjI0NiAxNi40MzkpO1xuICAgIC0tY29sb3Itcm9zZS02MDA6IG9rbGNoKDU4LjYlIDAuMjUzIDE3LjU4NSk7XG4gICAgLS1jb2xvci1yb3NlLTcwMDogb2tsY2goNTEuNCUgMC4yMjIgMTYuOTM1KTtcbiAgICAtLWNvbG9yLXJvc2UtODAwOiBva2xjaCg0NS41JSAwLjE4OCAxMy42OTcpO1xuICAgIC0tY29sb3Itcm9zZS05MDA6IG9rbGNoKDQxJSAwLjE1OSAxMC4yNzIpO1xuICAgIC0tY29sb3Itcm9zZS05NTA6IG9rbGNoKDI3LjElIDAuMTA1IDEyLjA5NCk7XG5cbiAgICAtLWNvbG9yLXNsYXRlLTUwOiBva2xjaCg5OC40JSAwLjAwMyAyNDcuODU4KTtcbiAgICAtLWNvbG9yLXNsYXRlLTEwMDogb2tsY2goOTYuOCUgMC4wMDcgMjQ3Ljg5Nik7XG4gICAgLS1jb2xvci1zbGF0ZS0yMDA6IG9rbGNoKDkyLjklIDAuMDEzIDI1NS41MDgpO1xuICAgIC0tY29sb3Itc2xhdGUtMzAwOiBva2xjaCg4Ni45JSAwLjAyMiAyNTIuODk0KTtcbiAgICAtLWNvbG9yLXNsYXRlLTQwMDogb2tsY2goNzAuNCUgMC4wNCAyNTYuNzg4KTtcbiAgICAtLWNvbG9yLXNsYXRlLTUwMDogb2tsY2goNTUuNCUgMC4wNDYgMjU3LjQxNyk7XG4gICAgLS1jb2xvci1zbGF0ZS02MDA6IG9rbGNoKDQ0LjYlIDAuMDQzIDI1Ny4yODEpO1xuICAgIC0tY29sb3Itc2xhdGUtNzAwOiBva2xjaCgzNy4yJSAwLjA0NCAyNTcuMjg3KTtcbiAgICAtLWNvbG9yLXNsYXRlLTgwMDogb2tsY2goMjcuOSUgMC4wNDEgMjYwLjAzMSk7XG4gICAgLS1jb2xvci1zbGF0ZS05MDA6IG9rbGNoKDIwLjglIDAuMDQyIDI2NS43NTUpO1xuICAgIC0tY29sb3Itc2xhdGUtOTUwOiBva2xjaCgxMi45JSAwLjA0MiAyNjQuNjk1KTtcblxuICAgIC0tY29sb3ItZ3JheS01MDogb2tsY2goOTguNSUgMC4wMDIgMjQ3LjgzOSk7XG4gICAgLS1jb2xvci1ncmF5LTEwMDogb2tsY2goOTYuNyUgMC4wMDMgMjY0LjU0Mik7XG4gICAgLS1jb2xvci1ncmF5LTIwMDogb2tsY2goOTIuOCUgMC4wMDYgMjY0LjUzMSk7XG4gICAgLS1jb2xvci1ncmF5LTMwMDogb2tsY2goODcuMiUgMC4wMSAyNTguMzM4KTtcbiAgICAtLWNvbG9yLWdyYXktNDAwOiBva2xjaCg3MC43JSAwLjAyMiAyNjEuMzI1KTtcbiAgICAtLWNvbG9yLWdyYXktNTAwOiBva2xjaCg1NS4xJSAwLjAyNyAyNjQuMzY0KTtcbiAgICAtLWNvbG9yLWdyYXktNjAwOiBva2xjaCg0NC42JSAwLjAzIDI1Ni44MDIpO1xuICAgIC0tY29sb3ItZ3JheS03MDA6IG9rbGNoKDM3LjMlIDAuMDM0IDI1OS43MzMpO1xuICAgIC0tY29sb3ItZ3JheS04MDA6IG9rbGNoKDI3LjglIDAuMDMzIDI1Ni44NDgpO1xuICAgIC0tY29sb3ItZ3JheS05MDA6IG9rbGNoKDIxJSAwLjAzNCAyNjQuNjY1KTtcbiAgICAtLWNvbG9yLWdyYXktOTUwOiBva2xjaCgxMyUgMC4wMjggMjYxLjY5Mik7XG5cbiAgICAtLWNvbG9yLXppbmMtNTA6IG9rbGNoKDk4LjUlIDAgMCk7XG4gICAgLS1jb2xvci16aW5jLTEwMDogb2tsY2goOTYuNyUgMC4wMDEgMjg2LjM3NSk7XG4gICAgLS1jb2xvci16aW5jLTIwMDogb2tsY2goOTIlIDAuMDA0IDI4Ni4zMik7XG4gICAgLS1jb2xvci16aW5jLTMwMDogb2tsY2goODcuMSUgMC4wMDYgMjg2LjI4Nik7XG4gICAgLS1jb2xvci16aW5jLTQwMDogb2tsY2goNzAuNSUgMC4wMTUgMjg2LjA2Nyk7XG4gICAgLS1jb2xvci16aW5jLTUwMDogb2tsY2goNTUuMiUgMC4wMTYgMjg1LjkzOCk7XG4gICAgLS1jb2xvci16aW5jLTYwMDogb2tsY2goNDQuMiUgMC4wMTcgMjg1Ljc4Nik7XG4gICAgLS1jb2xvci16aW5jLTcwMDogb2tsY2goMzclIDAuMDEzIDI4NS44MDUpO1xuICAgIC0tY29sb3ItemluYy04MDA6IG9rbGNoKDI3LjQlIDAuMDA2IDI4Ni4wMzMpO1xuICAgIC0tY29sb3ItemluYy05MDA6IG9rbGNoKDIxJSAwLjAwNiAyODUuODg1KTtcbiAgICAtLWNvbG9yLXppbmMtOTUwOiBva2xjaCgxNC4xJSAwLjAwNSAyODUuODIzKTtcblxuICAgIC0tY29sb3ItbmV1dHJhbC01MDogb2tsY2goOTguNSUgMCAwKTtcbiAgICAtLWNvbG9yLW5ldXRyYWwtMTAwOiBva2xjaCg5NyUgMCAwKTtcbiAgICAtLWNvbG9yLW5ldXRyYWwtMjAwOiBva2xjaCg5Mi4yJSAwIDApO1xuICAgIC0tY29sb3ItbmV1dHJhbC0zMDA6IG9rbGNoKDg3JSAwIDApO1xuICAgIC0tY29sb3ItbmV1dHJhbC00MDA6IG9rbGNoKDcwLjglIDAgMCk7XG4gICAgLS1jb2xvci1uZXV0cmFsLTUwMDogb2tsY2goNTUuNiUgMCAwKTtcbiAgICAtLWNvbG9yLW5ldXRyYWwtNjAwOiBva2xjaCg0My45JSAwIDApO1xuICAgIC0tY29sb3ItbmV1dHJhbC03MDA6IG9rbGNoKDM3LjElIDAgMCk7XG4gICAgLS1jb2xvci1uZXV0cmFsLTgwMDogb2tsY2goMjYuOSUgMCAwKTtcbiAgICAtLWNvbG9yLW5ldXRyYWwtOTAwOiBva2xjaCgyMC41JSAwIDApO1xuICAgIC0tY29sb3ItbmV1dHJhbC05NTA6IG9rbGNoKDE0LjUlIDAgMCk7XG5cbiAgICAtLWNvbG9yLXN0b25lLTUwOiBva2xjaCg5OC41JSAwLjAwMSAxMDYuNDIzKTtcbiAgICAtLWNvbG9yLXN0b25lLTEwMDogb2tsY2goOTclIDAuMDAxIDEwNi40MjQpO1xuICAgIC0tY29sb3Itc3RvbmUtMjAwOiBva2xjaCg5Mi4zJSAwLjAwMyA0OC43MTcpO1xuICAgIC0tY29sb3Itc3RvbmUtMzAwOiBva2xjaCg4Ni45JSAwLjAwNSA1Ni4zNjYpO1xuICAgIC0tY29sb3Itc3RvbmUtNDAwOiBva2xjaCg3MC45JSAwLjAxIDU2LjI1OSk7XG4gICAgLS1jb2xvci1zdG9uZS01MDA6IG9rbGNoKDU1LjMlIDAuMDEzIDU4LjA3MSk7XG4gICAgLS1jb2xvci1zdG9uZS02MDA6IG9rbGNoKDQ0LjQlIDAuMDExIDczLjYzOSk7XG4gICAgLS1jb2xvci1zdG9uZS03MDA6IG9rbGNoKDM3LjQlIDAuMDEgNjcuNTU4KTtcbiAgICAtLWNvbG9yLXN0b25lLTgwMDogb2tsY2goMjYuOCUgMC4wMDcgMzQuMjk4KTtcbiAgICAtLWNvbG9yLXN0b25lLTkwMDogb2tsY2goMjEuNiUgMC4wMDYgNTYuMDQzKTtcbiAgICAtLWNvbG9yLXN0b25lLTk1MDogb2tsY2goMTQuNyUgMC4wMDQgNDkuMjUpO1xuXG4gICAgLS1jb2xvci1ibGFjazogIzAwMDtcbiAgICAtLWNvbG9yLXdoaXRlOiAjZmZmO1xuXG4gICAgLS1zcGFjaW5nOiAwLjI1cmVtO1xuXG4gICAgLS1icmVha3BvaW50LXNtOiA0MHJlbTtcbiAgICAtLWJyZWFrcG9pbnQtbWQ6IDQ4cmVtO1xuICAgIC0tYnJlYWtwb2ludC1sZzogNjRyZW07XG4gICAgLS1icmVha3BvaW50LXhsOiA4MHJlbTtcbiAgICAtLWJyZWFrcG9pbnQtMnhsOiA5NnJlbTtcblxuICAgIC0tY29udGFpbmVyLTN4czogMTZyZW07XG4gICAgLS1jb250YWluZXItMnhzOiAxOHJlbTtcbiAgICAtLWNvbnRhaW5lci14czogMjByZW07XG4gICAgLS1jb250YWluZXItc206IDI0cmVtO1xuICAgIC0tY29udGFpbmVyLW1kOiAyOHJlbTtcbiAgICAtLWNvbnRhaW5lci1sZzogMzJyZW07XG4gICAgLS1jb250YWluZXIteGw6IDM2cmVtO1xuICAgIC0tY29udGFpbmVyLTJ4bDogNDJyZW07XG4gICAgLS1jb250YWluZXItM3hsOiA0OHJlbTtcbiAgICAtLWNvbnRhaW5lci00eGw6IDU2cmVtO1xuICAgIC0tY29udGFpbmVyLTV4bDogNjRyZW07XG4gICAgLS1jb250YWluZXItNnhsOiA3MnJlbTtcbiAgICAtLWNvbnRhaW5lci03eGw6IDgwcmVtO1xuXG4gICAgLS10ZXh0LXhzOiAwLjc1cmVtO1xuICAgIC0tdGV4dC14cy0tbGluZS1oZWlnaHQ6IGNhbGMoMSAvIDAuNzUpO1xuICAgIC0tdGV4dC1zbTogMC44NzVyZW07XG4gICAgLS10ZXh0LXNtLS1saW5lLWhlaWdodDogY2FsYygxLjI1IC8gMC44NzUpO1xuICAgIC0tdGV4dC1iYXNlOiAxcmVtO1xuICAgIC0tdGV4dC1iYXNlLS1saW5lLWhlaWdodDogY2FsYygxLjUgLyAxKTtcbiAgICAtLXRleHQtbGc6IDEuMTI1cmVtO1xuICAgIC0tdGV4dC1sZy0tbGluZS1oZWlnaHQ6IGNhbGMoMS43NSAvIDEuMTI1KTtcbiAgICAtLXRleHQteGw6IDEuMjVyZW07XG4gICAgLS10ZXh0LXhsLS1saW5lLWhlaWdodDogY2FsYygxLjc1IC8gMS4yNSk7XG4gICAgLS10ZXh0LTJ4bDogMS41cmVtO1xuICAgIC0tdGV4dC0yeGwtLWxpbmUtaGVpZ2h0OiBjYWxjKDIgLyAxLjUpO1xuICAgIC0tdGV4dC0zeGw6IDEuODc1cmVtO1xuICAgIC0tdGV4dC0zeGwtLWxpbmUtaGVpZ2h0OiBjYWxjKDIuMjUgLyAxLjg3NSk7XG4gICAgLS10ZXh0LTR4bDogMi4yNXJlbTtcbiAgICAtLXRleHQtNHhsLS1saW5lLWhlaWdodDogY2FsYygyLjUgLyAyLjI1KTtcbiAgICAtLXRleHQtNXhsOiAzcmVtO1xuICAgIC0tdGV4dC01eGwtLWxpbmUtaGVpZ2h0OiAxO1xuICAgIC0tdGV4dC02eGw6IDMuNzVyZW07XG4gICAgLS10ZXh0LTZ4bC0tbGluZS1oZWlnaHQ6IDE7XG4gICAgLS10ZXh0LTd4bDogNC41cmVtO1xuICAgIC0tdGV4dC03eGwtLWxpbmUtaGVpZ2h0OiAxO1xuICAgIC0tdGV4dC04eGw6IDZyZW07XG4gICAgLS10ZXh0LTh4bC0tbGluZS1oZWlnaHQ6IDE7XG4gICAgLS10ZXh0LTl4bDogOHJlbTtcbiAgICAtLXRleHQtOXhsLS1saW5lLWhlaWdodDogMTtcblxuICAgIC0tZm9udC13ZWlnaHQtdGhpbjogMTAwO1xuICAgIC0tZm9udC13ZWlnaHQtZXh0cmFsaWdodDogMjAwO1xuICAgIC0tZm9udC13ZWlnaHQtbGlnaHQ6IDMwMDtcbiAgICAtLWZvbnQtd2VpZ2h0LW5vcm1hbDogNDAwO1xuICAgIC0tZm9udC13ZWlnaHQtbWVkaXVtOiA1MDA7XG4gICAgLS1mb250LXdlaWdodC1zZW1pYm9sZDogNjAwO1xuICAgIC0tZm9udC13ZWlnaHQtYm9sZDogNzAwO1xuICAgIC0tZm9udC13ZWlnaHQtZXh0cmFib2xkOiA4MDA7XG4gICAgLS1mb250LXdlaWdodC1ibGFjazogOTAwO1xuXG4gICAgLS10cmFja2luZy10aWdodGVyOiAtMC4wNWVtO1xuICAgIC0tdHJhY2tpbmctdGlnaHQ6IC0wLjAyNWVtO1xuICAgIC0tdHJhY2tpbmctbm9ybWFsOiAwZW07XG4gICAgLS10cmFja2luZy13aWRlOiAwLjAyNWVtO1xuICAgIC0tdHJhY2tpbmctd2lkZXI6IDAuMDVlbTtcbiAgICAtLXRyYWNraW5nLXdpZGVzdDogMC4xZW07XG5cbiAgICAtLWxlYWRpbmctdGlnaHQ6IDEuMjU7XG4gICAgLS1sZWFkaW5nLXNudWc6IDEuMzc1O1xuICAgIC0tbGVhZGluZy1ub3JtYWw6IDEuNTtcbiAgICAtLWxlYWRpbmctcmVsYXhlZDogMS42MjU7XG4gICAgLS1sZWFkaW5nLWxvb3NlOiAyO1xuXG4gICAgLS1yYWRpdXMteHM6IDAuMTI1cmVtO1xuICAgIC0tcmFkaXVzLXNtOiAwLjI1cmVtO1xuICAgIC0tcmFkaXVzLW1kOiAwLjM3NXJlbTtcbiAgICAtLXJhZGl1cy1sZzogMC41cmVtO1xuICAgIC0tcmFkaXVzLXhsOiAwLjc1cmVtO1xuICAgIC0tcmFkaXVzLTJ4bDogMXJlbTtcbiAgICAtLXJhZGl1cy0zeGw6IDEuNXJlbTtcbiAgICAtLXJhZGl1cy00eGw6IDJyZW07XG5cbiAgICAtLXNoYWRvdy0yeHM6IDAgMXB4IHJnYigwIDAgMCAvIDAuMDUpO1xuICAgIC0tc2hhZG93LXhzOiAwIDFweCAycHggMCByZ2IoMCAwIDAgLyAwLjA1KTtcbiAgICAtLXNoYWRvdy1zbTogMCAxcHggM3B4IDAgcmdiKDAgMCAwIC8gMC4xKSwgMCAxcHggMnB4IC0xcHggcmdiKDAgMCAwIC8gMC4xKTtcbiAgICAtLXNoYWRvdy1tZDpcbiAgICAgIDAgNHB4IDZweCAtMXB4IHJnYigwIDAgMCAvIDAuMSksIDAgMnB4IDRweCAtMnB4IHJnYigwIDAgMCAvIDAuMSk7XG4gICAgLS1zaGFkb3ctbGc6XG4gICAgICAwIDEwcHggMTVweCAtM3B4IHJnYigwIDAgMCAvIDAuMSksIDAgNHB4IDZweCAtNHB4IHJnYigwIDAgMCAvIDAuMSk7XG4gICAgLS1zaGFkb3cteGw6XG4gICAgICAwIDIwcHggMjVweCAtNXB4IHJnYigwIDAgMCAvIDAuMSksIDAgOHB4IDEwcHggLTZweCByZ2IoMCAwIDAgLyAwLjEpO1xuICAgIC0tc2hhZG93LTJ4bDogMCAyNXB4IDUwcHggLTEycHggcmdiKDAgMCAwIC8gMC4yNSk7XG5cbiAgICAtLWluc2V0LXNoYWRvdy0yeHM6IGluc2V0IDAgMXB4IHJnYigwIDAgMCAvIDAuMDUpO1xuICAgIC0taW5zZXQtc2hhZG93LXhzOiBpbnNldCAwIDFweCAxcHggcmdiKDAgMCAwIC8gMC4wNSk7XG4gICAgLS1pbnNldC1zaGFkb3ctc206IGluc2V0IDAgMnB4IDRweCByZ2IoMCAwIDAgLyAwLjA1KTtcblxuICAgIC0tZHJvcC1zaGFkb3cteHM6IDAgMXB4IDFweCByZ2IoMCAwIDAgLyAwLjA1KTtcbiAgICAtLWRyb3Atc2hhZG93LXNtOiAwIDFweCAycHggcmdiKDAgMCAwIC8gMC4xNSk7XG4gICAgLS1kcm9wLXNoYWRvdy1tZDogMCAzcHggM3B4IHJnYigwIDAgMCAvIDAuMTIpO1xuICAgIC0tZHJvcC1zaGFkb3ctbGc6IDAgNHB4IDRweCByZ2IoMCAwIDAgLyAwLjE1KTtcbiAgICAtLWRyb3Atc2hhZG93LXhsOiAwIDlweCA3cHggcmdiKDAgMCAwIC8gMC4xKTtcbiAgICAtLWRyb3Atc2hhZG93LTJ4bDogMCAyNXB4IDI1cHggcmdiKDAgMCAwIC8gMC4xNSk7XG5cbiAgICAtLXRleHQtc2hhZG93LTJ4czogMHB4IDFweCAwcHggcmdiKDAgMCAwIC8gMC4xNSk7XG4gICAgLS10ZXh0LXNoYWRvdy14czogMHB4IDFweCAxcHggcmdiKDAgMCAwIC8gMC4yKTtcbiAgICAtLXRleHQtc2hhZG93LXNtOlxuICAgICAgMHB4IDFweCAwcHggcmdiKDAgMCAwIC8gMC4wNzUpLCAwcHggMXB4IDFweCByZ2IoMCAwIDAgLyAwLjA3NSksXG4gICAgICAwcHggMnB4IDJweCByZ2IoMCAwIDAgLyAwLjA3NSk7XG4gICAgLS10ZXh0LXNoYWRvdy1tZDpcbiAgICAgIDBweCAxcHggMXB4IHJnYigwIDAgMCAvIDAuMSksIDBweCAxcHggMnB4IHJnYigwIDAgMCAvIDAuMSksXG4gICAgICAwcHggMnB4IDRweCByZ2IoMCAwIDAgLyAwLjEpO1xuICAgIC0tdGV4dC1zaGFkb3ctbGc6XG4gICAgICAwcHggMXB4IDJweCByZ2IoMCAwIDAgLyAwLjEpLCAwcHggM3B4IDJweCByZ2IoMCAwIDAgLyAwLjEpLFxuICAgICAgMHB4IDRweCA4cHggcmdiKDAgMCAwIC8gMC4xKTtcblxuICAgIC0tZWFzZS1pbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7XG4gICAgLS1lYXNlLW91dDogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgLS1lYXNlLWluLW91dDogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcblxuICAgIC0tYW5pbWF0ZS1zcGluOiBzcGluIDFzIGxpbmVhciBpbmZpbml0ZTtcbiAgICAtLWFuaW1hdGUtcGluZzogcGluZyAxcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSBpbmZpbml0ZTtcbiAgICAtLWFuaW1hdGUtcHVsc2U6IHB1bHNlIDJzIGN1YmljLWJlemllcigwLjQsIDAsIDAuNiwgMSkgaW5maW5pdGU7XG4gICAgLS1hbmltYXRlLWJvdW5jZTogYm91bmNlIDFzIGluZmluaXRlO1xuXG4gICAgQGtleWZyYW1lcyBzcGluIHtcbiAgICAgIHRvIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIHBpbmcge1xuICAgICAgNzUlLFxuICAgICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMik7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGtleWZyYW1lcyBwdWxzZSB7XG4gICAgICA1MCUge1xuICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGtleWZyYW1lcyBib3VuY2Uge1xuICAgICAgMCUsXG4gICAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yNSUpO1xuICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTtcbiAgICAgIH1cblxuICAgICAgNTAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAtLWJsdXIteHM6IDRweDtcbiAgICAtLWJsdXItc206IDhweDtcbiAgICAtLWJsdXItbWQ6IDEycHg7XG4gICAgLS1ibHVyLWxnOiAxNnB4O1xuICAgIC0tYmx1ci14bDogMjRweDtcbiAgICAtLWJsdXItMnhsOiA0MHB4O1xuICAgIC0tYmx1ci0zeGw6IDY0cHg7XG5cbiAgICAtLXBlcnNwZWN0aXZlLWRyYW1hdGljOiAxMDBweDtcbiAgICAtLXBlcnNwZWN0aXZlLW5lYXI6IDMwMHB4O1xuICAgIC0tcGVyc3BlY3RpdmUtbm9ybWFsOiA1MDBweDtcbiAgICAtLXBlcnNwZWN0aXZlLW1pZHJhbmdlOiA4MDBweDtcbiAgICAtLXBlcnNwZWN0aXZlLWRpc3RhbnQ6IDEyMDBweDtcblxuICAgIC0tYXNwZWN0LXZpZGVvOiAxNiAvIDk7XG5cbiAgICAtLWRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMTUwbXM7XG4gICAgLS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgIC0tZGVmYXVsdC1mb250LWZhbWlseTogLS10aGVtZSgtLWZvbnQtc2FucywgaW5pdGlhbCk7XG4gICAgLS1kZWZhdWx0LWZvbnQtZmVhdHVyZS1zZXR0aW5nczogLS10aGVtZShcbiAgICAgIC0tZm9udC1zYW5zLS1mb250LWZlYXR1cmUtc2V0dGluZ3MsXG4gICAgICBpbml0aWFsXG4gICAgKTtcbiAgICAtLWRlZmF1bHQtZm9udC12YXJpYXRpb24tc2V0dGluZ3M6IC0tdGhlbWUoXG4gICAgICAtLWZvbnQtc2Fucy0tZm9udC12YXJpYXRpb24tc2V0dGluZ3MsXG4gICAgICBpbml0aWFsXG4gICAgKTtcbiAgICAtLWRlZmF1bHQtbW9uby1mb250LWZhbWlseTogLS10aGVtZSgtLWZvbnQtbW9ubywgaW5pdGlhbCk7XG4gICAgLS1kZWZhdWx0LW1vbm8tZm9udC1mZWF0dXJlLXNldHRpbmdzOiAtLXRoZW1lKFxuICAgICAgLS1mb250LW1vbm8tLWZvbnQtZmVhdHVyZS1zZXR0aW5ncyxcbiAgICAgIGluaXRpYWxcbiAgICApO1xuICAgIC0tZGVmYXVsdC1tb25vLWZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiAtLXRoZW1lKFxuICAgICAgLS1mb250LW1vbm8tLWZvbnQtdmFyaWF0aW9uLXNldHRpbmdzLFxuICAgICAgaW5pdGlhbFxuICAgICk7XG4gIH1cblxuICAvKiBEZXByZWNhdGVkICovXG4gIEB0aGVtZSBkZWZhdWx0IGlubGluZSByZWZlcmVuY2Uge1xuICAgIC0tYmx1cjogOHB4O1xuICAgIC0tc2hhZG93OiAwIDFweCAzcHggMCByZ2IoMCAwIDAgLyAwLjEpLCAwIDFweCAycHggLTFweCByZ2IoMCAwIDAgLyAwLjEpO1xuICAgIC0tc2hhZG93LWlubmVyOiBpbnNldCAwIDJweCA0cHggMCByZ2IoMCAwIDAgLyAwLjA1KTtcbiAgICAtLWRyb3Atc2hhZG93OiAwIDFweCAycHggcmdiKDAgMCAwIC8gMC4xKSwgMCAxcHggMXB4IHJnYigwIDAgMCAvIDAuMDYpO1xuICAgIC0tcmFkaXVzOiAwLjI1cmVtO1xuICAgIC0tbWF4LXdpZHRoLXByb3NlOiA2NWNoO1xuICB9XG59XG5cbkBsYXllciBiYXNlIHtcbiAgLypcbiAgMS4gUHJldmVudCBwYWRkaW5nIGFuZCBib3JkZXIgZnJvbSBhZmZlY3RpbmcgZWxlbWVudCB3aWR0aC4gKGh0dHBzOi8vZ2l0aHViLmNvbS9tb3pkZXZzL2Nzc3JlbWVkeS9pc3N1ZXMvNClcbiAgMi4gUmVtb3ZlIGRlZmF1bHQgbWFyZ2lucyBhbmQgcGFkZGluZ1xuICAzLiBSZXNldCBhbGwgYm9yZGVycy5cbiovXG5cbiAgKixcbiAgOjphZnRlcixcbiAgOjpiZWZvcmUsXG4gIDo6YmFja2Ryb3AsXG4gIDo6ZmlsZS1zZWxlY3Rvci1idXR0b24ge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgICBtYXJnaW46IDA7IC8qIDIgKi9cbiAgICBwYWRkaW5nOiAwOyAvKiAyICovXG4gICAgYm9yZGVyOiAwIHNvbGlkOyAvKiAzICovXG4gIH1cblxuICAvKlxuICAxLiBVc2UgYSBjb25zaXN0ZW50IHNlbnNpYmxlIGxpbmUtaGVpZ2h0IGluIGFsbCBicm93c2Vycy5cbiAgMi4gUHJldmVudCBhZGp1c3RtZW50cyBvZiBmb250IHNpemUgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlcyBpbiBpT1MuXG4gIDMuIFVzZSBhIG1vcmUgcmVhZGFibGUgdGFiIHNpemUuXG4gIDQuIFVzZSB0aGUgdXNlcidzIGNvbmZpZ3VyZWQgYHNhbnNgIGZvbnQtZmFtaWx5IGJ5IGRlZmF1bHQuXG4gIDUuIFVzZSB0aGUgdXNlcidzIGNvbmZpZ3VyZWQgYHNhbnNgIGZvbnQtZmVhdHVyZS1zZXR0aW5ncyBieSBkZWZhdWx0LlxuICA2LiBVc2UgdGhlIHVzZXIncyBjb25maWd1cmVkIGBzYW5zYCBmb250LXZhcmlhdGlvbi1zZXR0aW5ncyBieSBkZWZhdWx0LlxuICA3LiBEaXNhYmxlIHRhcCBoaWdobGlnaHRzIG9uIGlPUy5cbiovXG5cbiAgaHRtbCxcbiAgOmhvc3Qge1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7IC8qIDEgKi9cbiAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDIgKi9cbiAgICB0YWItc2l6ZTogNDsgLyogMyAqL1xuICAgIGZvbnQtZmFtaWx5OiAtLXRoZW1lKFxuICAgICAgLS1kZWZhdWx0LWZvbnQtZmFtaWx5LFxuICAgICAgdWktc2Fucy1zZXJpZixcbiAgICAgIHN5c3RlbS11aSxcbiAgICAgIHNhbnMtc2VyaWYsXG4gICAgICBcIkFwcGxlIENvbG9yIEVtb2ppXCIsXG4gICAgICBcIlNlZ29lIFVJIEVtb2ppXCIsXG4gICAgICBcIlNlZ29lIFVJIFN5bWJvbFwiLFxuICAgICAgXCJOb3RvIENvbG9yIEVtb2ppXCJcbiAgICApOyAvKiA0ICovXG4gICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiAtLXRoZW1lKFxuICAgICAgLS1kZWZhdWx0LWZvbnQtZmVhdHVyZS1zZXR0aW5ncyxcbiAgICAgIG5vcm1hbFxuICAgICk7IC8qIDUgKi9cbiAgICBmb250LXZhcmlhdGlvbi1zZXR0aW5nczogLS10aGVtZShcbiAgICAgIC0tZGVmYXVsdC1mb250LXZhcmlhdGlvbi1zZXR0aW5ncyxcbiAgICAgIG5vcm1hbFxuICAgICk7IC8qIDYgKi9cbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50OyAvKiA3ICovXG4gIH1cblxuICAvKlxuICAxLiBBZGQgdGhlIGNvcnJlY3QgaGVpZ2h0IGluIEZpcmVmb3guXG4gIDIuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIG9mIGJvcmRlciBjb2xvciBpbiBGaXJlZm94LiAoaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNjU1KVxuICAzLiBSZXNldCB0aGUgZGVmYXVsdCBib3JkZXIgc3R5bGUgdG8gYSAxcHggc29saWQgYm9yZGVyLlxuKi9cblxuICBociB7XG4gICAgaGVpZ2h0OiAwOyAvKiAxICovXG4gICAgY29sb3I6IGluaGVyaXQ7IC8qIDIgKi9cbiAgICBib3JkZXItdG9wLXdpZHRoOiAxcHg7IC8qIDMgKi9cbiAgfVxuXG4gIC8qXG4gIEFkZCB0aGUgY29ycmVjdCB0ZXh0IGRlY29yYXRpb24gaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpLlxuKi9cblxuICBhYmJyOndoZXJlKFt0aXRsZV0pIHtcbiAgICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7XG4gIH1cblxuICAvKlxuICBSZW1vdmUgdGhlIGRlZmF1bHQgZm9udCBzaXplIGFuZCB3ZWlnaHQgZm9yIGhlYWRpbmdzLlxuKi9cblxuICBoMSxcbiAgaDIsXG4gIGgzLFxuICBoNCxcbiAgaDUsXG4gIGg2IHtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG4gIH1cblxuICAvKlxuICBSZXNldCBsaW5rcyB0byBvcHRpbWl6ZSBmb3Igb3B0LWluIHN0eWxpbmcgaW5zdGVhZCBvZiBvcHQtb3V0LlxuKi9cblxuICBhIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbjogaW5oZXJpdDtcbiAgICB0ZXh0LWRlY29yYXRpb246IGluaGVyaXQ7XG4gIH1cblxuICAvKlxuICBBZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gRWRnZSBhbmQgU2FmYXJpLlxuKi9cblxuICBiLFxuICBzdHJvbmcge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG4gIH1cblxuICAvKlxuICAxLiBVc2UgdGhlIHVzZXIncyBjb25maWd1cmVkIGBtb25vYCBmb250LWZhbWlseSBieSBkZWZhdWx0LlxuICAyLiBVc2UgdGhlIHVzZXIncyBjb25maWd1cmVkIGBtb25vYCBmb250LWZlYXR1cmUtc2V0dGluZ3MgYnkgZGVmYXVsdC5cbiAgMy4gVXNlIHRoZSB1c2VyJ3MgY29uZmlndXJlZCBgbW9ub2AgZm9udC12YXJpYXRpb24tc2V0dGluZ3MgYnkgZGVmYXVsdC5cbiAgNC4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxuKi9cblxuICBjb2RlLFxuICBrYmQsXG4gIHNhbXAsXG4gIHByZSB7XG4gICAgZm9udC1mYW1pbHk6IC0tdGhlbWUoXG4gICAgICAtLWRlZmF1bHQtbW9uby1mb250LWZhbWlseSxcbiAgICAgIHVpLW1vbm9zcGFjZSxcbiAgICAgIFNGTW9uby1SZWd1bGFyLFxuICAgICAgTWVubG8sXG4gICAgICBNb25hY28sXG4gICAgICBDb25zb2xhcyxcbiAgICAgIFwiTGliZXJhdGlvbiBNb25vXCIsXG4gICAgICBcIkNvdXJpZXIgTmV3XCIsXG4gICAgICBtb25vc3BhY2VcbiAgICApOyAvKiAxICovXG4gICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiAtLXRoZW1lKFxuICAgICAgLS1kZWZhdWx0LW1vbm8tZm9udC1mZWF0dXJlLXNldHRpbmdzLFxuICAgICAgbm9ybWFsXG4gICAgKTsgLyogMiAqL1xuICAgIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiAtLXRoZW1lKFxuICAgICAgLS1kZWZhdWx0LW1vbm8tZm9udC12YXJpYXRpb24tc2V0dGluZ3MsXG4gICAgICBub3JtYWxcbiAgICApOyAvKiAzICovXG4gICAgZm9udC1zaXplOiAxZW07IC8qIDQgKi9cbiAgfVxuXG4gIC8qXG4gIEFkZCB0aGUgY29ycmVjdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuKi9cblxuICBzbWFsbCB7XG4gICAgZm9udC1zaXplOiA4MCU7XG4gIH1cblxuICAvKlxuICBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW4gYWxsIGJyb3dzZXJzLlxuKi9cblxuICBzdWIsXG4gIHN1cCB7XG4gICAgZm9udC1zaXplOiA3NSU7XG4gICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgfVxuXG4gIHN1YiB7XG4gICAgYm90dG9tOiAtMC4yNWVtO1xuICB9XG5cbiAgc3VwIHtcbiAgICB0b3A6IC0wLjVlbTtcbiAgfVxuXG4gIC8qXG4gIDEuIFJlbW92ZSB0ZXh0IGluZGVudGF0aW9uIGZyb20gdGFibGUgY29udGVudHMgaW4gQ2hyb21lIGFuZCBTYWZhcmkuIChodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD05OTkwODgsIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDEyOTcpXG4gIDIuIENvcnJlY3QgdGFibGUgYm9yZGVyIGNvbG9yIGluaGVyaXRhbmNlIGluIGFsbCBDaHJvbWUgYW5kIFNhZmFyaS4gKGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTkzNTcyOSwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTAxNilcbiAgMy4gUmVtb3ZlIGdhcHMgYmV0d2VlbiB0YWJsZSBib3JkZXJzIGJ5IGRlZmF1bHQuXG4qL1xuXG4gIHRhYmxlIHtcbiAgICB0ZXh0LWluZGVudDogMDsgLyogMSAqL1xuICAgIGJvcmRlci1jb2xvcjogaW5oZXJpdDsgLyogMiAqL1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IC8qIDMgKi9cbiAgfVxuXG4gIC8qXG4gIFVzZSB0aGUgbW9kZXJuIEZpcmVmb3ggZm9jdXMgc3R5bGUgZm9yIGFsbCBmb2N1c2FibGUgZWxlbWVudHMuXG4qL1xuXG4gIDotbW96LWZvY3VzcmluZyB7XG4gICAgb3V0bGluZTogYXV0bztcbiAgfVxuXG4gIC8qXG4gIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lIGFuZCBGaXJlZm94LlxuKi9cblxuICBwcm9ncmVzcyB7XG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICB9XG5cbiAgLypcbiAgQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gQ2hyb21lIGFuZCBTYWZhcmkuXG4qL1xuXG4gIHN1bW1hcnkge1xuICAgIGRpc3BsYXk6IGxpc3QtaXRlbTtcbiAgfVxuXG4gIC8qXG4gIE1ha2UgbGlzdHMgdW5zdHlsZWQgYnkgZGVmYXVsdC5cbiovXG5cbiAgb2wsXG4gIHVsLFxuICBtZW51IHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICB9XG5cbiAgLypcbiAgMS4gTWFrZSByZXBsYWNlZCBlbGVtZW50cyBgZGlzcGxheTogYmxvY2tgIGJ5IGRlZmF1bHQuIChodHRwczovL2dpdGh1Yi5jb20vbW96ZGV2cy9jc3NyZW1lZHkvaXNzdWVzLzE0KVxuICAyLiBBZGQgYHZlcnRpY2FsLWFsaWduOiBtaWRkbGVgIHRvIGFsaWduIHJlcGxhY2VkIGVsZW1lbnRzIG1vcmUgc2Vuc2libHkgYnkgZGVmYXVsdC4gKGh0dHBzOi8vZ2l0aHViLmNvbS9qZW5zaW1tb25zL2Nzc3JlbWVkeS9pc3N1ZXMvMTQjaXNzdWVjb21tZW50LTYzNDkzNDIxMClcbiAgICAgIFRoaXMgY2FuIHRyaWdnZXIgYSBwb29ybHkgY29uc2lkZXJlZCBsaW50IGVycm9yIGluIHNvbWUgdG9vbHMgYnV0IGlzIGluY2x1ZGVkIGJ5IGRlc2lnbi5cbiovXG5cbiAgaW1nLFxuICBzdmcsXG4gIHZpZGVvLFxuICBjYW52YXMsXG4gIGF1ZGlvLFxuICBpZnJhbWUsXG4gIGVtYmVkLFxuICBvYmplY3Qge1xuICAgIGRpc3BsYXk6IGJsb2NrOyAvKiAxICovXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgLyogMiAqL1xuICB9XG5cbiAgLypcbiAgQ29uc3RyYWluIGltYWdlcyBhbmQgdmlkZW9zIHRvIHRoZSBwYXJlbnQgd2lkdGggYW5kIHByZXNlcnZlIHRoZWlyIGludHJpbnNpYyBhc3BlY3QgcmF0aW8uIChodHRwczovL2dpdGh1Yi5jb20vbW96ZGV2cy9jc3NyZW1lZHkvaXNzdWVzLzE0KVxuKi9cblxuICBpbWcsXG4gIHZpZGVvIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG5cbiAgLypcbiAgMS4gSW5oZXJpdCBmb250IHN0eWxlcyBpbiBhbGwgYnJvd3NlcnMuXG4gIDIuIFJlbW92ZSBib3JkZXIgcmFkaXVzIGluIGFsbCBicm93c2Vycy5cbiAgMy4gUmVtb3ZlIGJhY2tncm91bmQgY29sb3IgaW4gYWxsIGJyb3dzZXJzLlxuICA0LiBFbnN1cmUgY29uc2lzdGVudCBvcGFjaXR5IGZvciBkaXNhYmxlZCBzdGF0ZXMgaW4gYWxsIGJyb3dzZXJzLlxuKi9cblxuICBidXR0b24sXG4gIGlucHV0LFxuICBzZWxlY3QsXG4gIG9wdGdyb3VwLFxuICB0ZXh0YXJlYSxcbiAgOjpmaWxlLXNlbGVjdG9yLWJ1dHRvbiB7XG4gICAgZm9udDogaW5oZXJpdDsgLyogMSAqL1xuICAgIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogaW5oZXJpdDsgLyogMSAqL1xuICAgIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiBpbmhlcml0OyAvKiAxICovXG4gICAgbGV0dGVyLXNwYWNpbmc6IGluaGVyaXQ7IC8qIDEgKi9cbiAgICBjb2xvcjogaW5oZXJpdDsgLyogMSAqL1xuICAgIGJvcmRlci1yYWRpdXM6IDA7IC8qIDIgKi9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgLyogMyAqL1xuICAgIG9wYWNpdHk6IDE7IC8qIDQgKi9cbiAgfVxuXG4gIC8qXG4gIFJlc3RvcmUgZGVmYXVsdCBmb250IHdlaWdodC5cbiovXG5cbiAgOndoZXJlKHNlbGVjdDppcyhbbXVsdGlwbGVdLCBbc2l6ZV0pKSBvcHRncm91cCB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcbiAgfVxuXG4gIC8qXG4gIFJlc3RvcmUgaW5kZW50YXRpb24uXG4qL1xuXG4gIDp3aGVyZShzZWxlY3Q6aXMoW211bHRpcGxlXSwgW3NpemVdKSkgb3B0Z3JvdXAgb3B0aW9uIHtcbiAgICBwYWRkaW5nLWlubGluZS1zdGFydDogMjBweDtcbiAgfVxuXG4gIC8qXG4gIFJlc3RvcmUgc3BhY2UgYWZ0ZXIgYnV0dG9uLlxuKi9cblxuICA6OmZpbGUtc2VsZWN0b3ItYnV0dG9uIHtcbiAgICBtYXJnaW4taW5saW5lLWVuZDogNHB4O1xuICB9XG5cbiAgLypcbiAgUmVzZXQgdGhlIGRlZmF1bHQgcGxhY2Vob2xkZXIgb3BhY2l0eSBpbiBGaXJlZm94LiAoaHR0cHM6Ly9naXRodWIuY29tL3RhaWx3aW5kbGFicy90YWlsd2luZGNzcy9pc3N1ZXMvMzMwMClcbiovXG5cbiAgOjpwbGFjZWhvbGRlciB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIC8qXG4gIFNldCB0aGUgZGVmYXVsdCBwbGFjZWhvbGRlciBjb2xvciB0byBhIHNlbWktdHJhbnNwYXJlbnQgdmVyc2lvbiBvZiB0aGUgY3VycmVudCB0ZXh0IGNvbG9yIGluIGJyb3dzZXJzIHRoYXQgZG8gbm90XG4gIGNyYXNoIHdoZW4gdXNpbmcgYGNvbG9yLW1peCjigKYpYCB3aXRoIGBjdXJyZW50Y29sb3JgLiAoaHR0cHM6Ly9naXRodWIuY29tL3RhaWx3aW5kbGFicy90YWlsd2luZGNzcy9pc3N1ZXMvMTcxOTQpXG4qL1xuXG4gIEBzdXBwb3J0cyAobm90ICgtd2Via2l0LWFwcGVhcmFuY2U6IC1hcHBsZS1wYXktYnV0dG9uKSkgLyogTm90IFNhZmFyaSAqLyBvclxuICAgIChjb250YWluLWludHJpbnNpYy1zaXplOiAxcHgpIC8qIFNhZmFyaSAxNysgKi8ge1xuICAgIDo6cGxhY2Vob2xkZXIge1xuICAgICAgY29sb3I6IGNvbG9yLW1peChpbiBva2xhYiwgY3VycmVudGNvbG9yIDUwJSwgdHJhbnNwYXJlbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qXG4gIFByZXZlbnQgcmVzaXppbmcgdGV4dGFyZWFzIGhvcml6b250YWxseSBieSBkZWZhdWx0LlxuKi9cblxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxuXG4gIC8qXG4gIFJlbW92ZSB0aGUgaW5uZXIgcGFkZGluZyBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBtYWNPUy5cbiovXG5cbiAgOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIH1cblxuICAvKlxuICAxLiBFbnN1cmUgZGF0ZS90aW1lIGlucHV0cyBoYXZlIHRoZSBzYW1lIGhlaWdodCB3aGVuIGVtcHR5IGluIGlPUyBTYWZhcmkuXG4gIDIuIEVuc3VyZSB0ZXh0IGFsaWdubWVudCBjYW4gYmUgY2hhbmdlZCBvbiBkYXRlL3RpbWUgaW5wdXRzIGluIGlPUyBTYWZhcmkuXG4qL1xuXG4gIDo6LXdlYmtpdC1kYXRlLWFuZC10aW1lLXZhbHVlIHtcbiAgICBtaW4taGVpZ2h0OiAxbGg7IC8qIDEgKi9cbiAgICB0ZXh0LWFsaWduOiBpbmhlcml0OyAvKiAyICovXG4gIH1cblxuICAvKlxuICBQcmV2ZW50IGhlaWdodCBmcm9tIGNoYW5naW5nIG9uIGRhdGUvdGltZSBpbnB1dHMgaW4gbWFjT1MgU2FmYXJpIHdoZW4gdGhlIGlucHV0IGlzIHNldCB0byBgZGlzcGxheTogYmxvY2tgLlxuKi9cblxuICA6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdCB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIH1cblxuICAvKlxuICBSZW1vdmUgZXhjZXNzIHBhZGRpbmcgZnJvbSBwc2V1ZG8tZWxlbWVudHMgaW4gZGF0ZS90aW1lIGlucHV0cyB0byBlbnN1cmUgY29uc2lzdGVudCBoZWlnaHQgYWNyb3NzIGJyb3dzZXJzLlxuKi9cblxuICA6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1maWVsZHMtd3JhcHBlciB7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gIDo6LXdlYmtpdC1kYXRldGltZS1lZGl0LFxuICA6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC15ZWFyLWZpZWxkLFxuICA6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1tb250aC1maWVsZCxcbiAgOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtZGF5LWZpZWxkLFxuICA6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1ob3VyLWZpZWxkLFxuICA6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1taW51dGUtZmllbGQsXG4gIDo6LXdlYmtpdC1kYXRldGltZS1lZGl0LXNlY29uZC1maWVsZCxcbiAgOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtbWlsbGlzZWNvbmQtZmllbGQsXG4gIDo6LXdlYmtpdC1kYXRldGltZS1lZGl0LW1lcmlkaWVtLWZpZWxkIHtcbiAgICBwYWRkaW5nLWJsb2NrOiAwO1xuICB9XG5cbiAgLypcbiAgQ2VudGVyIGRyb3Bkb3duIG1hcmtlciBzaG93biBvbiBpbnB1dHMgd2l0aCBwYWlyZWQgYDxkYXRhbGlzdD5gcyBpbiBDaHJvbWUuIChodHRwczovL2dpdGh1Yi5jb20vdGFpbHdpbmRsYWJzL3RhaWx3aW5kY3NzL2lzc3Vlcy8xODQ5OSlcbiovXG5cbiAgOjotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3Ige1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICB9XG5cbiAgLypcbiAgUmVtb3ZlIHRoZSBhZGRpdGlvbmFsIGA6aW52YWxpZGAgc3R5bGVzIGluIEZpcmVmb3guIChodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9nZWNrby1kZXYvYmxvYi8yZjllYWNkOWQzZDk5NWM5MzdiNDI1MWE1NTU3ZDk1ZDQ5NGM5YmUxL2xheW91dC9zdHlsZS9yZXMvZm9ybXMuY3NzI0w3MjgtTDczNylcbiovXG5cbiAgOi1tb3otdWktaW52YWxpZCB7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgfVxuXG4gIC8qXG4gIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSB0aGUgYm9yZGVyIHJhZGl1cyBpbiBpT1MgU2FmYXJpLlxuKi9cblxuICBidXR0b24sXG4gIGlucHV0OndoZXJlKFt0eXBlPVwiYnV0dG9uXCJdLCBbdHlwZT1cInJlc2V0XCJdLCBbdHlwZT1cInN1Ym1pdFwiXSksXG4gIDo6ZmlsZS1zZWxlY3Rvci1idXR0b24ge1xuICAgIGFwcGVhcmFuY2U6IGJ1dHRvbjtcbiAgfVxuXG4gIC8qXG4gIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIFNhZmFyaS5cbiovXG5cbiAgOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuICA6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxuXG4gIC8qXG4gIE1ha2UgZWxlbWVudHMgd2l0aCB0aGUgSFRNTCBoaWRkZW4gYXR0cmlidXRlIHN0YXkgaGlkZGVuIGJ5IGRlZmF1bHQuXG4qL1xuXG4gIFtoaWRkZW5dOndoZXJlKDpub3QoW2hpZGRlbj1cInVudGlsLWZvdW5kXCJdKSkge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG5AbGF5ZXIgdXRpbGl0aWVzIHtcbiAgQHRhaWx3aW5kIHV0aWxpdGllcztcbn1cbiIsIkBpbXBvcnQgXCJ0YWlsd2luZGNzc1wiO1xyXG5Ac291cmNlIG5vdCBcIi4uLy4uL3B1YmxpY1wiO1xyXG5ib2R5IHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JheTtcclxufVxyXG4iLCI8dGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXV0aC1jb250YWluZXJcIj5cclxuICAgICAgPHNsb3QgLz5cclxuICAgIDwvZGl2PlxyXG4gIDwvdGVtcGxhdGU+XHJcbiAgXHJcbiAgPHN0eWxlIHNjb3BlZD5cclxuICAuYXV0aC1jb250YWluZXIge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGhlaWdodDogMTAwdmg7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmNGY0O1xyXG4gIH1cclxuICA8L3N0eWxlPlxyXG4gICIsIjx0ZW1wbGF0ZT5cclxuICAgIDxhLWxheW91dCBzdHlsZT1cIm1pbi1oZWlnaHQ6IDEwMHZoXCI+XHJcbiAgICAgIDwhLS0gU2lkZWJhciAtLT5cclxuICAgICAgPERhc2hib2FyZFNpZGViYXIgOnNpZGViYXJDb2xsYXBzZWQ9XCJzaWRlYmFyQ29sbGFwc2VkXCIgQHRvZ2dsZVNpZGViYXI9XCJ0b2dnbGVTaWRlYmFyXCIgLz5cclxuICBcclxuICAgICAgPGEtbGF5b3V0PlxyXG4gICAgICAgIDwhLS0gSGVhZGVyIC0tPlxyXG4gICAgICAgIDxhLWxheW91dC1oZWFkZXIgY2xhc3M9XCJoZWFkZXJcIj5cclxuICAgICAgICAgIDxhLWJ1dHRvbiB0eXBlPVwidGV4dFwiIGNsYXNzPVwibWVudS1idXR0b25cIiBAY2xpY2s9XCJ0b2dnbGVTaWRlYmFyXCI+XHJcbiAgICAgICAgICAgIDxtZW51LW91dGxpbmVkIC8+XHJcbiAgICAgICAgICA8L2EtYnV0dG9uPlxyXG4gIFxyXG4gICAgICAgICAgPGEtYnJlYWRjcnVtYiBzdHlsZT1cIm1hcmdpbjogMTZweFwiPlxyXG4gICAgICAgICAgICA8YS1icmVhZGNydW1iLWl0ZW0+SW5pY2lvPC9hLWJyZWFkY3J1bWItaXRlbT5cclxuICAgICAgICAgICAgPGEtYnJlYWRjcnVtYi1pdGVtPnt7IGN1cnJlbnRSb3V0ZU5hbWUgfX08L2EtYnJlYWRjcnVtYi1pdGVtPlxyXG4gICAgICAgICAgPC9hLWJyZWFkY3J1bWI+XHJcbiAgICAgICAgPC9hLWxheW91dC1oZWFkZXI+XHJcbiAgXHJcbiAgICAgICAgPCEtLSBDb250ZW5pZG8gLS0+XHJcbiAgICAgICAgPGEtbGF5b3V0LWNvbnRlbnQgY2xhc3M9XCJjb250ZW50LWJveFwiPlxyXG4gICAgICAgICAgPHJvdXRlci12aWV3IC8+XHJcbiAgICAgICAgPC9hLWxheW91dC1jb250ZW50PlxyXG4gIFxyXG4gICAgICAgIDwhLS0gRm9vdGVyIC0tPlxyXG4gICAgICAgIDxhLWxheW91dC1mb290ZXIgY2xhc3M9XCJmb290ZXJcIj5cclxuICAgICAgICAgIFNpc3RlbWEgTG9nw61zdGljb1xyXG4gICAgICAgIDwvYS1sYXlvdXQtZm9vdGVyPlxyXG4gIFxyXG4gICAgICAgIDwhLS0gT3ZlcmxheSBTT0xPIGVuIG3Ds3ZpbGVzIC0tPlxyXG4gICAgICAgIDxkaXYgdi1pZj1cImlzTW9iaWxlICYmICFzaWRlYmFyQ29sbGFwc2VkXCIgY2xhc3M9XCJzaWRlYmFyLW92ZXJsYXlcIiBAY2xpY2s9XCJjbG9zZVNpZGViYXJcIj48L2Rpdj5cclxuICAgICAgPC9hLWxheW91dD5cclxuICAgIDwvYS1sYXlvdXQ+XHJcbiAgPC90ZW1wbGF0ZT5cclxuICBcclxuICA8c2NyaXB0IHNldHVwPlxyXG4gIGltcG9ydCB7IHJlZiwgY29tcHV0ZWQsIG9uTW91bnRlZCwgb25CZWZvcmVVbm1vdW50IH0gZnJvbSBcInZ1ZVwiO1xyXG4gIGltcG9ydCB7IHVzZVJvdXRlIH0gZnJvbSBcInZ1ZS1yb3V0ZXJcIjtcclxuICBpbXBvcnQgRGFzaGJvYXJkU2lkZWJhciBmcm9tIFwiLi4vY29tcG9uZW50cy9zaWRlYmFycy9EYXNoYm9hcmRTaWRlYmFyLnZ1ZVwiO1xyXG4gIC8vaW1wb3J0IHsgTWVudU91dGxpbmVkIH0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zLXZ1ZVwiO1xyXG4gIFxyXG4gIGNvbnN0IHNpZGViYXJDb2xsYXBzZWQgPSByZWYodHJ1ZSk7XHJcbiAgY29uc3Qgcm91dGUgPSB1c2VSb3V0ZSgpO1xyXG4gIGNvbnN0IGlzTW9iaWxlID0gcmVmKHdpbmRvdy5pbm5lcldpZHRoIDw9IDc2OCk7XHJcbiAgXHJcbiAgY29uc3QgdG9nZ2xlU2lkZWJhciA9ICgpID0+IHtcclxuICAgIHNpZGViYXJDb2xsYXBzZWQudmFsdWUgPSAhc2lkZWJhckNvbGxhcHNlZC52YWx1ZTtcclxuICB9O1xyXG4gIFxyXG4gIGNvbnN0IGNsb3NlU2lkZWJhciA9ICgpID0+IHtcclxuICAgIGlmIChpc01vYmlsZS52YWx1ZSkge1xyXG4gICAgICBzaWRlYmFyQ29sbGFwc2VkLnZhbHVlID0gdHJ1ZTtcclxuICAgIH1cclxuICB9O1xyXG4gIFxyXG4gIGNvbnN0IGNoZWNrU2NyZWVuU2l6ZSA9ICgpID0+IHtcclxuICAgIGlzTW9iaWxlLnZhbHVlID0gd2luZG93LmlubmVyV2lkdGggPD0gNzY4O1xyXG4gIH07XHJcbiAgXHJcbiAgLy8gQWdyZWdhciB5IHJlbW92ZXIgZXZlbnRvcyBkZSByZWRpbWVuc2lvbmFtaWVudG9cclxuICBvbk1vdW50ZWQoKCkgPT4ge1xyXG4gICAgY2hlY2tTY3JlZW5TaXplKCk7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCBjaGVja1NjcmVlblNpemUpO1xyXG4gIH0pO1xyXG4gIFxyXG4gIG9uQmVmb3JlVW5tb3VudCgoKSA9PiB7XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCBjaGVja1NjcmVlblNpemUpO1xyXG4gIH0pO1xyXG4gIFxyXG4gIGNvbnN0IGN1cnJlbnRSb3V0ZU5hbWUgPSBjb21wdXRlZCgoKSA9PiByb3V0ZS5uYW1lIHx8IFwiRGFzaGJvYXJkXCIpO1xyXG4gIDwvc2NyaXB0PlxyXG4gIFxyXG4gIDxzdHlsZSBzY29wZWQ+XHJcbiAgLmhlYWRlciB7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBwYWRkaW5nOiAwIDE2cHg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgfVxyXG4gIFxyXG4gIC5tZW51LWJ1dHRvbiB7XHJcbiAgICBmb250LXNpemU6IDI0cHg7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxuICBcclxuICAvKiBNb3N0cmFtb3MgZWwgYm90w7NuIGhhbWJ1cmd1ZXNhIHNvbG8gZW4gbcOzdmlsZXMgKi9cclxuICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcclxuICAgIC5tZW51LWJ1dHRvbiB7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICAvKiBFc3RpbG9zIHBhcmEgZWwgb3ZlcmxheSBkZWwgc2lkZWJhciBTT0xPIGVuIG3Ds3ZpbGVzICovXHJcbiAgLnNpZGViYXItb3ZlcmxheSB7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNSk7XHJcbiAgICB6LWluZGV4OiA5OTg7XHJcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZS1pbi1vdXQ7XHJcbiAgfVxyXG4gIDwvc3R5bGU+XHJcbiAgIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/