/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** 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/Profil/Badge.vue?vue&type=style&index=0&id=701f139f&scoped=true&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@import url(https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@300;400;600&display=swap);
/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** 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/AdminPanel/Navbar.vue?vue&type=style&index=0&id=32c5cf2a&scoped=true&lang=css ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.link-active[data-v-32c5cf2a] {
  background-color: #f3f4f6;
}

/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** 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/Administration/Dashboard.vue?vue&type=style&index=0&id=770cc7b2&scoped=true&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.bg-custom-pattern[data-v-770cc7b2] {
    background-color: #2A0E0E;
    background-image: radial-gradient(rgba(255, 255, 255, 0.1) 1.5px, transparent 0);
    background-size: 20px 20px;
    background-position: -5px -5px;
}

/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** 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/Backoffice/Dashboard.vue?vue&type=style&index=0&id=3e050f12&scoped=true&lang=css ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.link-active[data-v-3e050f12] {
  background: white;
  box-shadow: 0 1px 1px rgba(14, 15, 18, 0.08), 0 2px 4px rgba(14,15,18,0.08), 0 6px 12px rgba(14,15,18,0.08);
}

/*!**************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-4.use[2]!./node_modules/floating-vue/dist/style.css ***!
  \**************************************************************************************************************************************************************************************/
.resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.v-popper__popper{z-index:10000;top:0;left:0;outline:none}.v-popper__popper.v-popper__popper--hidden{visibility:hidden;opacity:0;transition:opacity .15s,visibility .15s;pointer-events:none}.v-popper__popper.v-popper__popper--shown{visibility:visible;opacity:1;transition:opacity .15s}.v-popper__popper.v-popper__popper--skip-transition,.v-popper__popper.v-popper__popper--skip-transition>.v-popper__wrapper{transition:none!important}.v-popper__backdrop{position:absolute;top:0;left:0;width:100%;height:100%;display:none}.v-popper__inner{position:relative;box-sizing:border-box;overflow-y:auto}.v-popper__inner>div{position:relative;z-index:1;max-width:inherit;max-height:inherit}.v-popper__arrow-container{position:absolute;width:10px;height:10px}.v-popper__popper--arrow-overflow .v-popper__arrow-container,.v-popper__popper--no-positioning .v-popper__arrow-container{display:none}.v-popper__arrow-inner,.v-popper__arrow-outer{border-style:solid;position:absolute;top:0;left:0;width:0;height:0}.v-popper__arrow-inner{visibility:hidden;border-width:7px}.v-popper__arrow-outer{border-width:6px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{left:-2px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{left:-1px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer{border-bottom-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:0}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{border-top-width:0;border-left-color:transparent!important;border-right-color:transparent!important;border-top-color:transparent!important}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{top:-4px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{top:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{top:-1px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{border-left-width:0;border-left-color:transparent!important;border-top-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{left:-4px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{left:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-10px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer{border-right-width:0;border-top-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner{left:-2px}.v-popper--theme-tooltip .v-popper__inner{background:rgba(0,0,0,.8);color:#fff;border-radius:6px;padding:7px 12px 6px}.v-popper--theme-tooltip .v-popper__arrow-outer{border-color:#000c}.v-popper--theme-dropdown .v-popper__inner{background:#fff;color:#000;border-radius:6px;border:1px solid #ddd;box-shadow:0 6px 30px #0000001a}.v-popper--theme-dropdown .v-popper__arrow-inner{visibility:visible;border-color:#fff}.v-popper--theme-dropdown .v-popper__arrow-outer{border-color:#ddd}

/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** 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/Profil/ActivityMap.vue?vue&type=style&index=0&id=4d01c3c9&scoped=true&lang=css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.heatmap[data-v-4d01c3c9] {
  display: grid;
  grid-template-columns: auto 1fr; /* 1: labels Y, 2: contenu */
  grid-auto-rows: auto;
  row-gap: 3px;
  column-gap: 3px;
  --cell-size: 15.5px;
  --gap: 2px;
  --base-rgb: 76, 139, 253;
}

/* cellule vide en haut à gauche pour aligner l’en-tête */
.spacer[data-v-4d01c3c9] { height: 1.2em;
}

/* rangée des mois */
.months[data-v-4d01c3c9] {
  display: grid;
  align-items: center;
  gap: var(--gap);
  height: 1.2em;
  font-size: 10px;
  color: #9aa0a6;
}
.month[data-v-4d01c3c9] {
  text-align: center;
}

/* le reste inchangé */
.y-labels[data-v-4d01c3c9] {
  display: grid;
  grid-template-rows: repeat(7, var(--cell-size));
  gap: var(--gap);
  font-size: 10px;
  color: #9aa0a6;
  margin-right: 2px;
}
.grid[data-v-4d01c3c9] { display: grid; grid-auto-flow: column; gap: var(--gap);
}
.week[data-v-4d01c3c9] { display: grid; grid-template-rows: repeat(7, var(--cell-size)); gap: var(--gap);
}
.cell[data-v-4d01c3c9] { width: var(--cell-size); height: var(--cell-size); border-radius: 2px; background-color: rgba(255, 255, 255, 0.08); border: 1px solid rgba(255,255,255,0);
}
.cell.level-0[data-v-4d01c3c9] { background-color: rgba(40, 39, 46, 0.4);
}
.cell.level-1[data-v-4d01c3c9] { background-color: rgba(var(--base-rgb), 0.25);
}
.cell.level-2[data-v-4d01c3c9] { background-color: rgba(var(--base-rgb), 0.45);
}
.cell.level-3[data-v-4d01c3c9] { background-color: rgba(var(--base-rgb), 0.65);
}
.cell.level-4[data-v-4d01c3c9] { background-color: rgba(var(--base-rgb), 0.9);
}
.cell[data-v-4d01c3c9]:hover {
  border: 1px solid rgba(255,255,255,0.4);
}
.legend[data-v-4d01c3c9] { display: flex; align-items: center; gap: 6px; margin-top: 8px; font-size: 12px; color: #9aa0a6;
}
.legend .cell[data-v-4d01c3c9] { width: 12px; height: 12px;
}


/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** 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/Backoffice/Users.vue?vue&type=style&index=0&id=4d32c12a&scoped=true&lang=css ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

/* Additional styling if needed */

/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** 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/GSAP/ScrollV3.vue?vue&type=style&index=0&id=6aa8df3f&scoped=true&lang=css ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

section[data-v-6aa8df3f] {
    height: 100vh;
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** 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/Home/ConfirmWithoutDemo.vue?vue&type=style&index=0&id=621d20dc&lang=css ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

  /* Animation battement de coeur pour le logo */
.heartbeat {
    /* Allonger la durée pour espacer davantage les 2 pulsations */
    animation: heartbeat 2.4s ease-in-out infinite;
    transform-origin: center center;
    will-change: transform;
}
@keyframes heartbeat {
    /* Double battement avec espacement plus long, puis repos */
0% { transform: scale(1);
}
12% { transform: scale(1.07);
}
20% { transform: scale(0.985);
}
58% { transform: scale(1.105);
}
66% { transform: scale(1);
}
100% { transform: scale(1);
}
}

  /* Onde subtile en opacité derrière le logo */
.pulse-wave {
    position: absolute;
    inset: 0;
    border-radius: 9999px; /* full */
    background-color: currentColor; /* utilise la couleur primaire via .text-primary */
    opacity: 0; /* invisible jusqu'au pic de pulsation */
    transform: scale(1);
    /* Synchroniser la durée de l'onde avec le heartbeat pour coller aux pulsations */
    animation: pulse-wave 2.4s ease-out infinite;
    filter: blur(0.5px);
    will-change: transform, opacity;
}
.pulse-wave.delay {
    /* Décaler précisément pour la 2e pulsation (de 12% à 58% = 46% de 2.4s => ~1.104s) */
    animation-delay: 1.104s;
}
@keyframes pulse-wave {
    /* Onde alignée sur les pics du heartbeat (~12% et ~58%) */
0% { transform: scale(1); opacity: 0;
}
11.9% { transform: scale(1); opacity: 0;
}
    /* Déclenchement de l'onde au 1er pic */
12% { transform: scale(1.02); opacity: 0.12;
}
30% { transform: scale(1.35); opacity: 0.08;
}
45% { transform: scale(1.5); opacity: 0.04;
}
    /* Finir l'onde avant le repos (66%) */
66% { transform: scale(1.55); opacity: 0;
}
100% { transform: scale(1.55); opacity: 0;
}
}

/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** 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/Utils/LanguageSwitcher.vue?vue&type=style&index=0&id=54be1986&scoped=true&lang=css ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

select[data-v-54be1986] { outline: none;
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** 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/Home/Navbar.vue?vue&type=style&index=0&id=2f7beffe&scoped=true&lang=css ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

header.header_blur[data-v-2f7beffe] {
    backdrop-filter: saturate(120%) blur(10px);
}

/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** 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/Navbar.vue?vue&type=style&index=0&id=5f70eaff&scoped=true&lang=css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

header.header_blur[data-v-5f70eaff] {
    backdrop-filter: saturate(120%) blur(10px);
}

/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** 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/Opening.vue?vue&type=style&index=0&id=1d428279&scoped=true&lang=css ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.logo-wrap[data-v-1d428279] {
  width: 100%;
  max-width: 390px;
  margin: 0 auto;
}
svg[data-v-1d428279] {
  display: block;
}
@media (prefers-reduced-motion: reduce) {
  /* Accessibilité : on saute l’animation si l’utilisateur la désactive */
svg[data-v-1d428279] * {
    animation: none !important;
    transition: none !important;
}
}

/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** 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/Profil/Badge.vue?vue&type=style&index=0&id=701f139f&scoped=true&lang=css (1) ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.badge[data-v-701f139f]{
  /* variables */
  --accent: #ff2438;
  --bg: #0b0b0c;
  --ink: #e9eaec;
  --sub: #a6a7ab;
  --border: rgba(255,255,255,.12);

  border-radius: 24px;
  background:
      radial-gradient(120% 120% at 10% -10%, rgba(255,255,255,.10), transparent 40%),
      linear-gradient(180deg, #111316 0%, #0a0b0c 100%);
  color: var(--ink);
  position: relative;
  padding: 26px 22px;
  box-shadow:
      0 28px 60px -12px rgba(0,0,0,.65),
      0 8px 20px -8px rgba(255,36,56,.25),
      inset 0 1px 0 rgba(255,255,255,.06),
      inset 0 -1px 0 rgba(255,255,255,.03);
  overflow: hidden;
  font-family: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}
.badge.has-hole[data-v-701f139f]::before{
  content:"";
  position:absolute;
  top:14px; left:50%;
  width: 57px; height: 18px;
  transform: translateX(-50%);
  background: rgba(0,0,0,.45);
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,.15);
  box-shadow: inset 0 2px 2px rgba(0,0,0,.5), 0 4px 12px rgba(0,0,0,.35);
}

/* Top logo */
.mark[data-v-701f139f]{
  width: 56px; height: 56px;
  display:block;
  margin-bottom: 16px;
  opacity:.9;
  filter: drop-shadow(0 6px 8px rgba(255,36,56,.25));
}

/* Titres */
.title[data-v-701f139f]{
  font-weight: 600;
  letter-spacing: .18em;
  font-size: 18px;
  margin: 6px 0 18px 0;
}

/* Paires clé/valeur */
.kv[data-v-701f139f]{
  display:grid;
  grid-template-columns: 70px 1fr;
  gap: 6px 16px;
  font-size: 11px;
  color: var(--sub);
  line-height: 1.3;
  margin-bottom: 12px;
}
.kv .k[data-v-701f139f]{ color: var(--sub); opacity:.9
}
.kv .v[data-v-701f139f]{ color: var(--ink); opacity:.9
}
.rule[data-v-701f139f]{
  height:1px;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.18), transparent);
  margin: 14px 0 10px;
}
.handle[data-v-701f139f]{
  font-size: 11px;
  color: var(--sub);
  letter-spacing: .08em;
  margin-top: 2px;
}
.name[data-v-701f139f]{
  font-size: 22px;
  letter-spacing: .12em;
  margin: 8px 0 8px;
  font-weight: 600;
}
.grid[data-v-701f139f]{
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  align-items: start;
}

/* QR (placeholder) */
.qr[data-v-701f139f]{
  width: 128px; height: 128px;
  border-radius: 12px;
  border: 1px solid var(--border);
  background:
      repeating-linear-gradient(0deg, #0f1113, #0f1113 8px, #0d0f11 8px, #0d0f11 16px);
  box-shadow: inset 0 0 0 4px #000, 0 8px 20px -10px rgba(0,0,0,.8);
  position: relative;
  overflow:hidden;
}
.qr[data-v-701f139f]::before, .qr[data-v-701f139f]::after{
  content:"";
  position:absolute; inset:10px;
  background:
      conic-gradient(from 0deg at 20% 20%, #fff 0 25%, transparent 0 100%),
      conic-gradient(from 0deg at 80% 20%, #fff 0 25%, transparent 0 100%),
      conic-gradient(from 0deg at 20% 80%, #fff 0 25%, transparent 0 100%),
      conic-gradient(from 0deg at 80% 80%, #fff 0 25%, transparent 0 100%),
      repeating-conic-gradient(#fff 0 2%, transparent 0 4%);
  mix-blend-mode: screen;
  opacity:.9;
}
.qr[data-v-701f139f]::after{ inset:36px; background:#000
}
.meta[data-v-701f139f]{
  font-size: 11px;
  color: var(--sub);
  line-height: 1.45;
}
.meta b[data-v-701f139f]{ color: var(--ink); font-weight:600; letter-spacing:.06em
}
.meta .id[data-v-701f139f]{
  margin: 8px 0 10px;
  padding: 6px 8px;
  border: 1px dashed rgba(255,255,255,.22);
  border-radius: 8px;
  display:inline-block;
}

/* Signature bas */
.footer[data-v-701f139f]{
  position:absolute; left:22px; right:22px; bottom:18px;
  display:flex; align-items:center; justify-content:space-between;
  color: var(--sub); font-size: 10px;
  letter-spacing:.08em;
}
.sig[data-v-701f139f]{ display:flex; align-items:center; gap:8px; opacity:.95;
}
.dot[data-v-701f139f]{
  width:10px; height:10px; border-radius:50%;
  background: radial-gradient(circle at 40% 35%, #fff, #fff0 45%);
  box-shadow: 0 0 14px var(--accent), 0 0 4px var(--accent) inset;
}

/* Glows rouges */
.glow[data-v-701f139f]{
  position:absolute; inset:-40%;
  background:
      radial-gradient(420px 220px at 20% -10%, rgba(255,36,56,.18), transparent 40%),
      radial-gradient(420px 220px at 120% 120%, rgba(255,36,56,.12), transparent 50%);
  pointer-events:none;
  filter: blur(2px);
}

/* Sélection */
.badge[data-v-701f139f] ::selection{ background: rgba(255,36,56,.35); color:#fff
}

/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** 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/VSTLines.vue?vue&type=style&index=0&id=0d687dd2&scoped=true&lang=css ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.line[data-v-0d687dd2] {
  transform-origin: center;
}


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNzcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQXdKQTtFQUNFLHlCQUF5QjtBQUMzQjs7Ozs7O0FDdUJFO0lBQ0UseUJBQXlCO0lBQ3pCLGdGQUFnRjtJQUNoRiwwQkFBMEI7SUFDMUIsOEJBQThCO0FBQ2hDOzs7Ozs7QUN5SUY7RUFDRSxpQkFBaUI7RUFDakIsMkdBQTJHO0FBQzdHOzs7OztBQ2xVQSxrQ0FBa0MsaUJBQWlCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsNEJBQTRCLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMseUNBQXlDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLDJDQUEyQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsdUNBQXVDLENBQUMsbUJBQW1CLENBQUMsMENBQTBDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQywySEFBMkgseUJBQXlCLENBQUMsb0JBQW9CLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsaUJBQWlCLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLDJCQUEyQixpQkFBaUIsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLDBIQUEwSCxZQUFZLENBQUMsOENBQThDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLGdCQUFnQixDQUFDLDZJQUE2SSxTQUFTLENBQUMsNklBQTZJLFNBQVMsQ0FBQywwSUFBMEkscUJBQXFCLENBQUMsdUNBQXVDLENBQUMsd0NBQXdDLENBQUMseUNBQXlDLENBQUMscUVBQXFFLFFBQVEsQ0FBQyw0RUFBNEUsS0FBSyxDQUFDLGdKQUFnSixrQkFBa0IsQ0FBQyx1Q0FBdUMsQ0FBQyx3Q0FBd0MsQ0FBQyxzQ0FBc0MsQ0FBQyx3RUFBd0UsUUFBUSxDQUFDLHdFQUF3RSxRQUFRLENBQUMsNklBQTZJLFFBQVEsQ0FBQyw2SUFBNkksUUFBUSxDQUFDLDhJQUE4SSxtQkFBbUIsQ0FBQyx1Q0FBdUMsQ0FBQyxzQ0FBc0MsQ0FBQyx5Q0FBeUMsQ0FBQyx1RUFBdUUsU0FBUyxDQUFDLHVFQUF1RSxTQUFTLENBQUMsMEVBQTBFLFdBQVcsQ0FBQyw0SUFBNEksb0JBQW9CLENBQUMsc0NBQXNDLENBQUMsd0NBQXdDLENBQUMseUNBQXlDLENBQUMsc0VBQXNFLFNBQVMsQ0FBQywwQ0FBMEMseUJBQXlCLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLGdEQUFnRCxrQkFBa0IsQ0FBQywyQ0FBMkMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQywrQkFBK0IsQ0FBQyxpREFBaUQsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsaURBQWlELGlCQUFpQjs7Ozs7O0FDK014dEk7RUFDRSxhQUFhO0VBQ2IsK0JBQStCLEVBQUUsNEJBQTRCO0VBQzdELG9CQUFvQjtFQUNwQixZQUFZO0VBQ1osZUFBZTtFQUNmLG1CQUFtQjtFQUNuQixVQUFVO0VBQ1Ysd0JBQXdCO0FBQzFCOztBQUVBLHlEQUF5RDtBQUN6RCwyQkFBVSxhQUFhO0FBQUU7O0FBRXpCLG9CQUFvQjtBQUNwQjtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsZUFBZTtFQUNmLGFBQWE7RUFDYixlQUFlO0VBQ2YsY0FBYztBQUNoQjtBQUNBO0VBQ0Usa0JBQWtCO0FBQ3BCOztBQUVBLHNCQUFzQjtBQUN0QjtFQUNFLGFBQWE7RUFDYiwrQ0FBK0M7RUFDL0MsZUFBZTtFQUNmLGVBQWU7RUFDZixjQUFjO0VBQ2QsaUJBQWlCO0FBQ25CO0FBQ0EseUJBQVEsYUFBYSxFQUFFLHNCQUFzQixFQUFFLGVBQWU7QUFBRTtBQUNoRSx5QkFBUSxhQUFhLEVBQUUsK0NBQStDLEVBQUUsZUFBZTtBQUFFO0FBQ3pGLHlCQUFRLHVCQUF1QixFQUFFLHdCQUF3QixFQUFFLGtCQUFrQixFQUFFLDJDQUEyQyxFQUFFLHFDQUFxQztBQUFFO0FBQ25LLGlDQUFnQix1Q0FBdUM7QUFBRTtBQUN6RCxpQ0FBZ0IsNkNBQTZDO0FBQUU7QUFDL0QsaUNBQWdCLDZDQUE2QztBQUFFO0FBQy9ELGlDQUFnQiw2Q0FBNkM7QUFBRTtBQUMvRCxpQ0FBZ0IsNENBQTRDO0FBQUU7QUFFOUQ7RUFDRSx1Q0FBdUM7QUFDekM7QUFFQSwyQkFBVSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsY0FBYztBQUFFO0FBQzFHLGlDQUFnQixXQUFXLEVBQUUsWUFBWTtBQUFFOzs7Ozs7O0FDa0YzQyxpQ0FBaUM7Ozs7OztBQ3ZHL0I7SUFDRSxhQUFhO0FBQ2Y7Ozs7OztFQy9HQSw4Q0FBOEM7QUFDOUM7SUFDRSw4REFBOEQ7SUFDOUQsOENBQThDO0lBQzlDLCtCQUErQjtJQUMvQixzQkFBc0I7QUFDeEI7QUFFQTtJQUNFLDJEQUEyRDtBQUMzRCxLQUFLLG1CQUFtQjtBQUFFO0FBQzFCLE1BQU0sc0JBQXNCO0FBQUU7QUFDOUIsTUFBTSx1QkFBdUI7QUFBRTtBQUMvQixNQUFNLHVCQUF1QjtBQUFFO0FBQy9CLE1BQU0sbUJBQW1CO0FBQUU7QUFDM0IsT0FBTyxtQkFBbUI7QUFBRTtBQUM5Qjs7RUFFQSw2Q0FBNkM7QUFDN0M7SUFDRSxrQkFBa0I7SUFDbEIsUUFBUTtJQUNSLHFCQUFxQixFQUFFLFNBQVM7SUFDaEMsOEJBQThCLEVBQUUsa0RBQWtEO0lBQ2xGLFVBQVUsRUFBRSx3Q0FBd0M7SUFDcEQsbUJBQW1CO0lBQ25CLGlGQUFpRjtJQUNqRiw0Q0FBNEM7SUFDNUMsbUJBQW1CO0lBQ25CLCtCQUErQjtBQUNqQztBQUVBO0lBQ0UscUZBQXFGO0lBQ3JGLHVCQUF1QjtBQUN6QjtBQUVBO0lBQ0UsMERBQTBEO0FBQzFELEtBQUssbUJBQW1CLEVBQUUsVUFBVTtBQUFFO0FBQ3RDLFFBQVEsbUJBQW1CLEVBQUUsVUFBVTtBQUFFO0lBQ3pDLHVDQUF1QztBQUN2QyxNQUFNLHNCQUFzQixFQUFFLGFBQWE7QUFBRTtBQUM3QyxNQUFNLHNCQUFzQixFQUFFLGFBQWE7QUFBRTtBQUM3QyxNQUFNLHFCQUFxQixFQUFFLGFBQWE7QUFBRTtJQUM1QyxzQ0FBc0M7QUFDdEMsTUFBTSxzQkFBc0IsRUFBRSxVQUFVO0FBQUU7QUFDMUMsT0FBTyxzQkFBc0IsRUFBRSxVQUFVO0FBQUU7QUFDN0M7Ozs7OztBQzNKRiwwQkFBUyxhQUFhO0FBQUU7Ozs7OztBQ3dGdEI7SUFDRSwwQ0FBMEM7QUFDNUM7Ozs7OztBQ2RBO0lBQ0UsMENBQTBDO0FBQzVDOzs7Ozs7QUNzSkY7RUFDRSxXQUFXO0VBQ1gsZ0JBQWdCO0VBQ2hCLGNBQWM7QUFDaEI7QUFDQTtFQUNFLGNBQWM7QUFDaEI7QUFFQTtFQUNFLHVFQUF1RTtBQUN2RTtJQUNFLDBCQUEwQjtJQUMxQiwyQkFBMkI7QUFDN0I7QUFDRjs7Ozs7O0FDektBO0VBQ0UsY0FBYztFQUNkLGlCQUFpQjtFQUNqQixhQUFhO0VBQ2IsY0FBYztFQUNkLGNBQWM7RUFDZCwrQkFBK0I7O0VBRS9CLG1CQUFtQjtFQUNuQjs7dURBRXFEO0VBQ3JELGlCQUFpQjtFQUNqQixrQkFBa0I7RUFDbEIsa0JBQWtCO0VBQ2xCOzs7OzBDQUl3QztFQUN4QyxnQkFBZ0I7RUFDaEIsc0ZBQXNGO0FBQ3hGO0FBRUE7RUFDRSxVQUFVO0VBQ1YsaUJBQWlCO0VBQ2pCLFFBQVEsRUFBRSxRQUFRO0VBQ2xCLFdBQVcsRUFBRSxZQUFZO0VBQ3pCLDJCQUEyQjtFQUMzQiwyQkFBMkI7RUFDM0IsbUJBQW1CO0VBQ25CLHVDQUF1QztFQUN2QyxzRUFBc0U7QUFDeEU7O0FBRUEsYUFBYTtBQUNiO0VBQ0UsV0FBVyxFQUFFLFlBQVk7RUFDekIsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixVQUFVO0VBQ1Ysa0RBQWtEO0FBQ3BEOztBQUVBLFdBQVc7QUFDWDtFQUNFLGdCQUFnQjtFQUNoQixxQkFBcUI7RUFDckIsZUFBZTtFQUNmLG9CQUFvQjtBQUN0Qjs7QUFFQSxzQkFBc0I7QUFDdEI7RUFDRSxZQUFZO0VBQ1osK0JBQStCO0VBQy9CLGFBQWE7RUFDYixlQUFlO0VBQ2YsaUJBQWlCO0VBQ2pCLGdCQUFnQjtFQUNoQixtQkFBbUI7QUFDckI7QUFDQSx5QkFBUSxpQkFBaUIsRUFBRTtBQUFXO0FBQ3RDLHlCQUFRLGlCQUFpQixFQUFFO0FBQVc7QUFFdEM7RUFDRSxVQUFVO0VBQ1YsbUZBQW1GO0VBQ25GLG1CQUFtQjtBQUNyQjtBQUVBO0VBQ0UsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQixxQkFBcUI7RUFDckIsZUFBZTtBQUNqQjtBQUVBO0VBQ0UsZUFBZTtFQUNmLHFCQUFxQjtFQUNyQixpQkFBaUI7RUFDakIsZ0JBQWdCO0FBQ2xCO0FBRUE7RUFDRSxZQUFZO0VBQ1osOEJBQThCO0VBQzlCLFNBQVM7RUFDVCxrQkFBa0I7QUFDcEI7O0FBRUEscUJBQXFCO0FBQ3JCO0VBQ0UsWUFBWSxFQUFFLGFBQWE7RUFDM0IsbUJBQW1CO0VBQ25CLCtCQUErQjtFQUMvQjtzRkFDb0Y7RUFDcEYsaUVBQWlFO0VBQ2pFLGtCQUFrQjtFQUNsQixlQUFlO0FBQ2pCO0FBQ0E7RUFDRSxVQUFVO0VBQ1YsaUJBQWlCLEVBQUUsVUFBVTtFQUM3Qjs7Ozs7MkRBS3lEO0VBQ3pELHNCQUFzQjtFQUN0QixVQUFVO0FBQ1o7QUFDQSw2QkFBWSxVQUFVLEVBQUU7QUFBZ0I7QUFFeEM7RUFDRSxlQUFlO0VBQ2YsaUJBQWlCO0VBQ2pCLGlCQUFpQjtBQUNuQjtBQUNBLDBCQUFTLGlCQUFpQixFQUFFLGVBQWUsRUFBRTtBQUFxQjtBQUNsRTtFQUNFLGtCQUFrQjtFQUNsQixnQkFBZ0I7RUFDaEIsd0NBQXdDO0VBQ3hDLGtCQUFrQjtFQUNsQixvQkFBb0I7QUFDdEI7O0FBRUEsa0JBQWtCO0FBQ2xCO0VBQ0UsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXO0VBQ3JELFlBQVksRUFBRSxrQkFBa0IsRUFBRSw2QkFBNkI7RUFDL0QsaUJBQWlCLEVBQUUsZUFBZTtFQUNsQyxvQkFBb0I7QUFDdEI7QUFDQSx1QkFBTSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLFdBQVc7QUFBRTtBQUM5RDtFQUNFLFVBQVUsRUFBRSxXQUFXLEVBQUUsaUJBQWlCO0VBQzFDLCtEQUErRDtFQUMvRCwrREFBK0Q7QUFDakU7O0FBRUEsaUJBQWlCO0FBQ2pCO0VBQ0UsaUJBQWlCLEVBQUUsVUFBVTtFQUM3Qjs7cUZBRW1GO0VBQ25GLG1CQUFtQjtFQUNuQixpQkFBaUI7QUFDbkI7O0FBRUEsY0FBYztBQUNkLHFDQUFvQiwrQkFBK0IsRUFBRTtBQUFXOzs7Ozs7QUN6TWhFO0VBQ0Usd0JBQXdCO0FBQzFCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3Z1ZS9jb250cm9sbGVycy9BZG1pblBhbmVsL05hdmJhci52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3Z1ZS9jb250cm9sbGVycy9BZG1pbmlzdHJhdGlvbi9EYXNoYm9hcmQudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy92dWUvY29udHJvbGxlcnMvQmFja29mZmljZS9EYXNoYm9hcmQudnVlIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9mbG9hdGluZy12dWUvZGlzdC9zdHlsZS5jc3MiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3Z1ZS9jb250cm9sbGVycy9Qcm9maWwvQWN0aXZpdHlNYXAudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy92dWUvY29udHJvbGxlcnMvQmFja29mZmljZS9Vc2Vycy52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3Z1ZS9jb250cm9sbGVycy9HU0FQL1Njcm9sbFYzLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvdnVlL2NvbnRyb2xsZXJzL0hvbWUvQ29uZmlybVdpdGhvdXREZW1vLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvdnVlL2NvbnRyb2xsZXJzL1V0aWxzL0xhbmd1YWdlU3dpdGNoZXIudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy92dWUvY29udHJvbGxlcnMvSG9tZS9OYXZiYXIudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy92dWUvY29udHJvbGxlcnMvTmF2YmFyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvdnVlL2NvbnRyb2xsZXJzL09wZW5pbmcudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy92dWUvY29udHJvbGxlcnMvUHJvZmlsL0JhZGdlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvdnVlL2NvbnRyb2xsZXJzL1ZTVExpbmVzLnZ1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJwLTggZmxleCBmbGV4LWNvbCBoLWZ1bGwganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGltZyBzcmM9XCIvcmVzL2ltYWdlcy9sb2dvX21vdXRoLnN2Z1wiIGFsdD1cIlwiIGNsYXNzPVwic2l6ZS0xMFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodGVyXCI+QmFja29mZmljZSBMZVZvaXg8L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm10LTEwXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgICBocmVmPVwiL2JhY2tvZmZpY2VcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICdmbGV4IGl0ZW1zLWNlbnRlciB0ZXh0LXNtIHB5LTEgdHJhbnNpdGlvbi1hbGwnLFxuICAgICAgICAgIGlzQWN0aXZlKCcvYmFja29mZmljZScpICYmICFoYXNTdWJQYXRoID8gJ3RleHQtcHJpbWFyeSBmb250LXNlbWlib2xkJyA6ICcnXG4gICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiB2LWlmPVwiaXNBY3RpdmUoJy9iYWNrb2ZmaWNlJykgJiYgIWhhc1N1YlBhdGhcIiBjbGFzcz1cInNpemUtMiBiZy1wcmltYXJ5IG1yLTIgcm91bmRlZC1mdWxsXCI+PC9kaXY+XG4gICAgICAgICAgPEhvdXNlIHNpemU9XCIxNlwiIHN0cm9rZS13aWR0aD1cIjJcIiBjbGFzcz1cIm1yLTJcIiAvPiBUYWJsZWF1IGRlIGJvcmRcbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtdC04XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ncmF5LTkwMCBvcGFjaXR5LTcwIHRleHQteHMgdHJhY2tpbmctdGlnaHRlciBtYi0zXCI+R2VzdGlvbjwvc3Bhbj5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCIvYmFja29mZmljZS91dGlsaXNhdGV1cnNcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICdmbGV4IGl0ZW1zLWNlbnRlciBtYi0yIHB5LTEgaG92ZXI6cGwtMSB0cmFuc2l0aW9uLWFsbCB0ZXh0LXNtJyxcbiAgICAgICAgICBpc0FjdGl2ZSgnL2JhY2tvZmZpY2UvdXRpbGlzYXRldXJzJykgPyAndGV4dC1wcmltYXJ5IGZvbnQtc2VtaWJvbGQnIDogJydcbiAgICAgICAgXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IHYtaWY9XCJpc0FjdGl2ZSgnL2JhY2tvZmZpY2UvdXRpbGlzYXRldXJzJylcIiBjbGFzcz1cInNpemUtMiBiZy1wcmltYXJ5IG1yLTIgcm91bmRlZC1mdWxsXCI+PC9kaXY+XG4gICAgICAgICAgPFVzZXJzIHNpemU9XCIxNlwiIHN0cm9rZS13aWR0aD1cIjJcIiBjbGFzcz1cIm1yLTJcIiAvPiBVdGlsaXNhdGV1cnNcbiAgICAgICAgPC9hPlxuICAgICAgICA8YVxuICAgICAgICAgICAgaHJlZj1cIi9iYWNrb2ZmaWNlL2xpY2VuY2VzXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAnZmxleCBpdGVtcy1jZW50ZXIgbWItMiBweS0xIGhvdmVyOnBsLTEgdHJhbnNpdGlvbi1hbGwgdGV4dC1zbScsXG4gICAgICAgICAgaXNBY3RpdmUoJy9iYWNrb2ZmaWNlL2xpY2VuY2VzJykgPyAndGV4dC1wcmltYXJ5IGZvbnQtc2VtaWJvbGQnIDogJydcbiAgICAgICAgXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IHYtaWY9XCJpc0FjdGl2ZSgnL2JhY2tvZmZpY2UvbGljZW5jZXMnKVwiIGNsYXNzPVwic2l6ZS0yIGJnLXByaW1hcnkgbXItMiByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cbiAgICAgICAgICA8S2V5Um91bmQgc2l6ZT1cIjE2XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGNsYXNzPVwibXItMlwiIC8+IExpY2VuY2VzXG4gICAgICAgIDwvYT5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCIvYmFja29mZmljZS92ZXJzaW9uc1wiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ2ZsZXggaXRlbXMtY2VudGVyIG1iLTIgcHktMSBob3ZlcjpwbC0xIHRyYW5zaXRpb24tYWxsIHRleHQtc20nLFxuICAgICAgICAgIGlzQWN0aXZlKCcvYmFja29mZmljZS92ZXJzaW9ucycpID8gJ3RleHQtcHJpbWFyeSBmb250LXNlbWlib2xkJyA6ICcnXG4gICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiB2LWlmPVwiaXNBY3RpdmUoJy9iYWNrb2ZmaWNlL3ZlcnNpb25zJylcIiBjbGFzcz1cInNpemUtMiBiZy1wcmltYXJ5IG1yLTIgcm91bmRlZC1mdWxsXCI+PC9kaXY+XG4gICAgICAgICAgPFRhZ3Mgc2l6ZT1cIjE2XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGNsYXNzPVwibXItMlwiIC8+IFZlcnNpb25zXG4gICAgICAgIDwvYT5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCIvYmFja29mZmljZS9jYW1wYWlnbnNcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICdmbGV4IGl0ZW1zLWNlbnRlciBweS0xIGhvdmVyOnBsLTEgdHJhbnNpdGlvbi1hbGwgdGV4dC1zbScsXG4gICAgICAgICAgaXNBY3RpdmUoJy9iYWNrb2ZmaWNlL2NhbXBhaWducycpID8gJ3RleHQtcHJpbWFyeSBmb250LXNlbWlib2xkJyA6ICcnXG4gICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiB2LWlmPVwiaXNBY3RpdmUoJy9iYWNrb2ZmaWNlL2NhbXBhaWducycpXCIgY2xhc3M9XCJzaXplLTIgYmctcHJpbWFyeSBtci0yIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxuICAgICAgICAgIDxNZWdhcGhvbmUgc2l6ZT1cIjE2XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGNsYXNzPVwibXItMlwiIC8+IENhbXBhZ25lc1xuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm10LThcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWdyYXktOTAwIG9wYWNpdHktNzAgdGV4dC14cyB0cmFja2luZy10aWdodGVyIG1iLTNcIj5TdGF0aXN0aXF1ZXM8L3NwYW4+XG4gICAgICAgIDxhXG4gICAgICAgICAgICBocmVmPVwiL2JhY2tvZmZpY2UvcHVyY2hhc2Utc3RhdHNcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICdmbGV4IGl0ZW1zLWNlbnRlciBtYi0yIHB5LTEgaG92ZXI6cGwtMSB0cmFuc2l0aW9uLWFsbCB0ZXh0LXNtJyxcbiAgICAgICAgICBpc0FjdGl2ZSgnL2JhY2tvZmZpY2UvcHVyY2hhc2Utc3RhdHMnKSA/ICd0ZXh0LXByaW1hcnkgZm9udC1zZW1pYm9sZCcgOiAnJ1xuICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgdi1pZj1cImlzQWN0aXZlKCcvYmFja29mZmljZS9wdXJjaGFzZS1zdGF0cycpXCIgY2xhc3M9XCJzaXplLTIgYmctcHJpbWFyeSBtci0yIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxuICAgICAgICAgIDxDaGFydExpbmUgc2l6ZT1cIjE2XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGNsYXNzPVwibXItMlwiIC8+IFN0YXRpc3RpcXVlcyBkJ2FjaGF0c1xuICAgICAgICA8L2E+XG4gICAgICAgIDxhXG4gICAgICAgICAgICBocmVmPVwiL2JhY2tvZmZpY2UvZGVtby1jb252ZXJzaW9uXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAnZmxleCBpdGVtcy1jZW50ZXIgcHktMSBob3ZlcjpwbC0xIHRyYW5zaXRpb24tYWxsIHRleHQtc20nLFxuICAgICAgICAgIGlzQWN0aXZlKCcvYmFja29mZmljZS9kZW1vLWNvbnZlcnNpb24nKSA/ICd0ZXh0LXByaW1hcnkgZm9udC1zZW1pYm9sZCcgOiAnJ1xuICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgdi1pZj1cImlzQWN0aXZlKCcvYmFja29mZmljZS9kZW1vLWNvbnZlcnNpb24nKVwiIGNsYXNzPVwic2l6ZS0yIGJnLXByaW1hcnkgbXItMiByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cbiAgICAgICAgICA8Q2hhcnRMaW5lIHNpemU9XCIxNlwiIHN0cm9rZS13aWR0aD1cIjJcIiBjbGFzcz1cIm1yLTJcIiAvPiBDb252ZXJzaW9uIGTDqW1vc1xuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm10LThcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWdyYXktOTAwIG9wYWNpdHktNzAgdGV4dC14cyB0cmFja2luZy10aWdodGVyIG1iLTNcIj5QYXJhbcOpdHJhZ2VzPC9zcGFuPlxuICAgICAgICA8YVxuICAgICAgICAgICAgaHJlZj1cIi9iYWNrb2ZmaWNlL3BhcmFtZXRyZXNcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICdmbGV4IGl0ZW1zLWNlbnRlciBtYi0yIHB5LTEgaG92ZXI6cGwtMSB0cmFuc2l0aW9uLWFsbCB0ZXh0LXNtJyxcbiAgICAgICAgICBpc0FjdGl2ZSgnL2JhY2tvZmZpY2UvcGFyYW1ldHJlcycpID8gJ3RleHQtcHJpbWFyeSBmb250LXNlbWlib2xkJyA6ICcnXG4gICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiB2LWlmPVwiaXNBY3RpdmUoJy9iYWNrb2ZmaWNlL3BhcmFtZXRyZXMnKVwiIGNsYXNzPVwic2l6ZS0yIGJnLXByaW1hcnkgbXItMiByb3VuZGVkLWZ1bGxcIj48L2Rpdj5cbiAgICAgICAgICA8Q29nIHNpemU9XCIxNlwiIHN0cm9rZS13aWR0aD1cIjJcIiBjbGFzcz1cIm1yLTJcIiAvPiBQYXJhbcOpdHJlcyBnw6luw6lyYXV4XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCIvYmFja29mZmljZS9mYXFzXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAnZmxleCBpdGVtcy1jZW50ZXIgbWItMiBweS0xIGhvdmVyOnBsLTEgdHJhbnNpdGlvbi1hbGwgdGV4dC1zbScsXG4gICAgICAgICAgaXNBY3RpdmUoJy9iYWNrb2ZmaWNlL2ZhcXMnKSA/ICd0ZXh0LXByaW1hcnkgZm9udC1zZW1pYm9sZCcgOiAnJ1xuICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgdi1pZj1cImlzQWN0aXZlKCcvYmFja29mZmljZS9mYXFzJylcIiBjbGFzcz1cInNpemUtMiBiZy1wcmltYXJ5IG1yLTIgcm91bmRlZC1mdWxsXCI+PC9kaXY+XG4gICAgICAgICAgPEJhZGdlUXVlc3Rpb25NYXJrIHNpemU9XCIxNlwiIHN0cm9rZS13aWR0aD1cIjJcIiBjbGFzcz1cIm1yLTJcIiAvPiBGQVFzXG4gICAgICAgIDwvYT5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCIvYmFja29mZmljZS9sb2dzXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAnZmxleCBpdGVtcy1jZW50ZXIgcHktMSBob3ZlcjpwbC0xIHRyYW5zaXRpb24tYWxsIHRleHQtc20nLFxuICAgICAgICAgIGlzQWN0aXZlKCcvYmFja29mZmljZS9sb2dzJykgPyAndGV4dC1wcmltYXJ5IGZvbnQtc2VtaWJvbGQnIDogJydcbiAgICAgICAgXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IHYtaWY9XCJpc0FjdGl2ZSgnL2JhY2tvZmZpY2UvbG9ncycpXCIgY2xhc3M9XCJzaXplLTIgYmctcHJpbWFyeSBtci0yIHJvdW5kZWQtZnVsbFwiPjwvZGl2PlxuICAgICAgICAgIDxUZXJtaW5hbCBzaXplPVwiMTZcIiBzdHJva2Utd2lkdGg9XCIyXCIgY2xhc3M9XCJtci0yXCIgLz4gTG9nc1xuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYmctd2hpdGUgYm9yZGVyLTEgYm9yZGVyLWdyYXktMTAwIHAtNCByb3VuZGVkLW1kIHNoYWRvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgbWItM1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZWRpdW0gLW1iLTFcIj5CaWVudmVudWUgPHNwYW4gY2xhc3M9XCJ0ZXh0LXByaW1hcnlcIj57eyBwcmVub20gfX08L3NwYW4+LDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC14cyB0ZXh0LWdyYXktNTAwIGZvbnQtbWVkaXVtIHRyYWNraW5nLXRpZ2h0XCI+e3sgZW1haWwgfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGEgaHJlZj1cIiNcIiBjbGFzcz1cImJnLWdyYXktMTAwIGJsb2NrIHAtMyByb3VuZGVkLW1kIGZvbnQtc2VtaWJvbGQgdGV4dC1zbSB0ZXh0LWNlbnRlclwiPlxuICAgICAgICBEZWNvbm5leGlvblxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IHNldHVwPlxuICBpbXBvcnQgeyBIb3VzZSwgU2VhcmNoLCBVc2VycywgVGFncywgS2V5Um91bmQsIENvZywgQmFkZ2VRdWVzdGlvbk1hcmssIFRlcm1pbmFsLCBNZWdhcGhvbmUsIENoYXJ0TGluZSB9IGZyb20gJ2x1Y2lkZS12dWUtbmV4dCc7XG4gIGltcG9ydCB7cmVmLCBjb21wdXRlZCwgb25Nb3VudGVkfSBmcm9tICd2dWUnO1xuICBpbXBvcnQgQ29tbWFuZCBmcm9tIFwiLi4vQWRtaW5pc3RyYXRpb24vQ29tbWFuZC52dWVcIjtcblxuICBjb25zdCB7IGVtYWlsLCBwcmVub20gfSA9IGRlZmluZVByb3BzKFtcImVtYWlsXCIsIFwicHJlbm9tXCJdKTtcbiAgY29uc3QgY3VycmVudFBhdGggPSByZWYod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKTtcblxuICBjb25zdCBoYXNTdWJQYXRoID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBjdXJyZW50UGF0aC52YWx1ZSAhPT0gJy9iYWNrb2ZmaWNlJyAmJiBjdXJyZW50UGF0aC52YWx1ZS5zdGFydHNXaXRoKCcvYmFja29mZmljZScpO1xuICB9KTtcblxuICBjb25zdCBpc0FjdGl2ZSA9IChwYXRoKSA9PiB7XG4gICAgcmV0dXJuIGN1cnJlbnRQYXRoLnZhbHVlLnN0YXJ0c1dpdGgocGF0aCk7XG4gIH07XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi5saW5rLWFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmM2Y0ZjY7XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgbXgtWzV2d10gbXktWzMwcHhdXCI+XG4gICAgPCEtLSBIZWFkZXIgQmFubmVyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSAtaW5zZXQtMiByb3VuZGVkLVtjYWxjKHZhcigtLXJhZGl1cy14bCkrY2FsYyh2YXIoLS1zcGFjaW5nKSoyKSldIHNoYWRvdy14cyByaW5nLTEgcmluZy1ibGFjay81XCIgLz5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGJnLWN1c3RvbS1wYXR0ZXJuIHJvdW5kZWQteGwgc2hhZG93LTJ4bCByaW5nLTEgcmluZy13aGl0ZS8xMCBwLVs0MHB4XVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInctWzE2MHB4XVwiPlxuICAgICAgICA8aW1nIGFsdD1cIlwiIHNyYz1cIi9yZXMvaW1hZ2VzL2xvZ28ucG5nXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtd2hpdGVcIj5cbiAgICAgICAgPGgxIGNsYXNzPVwidGV4dC0yeGwgZm9udC1ib2xkXCI+VGFibGVhdSBkZSBib3JkIGQnYWRtaW5pc3RyYXRpb248L2gxPlxuICAgICAgICA8cCBjbGFzcz1cInRleHQtZ3JheS0zMDAgdGV4dC1yaWdodFwiPkJpZW52ZW51ZSBkYW5zIGwnaW50ZXJmYWNlIGQnYWRtaW5pc3RyYXRpb248L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJteC1bNXZ3XSBteS1bMzBweF1cIj5cbiAgICA8IS0tIFF1aWNrIEFjdGlvbnMgU2VjdGlvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibXQtOFwiPlxuICAgICAgPERhc2hib2FyZFF1aWNrQWN0aW9ucyAvPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBNYWluIENvbnRlbnQgLS0+XG4gICAgPGRpdiBjbGFzcz1cIm10LTggZ3JpZCBncmlkLWNvbHMtMSBnYXAtNiBsZzpncmlkLWNvbHMtM1wiPlxuICAgICAgPCEtLSBMZWZ0IENvbHVtbjogU3RhdGlzdGljcyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJsZzpjb2wtc3Bhbi0xXCI+XG4gICAgICAgIDxEYXNoYm9hcmRTdGF0cyAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gUmlnaHQgQ29sdW1uOiBBY3Rpdml0eSBMb2dzIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImxnOmNvbC1zcGFuLTJcIj5cbiAgICAgICAgPERhc2hib2FyZEFjdGl2aXR5TG9ncyAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEFkZGl0aW9uYWwgQ2FyZHMgU2VjdGlvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibXQtOCBncmlkIGdyaWQtY29scy0xIGdhcC02IHNtOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy00XCI+XG4gICAgICA8IS0tIFN1cHBvcnQgQ2FyZCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1sZyBiZy13aGl0ZSBzaGFkb3cgcmluZy0xIHJpbmctZ3JheS0yMDAgaG92ZXI6cmluZy1jeWFuLTMwMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInAtNVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtc2hyaW5rLTBcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMTIgdy0xMiByb3VuZGVkLWxnIGJnLWdyYWRpZW50LXRvLWJyIGZyb20tY3lhbi01MDAgdG8tYmx1ZS02MDAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC02IHctNiB0ZXh0LXdoaXRlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiPlxuICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGQ9XCJNOCAxMGguMDFNMTIgMTBoLjAxTTE2IDEwaC4wMU05IDE2SDVhMiAyIDAgMDEtMi0yVjZhMiAyIDAgMDEyLTJoMTRhMiAyIDAgMDEyIDJ2OGEyIDIgMCAwMS0yIDJoLTVsLTUgNXYtNXpcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTUgdy0wIGZsZXgtMVwiPlxuICAgICAgICAgICAgICA8ZGw+XG4gICAgICAgICAgICAgICAgPGR0IGNsYXNzPVwidHJ1bmNhdGUgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNTAwXCI+U3VwcG9ydDwvZHQ+XG4gICAgICAgICAgICAgICAgPGRkPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbGcgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMFwiPkdlc3Rpb24gZGVzIHRpY2tldHM8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2RkPlxuICAgICAgICAgICAgICA8L2RsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1jeWFuLTUwIHRvLWJsdWUtNTAgcHgtNSBweS0zIGJvcmRlci10IGJvcmRlci1jeWFuLTEwMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtXCI+XG4gICAgICAgICAgICA8YSBocmVmPVwiL2JhY2tvZmZpY2Uvc3VwcG9ydFwiIGNsYXNzPVwiZm9udC1tZWRpdW0gdGV4dC1jeWFuLTcwMCBob3Zlcjp0ZXh0LWN5YW4tOTAwIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBncm91cFwiPlxuICAgICAgICAgICAgICBBY2PDqWRlclxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwibWwtMiBoLTQgdy00IGdyb3VwLWhvdmVyOnRyYW5zbGF0ZS14LTEgdHJhbnNpdGlvbi10cmFuc2Zvcm1cIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCIyXCIgZD1cIk05IDVsNyA3LTcgN1wiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIExpY2VuY2VzIENhcmQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwib3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbGcgYmctd2hpdGUgc2hhZG93IHJpbmctMSByaW5nLWdyYXktMjAwIGhvdmVyOnJpbmctaW5kaWdvLTMwMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInAtNVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtc2hyaW5rLTBcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMTIgdy0xMiByb3VuZGVkLWxnIGJnLWdyYWRpZW50LXRvLWJyIGZyb20taW5kaWdvLTUwMCB0by1wdXJwbGUtNjAwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtNiB3LTYgdGV4dC13aGl0ZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIj5cbiAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZS13aWR0aD1cIjJcIiBkPVwiTTE1IDV2Mm0wIDR2Mm0wIDR2Mk01IDVhMiAyIDAgMDAtMiAydjNhMiAyIDAgMTEwIDR2M2EyIDIgMCAwMDIgMmgxNGEyIDIgMCAwMDItMnYtM2EyIDIgMCAxMTAtNFY3YTIgMiAwIDAwLTItMkg1elwiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtNSB3LTAgZmxleC0xXCI+XG4gICAgICAgICAgICAgIDxkbD5cbiAgICAgICAgICAgICAgICA8ZHQgY2xhc3M9XCJ0cnVuY2F0ZSB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDBcIj5MaWNlbmNlczwvZHQ+XG4gICAgICAgICAgICAgICAgPGRkPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbGcgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMFwiPkdlc3Rpb24gZGVzIGxpY2VuY2VzPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kZD5cbiAgICAgICAgICAgICAgPC9kbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJnLWdyYWRpZW50LXRvLWJyIGZyb20taW5kaWdvLTUwIHRvLXB1cnBsZS01MCBweC01IHB5LTMgYm9yZGVyLXQgYm9yZGVyLWluZGlnby0xMDBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbVwiPlxuICAgICAgICAgICAgPGEgaHJlZj1cIi9hZG1pbmlzdHJhdGlvbi9saWNlbmNlc1wiIGNsYXNzPVwiZm9udC1tZWRpdW0gdGV4dC1pbmRpZ28tNzAwIGhvdmVyOnRleHQtaW5kaWdvLTkwMCBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ3JvdXBcIj5cbiAgICAgICAgICAgICAgQWNjw6lkZXJcbiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cIm1sLTIgaC00IHctNCBncm91cC1ob3Zlcjp0cmFuc2xhdGUteC0xIHRyYW5zaXRpb24tdHJhbnNmb3JtXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGQ9XCJNOSA1bDcgNy03IDdcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBQbHVnaW4gVmVyc2lvbnMgQ2FyZCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1sZyBiZy13aGl0ZSBzaGFkb3cgcmluZy0xIHJpbmctZ3JheS0yMDAgaG92ZXI6cmluZy1ncmVlbi0zMDAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTEyIHctMTIgcm91bmRlZC1sZyBiZy1ncmFkaWVudC10by1iciBmcm9tLWdyZWVuLTUwMCB0by1lbWVyYWxkLTYwMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTYgdy02IHRleHQtd2hpdGVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCIyXCIgZD1cIk05IDVIN2EyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJoMTBhMiAyIDAgMDAyLTJWN2EyIDIgMCAwMC0yLTJoLTJNOSA1YTIgMiAwIDAwMiAyaDJhMiAyIDAgMDAyLTJNOSA1YTIgMiAwIDAxMi0yaDJhMiAyIDAgMDEyIDJcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTUgdy0wIGZsZXgtMVwiPlxuICAgICAgICAgICAgICA8ZGw+XG4gICAgICAgICAgICAgICAgPGR0IGNsYXNzPVwidHJ1bmNhdGUgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNTAwXCI+VmVyc2lvbnMgZHUgUGx1Z2luPC9kdD5cbiAgICAgICAgICAgICAgICA8ZGQ+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZyBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCI+R2VzdGlvbiBkZXMgdmVyc2lvbnM8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2RkPlxuICAgICAgICAgICAgICA8L2RsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1ncmVlbi01MCB0by1lbWVyYWxkLTUwIHB4LTUgcHktMyBib3JkZXItdCBib3JkZXItZ3JlZW4tMTAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc21cIj5cbiAgICAgICAgICAgIDxhIGhyZWY9XCIvYWRtaW5pc3RyYXRpb24vcGx1Z2luLXZlcnNpb25zXCIgY2xhc3M9XCJmb250LW1lZGl1bSB0ZXh0LWdyZWVuLTcwMCBob3Zlcjp0ZXh0LWdyZWVuLTkwMCBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ3JvdXBcIj5cbiAgICAgICAgICAgICAgQWNjw6lkZXJcbiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cIm1sLTIgaC00IHctNCBncm91cC1ob3Zlcjp0cmFuc2xhdGUteC0xIHRyYW5zaXRpb24tdHJhbnNmb3JtXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGQ9XCJNOSA1bDcgNy03IDdcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBBY3Rpdml0eSBMb2dzIENhcmQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwib3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtbGcgYmctd2hpdGUgc2hhZG93IHJpbmctMSByaW5nLWdyYXktMjAwIGhvdmVyOnJpbmctcHVycGxlLTMwMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInAtNVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtc2hyaW5rLTBcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMTIgdy0xMiByb3VuZGVkLWxnIGJnLWdyYWRpZW50LXRvLWJyIGZyb20tcHVycGxlLTUwMCB0by1waW5rLTYwMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTYgdy02IHRleHQtd2hpdGVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCIyXCIgZD1cIk0xOSAxMUg1bTE0IDBhMiAyIDAgMDEyIDJ2NmEyIDIgMCAwMS0yIDJINWEyIDIgMCAwMS0yLTJ2LTZhMiAyIDAgMDEyLTJtMTQgMFY5YTIgMiAwIDAwLTItMk01IDExVjlhMiAyIDAgMDEyLTJtMCAwVjVhMiAyIDAgMDEyLTJoNmEyIDIgMCAwMTIgMnYyTTcgN2gxMFwiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtNSB3LTAgZmxleC0xXCI+XG4gICAgICAgICAgICAgIDxkbD5cbiAgICAgICAgICAgICAgICA8ZHQgY2xhc3M9XCJ0cnVuY2F0ZSB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDBcIj5Mb2dzIGQnYWN0aXZpdMOpPC9kdD5cbiAgICAgICAgICAgICAgICA8ZGQ+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZyBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCI+SGlzdG9yaXF1ZSBkZXMgYWN0aW9uczwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGQ+XG4gICAgICAgICAgICAgIDwvZGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJiZy1ncmFkaWVudC10by1iciBmcm9tLXB1cnBsZS01MCB0by1waW5rLTUwIHB4LTUgcHktMyBib3JkZXItdCBib3JkZXItcHVycGxlLTEwMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtXCI+XG4gICAgICAgICAgICA8YSBocmVmPVwiL2FkbWluaXN0cmF0aW9uL2xvZ3NcIiBjbGFzcz1cImZvbnQtbWVkaXVtIHRleHQtcHVycGxlLTcwMCBob3Zlcjp0ZXh0LXB1cnBsZS05MDAgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdyb3VwXCI+XG4gICAgICAgICAgICAgIEFjY8OpZGVyXG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJtbC0yIGgtNCB3LTQgZ3JvdXAtaG92ZXI6dHJhbnNsYXRlLXgtMSB0cmFuc2l0aW9uLXRyYW5zZm9ybVwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZS13aWR0aD1cIjJcIiBkPVwiTTkgNWw3IDctNyA3XCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBzZXR1cD5cbmltcG9ydCBEYXNoYm9hcmRRdWlja0FjdGlvbnMgZnJvbSAnLi9EYXNoYm9hcmRRdWlja0FjdGlvbnMudnVlJztcbmltcG9ydCBEYXNoYm9hcmRTdGF0cyBmcm9tICcuL0Rhc2hib2FyZFN0YXRzLnZ1ZSc7XG5pbXBvcnQgRGFzaGJvYXJkQWN0aXZpdHlMb2dzIGZyb20gJy4vRGFzaGJvYXJkQWN0aXZpdHlMb2dzLnZ1ZSc7XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLmJnLWN1c3RvbS1wYXR0ZXJuIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMkEwRTBFO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHJhZGlhbC1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSkgMS41cHgsIHRyYW5zcGFyZW50IDApO1xuICAgIGJhY2tncm91bmQtc2l6ZTogMjBweCAyMHB4O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IC01cHggLTVweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cIm14LWF1dG8gcHgtNCBzbTpweC02IGxnOnB4LThcIj5cbiAgICA8ZGl2IGNsYXNzPVwic206ZmxleCBzbTppdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzbTpmbGV4LWF1dG9cIj5cbiAgICAgICAgPGgxIGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtc2VtaWJvbGQgbGVhZGluZy02IHRleHQtZ3JheS05MDBcIj5UYWJsZWF1IGRlIGJvcmQ8L2gxPlxuICAgICAgICA8cCBjbGFzcz1cIm10LTIgdGV4dC1zbSB0ZXh0LWdyYXktNzAwXCI+VnVlIGQnZW5zZW1ibGUgZGUgbCdhY3Rpdml0w6kgZXQgYWNjw6hzIHJhcGlkZSBhdXggcHJpbmNpcGFsZXMgc2VjdGlvbnMuPC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibXQtNCBzbTptdC0wIHNtOm1sLWF1dG8gc206ZmxleC1ub25lXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCBiZy13aGl0ZSBweC0zIHB5LTIgdGV4dC1zbSB0ZXh0LWdyYXktNjAwIGhvdmVyOmJnLWdyYXktNTAgaG92ZXI6dGV4dC1ncmF5LTgwMCBzaGFkb3ctc21cIlxuICAgICAgICAgIEBjbGljaz1cInNob3dTZW5zaXRpdmUgPSAhc2hvd1NlbnNpdGl2ZVwiXG4gICAgICAgICAgOmFyaWEtcHJlc3NlZD1cInNob3dTZW5zaXRpdmUgPyAndHJ1ZScgOiAnZmFsc2UnXCJcbiAgICAgICAgICA6dGl0bGU9XCJzaG93U2Vuc2l0aXZlID8gJ01hc3F1ZXIgbGVzIGluZm9ybWF0aW9ucyBzZW5zaWJsZXMnIDogJ0FmZmljaGVyIGxlcyBpbmZvcm1hdGlvbnMgc2Vuc2libGVzJ1wiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5CYXNjdWxlciBsYSB2aXNpYmlsaXTDqSBkZXMgaW5mb3JtYXRpb25zIHNlbnNpYmxlczwvc3Bhbj5cbiAgICAgICAgICA8c3ZnIHYtaWY9XCIhc2hvd1NlbnNpdGl2ZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cImgtNSB3LTUgdGV4dC1ncmF5LTUwMFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPlxuICAgICAgICAgICAgPCEtLSBFeWUgd2l0aCBzbGFzaCAoZmVybcOpZSBwYXIgZMOpZmF1dCkgLS0+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTMuOTggOC4yMjNBMTAuNDc3IDEwLjQ3NyAwIDAgMCAxLjkzNCAxMkMzLjIyNiAxNS4zMzggNi45MSAxOC4yNSAxMiAxOC4yNWMxLjU2NSAwIDIuOTktLjI3NyA0LjI1Ni0uNzdNNi4yMjggNi4yMjhBMTAuNDUxIDEwLjQ1MSAwIDAgMSAxMiA1Ljc1YzUuMDkgMCA4Ljc3NCAyLjkxMiAxMC4wNjYgNi4yNWExMC41MiAxMC41MiAwIDAgMS0yLjE5MyAzLjIzTTMgM2wxOCAxOFwiLz5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNOS44OCA5Ljg4YTMgMyAwIDAgMCA0LjI0IDQuMjRcIi8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPHN2ZyB2LWVsc2UgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzPVwiaC01IHctNSB0ZXh0LWdyYXktNzAwXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+XG4gICAgICAgICAgICA8IS0tIEV5ZSBvcGVuIC0tPlxuICAgICAgICAgICAgPHBhdGggZD1cIk0xLjkzNCAxMkMzLjIyNiA4LjY2MiA2LjkxIDUuNzUgMTIgNS43NXM4Ljc3NCAyLjkxMiAxMC4wNjYgNi4yNUMyMC43NzQgMTUuMzM4IDE3LjA5IDE4LjI1IDEyIDE4LjI1UzMuMjI2IDE1LjMzOCAxLjkzNCAxMlpcIi8+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjNcIi8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJoaWRkZW4gc206aW5saW5lXCI+e3sgc2hvd1NlbnNpdGl2ZSA/ICdNYXNxdWVyJyA6ICdBZmZpY2hlcicgfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYmctd2hpdGUgcHktMTJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJteC1hdXRvIG1heC13LTd4bCBweC02IGxnOnB4LThcIj5cbiAgICAgICAgPGRsIGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAteC04IGdhcC15LTE2IHRleHQtY2VudGVyIGxnOmdyaWQtY29scy0zXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm14LWF1dG8gZmxleCBtYXgtdy14cyBmbGV4LWNvbCBnYXAteS00XCI+XG4gICAgICAgICAgICA8ZHQgY2xhc3M9XCJ0ZXh0LWJhc2UvNyB0ZXh0LWdyYXktNjAwXCI+Q0EgdG90YWw8L2R0PlxuICAgICAgICAgICAgPGRkIGNsYXNzPVwib3JkZXItZmlyc3QgdGV4dC0zeGwgZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodCB0ZXh0LWdyYXktOTAwIHNtOnRleHQtNXhsXCI+e3sgbG9hZGluZyA/ICcuLi4nIDogbWFza2VkKHN0YXRzLm92ZXJ2aWV3LnRvdGFsUmV2ZW51ZUNlbnRzIHx8IDAsIGZvcm1hdEV1cm8sIHRydWUpIH19PC9kZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtYXV0byBmbGV4IG1heC13LXhzIGZsZXgtY29sIGdhcC15LTRcIj5cbiAgICAgICAgICAgIDxkdCBjbGFzcz1cInRleHQtYmFzZS83IHRleHQtZ3JheS02MDBcIj5DQSA3IGpvdXJzPC9kdD5cbiAgICAgICAgICAgIDxkZCBjbGFzcz1cIm9yZGVyLWZpcnN0IHRleHQtM3hsIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHQgdGV4dC1ncmF5LTkwMCBzbTp0ZXh0LTV4bFwiPnt7IGxvYWRpbmcgPyAnLi4uJyA6IG1hc2tlZChzdGF0cy5vdmVydmlldy5yZXZlbnVlN0RheXNDZW50cyB8fCAwLCBmb3JtYXRFdXJvLCB0cnVlKSB9fTwvZGQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm14LWF1dG8gZmxleCBtYXgtdy14cyBmbGV4LWNvbCBnYXAteS00XCI+XG4gICAgICAgICAgICA8ZHQgY2xhc3M9XCJ0ZXh0LWJhc2UvNyB0ZXh0LWdyYXktNjAwXCI+Q0EgYXVqb3VyZCdodWk8L2R0PlxuICAgICAgICAgICAgPGRkIGNsYXNzPVwib3JkZXItZmlyc3QgdGV4dC0zeGwgZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodCB0ZXh0LWdyYXktOTAwIHNtOnRleHQtNXhsXCI+e3sgbG9hZGluZyA/ICcuLi4nIDogbWFza2VkKHN0YXRzLm92ZXJ2aWV3LnJldmVudWVUb2RheUNlbnRzIHx8IDAsIGZvcm1hdEV1cm8sIHRydWUpIH19PC9kZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kbD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgc206Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTRcIj5cbiAgICAgIDwhLS0gU3VwcG9ydCBDYXJkIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm92ZXJmbG93LWhpZGRlbiByb3VuZGVkLWwtbGcgYmctd2hpdGUgcmluZy1ncmF5LTIwMCBob3ZlcjpyaW5nLWN5YW4tMzAwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicC01XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1zaHJpbmstMFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMiB3LTEyIHJvdW5kZWQtbGcgYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1jeWFuLTUwMCB0by1ibHVlLTYwMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTYgdy02IHRleHQtd2hpdGVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCIyXCIgZD1cIk04IDEwaC4wMU0xMiAxMGguMDFNMTYgMTBoLjAxTTkgMTZINWEyIDIgMCAwMS0yLTJWNmEyIDIgMCAwMTItMmgxNGEyIDIgMCAwMTIgMnY4YTIgMiAwIDAxLTIgMmgtNWwtNSA1di01elwiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtNSB3LTAgZmxleC0xXCI+XG4gICAgICAgICAgICAgIDxkbD5cbiAgICAgICAgICAgICAgICA8ZHQgY2xhc3M9XCJ0cnVuY2F0ZSB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDBcIj5TdXBwb3J0PC9kdD5cbiAgICAgICAgICAgICAgICA8ZGQ+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZyBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCI+R2VzdGlvbiBkZXMgdGlja2V0czwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGQ+XG4gICAgICAgICAgICAgIDwvZGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJiZy1ncmFkaWVudC10by1iciBmcm9tLWN5YW4tNTAgdG8tYmx1ZS01MCBweC01IHB5LTMgYm9yZGVyLXQgYm9yZGVyLWN5YW4tMTAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc21cIj5cbiAgICAgICAgICAgIDxhIGhyZWY9XCIvYmFja29mZmljZS9zdXBwb3J0XCIgY2xhc3M9XCJmb250LW1lZGl1bSB0ZXh0LWN5YW4tNzAwIGhvdmVyOnRleHQtY3lhbi05MDAgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdyb3VwXCI+XG4gICAgICAgICAgICAgIEFjY8OpZGVyXG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJtbC0yIGgtNCB3LTQgZ3JvdXAtaG92ZXI6dHJhbnNsYXRlLXgtMSB0cmFuc2l0aW9uLXRyYW5zZm9ybVwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZS13aWR0aD1cIjJcIiBkPVwiTTkgNWw3IDctNyA3XCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gTGljZW5jZXMgQ2FyZCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJvdmVyZmxvdy1oaWRkZW4gYmctd2hpdGUgcmluZy1ncmF5LTIwMCBob3ZlcjpyaW5nLWluZGlnby0zMDAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTEyIHctMTIgcm91bmRlZC1sZyBiZy1ncmFkaWVudC10by1iciBmcm9tLWluZGlnby01MDAgdG8tcHVycGxlLTYwMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTYgdy02IHRleHQtd2hpdGVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCIyXCIgZD1cIk0xNSA1djJtMCA0djJtMCA0djJNNSA1YTIgMiAwIDAwLTIgMnYzYTIgMiAwIDExMCA0djNhMiAyIDAgMDAyIDJoMTRhMiAyIDAgMDAyLTJ2LTNhMiAyIDAgMTEwLTRWN2EyIDIgMCAwMC0yLTJINXpcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTUgdy0wIGZsZXgtMVwiPlxuICAgICAgICAgICAgICA8ZGw+XG4gICAgICAgICAgICAgICAgPGR0IGNsYXNzPVwidHJ1bmNhdGUgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNTAwXCI+TGljZW5jZXM8L2R0PlxuICAgICAgICAgICAgICAgIDxkZD5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDBcIj5HZXN0aW9uIGRlcyBsaWNlbmNlczwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGQ+XG4gICAgICAgICAgICAgIDwvZGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJiZy1ncmFkaWVudC10by1iciBmcm9tLWluZGlnby01MCB0by1wdXJwbGUtNTAgcHgtNSBweS0zIGJvcmRlci10IGJvcmRlci1pbmRpZ28tMTAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc21cIj5cbiAgICAgICAgICAgIDxhIGhyZWY9XCIvYmFja29mZmljZS9saWNlbmNlc1wiIGNsYXNzPVwiZm9udC1tZWRpdW0gdGV4dC1pbmRpZ28tNzAwIGhvdmVyOnRleHQtaW5kaWdvLTkwMCBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ3JvdXBcIj5cbiAgICAgICAgICAgICAgQWNjw6lkZXJcbiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cIm1sLTIgaC00IHctNCBncm91cC1ob3Zlcjp0cmFuc2xhdGUteC0xIHRyYW5zaXRpb24tdHJhbnNmb3JtXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGQ9XCJNOSA1bDcgNy03IDdcIiAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBQbHVnaW4gVmVyc2lvbnMgQ2FyZCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJvdmVyZmxvdy1oaWRkZW4gYmctd2hpdGUgcmluZy1ncmF5LTIwMCBob3ZlcjpyaW5nLWdyZWVuLTMwMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInAtNVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtc2hyaW5rLTBcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMTIgdy0xMiByb3VuZGVkLWxnIGJnLWdyYWRpZW50LXRvLWJyIGZyb20tZ3JlZW4tNTAwIHRvLWVtZXJhbGQtNjAwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtNiB3LTYgdGV4dC13aGl0ZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIj5cbiAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZS13aWR0aD1cIjJcIiBkPVwiTTkgNUg3YTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMDIgMmgxMGEyIDIgMCAwMDItMlY3YTIgMiAwIDAwLTItMmgtMk05IDVhMiAyIDAgMDAyIDJoMmEyIDIgMCAwMDItMk05IDVhMiAyIDAgMDEyLTJoMmEyIDIgMCAwMTIgMlwiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtNSB3LTAgZmxleC0xXCI+XG4gICAgICAgICAgICAgIDxkbD5cbiAgICAgICAgICAgICAgICA8ZHQgY2xhc3M9XCJ0cnVuY2F0ZSB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDBcIj5WZXJzaW9ucyBkdSBQbHVnaW48L2R0PlxuICAgICAgICAgICAgICAgIDxkZD5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDBcIj5HZXN0aW9uIGRlcyB2ZXJzaW9uczwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGQ+XG4gICAgICAgICAgICAgIDwvZGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJiZy1ncmFkaWVudC10by1iciBmcm9tLWdyZWVuLTUwIHRvLWVtZXJhbGQtNTAgcHgtNSBweS0zIGJvcmRlci10IGJvcmRlci1ncmVlbi0xMDBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbVwiPlxuICAgICAgICAgICAgPGEgaHJlZj1cIi9iYWNrb2ZmaWNlL3BsdWdpbi12ZXJzaW9uc1wiIGNsYXNzPVwiZm9udC1tZWRpdW0gdGV4dC1ncmVlbi03MDAgaG92ZXI6dGV4dC1ncmVlbi05MDAgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdyb3VwXCI+XG4gICAgICAgICAgICAgIEFjY8OpZGVyXG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJtbC0yIGgtNCB3LTQgZ3JvdXAtaG92ZXI6dHJhbnNsYXRlLXgtMSB0cmFuc2l0aW9uLXRyYW5zZm9ybVwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZS13aWR0aD1cIjJcIiBkPVwiTTkgNWw3IDctNyA3XCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gQWN0aXZpdHkgTG9ncyBDYXJkIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm92ZXJmbG93LWhpZGRlbiByb3VuZGVkLXItbGcgYmctd2hpdGUgcmluZy1ncmF5LTIwMCBob3ZlcjpyaW5nLXB1cnBsZS0zMDAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXNocmluay0wXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTEyIHctMTIgcm91bmRlZC1sZyBiZy1ncmFkaWVudC10by1iciBmcm9tLXB1cnBsZS01MDAgdG8tcGluay02MDAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC02IHctNiB0ZXh0LXdoaXRlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiPlxuICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGQ9XCJNMTkgMTFINW0xNCAwYTIgMiAwIDAxMiAydjZhMiAyIDAgMDEtMiAySDVhMiAyIDAgMDEtMi0ydi02YTIgMiAwIDAxMi0ybTE0IDBWOWEyIDIgMCAwMC0yLTJNNSAxMVY5YTIgMiAwIDAxMi0ybTAgMFY1YTIgMiAwIDAxMi0yaDZhMiAyIDAgMDEyIDJ2Mk03IDdoMTBcIiAvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTUgdy0wIGZsZXgtMVwiPlxuICAgICAgICAgICAgICA8ZGw+XG4gICAgICAgICAgICAgICAgPGR0IGNsYXNzPVwidHJ1bmNhdGUgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNTAwXCI+TG9ncyBkJ2FjdGl2aXTDqTwvZHQ+XG4gICAgICAgICAgICAgICAgPGRkPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbGcgZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMFwiPkhpc3RvcmlxdWUgZGVzIGFjdGlvbnM8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2RkPlxuICAgICAgICAgICAgICA8L2RsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1wdXJwbGUtNTAgdG8tcGluay01MCBweC01IHB5LTMgYm9yZGVyLXQgYm9yZGVyLXB1cnBsZS0xMDBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbVwiPlxuICAgICAgICAgICAgPGEgaHJlZj1cIi9iYWNrb2ZmaWNlL2xvZ3NcIiBjbGFzcz1cImZvbnQtbWVkaXVtIHRleHQtcHVycGxlLTcwMCBob3Zlcjp0ZXh0LXB1cnBsZS05MDAgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdyb3VwXCI+XG4gICAgICAgICAgICAgIEFjY8OpZGVyXG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJtbC0yIGgtNCB3LTQgZ3JvdXAtaG92ZXI6dHJhbnNsYXRlLXgtMSB0cmFuc2l0aW9uLXRyYW5zZm9ybVwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZS13aWR0aD1cIjJcIiBkPVwiTTkgNWw3IDctNyA3XCIgLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYmctd2hpdGUgcHktNlwiPlxuICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAgPGRsIGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtMC41IG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLTJ4bCB0ZXh0LWNlbnRlciBzbTpncmlkLWNvbHMtMiBsZzpncmlkLWNvbHMtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgYmctZ3JheS00MDAvNSBwLThcIj5cbiAgICAgICAgICAgICAgPGR0IGNsYXNzPVwidGV4dC1zbS82IGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTYwMFwiPlV0aWxpc2F0ZXVyczwvZHQ+XG4gICAgICAgICAgICAgIDxkZCBjbGFzcz1cIm9yZGVyLWZpcnN0IHRleHQtM3hsIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHQgdGV4dC1ncmF5LTkwMFwiPnt7IGxvYWRpbmcgPyAnLi4uJyA6IG1hc2tlZCgoc3RhdHMub3ZlcnZpZXcudG90YWxVc2VycyA/PyAwKSkgfX08L2RkPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBiZy1ncmF5LTQwMC81IHAtOFwiPlxuICAgICAgICAgICAgICA8ZHQgY2xhc3M9XCJ0ZXh0LXNtLzYgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktNjAwXCI+TGljZW5jZXM8L2R0PlxuICAgICAgICAgICAgICA8ZGQgY2xhc3M9XCJvcmRlci1maXJzdCB0ZXh0LTN4bCBmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0IHRleHQtZ3JheS05MDBcIj57eyBsb2FkaW5nID8gJy4uLicgOiBtYXNrZWQoKHN0YXRzLm92ZXJ2aWV3LnRvdGFsTGljZW5jZXMgPz8gMCkpIH19PC9kZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgYmctZ3JheS00MDAvNSBwLThcIj5cbiAgICAgICAgICAgICAgPGR0IGNsYXNzPVwidGV4dC1zbS82IGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTYwMFwiPkTDqW1vcyBhY3RpdmVzPC9kdD5cbiAgICAgICAgICAgICAgPGRkIGNsYXNzPVwib3JkZXItZmlyc3QgdGV4dC0zeGwgZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodCB0ZXh0LWdyYXktOTAwXCI+e3sgbG9hZGluZyA/ICcuLi4nIDogbWFza2VkKChzdGF0cy5vdmVydmlldy5hY3RpdmVEZW1vcyA/PyAwKSkgfX08L2RkPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBiZy1ncmF5LTQwMC81IHAtOFwiPlxuICAgICAgICAgICAgICA8ZHQgY2xhc3M9XCJ0ZXh0LXNtLzYgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktNjAwXCI+RMOpbW9zIGF1am91cmQnaHVpPC9kdD5cbiAgICAgICAgICAgICAgPGRkIGNsYXNzPVwib3JkZXItZmlyc3QgdGV4dC0zeGwgZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodCB0ZXh0LWdyYXktOTAwXCI+e3sgbG9hZGluZyA/ICcuLi4nIDogbWFza2VkKChzdGF0cy5vdmVydmlldy5kZW1vc1RvZGF5ID8/IDApKSB9fTwvZGQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2RsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSA3LWRheSBjaGFydCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibXQtNiByb3VuZGVkLWxnIGJnLXdoaXRlIHAtNiBzaGFkb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgPGgzIGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtc2VtaWJvbGQgbGVhZGluZy02IHRleHQtZ3JheS05MDBcIj5Ew6ltb3MgYWN0aXbDqWVzIHBhciBqb3VyICg3IGpvdXJzKTwvaDM+XG4gICAgICAgIDxkaXYgdi1pZj1cIiFsb2FkaW5nXCIgY2xhc3M9XCJ0ZXh0LXNtIHRleHQtZ3JheS01MDBcIj5Ub3RhbDoge3sgbWFza2VkKHRvdGFsU2VyaWVzQ291bnQpIH19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtdC02XCIgdi1pZj1cIiFsb2FkaW5nXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGdyaWQtY29scy03IGdhcC0zIGl0ZW1zLWVuZFwiIHN0eWxlPVwiaGVpZ2h0OiAxNjBweDtcIj5cbiAgICAgICAgICA8ZGl2IHYtZm9yPVwiKHBvaW50LCBpZHgpIGluIHN0YXRzLnNlcmllc1wiIDprZXk9XCJpZHhcIiBjbGFzcz1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIHJvdW5kZWQtdCBiZy1wcmltYXJ5IHRyYW5zaXRpb24tYWxsXCIgOnN0eWxlPVwieyBoZWlnaHQ6IGJhckhlaWdodChwb2ludC5jb3VudCkgfVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgdGV4dC14cyB0ZXh0LWdyYXktNTAwXCI+e3sgZm9ybWF0RGF0ZShwb2ludC5kYXRlKSB9fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQteHMgdGV4dC1ncmF5LTkwMCBmb250LW1lZGl1bVwiPnt7IG1hc2tlZChwb2ludC5jb3VudCkgfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgdi1lbHNlIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHktMTAgdGV4dC1ncmF5LTUwMFwiPkNoYXJnZW1lbnQgZGVzIHN0YXRpc3RpcXVlcy4uLjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgc2V0dXA+XG5pbXBvcnQgeyBvbk1vdW50ZWQsIHJlYWN0aXZlLCByZWYsIGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuLy8gRXRhdCBsb2NhbCBwb3VyIG1hc3F1ZXIvYWZmaWNoZXIgbGVzIGluZm9ybWF0aW9ucyBzZW5zaWJsZXMgKG5vbiBwZXJzaXN0w6kpXG5jb25zdCBzaG93U2Vuc2l0aXZlID0gcmVmKGZhbHNlKTtcblxuY29uc3QgbG9hZGluZyA9IHJlZih0cnVlKTtcbmNvbnN0IHN0YXRzID0gcmVhY3RpdmUoe1xuICBvdmVydmlldzoge1xuICAgIHRvdGFsVXNlcnM6IDAsXG4gICAgdG90YWxMaWNlbmNlczogMCxcbiAgICBhY3RpdmVEZW1vczogMCxcbiAgICBkZW1vc1RvZGF5OiAwLFxuICAgIHRvdGFsUmV2ZW51ZUNlbnRzOiAwLFxuICAgIHJldmVudWVUb2RheUNlbnRzOiAwLFxuICAgIHJldmVudWU3RGF5c0NlbnRzOiAwLFxuICB9LFxuICBzZXJpZXM6IFtdLFxuICBtYXg6IDAsXG59KTtcblxuY29uc3QgZmV0Y2hTdGF0cyA9IGFzeW5jICgpID0+IHtcbiAgbG9hZGluZy52YWx1ZSA9IHRydWU7XG4gIHRyeSB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goJy9iYWNrb2ZmaWNlL2FwaS9zdGF0cy9kYXNoYm9hcmQnLCB7XG4gICAgICBoZWFkZXJzOiB7ICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgICAgIGNyZWRlbnRpYWxzOiAnc2FtZS1vcmlnaW4nLFxuICAgIH0pO1xuICAgIGlmICghcmVzLm9rKSB0aHJvdyBuZXcgRXJyb3IoJ0VycmV1ciBBUEknKTtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTtcbiAgICBzdGF0cy5vdmVydmlldyA9IGRhdGEub3ZlcnZpZXcgfHwgc3RhdHMub3ZlcnZpZXc7XG4gICAgc3RhdHMuc2VyaWVzID0gZGF0YS5zZXJpZXMgfHwgW107XG4gICAgc3RhdHMubWF4ID0gZGF0YS5tYXggfHwgMDtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0VycmV1ciBsb3JzIGR1IGNoYXJnZW1lbnQgZGVzIHN0YXRzJywgZSk7XG4gIH0gZmluYWxseSB7XG4gICAgbG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICB9XG59O1xuXG5jb25zdCB0b3RhbFNlcmllc0NvdW50ID0gY29tcHV0ZWQoKCkgPT4gc3RhdHMuc2VyaWVzLnJlZHVjZSgoYWNjLCBwKSA9PiBhY2MgKyAocC5jb3VudCB8fCAwKSwgMCkpO1xuXG5jb25zdCBiYXJIZWlnaHQgPSAoY291bnQpID0+IHtcbiAgY29uc3QgbWF4ID0gTWF0aC5tYXgoMSwgc3RhdHMubWF4IHx8IDEpO1xuICBjb25zdCBwY3QgPSBNYXRoLnJvdW5kKChjb3VudCAvIG1heCkgKiAxMDApO1xuICAvLyBtaW4gaGVpZ2h0IHNvIGJhcnMgYXJlIHZpc2libGUgd2hlbiBjb3VudCA+IDBcbiAgY29uc3QgcHggPSBNYXRoLm1heCg0LCBNYXRoLnJvdW5kKChjb3VudCAvIG1heCkgKiAxMzApKTtcbiAgcmV0dXJuIHB4ICsgJ3B4Jztcbn07XG5cbmNvbnN0IGZvcm1hdERhdGUgPSAoaXNvRGF0ZSkgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShpc29EYXRlICsgJ1QwMDowMDowMCcpO1xuICAgIHJldHVybiBkLnRvTG9jYWxlRGF0ZVN0cmluZygnZnItRlInLCB7IGRheTogJzItZGlnaXQnLCBtb250aDogJzItZGlnaXQnIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGlzb0RhdGU7XG4gIH1cbn07XG5cbmNvbnN0IGZvcm1hdEV1cm8gPSAoY2VudHMpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBldXJvcyA9IChOdW1iZXIoY2VudHMgfHwgMCkgLyAxMDApO1xuICAgIHJldHVybiBldXJvcy50b0xvY2FsZVN0cmluZygnZnItRlInLCB7IHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ0VVUicgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gYCR7KGNlbnRzIHx8IDApIC8gMTAwfWA7XG4gIH1cbn07XG5cbi8vIFJldG91cm5lICoqKiogc2kgbGVzIGluZm9zIHNvbnQgbWFzcXXDqWVzLCBzaW5vbiBhcHBsaXF1ZSB1biBmb3JtYXRldXIgw6l2ZW50dWVsXG5jb25zdCBNQVNLID0gJyoqKioqJztcbmNvbnN0IG1hc2tlZCA9ICh2YWx1ZSwgZm9ybWF0dGVyLCBpc0V1cm8gPSBmYWxzZSkgPT4ge1xuICBpZiAoIXNob3dTZW5zaXRpdmUudmFsdWUpIHtcbiAgICBpZiAoaXNFdXJvKSB7XG4gICAgICByZXR1cm4gTUFTSyArICfigqwnO1xuICAgIH1cbiAgICByZXR1cm4gTUFTSztcbiAgfVxuICB0cnkge1xuICAgIHJldHVybiB0eXBlb2YgZm9ybWF0dGVyID09PSAnZnVuY3Rpb24nID8gZm9ybWF0dGVyKHZhbHVlKSA6IFN0cmluZyh2YWx1ZSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlID8/ICcnKTtcbiAgfVxufTtcblxub25Nb3VudGVkKCgpID0+IHtcbiAgZmV0Y2hTdGF0cygpO1xufSk7XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi5saW5rLWFjdGl2ZSB7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBib3gtc2hhZG93OiAwIDFweCAxcHggcmdiYSgxNCwgMTUsIDE4LCAwLjA4KSwgMCAycHggNHB4IHJnYmEoMTQsMTUsMTgsMC4wOCksIDAgNnB4IDEycHggcmdiYSgxNCwxNSwxOCwwLjA4KTtcbn1cbjwvc3R5bGU+XG4iLCIucmVzaXplLW9ic2VydmVyW2RhdGEtdi1iMzI5ZWU0Y117cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3otaW5kZXg6LTE7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtib3JkZXI6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O3BvaW50ZXItZXZlbnRzOm5vbmU7ZGlzcGxheTpibG9jaztvdmVyZmxvdzpoaWRkZW47b3BhY2l0eTowfS5yZXNpemUtb2JzZXJ2ZXJbZGF0YS12LWIzMjllZTRjXSBvYmplY3R7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47cG9pbnRlci1ldmVudHM6bm9uZTt6LWluZGV4Oi0xfS52LXBvcHBlcl9fcG9wcGVye3otaW5kZXg6MTAwMDA7dG9wOjA7bGVmdDowO291dGxpbmU6bm9uZX0udi1wb3BwZXJfX3BvcHBlci52LXBvcHBlcl9fcG9wcGVyLS1oaWRkZW57dmlzaWJpbGl0eTpoaWRkZW47b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAuMTVzLHZpc2liaWxpdHkgLjE1cztwb2ludGVyLWV2ZW50czpub25lfS52LXBvcHBlcl9fcG9wcGVyLnYtcG9wcGVyX19wb3BwZXItLXNob3due3Zpc2liaWxpdHk6dmlzaWJsZTtvcGFjaXR5OjE7dHJhbnNpdGlvbjpvcGFjaXR5IC4xNXN9LnYtcG9wcGVyX19wb3BwZXIudi1wb3BwZXJfX3BvcHBlci0tc2tpcC10cmFuc2l0aW9uLC52LXBvcHBlcl9fcG9wcGVyLnYtcG9wcGVyX19wb3BwZXItLXNraXAtdHJhbnNpdGlvbj4udi1wb3BwZXJfX3dyYXBwZXJ7dHJhbnNpdGlvbjpub25lIWltcG9ydGFudH0udi1wb3BwZXJfX2JhY2tkcm9we3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2Rpc3BsYXk6bm9uZX0udi1wb3BwZXJfX2lubmVye3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdy15OmF1dG99LnYtcG9wcGVyX19pbm5lcj5kaXZ7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoxO21heC13aWR0aDppbmhlcml0O21heC1oZWlnaHQ6aW5oZXJpdH0udi1wb3BwZXJfX2Fycm93LWNvbnRhaW5lcntwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMHB4O2hlaWdodDoxMHB4fS52LXBvcHBlcl9fcG9wcGVyLS1hcnJvdy1vdmVyZmxvdyAudi1wb3BwZXJfX2Fycm93LWNvbnRhaW5lciwudi1wb3BwZXJfX3BvcHBlci0tbm8tcG9zaXRpb25pbmcgLnYtcG9wcGVyX19hcnJvdy1jb250YWluZXJ7ZGlzcGxheTpub25lfS52LXBvcHBlcl9fYXJyb3ctaW5uZXIsLnYtcG9wcGVyX19hcnJvdy1vdXRlcntib3JkZXItc3R5bGU6c29saWQ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3dpZHRoOjA7aGVpZ2h0OjB9LnYtcG9wcGVyX19hcnJvdy1pbm5lcnt2aXNpYmlsaXR5OmhpZGRlbjtib3JkZXItd2lkdGg6N3B4fS52LXBvcHBlcl9fYXJyb3ctb3V0ZXJ7Ym9yZGVyLXdpZHRoOjZweH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePXRvcF0gLnYtcG9wcGVyX19hcnJvdy1pbm5lciwudi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePWJvdHRvbV0gLnYtcG9wcGVyX19hcnJvdy1pbm5lcntsZWZ0Oi0ycHh9LnYtcG9wcGVyX19wb3BwZXJbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj10b3BdIC52LXBvcHBlcl9fYXJyb3ctb3V0ZXIsLnYtcG9wcGVyX19wb3BwZXJbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1ib3R0b21dIC52LXBvcHBlcl9fYXJyb3ctb3V0ZXJ7bGVmdDotMXB4fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49dG9wXSAudi1wb3BwZXJfX2Fycm93LWlubmVyLC52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49dG9wXSAudi1wb3BwZXJfX2Fycm93LW91dGVye2JvcmRlci1ib3R0b20td2lkdGg6MDtib3JkZXItbGVmdC1jb2xvcjp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7Ym9yZGVyLXJpZ2h0LWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePXRvcF0gLnYtcG9wcGVyX19hcnJvdy1pbm5lcnt0b3A6LTJweH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePWJvdHRvbV0gLnYtcG9wcGVyX19hcnJvdy1jb250YWluZXJ7dG9wOjB9LnYtcG9wcGVyX19wb3BwZXJbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1ib3R0b21dIC52LXBvcHBlcl9fYXJyb3ctaW5uZXIsLnYtcG9wcGVyX19wb3BwZXJbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1ib3R0b21dIC52LXBvcHBlcl9fYXJyb3ctb3V0ZXJ7Ym9yZGVyLXRvcC13aWR0aDowO2JvcmRlci1sZWZ0LWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3JkZXItcmlnaHQtY29sb3I6dHJhbnNwYXJlbnQhaW1wb3J0YW50O2JvcmRlci10b3AtY29sb3I6dHJhbnNwYXJlbnQhaW1wb3J0YW50fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49Ym90dG9tXSAudi1wb3BwZXJfX2Fycm93LWlubmVye3RvcDotNHB4fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49Ym90dG9tXSAudi1wb3BwZXJfX2Fycm93LW91dGVye3RvcDotNnB4fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49bGVmdF0gLnYtcG9wcGVyX19hcnJvdy1pbm5lciwudi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePXJpZ2h0XSAudi1wb3BwZXJfX2Fycm93LWlubmVye3RvcDotMnB4fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49bGVmdF0gLnYtcG9wcGVyX19hcnJvdy1vdXRlciwudi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePXJpZ2h0XSAudi1wb3BwZXJfX2Fycm93LW91dGVye3RvcDotMXB4fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49cmlnaHRdIC52LXBvcHBlcl9fYXJyb3ctaW5uZXIsLnYtcG9wcGVyX19wb3BwZXJbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj1yaWdodF0gLnYtcG9wcGVyX19hcnJvdy1vdXRlcntib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1sZWZ0LWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3JkZXItdG9wLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePXJpZ2h0XSAudi1wb3BwZXJfX2Fycm93LWlubmVye2xlZnQ6LTRweH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePXJpZ2h0XSAudi1wb3BwZXJfX2Fycm93LW91dGVye2xlZnQ6LTZweH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePWxlZnRdIC52LXBvcHBlcl9fYXJyb3ctY29udGFpbmVye3JpZ2h0Oi0xMHB4fS52LXBvcHBlcl9fcG9wcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49bGVmdF0gLnYtcG9wcGVyX19hcnJvdy1pbm5lciwudi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePWxlZnRdIC52LXBvcHBlcl9fYXJyb3ctb3V0ZXJ7Ym9yZGVyLXJpZ2h0LXdpZHRoOjA7Ym9yZGVyLXRvcC1jb2xvcjp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7Ym9yZGVyLXJpZ2h0LWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudH0udi1wb3BwZXJfX3BvcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnRePWxlZnRdIC52LXBvcHBlcl9fYXJyb3ctaW5uZXJ7bGVmdDotMnB4fS52LXBvcHBlci0tdGhlbWUtdG9vbHRpcCAudi1wb3BwZXJfX2lubmVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuOCk7Y29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjZweDtwYWRkaW5nOjdweCAxMnB4IDZweH0udi1wb3BwZXItLXRoZW1lLXRvb2x0aXAgLnYtcG9wcGVyX19hcnJvdy1vdXRlcntib3JkZXItY29sb3I6IzAwMGN9LnYtcG9wcGVyLS10aGVtZS1kcm9wZG93biAudi1wb3BwZXJfX2lubmVye2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMDAwO2JvcmRlci1yYWRpdXM6NnB4O2JvcmRlcjoxcHggc29saWQgI2RkZDtib3gtc2hhZG93OjAgNnB4IDMwcHggIzAwMDAwMDFhfS52LXBvcHBlci0tdGhlbWUtZHJvcGRvd24gLnYtcG9wcGVyX19hcnJvdy1pbm5lcnt2aXNpYmlsaXR5OnZpc2libGU7Ym9yZGVyLWNvbG9yOiNmZmZ9LnYtcG9wcGVyLS10aGVtZS1kcm9wZG93biAudi1wb3BwZXJfX2Fycm93LW91dGVye2JvcmRlci1jb2xvcjojZGRkfVxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiaGVhdG1hcFwiIDpzdHlsZT1cInJvb3RTdHlsZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJzcGFjZXJcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibW9udGhzXCIgOnN0eWxlPVwieyBncmlkVGVtcGxhdGVDb2x1bW5zOiBgcmVwZWF0KCR7d2Vla3MubGVuZ3RofSwgMWZyKWAgfVwiPlxuICAgICAgPHNwYW4gdi1mb3I9XCIobGFiZWwsIGkpIGluIG1vbnRoTGFiZWxzXCIgOmtleT1cImlcIiBjbGFzcz1cIm1vbnRoIGNhcGl0YWxpemVcIj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJ5LWxhYmVsc1wiPlxuICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgPHNwYW4+TDwvc3Bhbj5cbiAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDxzcGFuPk08L3NwYW4+XG4gICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICA8c3Bhbj5WPC9zcGFuPlxuICAgICAgPHNwYW4+PC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImdyaWRcIiA6c3R5bGU9XCJ7IGdyaWRUZW1wbGF0ZUNvbHVtbnM6IGByZXBlYXQoJHt3ZWVrcy5sZW5ndGh9LCAxZnIpYCB9XCI+XG4gICAgICA8ZGl2IHYtZm9yPVwiKHdlZWssIHdJZHgpIGluIHdlZWtzXCIgOmtleT1cIndJZHhcIiBjbGFzcz1cIndlZWtcIj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgdi1mb3I9XCIoZGF5LCBkSWR4KSBpbiB3ZWVrXCJcbiAgICAgICAgICAgICAgOmtleT1cImRJZHhcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNlbGwgcmVsYXRpdmVcIlxuICAgICAgICAgICAgICA6Y2xhc3M9XCJgbGV2ZWwtJHtsZXZlbEZvcihkYXkuY291bnQpfSAke3Rvb2x0aXBVc2UoZGF5KSA9PSAnJyA/ICdoaWRkZW4nIDogJycgfWBcIlxuICAgICAgICAgICAgICBAY2xpY2s9XCIkZW1pdCgnZGF5LWNsaWNrJywgZGF5KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFRvb2x0aXAgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC0wXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cmFuc3BhcmVudCBjdXJzb3ItcG9pbnRlclwiPnRlc3Q8L3NwYW4+XG4gICAgICAgICAgICAgIDx0ZW1wbGF0ZSAjcG9wcGVyPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIG1iLTEgdGV4dC1jZW50ZXJcIj57eyB0b29sdGlwVXNlKGRheSkgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC14cyB0ZXh0LWNlbnRlclwiPnt7IHRvb2x0aXBEYXRlKGRheSkgfX08L2Rpdj5cbiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibGVnZW5kXCIgOnN0eWxlPVwicm9vdFN0eWxlXCI+XG4gICAgPHNwYW4+TW9pbnM8L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJjZWxsIGxldmVsLTBcIj48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJjZWxsIGxldmVsLTFcIj48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJjZWxsIGxldmVsLTJcIj48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJjZWxsIGxldmVsLTNcIj48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJjZWxsIGxldmVsLTRcIj48L3NwYW4+XG4gICAgPHNwYW4+UGx1czwvc3Bhbj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgY29tcHV0ZWQsIG9uTW91bnRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5pbXBvcnQgeyBEcm9wZG93biwgVG9vbHRpcCwgTWVudSwgdlRvb2x0aXAgfSBmcm9tICdmbG9hdGluZy12dWUnXG5pbXBvcnQgJ2Zsb2F0aW5nLXZ1ZS9kaXN0L3N0eWxlLmNzcydcblxudHlwZSBDb3VudHNNYXAgPSBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuXG5pbnRlcmZhY2UgRGF5Q2VsbCB7XG4gIGRhdGVJU086IHN0cmluZztcbiAgY291bnQ6IG51bWJlcjtcbn1cblxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczx7XG4gIHVzZXJJZD86IG51bWJlciB8IHN0cmluZztcbiAgZGF5cz86IG51bWJlcjtcbiAgZW5kcG9pbnQ/OiBzdHJpbmc7XG4gIGJhc2VDb2xvcj86IHN0cmluZztcbn0+KCk7XG5cbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czx7XG4gIChlOiAnbG9hZGVkJyk6IHZvaWQ7XG4gIChlOiAnZGF5LWNsaWNrJywgZGF5OiBEYXlDZWxsKTogdm9pZDtcbn0+KCk7XG5cbmNvbnN0IGVuZHBvaW50ID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZW5kcG9pbnQgPz8gJy9hcGkvYWN0aXZpdHkvaGVhdG1hcCcpO1xuY29uc3QgZGF5cyA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmRheXMgPz8gMzcxKTtcbmNvbnN0IGJhc2VDb2xvciA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmJhc2VDb2xvciA/PyAnIzRjOGJmZCcpO1xuXG5jb25zdCBsb2FkaW5nID0gcmVmKGZhbHNlKTtcbmNvbnN0IHN0YXJ0SVNPID0gcmVmKCcnKTtcbmNvbnN0IGVuZElTTyA9IHJlZignJyk7XG5jb25zdCBtYXhDb3VudCA9IHJlZigwKTtcbmNvbnN0IGNvdW50cyA9IHJlZjxDb3VudHNNYXA+KHt9KTtcblxub25Nb3VudGVkKGxvYWQpO1xud2F0Y2goW2VuZHBvaW50LCBkYXlzLCAoKSA9PiBwcm9wcy51c2VySWRdLCBsb2FkKTtcblxuYXN5bmMgZnVuY3Rpb24gbG9hZCgpIHtcbiAgaWYgKHByb3BzLnVzZXJJZCkge1xuICAgIGxvYWRpbmcudmFsdWUgPSB0cnVlO1xuICAgIGNvbnN0IHFzID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7IGRheXM6IFN0cmluZyhkYXlzLnZhbHVlKSB9KTtcbiAgICBpZiAocHJvcHMudXNlcklkICE9IG51bGwpIHFzLnNldCgndXNlcklkJywgU3RyaW5nKHByb3BzLnVzZXJJZCkpO1xuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goYCR7ZW5kcG9pbnQudmFsdWV9PyR7cXMudG9TdHJpbmcoKX1gLCB7IGNyZWRlbnRpYWxzOiAnaW5jbHVkZScgfSk7XG4gICAgY29uc3QganNvbiA9IGF3YWl0IHJlcy5qc29uKCk7XG5cbiAgICBzdGFydElTTy52YWx1ZSA9IGpzb24uc3RhcnQ7XG4gICAgZW5kSVNPLnZhbHVlID0ganNvbi5lbmQ7XG4gICAgY291bnRzLnZhbHVlID0ganNvbi5jb3VudHMgPz8ge307XG4gICAgbWF4Q291bnQudmFsdWUgPSBqc29uLm1heCA/PyAwO1xuICAgIGxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICBlbWl0KCdsb2FkZWQnKTtcbiAgfVxufVxuXG5jb25zdCB3ZWVrU3RhcnRzID0gY29tcHV0ZWQ8RGF0ZVtdPigoKSA9PiB7XG4gIGlmICghc3RhcnRJU08udmFsdWUgfHwgIWVuZElTTy52YWx1ZSkgcmV0dXJuIFtdO1xuICBjb25zdCBhcnI6IERhdGVbXSA9IFtdO1xuICBjb25zdCBlbmQgPSBkYXRlRnJvbUlTTyhlbmRJU08udmFsdWUpO1xuICBmb3IgKGxldCBkID0gZGF0ZUZyb21JU08oc3RhcnRJU08udmFsdWUpOyBkIDw9IGVuZDsgZC5zZXREYXRlKGQuZ2V0RGF0ZSgpICsgNykpIHtcbiAgICBhcnIucHVzaChuZXcgRGF0ZShkKSk7XG4gIH1cbiAgcmV0dXJuIGFycjtcbn0pO1xuXG5jb25zdCBtb250aExhYmVscyA9IGNvbXB1dGVkPHN0cmluZ1tdPigoKSA9PiB7XG4gIHJldHVybiB3ZWVrU3RhcnRzLnZhbHVlLm1hcCgod3MpID0+IHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgY29uc3QgZCA9IG5ldyBEYXRlKHdzKTtcbiAgICAgIGQuc2V0RGF0ZShkLmdldERhdGUoKSArIGkpO1xuICAgICAgaWYgKGQuZ2V0RGF0ZSgpID09PSAxKSB7XG4gICAgICAgIHJldHVybiBkLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwgeyBtb250aDogJ3Nob3J0JyB9KS5zbGljZSgwLCAyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9KTtcbn0pO1xuXG5mdW5jdGlvbiBkYXRlRnJvbUlTTyhpc286IHN0cmluZyk6IERhdGUge1xuICBjb25zdCBbeSwgbSwgZF0gPSBpc28uc3BsaXQoJy0nKS5tYXAoTnVtYmVyKTtcbiAgcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHksIG0gLSAxLCBkKSk7XG59XG5cbmNvbnN0IGFsbERheXMgPSBjb21wdXRlZDxEYXlDZWxsW10+KCgpID0+IHtcbiAgaWYgKCFzdGFydElTTy52YWx1ZSB8fCAhZW5kSVNPLnZhbHVlKSByZXR1cm4gW107XG4gIGNvbnN0IG91dDogRGF5Q2VsbFtdID0gW107XG4gIGNvbnN0IHN0YXJ0ID0gZGF0ZUZyb21JU08oc3RhcnRJU08udmFsdWUpO1xuICBjb25zdCBlbmQgPSBkYXRlRnJvbUlTTyhlbmRJU08udmFsdWUpO1xuXG4gIGZvciAobGV0IGQgPSBzdGFydDsgZCA8PSBlbmQ7IGQuc2V0VVRDRGF0ZShkLmdldFVUQ0RhdGUoKSArIDEpKSB7XG4gICAgY29uc3QgaXNvID0gZC50b0lTT1N0cmluZygpLnNsaWNlKDAsIDEwKTtcbiAgICBjb25zb2xlLmxvZyhkLCBpc28pO1xuICAgIG91dC5wdXNoKHsgZGF0ZUlTTzogaXNvLCBjb3VudDogY291bnRzLnZhbHVlW2lzb10gPz8gMCB9KTtcbiAgfVxuICByZXR1cm4gb3V0O1xufSk7XG5cbmNvbnN0IHdlZWtzID0gY29tcHV0ZWQ8RGF5Q2VsbFtdW10+KCgpID0+IHtcbiAgY29uc3QgcmVzOiBEYXlDZWxsW11bXSA9IFtdO1xuICBsZXQgdzogRGF5Q2VsbFtdID0gW107XG4gIGFsbERheXMudmFsdWUuZm9yRWFjaCgoZGF5LCBpZHgpID0+IHtcbiAgICBjb25zdCBqc0RhdGUgPSBkYXRlRnJvbUlTTyhkYXkuZGF0ZUlTTyk7XG4gICAgY29uc3QgaXNTdW5kYXkgPSBqc0RhdGUuZ2V0RGF5KCkgPT09IDA7XG4gICAgaWYgKGlkeCA9PT0gMCkge1xuICAgICAgdyA9IFtdO1xuICAgIH0gZWxzZSBpZiAoaXNTdW5kYXkpIHtcbiAgICAgIHJlcy5wdXNoKHcpO1xuICAgICAgdyA9IFtdO1xuICAgIH1cbiAgICB3W2pzRGF0ZS5nZXREYXkoKV0gPSBkYXk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA3OyBpKyspIGlmICghd1tpXSkgd1tpXSA9IHsgZGF0ZUlTTzogJycsIGNvdW50OiAwIH07XG4gIH0pO1xuICBpZiAody5sZW5ndGgpIHJlcy5wdXNoKHcpO1xuICByZXR1cm4gcmVzO1xufSk7XG5cbmZ1bmN0aW9uIGxldmVsRm9yKGNvdW50OiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAoY291bnQgPD0gMCkgcmV0dXJuIDA7XG4gIGlmIChtYXhDb3VudC52YWx1ZSA8PSAwKSByZXR1cm4gMDtcbiAgY29uc3QgcmF0aW8gPSBjb3VudCAvIG1heENvdW50LnZhbHVlO1xuICBpZiAocmF0aW8gPiAwLjc1KSByZXR1cm4gNDtcbiAgaWYgKHJhdGlvID4gMC41KSByZXR1cm4gMztcbiAgaWYgKHJhdGlvID4gMC4yNSkgcmV0dXJuIDI7XG4gIHJldHVybiAxO1xufVxuXG5mdW5jdGlvbiB0b29sdGlwVXNlKGRheTogRGF5Q2VsbCk6IHN0cmluZyB7XG4gIGlmICghZGF5LmRhdGVJU08pIHJldHVybiAnJztcbiAgcmV0dXJuIGAke2RheS5jb3VudH0gdXRpbGlzYXRpb24ke2RheS5jb3VudCA+IDEgPyAncycgOiAnJ31gO1xufVxuXG5mdW5jdGlvbiB0b29sdGlwRGF0ZShkYXk6IERheUNlbGwpOiBzdHJpbmcge1xuICBpZiAoIWRheS5kYXRlSVNPKSByZXR1cm4gJyc7XG4gIHJldHVybiBgTGUgJHtuZXcgRGF0ZShkYXkuZGF0ZUlTTykudG9Mb2NhbGVEYXRlU3RyaW5nKCl9YDtcbn1cblxuY29uc3QgdG9kYXlJU08gPSBjb21wdXRlZCgoKSA9PiB0b1lNRChuZXcgRGF0ZSgpKSk7XG5jb25zdCB6ID0gKG46IG51bWJlcikgPT4gKG4gPCAxMCA/IGAwJHtufWAgOiBTdHJpbmcobikpO1xuY29uc3QgdG9ZTUQgPSAoZDogRGF0ZSkgPT4gYCR7ZC5nZXRGdWxsWWVhcigpfS0ke3ooZC5nZXRNb250aCgpICsgMSl9LSR7eihkLmdldERhdGUoKSl9YDtcblxuZnVuY3Rpb24gaXNGdXR1cmUoZGF5OiB7IGRhdGVJU086IHN0cmluZzsgY291bnQ6IG51bWJlciB9KSB7XG4gIHJldHVybiAhIWRheS5kYXRlSVNPICYmIGRheS5kYXRlSVNPID4gdG9kYXlJU08udmFsdWU7XG59XG5cbi8vIHJvb3QgQ1NTIHZhcmlhYmxlc1xuZnVuY3Rpb24gaGV4VG9SZ2IoaGV4OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBoID0gaGV4LnJlcGxhY2UoJyMnLCAnJyk7XG4gIGNvbnN0IGJpZ2ludCA9IHBhcnNlSW50KGgubGVuZ3RoID09PSAzID8gaC5zcGxpdCgnJykubWFwKGMgPT4gYyArIGMpLmpvaW4oJycpIDogaCwgMTYpO1xuICBjb25zdCByID0gKGJpZ2ludCA+PiAxNikgJiAyNTU7XG4gIGNvbnN0IGcgPSAoYmlnaW50ID4+IDgpICYgMjU1O1xuICBjb25zdCBiID0gYmlnaW50ICYgMjU1O1xuICByZXR1cm4gYCR7cn0sICR7Z30sICR7Yn1gO1xufVxuY29uc3Qgcm9vdFN0eWxlID0gY29tcHV0ZWQoKCkgPT4gKHsgJy0tYmFzZS1yZ2InOiBoZXhUb1JnYihiYXNlQ29sb3IudmFsdWUpIH0gYXMgYW55KSk7XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi5oZWF0bWFwIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmcjsgLyogMTogbGFiZWxzIFksIDI6IGNvbnRlbnUgKi9cbiAgZ3JpZC1hdXRvLXJvd3M6IGF1dG87XG4gIHJvdy1nYXA6IDNweDtcbiAgY29sdW1uLWdhcDogM3B4O1xuICAtLWNlbGwtc2l6ZTogMTUuNXB4O1xuICAtLWdhcDogMnB4O1xuICAtLWJhc2UtcmdiOiA3NiwgMTM5LCAyNTM7XG59XG5cbi8qIGNlbGx1bGUgdmlkZSBlbiBoYXV0IMOgIGdhdWNoZSBwb3VyIGFsaWduZXIgbOKAmWVuLXTDqnRlICovXG4uc3BhY2VyIHsgaGVpZ2h0OiAxLjJlbTsgfVxuXG4vKiByYW5nw6llIGRlcyBtb2lzICovXG4ubW9udGhzIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiB2YXIoLS1nYXApO1xuICBoZWlnaHQ6IDEuMmVtO1xuICBmb250LXNpemU6IDEwcHg7XG4gIGNvbG9yOiAjOWFhMGE2O1xufVxuLm1vbnRoIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4vKiBsZSByZXN0ZSBpbmNoYW5nw6kgKi9cbi55LWxhYmVscyB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtcm93czogcmVwZWF0KDcsIHZhcigtLWNlbGwtc2l6ZSkpO1xuICBnYXA6IHZhcigtLWdhcCk7XG4gIGZvbnQtc2l6ZTogMTBweDtcbiAgY29sb3I6ICM5YWEwYTY7XG4gIG1hcmdpbi1yaWdodDogMnB4O1xufVxuLmdyaWQgeyBkaXNwbGF5OiBncmlkOyBncmlkLWF1dG8tZmxvdzogY29sdW1uOyBnYXA6IHZhcigtLWdhcCk7IH1cbi53ZWVrIHsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1yb3dzOiByZXBlYXQoNywgdmFyKC0tY2VsbC1zaXplKSk7IGdhcDogdmFyKC0tZ2FwKTsgfVxuLmNlbGwgeyB3aWR0aDogdmFyKC0tY2VsbC1zaXplKTsgaGVpZ2h0OiB2YXIoLS1jZWxsLXNpemUpOyBib3JkZXItcmFkaXVzOiAycHg7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMCk7IH1cbi5jZWxsLmxldmVsLTAgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQwLCAzOSwgNDYsIDAuNCk7IH1cbi5jZWxsLmxldmVsLTEgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWJhc2UtcmdiKSwgMC4yNSk7IH1cbi5jZWxsLmxldmVsLTIgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWJhc2UtcmdiKSwgMC40NSk7IH1cbi5jZWxsLmxldmVsLTMgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWJhc2UtcmdiKSwgMC42NSk7IH1cbi5jZWxsLmxldmVsLTQgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLWJhc2UtcmdiKSwgMC45KTsgfVxuXG4uY2VsbDpob3ZlciB7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC40KTtcbn1cblxuLmxlZ2VuZCB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4OyBtYXJnaW4tdG9wOiA4cHg7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6ICM5YWEwYTY7IH1cbi5sZWdlbmQgLmNlbGwgeyB3aWR0aDogMTJweDsgaGVpZ2h0OiAxMnB4OyB9XG5cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IHNldHVwPlxuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuaW1wb3J0IHsgcmVmLCBjb21wdXRlZCwgb25Nb3VudGVkLCB3YXRjaCB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IERpYWxvZywgRGlhbG9nUGFuZWwsIERpYWxvZ1RpdGxlLCBUcmFuc2l0aW9uQ2hpbGQsIFRyYW5zaXRpb25Sb290IH0gZnJvbSBcIkBoZWFkbGVzc3VpL3Z1ZVwiO1xuaW1wb3J0IHsgWE1hcmtJY29uLCBNYWduaWZ5aW5nR2xhc3NJY29uLCBGdW5uZWxJY29uIH0gZnJvbSAnQGhlcm9pY29ucy92dWUvMjAvc29saWQnO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gJ2xvZGFzaC5kZWJvdW5jZSc7XG5cbmNvbnN0IHVzZXJzID0gcmVmKFtdKTtcbmNvbnN0IHRvdGFsID0gcmVmKDApO1xuY29uc3QgbG9hZGluZyA9IHJlZih0cnVlKTtcbmNvbnN0IG9wZW4gPSByZWYoZmFsc2UpO1xuY29uc3QgdXNlclNlbGVjdGVkID0gcmVmKG51bGwpO1xuY29uc3QgY3VycmVudFBhZ2UgPSByZWYoMSk7XG5jb25zdCBpdGVtc1BlclBhZ2UgPSByZWYoMTApO1xuXG4vLyBTZWFyY2ggYW5kIGZpbHRlclxuY29uc3Qgc2VhcmNoUXVlcnkgPSByZWYoJycpO1xuY29uc3Qgc2VsZWN0ZWRMaWNlbnNlVHlwZSA9IHJlZignJyk7XG5jb25zdCBzZWxlY3RlZFJvbGUgPSByZWYoJycpO1xuY29uc3QgYXZhaWxhYmxlTGljZW5zZVR5cGVzID0gcmVmKFtdKTtcbmNvbnN0IGF2YWlsYWJsZVJvbGVzID0gcmVmKFtdKTtcblxuLy8gRGVib3VuY2VkIHNlYXJjaCBmdW5jdGlvblxuY29uc3QgZGVib3VuY2VkU2VhcmNoID0gZGVib3VuY2UoKCkgPT4ge1xuICBmaWx0ZXJVc2VycygpO1xufSwgMzAwKTtcblxuLy8gUGFnaW5hdGlvblxuY29uc3QgdG90YWxQYWdlcyA9IGNvbXB1dGVkKCgpID0+IE1hdGguY2VpbCh0b3RhbC52YWx1ZSAvIGl0ZW1zUGVyUGFnZS52YWx1ZSkpO1xuY29uc3QgcGFnaW5hdGVkVXNlcnMgPSBjb21wdXRlZCgoKSA9PiB1c2Vycy52YWx1ZSk7XG5cbmNvbnN0IGZldGNoVXNlcnMgPSBhc3luYyAoKSA9PiB7XG4gIGxvYWRpbmcudmFsdWUgPSB0cnVlO1xuICB0cnkge1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgYXhpb3MuZ2V0KCcvYXBpL3VzZXJzJywge1xuICAgICAgcGFyYW1zOiB7XG4gICAgICAgIHBhZ2U6IGN1cnJlbnRQYWdlLnZhbHVlLFxuICAgICAgICBsaW1pdDogaXRlbXNQZXJQYWdlLnZhbHVlLFxuICAgICAgICBxOiBzZWFyY2hRdWVyeS52YWx1ZSB8fCB1bmRlZmluZWQsXG4gICAgICAgIHJvbGU6IHNlbGVjdGVkUm9sZS52YWx1ZSB8fCB1bmRlZmluZWQsXG4gICAgICAgIGxpY2VuY2VUeXBlOiBzZWxlY3RlZExpY2Vuc2VUeXBlLnZhbHVlIHx8IHVuZGVmaW5lZCxcbiAgICAgIH1cbiAgICB9KTtcbiAgICB1c2Vycy52YWx1ZSA9IGRhdGEuaXRlbXM7XG4gICAgdG90YWwudmFsdWUgPSBkYXRhLnRvdGFsO1xuICAgIGV4dHJhY3RGaWx0ZXJPcHRpb25zKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgdXNlcnM6JywgZXJyb3IpO1xuICB9IGZpbmFsbHkge1xuICAgIGxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgfVxufTtcblxuY29uc3QgbmV4dFBhZ2UgPSBhc3luYyAoKSA9PiB7XG4gIGlmIChjdXJyZW50UGFnZS52YWx1ZSA8IHRvdGFsUGFnZXMudmFsdWUpIHtcbiAgICBjdXJyZW50UGFnZS52YWx1ZSsrO1xuICAgIGF3YWl0IGZldGNoVXNlcnMoKTtcbiAgfVxufTtcblxuY29uc3QgcHJldlBhZ2UgPSBhc3luYyAoKSA9PiB7XG4gIGlmIChjdXJyZW50UGFnZS52YWx1ZSA+IDEpIHtcbiAgICBjdXJyZW50UGFnZS52YWx1ZS0tO1xuICAgIGF3YWl0IGZldGNoVXNlcnMoKTtcbiAgfVxufTtcblxuY29uc3QgZ29Ub1BhZ2UgPSBhc3luYyAocGFnZSkgPT4ge1xuICBpZiAocGFnZSA+PSAxICYmIHBhZ2UgPD0gdG90YWxQYWdlcy52YWx1ZSkge1xuICAgIGN1cnJlbnRQYWdlLnZhbHVlID0gcGFnZTtcbiAgICBhd2FpdCBmZXRjaFVzZXJzKCk7XG4gIH1cbn07XG5cbi8vIEhlbHBlciBmdW5jdGlvbnNcbmNvbnN0IGdldExpY2Vuc2VDb3VudCA9ICh1c2VyKSA9PiB7XG4gIHJldHVybiB1c2VyLmxpY2VuY2VzLmxlbmd0aDtcbn07XG5cbmNvbnN0IGdldExpY2Vuc2VUeXBlID0gKHVzZXIpID0+IHtcbiByZXR1cm4gdXNlci5saWNlbmNlID8gdXNlci5saWNlbmNlLnR5cGUgOiAnQXVjdW5lJ1xufTtcblxuY29uc3QgZ2V0TGFzdENvbm5lY3Rpb24gPSAodXNlcikgPT4ge1xuICBpZiAodXNlci5saWNlbmNlcy5sZW5ndGggPT09IDApIHJldHVybiBcIkphbWFpc1wiO1xuXG4gIC8vIEZpbmQgdGhlIG1vc3QgcmVjZW50IGxhc3RVc2UgZGF0ZVxuICBjb25zdCBsYXN0VXNlRGF0ZXMgPSB1c2VyLmxpY2VuY2VzLm1hcChsaWNlbnNlID0+IHtcbiAgICBjb25zdCBbZGF0ZVBhcnQsIHRpbWVQYXJ0XSA9IGxpY2Vuc2UubGFzdFVzZS5zcGxpdChcIiDDoCBcIik7XG4gICAgY29uc3QgW2RheSwgbW9udGgsIHllYXJdID0gZGF0ZVBhcnQuc3BsaXQoXCIvXCIpO1xuICAgIGNvbnN0IFtob3VyLCBtaW51dGVdID0gdGltZVBhcnQuc3BsaXQoXCI6XCIpO1xuICAgIHJldHVybiBuZXcgRGF0ZShgJHt5ZWFyfS0ke21vbnRofS0ke2RheX1UJHtob3VyfToke21pbnV0ZX06MDBgKTtcbiAgfSk7XG5cbiAgY29uc3QgbW9zdFJlY2VudERhdGUgPSBuZXcgRGF0ZShNYXRoLm1heCguLi5sYXN0VXNlRGF0ZXMubWFwKGRhdGUgPT4gZGF0ZS5nZXRUaW1lKCkpKSk7XG5cbiAgLy8gRm9ybWF0IHRoZSBkYXRlXG4gIGNvbnN0IGRheSA9IG1vc3RSZWNlbnREYXRlLmdldERhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG4gIGNvbnN0IG1vbnRoID0gKG1vc3RSZWNlbnREYXRlLmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG4gIGNvbnN0IHllYXIgPSBtb3N0UmVjZW50RGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBob3VycyA9IG1vc3RSZWNlbnREYXRlLmdldEhvdXJzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xuICBjb25zdCBtaW51dGVzID0gbW9zdFJlY2VudERhdGUuZ2V0TWludXRlcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcblxuICByZXR1cm4gYCR7ZGF5fS8ke21vbnRofS8ke3llYXJ9IMOgICR7aG91cnN9OiR7bWludXRlc31gO1xufTtcblxuLy8gQ2xlYXIgYWxsIGZpbHRlcnNcbmNvbnN0IGNsZWFyRmlsdGVycyA9IGFzeW5jICgpID0+IHtcbiAgc2VhcmNoUXVlcnkudmFsdWUgPSAnJztcbiAgc2VsZWN0ZWRMaWNlbnNlVHlwZS52YWx1ZSA9ICcnO1xuICBzZWxlY3RlZFJvbGUudmFsdWUgPSAnJztcbiAgY3VycmVudFBhZ2UudmFsdWUgPSAxO1xuICBhd2FpdCBmZXRjaFVzZXJzKCk7XG59O1xuXG5jb25zdCBmaWx0ZXJVc2VycyA9IGFzeW5jICgpID0+IHtcbiAgY3VycmVudFBhZ2UudmFsdWUgPSAxO1xuICBhd2FpdCBmZXRjaFVzZXJzKCk7XG59O1xuXG53YXRjaChzZWFyY2hRdWVyeSwgKCkgPT4ge1xuICBkZWJvdW5jZWRTZWFyY2goKTtcbn0pO1xuXG53YXRjaChbc2VsZWN0ZWRMaWNlbnNlVHlwZSwgc2VsZWN0ZWRSb2xlXSwgKCkgPT4ge1xuICBmaWx0ZXJVc2VycygpO1xufSk7XG5cbi8vIEV4dHJhY3QgYXZhaWxhYmxlIGxpY2Vuc2UgdHlwZXMgYW5kIHJvbGVzIGZyb20gY3VycmVudGx5IGxvYWRlZCB1c2Vyc1xuY29uc3QgZXh0cmFjdEZpbHRlck9wdGlvbnMgPSAoKSA9PiB7XG4gIGNvbnN0IGxpY2Vuc2VUeXBlcyA9IG5ldyBTZXQoKTtcbiAgY29uc3Qgcm9sZXMgPSBuZXcgU2V0KCk7XG5cbiAgdXNlcnMudmFsdWUuZm9yRWFjaCh1c2VyID0+IHtcbiAgICAvLyBFeHRyYWN0IGxpY2Vuc2UgdHlwZXNcbiAgICBpZiAodXNlci5saWNlbmNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGxpY2Vuc2VUeXBlcy5hZGQoJ0F1Y3VuZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB1c2VyLmxpY2VuY2VzLmZvckVhY2gobGljZW5zZSA9PiB7XG4gICAgICAgIGlmIChsaWNlbnNlLnByb2R1Y3QgJiYgbGljZW5zZS5wcm9kdWN0LnRpdGxlKSB7XG4gICAgICAgICAgbGljZW5zZVR5cGVzLmFkZChsaWNlbnNlLnByb2R1Y3QudGl0bGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBFeHRyYWN0IHJvbGVzXG4gICAgKHVzZXIucm9sZXMgfHwgW10pLmZvckVhY2gocm9sZSA9PiB7XG4gICAgICByb2xlcy5hZGQocm9sZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGF2YWlsYWJsZUxpY2Vuc2VUeXBlcy52YWx1ZSA9IEFycmF5LmZyb20obGljZW5zZVR5cGVzKTtcbiAgYXZhaWxhYmxlUm9sZXMudmFsdWUgPSBBcnJheS5mcm9tKHJvbGVzKTtcbn07XG5cbm9uTW91bnRlZChhc3luYyAoKSA9PiB7XG4gIGF3YWl0IGZldGNoVXNlcnMoKTtcbn0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cIm14LWF1dG8gcHgtNCBzbTpweC02IGxnOnB4LThcIj5cbiAgICA8ZGl2IGNsYXNzPVwic206ZmxleCBzbTppdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzbTpmbGV4LWF1dG9cIj5cbiAgICAgICAgPGgxIGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtc2VtaWJvbGQgbGVhZGluZy02IHRleHQtZ3JheS05MDBcIj5VdGlsaXNhdGV1cnM8L2gxPlxuICAgICAgICA8cCBjbGFzcz1cIm10LTIgdGV4dC1zbSB0ZXh0LWdyYXktNzAwXCI+TGlzdGUgZGUgdG91cyBsZXMgdXRpbGlzYXRldXJzIGF2ZWMgbGV1cnMgaW5mb3JtYXRpb25zIGV0IGxpY2VuY2VzLjwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTZWFyY2ggYW5kIEZpbHRlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibXQtNCBtYi02XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtNCBzbTpncmlkLWNvbHMtM1wiPlxuICAgICAgICA8IS0tIFNlYXJjaCBpbnB1dCAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIHJvdW5kZWQtbWQgc2hhZG93LXNtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgaW5zZXQteS0wIGxlZnQtMCBmbGV4IGl0ZW1zLWNlbnRlciBwbC0zXCI+XG4gICAgICAgICAgICA8TWFnbmlmeWluZ0dsYXNzSWNvbiBjbGFzcz1cImgtNSB3LTUgdGV4dC1ncmF5LTQwMFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICB2LW1vZGVsPVwic2VhcmNoUXVlcnlcIlxuICAgICAgICAgICAgY2xhc3M9XCJibG9jayB3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXItMCBweS0xLjUgcGwtMTAgdGV4dC1ncmF5LTkwMCByaW5nLTEgcmluZy1pbnNldCByaW5nLWdyYXktMzAwIHBsYWNlaG9sZGVyOnRleHQtZ3JheS00MDAgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctaW5zZXQgZm9jdXM6cmluZy1pbmRpZ28tNjAwIHNtOnRleHQtc20gc206bGVhZGluZy02XCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiUmVjaGVyY2hlciBwYXIgZW1haWwsIG5vbSBvdSBub20gZCdhcnRpc3RlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIExpY2Vuc2UgdHlwZSBmaWx0ZXIgLS0+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgdi1tb2RlbD1cInNlbGVjdGVkTGljZW5zZVR5cGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJibG9jayB3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXItMCBweS0xLjUgcGwtMyBwci0xMCB0ZXh0LWdyYXktOTAwIHJpbmctMSByaW5nLWluc2V0IHJpbmctZ3JheS0zMDAgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctaW5kaWdvLTYwMCBzbTp0ZXh0LXNtIHNtOmxlYWRpbmctNlwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlRvdXMgbGVzIHR5cGVzIGRlIGxpY2VuY2U8L29wdGlvbj5cbiAgICAgICAgICAgIDxvcHRpb24gdi1mb3I9XCJ0eXBlIGluIGF2YWlsYWJsZUxpY2Vuc2VUeXBlc1wiIDprZXk9XCJ0eXBlXCIgOnZhbHVlPVwidHlwZVwiPlxuICAgICAgICAgICAgICB7eyB0eXBlIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBSb2xlIGZpbHRlciAtLT5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICB2LW1vZGVsPVwic2VsZWN0ZWRSb2xlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYmxvY2sgdy1mdWxsIHJvdW5kZWQtbWQgYm9yZGVyLTAgcHktMS41IHBsLTMgcHItMTAgdGV4dC1ncmF5LTkwMCByaW5nLTEgcmluZy1pbnNldCByaW5nLWdyYXktMzAwIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWluZGlnby02MDAgc206dGV4dC1zbSBzbTpsZWFkaW5nLTZcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5Ub3VzIGxlcyByw7RsZXM8L29wdGlvbj5cbiAgICAgICAgICAgIDxvcHRpb24gdi1mb3I9XCJyb2xlIGluIGF2YWlsYWJsZVJvbGVzXCIgOmtleT1cInJvbGVcIiA6dmFsdWU9XCJyb2xlXCI+XG4gICAgICAgICAgICAgIHt7IHJvbGUgfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIENsZWFyIGZpbHRlcnMgYnV0dG9uIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm10LTMgZmxleCBqdXN0aWZ5LWVuZFwiIHYtaWY9XCJzZWFyY2hRdWVyeSB8fCBzZWxlY3RlZExpY2Vuc2VUeXBlIHx8IHNlbGVjdGVkUm9sZVwiPlxuICAgICAgICA8YnV0dG9uIFxuICAgICAgICAgIEBjbGljaz1cImNsZWFyRmlsdGVyc1wiIFxuICAgICAgICAgIGNsYXNzPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHJvdW5kZWQtbWQgYmctd2hpdGUgcHgtMyBweS0yIHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIHNoYWRvdy1zbSByaW5nLTEgcmluZy1pbnNldCByaW5nLWdyYXktMzAwIGhvdmVyOmJnLWdyYXktNTBcIlxuICAgICAgICA+XG4gICAgICAgICAgPFhNYXJrSWNvbiBjbGFzcz1cIi1tbC0wLjUgbXItMS41IGgtNSB3LTUgdGV4dC1ncmF5LTQwMFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgRWZmYWNlciBsZXMgZmlsdHJlc1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm10LTggZmxvdy1yb290XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiLW14LTQgLW15LTIgb3ZlcmZsb3cteC1hdXRvIHNtOi1teC02IGxnOi1teC04XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmxpbmUtYmxvY2sgbWluLXctZnVsbCBweS0yIGFsaWduLW1pZGRsZSBzbTpweC02IGxnOnB4LThcIj5cbiAgICAgICAgICA8ZGl2IHYtaWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBoLTY0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW5pbWF0ZS1zcGluIHJvdW5kZWQtZnVsbCBoLTEyIHctMTIgYm9yZGVyLXQtMiBib3JkZXItYi0yIGJvcmRlci1pbmRpZ28tNTAwXCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IHYtZWxzZT5cbiAgICAgICAgICAgIDwhLS0gTm8gcmVzdWx0cyBtZXNzYWdlIC0tPlxuICAgICAgICAgICAgPGRpdiB2LWlmPVwidXNlcnMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBweS0xMiBiZy13aGl0ZSByb3VuZGVkLWxnIHNoYWRvd1wiPlxuICAgICAgICAgICAgICA8RnVubmVsSWNvbiBjbGFzcz1cIm14LWF1dG8gaC0xMiB3LTEyIHRleHQtZ3JheS00MDBcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAvPlxuICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJtdC0yIHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwXCI+QXVjdW4gcsOpc3VsdGF0PC9oMz5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtdC0xIHRleHQtc20gdGV4dC1ncmF5LTUwMFwiPlxuICAgICAgICAgICAgICAgIEF1Y3VuIHV0aWxpc2F0ZXVyIG5lIGNvcnJlc3BvbmQgw6Agdm9zIGNyaXTDqHJlcyBkZSByZWNoZXJjaGUuXG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTZcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIEBjbGljaz1cImNsZWFyRmlsdGVyc1wiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciByb3VuZGVkLW1kIGJnLWluZGlnby02MDAgcHgtMyBweS0yIHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlIHNoYWRvdy1zbSBob3ZlcjpiZy1pbmRpZ28tNTAwIGZvY3VzLXZpc2libGU6b3V0bGluZSBmb2N1cy12aXNpYmxlOm91dGxpbmUtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLWluZGlnby02MDBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxYTWFya0ljb24gY2xhc3M9XCItbWwtMC41IG1yLTEuNSBoLTUgdy01XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgIEVmZmFjZXIgbGVzIGZpbHRyZXNcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBSZXN1bHRzIHRhYmxlIC0tPlxuICAgICAgICAgICAgPGRpdiB2LWVsc2UgY2xhc3M9XCJvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwibWluLXctZnVsbCBkaXZpZGUteSBkaXZpZGUtZ3JheS0zMDBcIj5cbiAgICAgICAgICAgICAgICA8dGhlYWQgY2xhc3M9XCJiZy1ncmF5LTUwXCI+XG4gICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzPVwicHktMy41IHBsLTQgcHItMyB0ZXh0LWxlZnQgdGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgc206cGwtNlwiPkVtYWlsPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJweC0zIHB5LTMuNSB0ZXh0LWxlZnQgdGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDBcIj5Ob208L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiBjbGFzcz1cInB4LTMgcHktMy41IHRleHQtbGVmdCB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTkwMFwiPlR5cGUgZGUgbGljZW5jZTwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzPVwicHgtMyBweS0zLjUgdGV4dC1sZWZ0IHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwXCI+RGVybmnDqHJlIGNvbm5leGlvbjwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzPVwicmVsYXRpdmUgcHktMy41IHBsLTMgcHItNCBzbTpwci02XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+QWN0aW9uczwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJkaXZpZGUteSBkaXZpZGUtZ3JheS0yMDAgYmctd2hpdGVcIj5cbiAgICAgICAgICAgICAgICAgIDx0ciB2LWZvcj1cInVzZXIgaW4gcGFnaW5hdGVkVXNlcnNcIiA6a2V5PVwidXNlci5lbWFpbFwiIGNsYXNzPVwiaG92ZXI6YmctZ3JheS01MFwiPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vd3JhcCBweS00IHBsLTQgcHItMyB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS05MDAgc206cGwtNlwiPnt7IHVzZXIuZW1haWwgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vd3JhcCBweC0zIHB5LTQgdGV4dC1zbSB0ZXh0LWdyYXktNTAwXCI+e3sgdXNlci5uYW1lIHx8ICctJyB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIndoaXRlc3BhY2Utbm93cmFwIHB4LTMgcHktNCB0ZXh0LXNtIHRleHQtZ3JheS01MDBcIj57eyBnZXRMaWNlbnNlVHlwZSh1c2VyKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIndoaXRlc3BhY2Utbm93cmFwIHB4LTMgcHktNCB0ZXh0LXNtIHRleHQtZ3JheS01MDBcIj57eyBnZXRMYXN0Q29ubmVjdGlvbih1c2VyKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInJlbGF0aXZlIHdoaXRlc3BhY2Utbm93cmFwIHB5LTQgcGwtMyBwci00IHRleHQtcmlnaHQgdGV4dC1zbSBmb250LW1lZGl1bSBzbTpwci02XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGEgOmhyZWY9XCJgL2JhY2tvZmZpY2UvdXRpbGlzYXRldXJzLyR7dXNlci5lbWFpbH1gXCIgY2xhc3M9XCJ0ZXh0LWluZGlnby02MDAgaG92ZXI6dGV4dC1pbmRpZ28tOTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBWb2lyPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+LCB7eyB1c2VyLmVtYWlsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBQYWdpbmF0aW9uIC0tPlxuICAgICAgICAgIDxkaXYgdi1pZj1cIiFsb2FkaW5nICYmIHVzZXJzLmxlbmd0aCA+IDAgJiYgdG90YWxQYWdlcyA+IDFcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBib3JkZXItdCBib3JkZXItZ3JheS0yMDAgYmctd2hpdGUgcHgtNCBweS0zIHNtOnB4LTYgbXQtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC0xIGp1c3RpZnktYmV0d2VlbiBzbTpoaWRkZW5cIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJwcmV2UGFnZVwiIDpkaXNhYmxlZD1cImN1cnJlbnRQYWdlID09PSAxXCIgY2xhc3M9XCJyZWxhdGl2ZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWdyYXktMzAwIGJnLXdoaXRlIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS03MDAgaG92ZXI6YmctZ3JheS01MFwiIDpjbGFzcz1cInsgJ29wYWNpdHktNTAgY3Vyc29yLW5vdC1hbGxvd2VkJzogY3VycmVudFBhZ2UgPT09IDEgfVwiPlxuICAgICAgICAgICAgICAgIFByw6ljw6lkZW50XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz1cIm5leHRQYWdlXCIgOmRpc2FibGVkPVwiY3VycmVudFBhZ2UgPT09IHRvdGFsUGFnZXNcIiBjbGFzcz1cInJlbGF0aXZlIG1sLTMgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCBiZy13aGl0ZSBweC00IHB5LTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNzAwIGhvdmVyOmJnLWdyYXktNTBcIiA6Y2xhc3M9XCJ7ICdvcGFjaXR5LTUwIGN1cnNvci1ub3QtYWxsb3dlZCc6IGN1cnJlbnRQYWdlID09PSB0b3RhbFBhZ2VzIH1cIj5cbiAgICAgICAgICAgICAgICBTdWl2YW50XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGlkZGVuIHNtOmZsZXggc206ZmxleC0xIHNtOml0ZW1zLWNlbnRlciBzbTpqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc20gdGV4dC1ncmF5LTcwMFwiPlxuICAgICAgICAgICAgICAgICAgQWZmaWNoYWdlIGRlIDxzcGFuIGNsYXNzPVwiZm9udC1tZWRpdW1cIj57eyB0b3RhbCA/IChjdXJyZW50UGFnZSAtIDEpICogaXRlbXNQZXJQYWdlICsgMSA6IDAgfX08L3NwYW4+IMOgIDxzcGFuIGNsYXNzPVwiZm9udC1tZWRpdW1cIj57eyBNYXRoLm1pbihjdXJyZW50UGFnZSAqIGl0ZW1zUGVyUGFnZSwgdG90YWwpIH19PC9zcGFuPiBzdXIgPHNwYW4gY2xhc3M9XCJmb250LW1lZGl1bVwiPnt7IHRvdGFsIH19PC9zcGFuPiByw6lzdWx0YXRzXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8bmF2IGNsYXNzPVwiaXNvbGF0ZSBpbmxpbmUtZmxleCAtc3BhY2UteC1weCByb3VuZGVkLW1kIHNoYWRvdy1zbVwiIGFyaWEtbGFiZWw9XCJQYWdpbmF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIEBjbGljaz1cInByZXZQYWdlXCIgOmRpc2FibGVkPVwiY3VycmVudFBhZ2UgPT09IDFcIiBjbGFzcz1cInJlbGF0aXZlIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciByb3VuZGVkLWwtbWQgcHgtMiBweS0yIHRleHQtZ3JheS00MDAgcmluZy0xIHJpbmctaW5zZXQgcmluZy1ncmF5LTMwMCBob3ZlcjpiZy1ncmF5LTUwIGZvY3VzOnotMjAgZm9jdXM6b3V0bGluZS1vZmZzZXQtMFwiIDpjbGFzcz1cInsgJ29wYWNpdHktNTAgY3Vyc29yLW5vdC1hbGxvd2VkJzogY3VycmVudFBhZ2UgPT09IDEgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5QcsOpY8OpZGVudDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtNSB3LTVcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTEyLjc5IDUuMjNhLjc1Ljc1IDAgMDEtLjAyIDEuMDZMOC44MzIgMTBsMy45MzggMy43MWEuNzUuNzUgMCAxMS0xLjA0IDEuMDhsLTQuNS00LjI1YS43NS43NSAwIDAxMC0xLjA4bDQuNS00LjI1YS43NS43NSAwIDAxMS4wNi4wMnpcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwicGFnZSBpbiB0b3RhbFBhZ2VzXCIgOmtleT1cInBhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB2LWlmPVwicGFnZSA9PT0gY3VycmVudFBhZ2UgfHwgKHBhZ2UgPD0gMyB8fCBwYWdlID49IHRvdGFsUGFnZXMgLSAyIHx8IE1hdGguYWJzKHBhZ2UgLSBjdXJyZW50UGFnZSkgPD0gMSlcIiBAY2xpY2s9XCJnb1RvUGFnZShwYWdlKVwiIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgICAgICAgICAncmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQnLFxuICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlID09PSBwYWdlID8gJ3otMTAgYmctaW5kaWdvLTYwMCB0ZXh0LXdoaXRlIGZvY3VzLXZpc2libGU6b3V0bGluZSBmb2N1cy12aXNpYmxlOm91dGxpbmUtMiBmb2N1cy12aXNpYmxlOm91dGxpbmUtb2Zmc2V0LTIgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLWluZGlnby02MDAnIDogJ3RleHQtZ3JheS05MDAgcmluZy0xIHJpbmctaW5zZXQgcmluZy1ncmF5LTMwMCBob3ZlcjpiZy1ncmF5LTUwIGZvY3VzOm91dGxpbmUtb2Zmc2V0LTAnXG4gICAgICAgICAgICAgICAgICAgIF1cIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBwYWdlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiB2LWVsc2UtaWY9XCJwYWdlID09PSA0ICYmIGN1cnJlbnRQYWdlID4gNFwiIGNsYXNzPVwicmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTcwMCByaW5nLTEgcmluZy1pbnNldCByaW5nLWdyYXktMzAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgLi4uXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1lbHNlLWlmPVwicGFnZSA9PT0gdG90YWxQYWdlcyAtIDMgJiYgY3VycmVudFBhZ2UgPCB0b3RhbFBhZ2VzIC0gM1wiIGNsYXNzPVwicmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTcwMCByaW5nLTEgcmluZy1pbnNldCByaW5nLWdyYXktMzAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgLi4uXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPVwibmV4dFBhZ2VcIiA6ZGlzYWJsZWQ9XCJjdXJyZW50UGFnZSA9PT0gdG90YWxQYWdlc1wiIGNsYXNzPVwicmVsYXRpdmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHJvdW5kZWQtci1tZCBweC0yIHB5LTIgdGV4dC1ncmF5LTQwMCByaW5nLTEgcmluZy1pbnNldCByaW5nLWdyYXktMzAwIGhvdmVyOmJnLWdyYXktNTAgZm9jdXM6ei0yMCBmb2N1czpvdXRsaW5lLW9mZnNldC0wXCIgOmNsYXNzPVwieyAnb3BhY2l0eS01MCBjdXJzb3Itbm90LWFsbG93ZWQnOiBjdXJyZW50UGFnZSA9PT0gdG90YWxQYWdlcyB9XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPlN1aXZhbnQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTUgdy01XCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgZD1cIk03LjIxIDE0Ljc3YS43NS43NSAwIDAxLjAyLTEuMDZMMTEuMTY4IDEwIDcuMjMgNi4yOWEuNzUuNzUgMCAxMTEuMDQtMS4wOGw0LjUgNC4yNWEuNzUuNzUgMCAwMTAgMS4wOGwtNC41IDQuMjVhLjc1Ljc1IDAgMDEtMS4wNi0uMDJ6XCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9uYXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbi8qIEFkZGl0aW9uYWwgc3R5bGluZyBpZiBuZWVkZWQgKi9cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgaWQ9XCJzbW9vdGgtd3JhcHBlclwiIHJlZj1cImNvbnRhaW5lclwiPlxuICAgIDxkaXYgaWQ9XCJzbW9vdGgtY29udGVudFwiIGNsYXNzPVwidGV4dC13aGl0ZSBiZy1jdXN0b20tcGF0dGVyblwiPlxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJyZWxhdGl2ZVwiIHJlZj1cInMxXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJiYWNrLXNlY3Rpb24tMVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1zMSBmbGV4IGl0ZW1zLWNlbnRlciBoLWZ1bGxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidy01LzEyIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIHB4LTI0XCI+XG4gICAgICAgICAgICA8aW1nIHNyYz1cIi9yZXMvaW1hZ2VzL2xvZ28ucG5nXCIgYWx0PVwiXCIgY2xhc3M9XCJ3LTQvNVwiPlxuICAgICAgICAgICAgPGgxIGNsYXNzPVwidGV4dC0yeGwgZm9udC1ib2xkIHRyYWNraW5nLXRpZ2h0ZXJcIj4xIFNFVUwgUExVR0lOLCAxIFZPSVggTUlYw4lFPC9oMT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00IHctZnVsbCBmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwic2Vjb25kIHRyYWNraW5nLXRpZ2h0IC1tYi0yIHRleHQteGwgZm9udC1zZW1pYm9sZFwiPlrDqXJvIGxhdGVuY2U8L2gyPlxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImZvbnQtbWVkaXVtIHRleHQtZ3JheS0yMDAgdHJhY2tpbmctdGlnaHRlclwiPkVucmVnaXN0cmV6IGF2ZWMgbOKAmWVmZmV0LCBlbiB0ZW1wcyByw6llbDwvaDM+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cInNlY29uZCB0cmFja2luZy10aWdodCAtbWItMiB0ZXh0LXhsIGZvbnQtc2VtaWJvbGRcIj5Mw6lnZXIgZW4gQ1BVPC9oMj5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJmb250LW1lZGl1bSB0ZXh0LWdyYXktMjAwIHRyYWNraW5nLXRpZ2h0ZXJcIj5O4oCZYWxvdXJkaXQgcGFzIHZvdHJlIHNlc3Npb24sIG3Dqm1lIHN1ciBsYXB0b3A8L2gzPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJzZWNvbmQgdHJhY2tpbmctdGlnaHQgLW1iLTIgdGV4dC14bCBmb250LXNlbWlib2xkXCI+RGVzIGNvbnRyw7RsZXMgbXVzaWNhdXg8L2gyPlxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImZvbnQtbWVkaXVtIHRleHQtZ3JheS0yMDAgdHJhY2tpbmctdGlnaHRlclwiPlNpbXBsaWNpdMOpLCBwYXMgZGUgcsOpZ2xhZ2VzIHRlY2huaXF1ZXM8L2gzPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTYgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEwIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxhIGhyZWY9XCIvYWNoYXRcIiBjbGFzcz1cImJnLXNlY29uZCBweC0xMiBweS0zIHJvdW5kZWQtZnVsbCBzaGFkb3cgdGV4dC0yeGwgdHJhY2tpbmctdGlnaHRlciBmb250LXNlbWlib2xkXCI+QWNoZXRlcjwvYT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtNCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC14bCBmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0ZXJcIj5WU1QzPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC14bCBmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0ZXJcIj5BdWRpb1VuaXQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHRlclwiPkNMQVA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHRlclwiPkFBWDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSBmb250LWxpZ2h0IHRyYWNraW5nLXRpZ2h0IHRleHQtY2VudGVyXCI+V2luZG93cyAmIE1hY09TIGNvbXBhdGlibGU8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidy03LzEyIHByLTVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBtdC0xNiBhc3BlY3QtWzI0MzIvMTQ0Ml0gdy1mdWxsXCIgcmVmPVwidnN0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSAtaW5zZXQtMiByb3VuZGVkLVtjYWxjKHRoZW1lKGJvcmRlclJhZGl1cy54bCkrdGhlbWUoc3BhY2luZy4yKSldIGJnLXdoaXRlL1syLjUlXSBzaGFkb3ctW2luc2V0XzBfMF8ycHhfMXB4X3JnYigyNTVfMjU1XzI1NS8yLjUlKV0gcmluZy0xIHJpbmctd2hpdGUvMTBcIiAvPlxuICAgICAgICAgICAgICA8aW1nIGFsdD1cIlwiIHNyYz1cIi9yZXMvaW1hZ2VzL3ByZXZpZXcucG5nXCIgY2xhc3M9XCJyZWxhdGl2ZSBoLWZ1bGwgcm91bmRlZC14bCBzaGFkb3ctMnhsIHJpbmctMSByaW5nLXdoaXRlLzEwXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICAgIDxzZWN0aW9uIGlkPVwicHJlc2VudGF0aW9uXCIgY2xhc3M9XCJweC1bNXZ3XVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgaC1mdWxsXCI+XG4gICAgICAgICAgPGRpdiByZWY9XCJ0ZXh0V3JhcHBlclwiIGNsYXNzPVwic3BsaXRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2Vjb25kXCI+TGVWb2l4PC9zcGFuPiBlc3QgdW4gcGx1Z2luIGNvbsOndSBwb3VyIG1peGVyIGxlcyB2b2l4IGVuIHF1ZWxxdWVzIGNsaWNzLCBncsOiY2Ugw6AgdW5lIDxzcGFuIGNsYXNzPVwic2Vjb25kXCI+Y2hhw65uZSBk4oCZZWZmZXRzIGhhdXQgZGUgZ2FtbWU8L3NwYW4+IHBlcmZlY3Rpb25uw6llIHBlbmRhbnQgcHLDqHMgZGUgNCBhbnMuXG4gICAgICAgICAgICA8aHI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY29uZFwiPlNhbnMgbGF0ZW5jZTwvc3Bhbj4gKDAgbXMpLCBMZVZvaXggcGV1dCDDqnRyZSA8c3BhbiBjbGFzcz1cInNlY29uZFwiPnV0aWxpc8OpIGVuIGRpcmVjdDwvc3Bhbj4sIG3Dqm1lIHBlbmRhbnQgbOKAmWVucmVnaXN0cmVtZW50LCBhdmVjIHVuIG1vbml0b3JpbmcgZW4gdGVtcHMgcsOpZWwuXG4gICAgICAgICAgICA8aHI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY29uZFwiPkF1Y3VuIHLDqWdsYWdlIHRlY2huaXF1ZSBjb21wbGlxdcOpPC9zcGFuPiA6IGNoYXF1ZSBib3V0b24gY29ycmVzcG9uZCDDoCB1bmUgYWN0aW9uIG11c2ljYWxlIGNvbmNyw6h0ZSwgcGVuc8OpZSBwb3VyIGFsbGVyIGRyb2l0IMOgIGzigJllc3NlbnRpZWwuXG4gICAgICAgICAgICA8aHI+XG4gICAgICAgICAgICBMZSB0b3V0IGVzdCBvcHRpbWlzw6kgcG91ciB1bmUgPHNwYW4gY2xhc3M9XCJzZWNvbmRcIj5jb25zb21tYXRpb24gQ1BVIG1pbmltYWxlPC9zcGFuPiwgYWZpbiBxdWUgdm91cyBwdWlzc2lleiBs4oCZaW5zw6lyZXIgc3VyIHRvdXRlcyBsZXMgcGlzdGVzIHZvY2FsZXMgZGUgdm90cmUgcHJvamV0LCBzYW5zIGNvbXByb21pcy5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgICA8c2VjdGlvbiBpZD1cImZvbmN0aW9ubmFsaXRlc1wiIGNsYXNzPVwicC1bNXZ3XVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIHctZnVsbCByZWxhdGl2ZVwiPlxuICAgICAgICAgIDxpbWcgYWx0PVwiXCIgc3JjPVwiL3Jlcy9pbWFnZXMva25vYi5wbmdcIiBjbGFzcz1cImgtZnVsbCB3LWF1dG8gYWJzb2x1dGUgdG9wLTAgbGVmdC0wIGJvdHRvbS0wXCIgLz5cbiAgICAgICAgICA8aW1nIGFsdD1cIlwiIHNyYz1cIi9yZXMvaW1hZ2VzL2J1aWxkL2tub2IucG5nXCIgY2xhc3M9XCJoLWZ1bGwgdy1hdXRvIGFic29sdXRlIHRvcC0wIGxlZnQtMCBib3R0b20tMFwiIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIHRvcC0wIHJpZ2h0LTQwIGJvdHRvbS0wIHctNC8xMiBmbGV4IGZsZXgtY29sIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LTN4bCBtYi04IHRleHQtY2VudGVyXCI+PHNwYW4gY2xhc3M9XCJzZWNvbmRcIj5MYSBDb21wcmVzc2lvbjwvc3Bhbj4g4oCcT25lIEtub2LigJ08L2gzPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LTJ4bCBtYi02IHRleHQtY2VudGVyXCI+VW5lIHNldWxlIGNvbW1hbmRlIHBvdXIgdW5lIGNvbXByZXNzaW9uIHZvY2FsZSBjb21wbMOodGUuIFNvdXMgbGUgY2Fwb3QgOiB1bmUgY29tcHJlc3Npb24gZG91Y2UsIHVuZSBjb21wcmVzc2lvbiBhZ3Jlc3NpdmUsIGV0IHVuIGxpbWl0ZXIgZmluYWwsIHBhcmZhaXRlbWVudCBlbmNoYcOubsOpcyBlbiBzw6lyaWUgZXQgZW4gcGFyYWxsw6hsZSBwb3VyIHVuIHJlbmR1IMOgIGxhIGZvaXMgcHVpc3NhbnQgZXQgbmF0dXJlbC48L3A+XG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtMnhsIG1iLTYgdGV4dC1jZW50ZXJcIj5BdWN1biByw6lnbGFnZSB0ZWNobmlxdWUgw6AgZ8OpcmVyIDogdG91dCBlc3QgcGVuc8OpIHBvdXIgbGEgdm9peCwgcHLDqnQgw6AgbOKAmWVtcGxvaS48L3A+XG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtMnhsIHRleHQtY2VudGVyXCI+QXZlYyBzb24gaW5kaWNhdGV1ciBkZSBuaXZlYXUgZOKAmWVudHLDqWUgaW50w6lncsOpIHBvdXIgdmlzZXIgw6AgY2hhcXVlIGZvaXMgbGUgc3dlZXQgc3BvdCBpZMOpYWwuPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICAgIDxzZWN0aW9uIHJlZj1cInNlY3Rpb25fbGluZXNcIiBjbGFzcz1cImJnLWJsYWNrIHJlbGF0aXZlIHB4LVs1dnddIHBiLVs1dmhdIHB0LVsxMHZoXVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIHctZnVsbCByZWxhdGl2ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC0wIFwiPlxuICAgICAgICAgICAgPGltZyBhbHQ9XCJcIiBzcmM9XCIvcmVzL2ltYWdlcy92c3RfbGluZXMucG5nXCIgY2xhc3M9XCJoLWZ1bGwgdy1hdXRvIGFic29sdXRlIHRvcC0wIHJpZ2h0LTAgYm90dG9tLTBcIiAvPlxuICAgICAgICAgICAgPGltZyBhbHQ9XCJcIiBzcmM9XCIvcmVzL2ltYWdlcy9idWlsZC9saW5lXzEucG5nXCIgY2xhc3M9XCJoLWZ1bGwgdy1hdXRvIGFic29sdXRlIHRvcC0wIHJpZ2h0LTAgYm90dG9tLTAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwXCIgOmNsYXNzPVwieyAnb3BhY2l0eS0xMDAnOiBhY3RpdmVJbmRleCA9PT0gMCwgJ29wYWNpdHktMjAnOiBhY3RpdmVJbmRleCAhPT0gMCwgJ2hpZGRlbic6IGFjdGl2ZUluZGV4IDwgMCB9XCIgLz5cbiAgICAgICAgICAgIDxpbWcgYWx0PVwiXCIgc3JjPVwiL3Jlcy9pbWFnZXMvYnVpbGQvbGluZV8yLnBuZ1wiIGNsYXNzPVwiaC1mdWxsIHctYXV0byBhYnNvbHV0ZSB0b3AtMCByaWdodC0wIGJvdHRvbS0wIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMFwiIDpjbGFzcz1cInsgJ29wYWNpdHktMTAwJzogYWN0aXZlSW5kZXggPT09IDEsICdvcGFjaXR5LTIwJzogYWN0aXZlSW5kZXggIT09IDEsICdoaWRkZW4nOiBhY3RpdmVJbmRleCA8IDEgfVwiIC8+XG4gICAgICAgICAgICA8aW1nIGFsdD1cIlwiIHNyYz1cIi9yZXMvaW1hZ2VzL2J1aWxkL2xpbmVfMy5wbmdcIiBjbGFzcz1cImgtZnVsbCB3LWF1dG8gYWJzb2x1dGUgdG9wLTAgcmlnaHQtMCBib3R0b20tMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDBcIiA6Y2xhc3M9XCJ7ICdvcGFjaXR5LTEwMCc6IGFjdGl2ZUluZGV4ID09PSAyLCAnb3BhY2l0eS0yMCc6IGFjdGl2ZUluZGV4ICE9PSAyLCAnaGlkZGVuJzogYWN0aXZlSW5kZXggPCAyIH1cIiAvPlxuICAgICAgICAgICAgPGltZyBhbHQ9XCJcIiBzcmM9XCIvcmVzL2ltYWdlcy9idWlsZC9saW5lXzQucG5nXCIgY2xhc3M9XCJoLWZ1bGwgdy1hdXRvIGFic29sdXRlIHRvcC0wIHJpZ2h0LTAgYm90dG9tLTAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNTAwXCIgOmNsYXNzPVwieyAnb3BhY2l0eS0xMDAnOiBhY3RpdmVJbmRleCA9PT0gMywgJ29wYWNpdHktMjAnOiBhY3RpdmVJbmRleCAhPT0gMywgJ2hpZGRlbic6IGFjdGl2ZUluZGV4IDwgMyB9XCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgdG9wLVs5dmhdIGxlZnQtMTAgdy01LzEyIHRleHQtMnhsIHRleHQtY2VudGVyIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMFwiIDpjbGFzcz1cInsgJ29wYWNpdHktMTAwJzogYWN0aXZlSW5kZXggPT09IDAsICdvcGFjaXR5LTAnOiBhY3RpdmVJbmRleCAhPT0gMCB9XCI+XG4gICAgICAgICAgICAgIFVuIDxzcGFuIGNsYXNzPVwic2Vjb25kXCI+RVEgNCBiYW5kZXM8L3NwYW4+IHBlbnPDqSBwb3VyIGxhIHZvaXgsIGF2ZWMgdW5lIGJhbmRlIDxzcGFuIGNsYXNzPVwic2Vjb25kXCI+4oCcQWly4oCdIGR5bmFtaXF1ZSBldCBpbnRlbGxpZ2VudGU8L3NwYW4+LCBmcnVpdCBk4oCZdW4gZGVzaWduIHVuaXF1ZVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgdG9wLVsyMHZoXSBsZWZ0LTEwIHctNS8xMiB0ZXh0LWNlbnRlciB0ZXh0LTJ4bCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDBcIiA6Y2xhc3M9XCJ7ICdvcGFjaXR5LTEwMCc6IGFjdGl2ZUluZGV4ID09PSAxLCAnb3BhY2l0eS0wJzogYWN0aXZlSW5kZXggIT09IDEgfVwiPlxuICAgICAgICAgICAgICBVbiA8c3BhbiBjbGFzcz1cInNlY29uZFwiPmZpbHRyZSB0w6lsw6lwaG9uZTwvc3Bhbj4gcHJvZ3Jlc3NpZiwgdW4gPHNwYW4gY2xhc3M9XCJzZWNvbmRcIj5kb3VibGV1cjwvc3Bhbj4gbW9uby1jb21wYXRpYmxlLCB1biA8c3BhbiBjbGFzcz1cInNlY29uZFwiPmTDqS1lc3NldXIgaW50ZWxsaWdlbnQ8L3NwYW4+LCB1biA8c3BhbiBjbGFzcz1cInNlY29uZFwiPmNob3J1czwvc3Bhbj4gZXQgdW5lIDxzcGFuIGNsYXNzPVwic2Vjb25kXCI+c2F0dXJhdGlvbjwvc3Bhbj4gOiB0b3V0IHBvdXIgc2N1bHB0ZXIgdm9zIHZvaXggYXZlYyBkZXMgcsOpZ2xhZ2VzIHNpbXBsZXMsIGltbcOpZGlhdHMgZXQgY3LDqWF0aWZzICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgdG9wLVs1MHZoXSBsZWZ0LTEwIHctNS8xMiB0ZXh0LWNlbnRlciB0ZXh0LTJ4bCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDBcIiA6Y2xhc3M9XCJ7ICdvcGFjaXR5LTEwMCc6IGFjdGl2ZUluZGV4ID09PSAyLCAnb3BhY2l0eS0wJzogYWN0aXZlSW5kZXggIT09IDIgfVwiPlxuICAgICAgICAgICAgICBVbiA8c3BhbiBjbGFzcz1cInNlY29uZFwiPmRlbGF5IGFkYXB0YXRpZjwvc3Bhbj4gKGF1dG8gZHVja2luZykgOiBpbCBzZSBmYWl0IGRpc2NyZXQgcGVuZGFudCBsZSBjaGFudCwgcHVpcyByZXByZW5kIGRlIGzigJlhbXBsZXVyIGVudHJlIGxlcyBwaHJhc2VzIHBvdXIgZW5yaWNoaXIgbGEgcGlzdGUuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgdG9wLVs0OHZoXSBsZWZ0LTEwIHctNS8xMiB0ZXh0LWNlbnRlciB0ZXh0LTJ4bCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDBcIiA6Y2xhc3M9XCJ7ICdvcGFjaXR5LTEwMCc6IGFjdGl2ZUluZGV4ID09PSAzLCAnb3BhY2l0eS0wJzogYWN0aXZlSW5kZXggIT09IDMgfVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY29uZFwiPjQgUmV2ZXJicyBoYXV0IGRlIGdhbW1lPC9zcGFuPiwgcGVuc8OpZXMgcG91ciBsYSB2b2l4LiBMZXMgcmV2ZXJicyBz4oCZYWp1c3RlbnQgPHNwYW4gY2xhc3M9XCJzZWNvbmRcIj5hdXRvbWF0aXF1ZW1lbnQ8L3NwYW4+IHBvdXIgbGFpc3NlciBsYSB2b2l4IGxlYWQgYmllbiBlbiBhdmFudCBsb3JzIGR1IGNoYW50IGV0IHNlIGxpYsOocmVudCBlbiBmaW4gZGUgcGhyYXNlXG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cInRleHQtbGVmdCB0ZXh0LXhsIG10LTNcIj5cbiAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9XCJzZWNvbmRcIj5TaG9ydCA6PC9zcGFuPiBwbGFjZSBsYSB2b2l4IGRhbnMgdW5lIHBpw6hjZSBpbnRpbWU8L2xpPlxuICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz1cInNlY29uZFwiPlNtYWxsIDo8L3NwYW4+IHVuZSBwbGF0ZSBjaGFsZXVyZXVzZSBldCBwcsOpY2lzZTwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPVwic2Vjb25kXCI+QmlnIDo8L3NwYW4+IHVuZSByZXZlcmIgYW1wbGUgZGUgdHlwZSBIYWxsPC9saT5cbiAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9XCJzZWNvbmRcIj5MdXNoIDo8L3NwYW4+IHVuZSBsb25ndWUgSGFsbCB0cmFpdMOpZSwgcGFyZmFpdGUgcG91ciBsZXMgYWRsaWJzIG91IGxlcyBhbWJpYW5jZXMgcGxhbmFudGVzPC9saT5cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICAgIDxzZWN0aW9uIGlkPVwicHJpY2VcIiBjbGFzcz1cInAtWzV2d10gcHQtWzEwdnddIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTgvMTIgcHItMTBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgYXNwZWN0LVsyNDMyLzE0NDJdIHctZnVsbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIC1pbnNldC0yIHJvdW5kZWQtW2NhbGModGhlbWUoYm9yZGVyUmFkaXVzLnhsKSt0aGVtZShzcGFjaW5nLjIpKV0gYmctd2hpdGUvWzIuNSVdIHNoYWRvdy1baW5zZXRfMF8wXzJweF8xcHhfcmdiKDI1NV8yNTVfMjU1LzIuNSUpXSByaW5nLTEgcmluZy13aGl0ZS8xMFwiIC8+XG4gICAgICAgICAgICA8aW1nIGFsdD1cIlwiIHNyYz1cIi9yZXMvaW1hZ2VzL3ByZXZpZXcucG5nXCIgY2xhc3M9XCJyZWxhdGl2ZSBoLWZ1bGwgcm91bmRlZC14bCBzaGFkb3ctMnhsIHJpbmctMSByaW5nLXdoaXRlLzEwXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTQvMTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgdy1mdWxsIG1iLTEwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgLWluc2V0LTIgcm91bmRlZC1bY2FsYyh0aGVtZShib3JkZXJSYWRpdXMueGwpK3RoZW1lKHNwYWNpbmcuMikpXSBiZy13aGl0ZS9bMi41JV0gc2hhZG93LVtpbnNldF8wXzBfMnB4XzFweF9yZ2IoMjU1XzI1NV8yNTUvMi41JSldIHJpbmctMSByaW5nLXdoaXRlLzEwXCIgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3VuZGVkLXhsIHAtNyBwdC01IGJnLVsjNjEwRDBEXSBmbGV4IGl0ZW1zLWNlbnRlciBwci0xMlwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMC8xMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWVuZCAtbWItMVwiPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtci0yIHRleHQteGxcIj5MaWNlbmNlIGNvbXBsw6h0ZTwvcD48c3BhbiBjbGFzcz1cInNlY29uZCB0ZXh0LTJ4bFwiPjQ54oKsPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSBvcGFjaXR5LTcwXCI+TGljZW5jZSDDoCB2aWUgYXZlYyBsZXMgbWlzZXMgYSBqb3VyICE8L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0yLzEyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXdoaXRlIHRleHQteGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmRcIj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtY2FydC1zaG9wcGluZ1wiPjwvaT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIHctZnVsbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIC1pbnNldC0yIHJvdW5kZWQtW2NhbGModGhlbWUoYm9yZGVyUmFkaXVzLnhsKSt0aGVtZShzcGFjaW5nLjIpKV0gYmctd2hpdGUvWzIuNSVdIHNoYWRvdy1baW5zZXRfMF8wXzJweF8xcHhfcmdiKDI1NV8yNTVfMjU1LzIuNSUpXSByaW5nLTEgcmluZy13aGl0ZS8xMFwiIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm91bmRlZC14bCBwLTcgcHQtNSBiZy1bIzc3MTAxMF0gZmxleCBpdGVtcy1jZW50ZXIgcHItMTJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAvMTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1lbmQgLW1iLTFcIj5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibXItMiB0ZXh0LXhsXCI+RMOpbW8gY29tcGzDqHRlPC9wPjxzcGFuIGNsYXNzPVwic2Vjb25kIHRleHQtMnhsIHRyYWNraW5nLXRpZ2h0ZXJcIj5HUkFUVUlURTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc20gb3BhY2l0eS03MFwiPlRlc3RlcyBsZXMgZm9uY3Rpb25uYWxpdMOpcyBwZW5kYW50IDcgam91cnMgITwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTIvMTJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtd2hpdGUgdGV4dC14bCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1jYXJ0LXNob3BwaW5nXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgICA8c2VjdGlvbiBpZD1cImZhcVwiIHN0eWxlPVwiaGVpZ2h0OiBhdXRvXCI+XG4gICAgICAgIDxGQVEgLz5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IHNldHVwPlxuaW1wb3J0IHsgcmVmLCBvbk1vdW50ZWQgfSBmcm9tICd2dWUnXG5pbXBvcnQgeyBnc2FwIH0gZnJvbSAnZ3NhcCdcbmltcG9ydCB7IFNjcm9sbFRyaWdnZXIgfSBmcm9tICdnc2FwL1Njcm9sbFRyaWdnZXInXG5pbXBvcnQgeyBTY3JvbGxUb1BsdWdpbiB9IGZyb20gXCJnc2FwL1Njcm9sbFRvUGx1Z2luXCI7XG5pbXBvcnQgeyBTY3JvbGxTbW9vdGhlciB9IGZyb20gXCJnc2FwL1Njcm9sbFNtb290aGVyXCI7XG5pbXBvcnQge1NwbGl0VGV4dH0gZnJvbSBcImdzYXAvU3BsaXRUZXh0XCI7XG5pbXBvcnQgeyBHU0RldlRvb2xzIH0gZnJvbSBcImdzYXAvR1NEZXZUb29sc1wiO1xuaW1wb3J0IEZBUSBmcm9tIFwiLi4vRkFRLnZ1ZVwiO1xuXG5nc2FwLnJlZ2lzdGVyUGx1Z2luKFNjcm9sbFRyaWdnZXIsIFNjcm9sbFRvUGx1Z2luLCBTY3JvbGxTbW9vdGhlciwgR1NEZXZUb29scylcblxuY29uc3QgY29udGFpbmVyID0gcmVmKCk7XG5jb25zdCB0ZXh0V3JhcHBlciA9IHJlZihudWxsKTtcbmNvbnN0IHZzdCA9IHJlZihudWxsKTtcbmNvbnN0IHMxID0gcmVmKCk7XG5jb25zdCBzZWN0aW9uX2xpbmVzID0gcmVmKCk7XG5cbmNvbnN0IGxpbmVzID0gW1xuICBcIkNvbXByZXNzZXVyIDogY29udHLDtGxlIGxhIGR5bmFtaXF1ZS5cIixcbiAgXCLDiWdhbGlzZXVyIDogYWp1c3RlIGxlcyBmcsOpcXVlbmNlcy5cIixcbiAgXCJSw6l2ZXJiw6lyYXRpb24gOiBham91dGUgZGUgbOKAmWVzcGFjZS5cIixcbiAgXCJTdMOpcsOpbyB3aWRlbmVyIDogw6lsYXJnaXQgbOKAmWltYWdlIHNvbm9yZS5cIlxuXVxuXG5jb25zdCBhY3RpdmVJbmRleCA9IHJlZigwKVxuXG5vbk1vdW50ZWQoKCkgPT4ge1xuICBTY3JvbGxTbW9vdGhlci5jcmVhdGUoe1xuICAgIHNtb290aDogMSwgLy8gaG93IGxvbmcgKGluIHNlY29uZHMpIGl0IHRha2VzIHRvIFwiY2F0Y2ggdXBcIiB0byB0aGUgbmF0aXZlIHNjcm9sbCBwb3NpdGlvblxuICAgIGVmZmVjdHM6IHRydWUsIC8vIGxvb2tzIGZvciBkYXRhLXNwZWVkIGFuZCBkYXRhLWxhZyBhdHRyaWJ1dGVzIG9uIGVsZW1lbnRzXG4gICAgc21vb3RoVG91Y2g6IDAuMSwgLy8gbXVjaCBzaG9ydGVyIHNtb290aGluZyB0aW1lIG9uIHRvdWNoIGRldmljZXMgKGRlZmF1bHQgaXMgTk8gc21vb3RoaW5nIG9uIHRvdWNoIGRldmljZXMpXG4gIH0pO1xuXG4gIFNjcm9sbFRyaWdnZXIuZGVmYXVsdHMoe1xuICAgIHNjcm9sbGVyOiBjb250YWluZXIudmFsdWVcbiAgfSk7XG5cbiAgU2Nyb2xsVHJpZ2dlci5jcmVhdGUoe1xuICAgIHRyaWdnZXI6IHNlY3Rpb25fbGluZXMudmFsdWUsXG4gICAgc3RhcnQ6IFwidG9wIHRvcFwiLFxuICAgIGVuZDogKCkgPT4gYCs9JHt3aW5kb3cuaW5uZXJIZWlnaHQgKiBsaW5lcy5sZW5ndGh9YCxcbiAgICBwaW46IHRydWUsXG4gICAgc2NydWI6IHRydWUsXG4gICAgb25VcGRhdGU6IHNlbGYgPT4ge1xuICAgICAgYWN0aXZlSW5kZXgudmFsdWUgPSBNYXRoLnJvdW5kKHNlbGYucHJvZ3Jlc3MgKiAobGluZXMubGVuZ3RoIC0gMSkpXG4gICAgfVxuICB9KVxuXG4gIGNvbnN0IHNwbGl0ID0gU3BsaXRUZXh0LmNyZWF0ZSh0ZXh0V3JhcHBlci52YWx1ZSwge1xuICAgIHR5cGU6IFwid29yZHMsbGluZXNcIixcbiAgICBsaW5lc0NsYXNzOiBcImxpbmVcIlxuICB9KTtcblxuICBjb25zdCB0bCA9IGdzYXAudGltZWxpbmUoe1xuICAgIHNjcm9sbFRyaWdnZXI6IHtcbiAgICAgIHRyaWdnZXI6ICcuc3BsaXQnLFxuICAgICAgc3RhcnQ6IFwidG9wIDkwJVwiLFxuICAgICAgdG9nZ2xlQWN0aW9uczogXCJwbGF5IG5vbmUgbm9uZSBub25lXCIsXG4gICAgfVxuICB9KVxuICAuZnJvbShzcGxpdC5saW5lcywge1xuICAgIGR1cmF0aW9uOiAwLjcyLFxuICAgIHlQZXJjZW50OiAxMjAsXG4gICAgb3BhY2l0eTogMCxcbiAgICBzdGFnZ2VyOiAwLjE1LFxuICAgIGVhc2U6IFwiZXhwby5vdXRcIixcbiAgfSk7XG5cbiAgY29uc3QgdGxWU1QgPSBnc2FwLnRpbWVsaW5lKHsgfSk7XG4gIHRsVlNULmZyb21Ubyh2c3QudmFsdWUsXG4gICAge1xuICAgICAgb3BhY2l0eTogMCxcbiAgICAgIHNjYWxlOiAxLjA1LFxuICAgIH0sXG4gICAge1xuICAgICAgb3BhY2l0eTogMSxcbiAgICAgIHNjYWxlOiAxLFxuICAgICAgZHVyYXRpb246IDAuNixcbiAgICAgIGRlbGF5OiAzLjcsXG4gICAgICBlYXNlOiAnc2luZS5vdXQnLFxuICAgIH1cbiAgKTtcblxuICB0bFZTVC5yZXN1bWUoKTtcbn0pXG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbiAgc2VjdGlvbiB7XG4gICAgaGVpZ2h0OiAxMDB2aDtcbiAgfVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPFRyYW5zaXRpb25cbiAgICAgIGFwcGVhclxuICAgICAgZW50ZXItYWN0aXZlLWNsYXNzPVwiZHVyYXRpb24tMjAwIGVhc2Utb3V0XCJcbiAgICAgIGVudGVyLWZyb20tY2xhc3M9XCJvcGFjaXR5LTBcIlxuICAgICAgZW50ZXItdG8tY2xhc3M9XCJvcGFjaXR5LTEwMFwiXG4gICAgICBsZWF2ZS1hY3RpdmUtY2xhc3M9XCJkdXJhdGlvbi0xNTAgZWFzZS1pblwiXG4gICAgICBsZWF2ZS1mcm9tLWNsYXNzPVwib3BhY2l0eS0xMDBcIlxuICAgICAgbGVhdmUtdG8tY2xhc3M9XCJvcGFjaXR5LTBcIlxuICA+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZpeGVkIGluc2V0LTAgei1bMTAwMF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcC00XCJcbiAgICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICAgIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwibG9nb3V0LXRpdGxlXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC0wIGJnLWJsYWNrLzgwXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSB6LTEwIHctZnVsbCBsZzptYXgtdy1sZ1wiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwicG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSAtaW5zZXQtMyByb3VuZGVkLVsyOHB4XSBib3JkZXIgYm9yZGVyLXdoaXRlLzMwIHJvdGF0ZS1bM2RlZ11cIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwicG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSAtaW5zZXQtNiByb3VuZGVkLVszMHB4XSBib3JkZXIgYm9yZGVyLXdoaXRlLzIwIC1yb3RhdGUtWzZkZWddXCJcbiAgICAgICAgPjwvc3Bhbj5cblxuICAgICAgICA8IS0tIFBhbmVsIC0tPlxuICAgICAgICA8VHJhbnNpdGlvblxuICAgICAgICAgICAgYXBwZWFyXG4gICAgICAgICAgICBlbnRlci1hY3RpdmUtY2xhc3M9XCJkdXJhdGlvbi0yMDAgZWFzZS1vdXRcIlxuICAgICAgICAgICAgZW50ZXItZnJvbS1jbGFzcz1cIm9wYWNpdHktMCB0cmFuc2xhdGUteS0yIHNjYWxlLVswLjk4XVwiXG4gICAgICAgICAgICBlbnRlci10by1jbGFzcz1cIm9wYWNpdHktMTAwIHRyYW5zbGF0ZS15LTAgc2NhbGUtMTAwXCJcbiAgICAgICAgICAgIGxlYXZlLWFjdGl2ZS1jbGFzcz1cImR1cmF0aW9uLTE1MCBlYXNlLWluXCJcbiAgICAgICAgICAgIGxlYXZlLWZyb20tY2xhc3M9XCJvcGFjaXR5LTEwMCB0cmFuc2xhdGUteS0wIHNjYWxlLTEwMFwiXG4gICAgICAgICAgICBsZWF2ZS10by1jbGFzcz1cIm9wYWNpdHktMCB0cmFuc2xhdGUteS0yIHNjYWxlLVswLjk4XVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHJlZj1cInBhbmVsXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJyZWxhdGl2ZSByb3VuZGVkLTN4bCBiZy13aGl0ZSBzaGFkb3ctMnhsIHJpbmctMSByaW5nLWJsYWNrLzVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC04IHB0LTEwIHBiLTggdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LWF1dG8gbWItNSBoLTI0IHctMjQgcC00IHJlbGF0aXZlIHRleHQtcHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgIDwhLS0gT25kZSBkZSBwdWxzYXRpb24gKGzDqWfDqHJlKSAtLT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInB1bHNlLXdhdmVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwdWxzZS13YXZlIGRlbGF5XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwhLS0gTG9nbyBhdmVjIGJhdHRlbWVudCBkZSBjb2V1ciAtLT5cbiAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi9yZXMvaW1hZ2VzL2xvZ29fbW91dGguc3ZnXCIgYWx0PVwiXCIgY2xhc3M9XCJoZWFydGJlYXQgcmVsYXRpdmUgei0xMFwiPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCIhZXJyb3JcIj5cbiAgICAgICAgICAgICAgICA8aDIgaWQ9XCJsb2dvdXQtdGl0bGVcIiBjbGFzcz1cInRleHQteGwgZm9udC1zZW1pYm9sZCB0ZXh0LW5ldXRyYWwtOTAwXCI+XG4gICAgICAgICAgICAgICAgICB7eyB0KERFTU9fU1VHR0VTVF9USVRMRSkgfX1cbiAgICAgICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibXQtMyB0ZXh0LXNtIGxlYWRpbmctNiB0ZXh0LW5ldXRyYWwtNjAwXCIgdi1odG1sPVwidChERU1PX1NVR0dFU1RfVEVYVF9IVE1MKVwiPlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPCEtLSBBY3Rpb25zIC0tPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtM1wiPlxuICAgICAgICAgICAgICAgIDxhIGhyZWY9XCIvZGVtb1wiIGNsYXNzPVwidGV4dC1zbSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTIgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItbmV1dHJhbC0zMDAgYmctd2hpdGUgZm9udC1zZW1pYm9sZCBweC00IHB5LTMgdHJhbnNpdGlvbiB0ZXh0LW5ldXRyYWwtOTAwIHNoYWRvdy1zbSBob3ZlcjpiZy1uZXV0cmFsLTEwMFwiPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1mbGFza1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgIHt7IHQoREVNT19TVUdHRVNUX1RBS0VfREVNTykgfX1cbiAgICAgICAgICAgICAgICA8L2E+XG5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBpZD1cImNvbnRpbnVlLXB1cmNoYXNlXCJcbiAgICAgICAgICAgICAgICAgIDpkaXNhYmxlZD1cImNvdW50ZG93biA+IDBcIlxuICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAgICAgICAnZmxleC0xIGdyb3VwIHRleHQtc20gdy1mdWxsIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMiByb3VuZGVkLWZ1bGwgcHgtMiBweS0zIHNoYWRvdy1zbSBmb250LXNlbWlib2xkIHRyYW5zaXRpb24nLFxuICAgICAgICAgICAgICAgICAgICBjb3VudGRvd24gPiAwXG4gICAgICAgICAgICAgICAgICAgICAgPyAnYmctbmV1dHJhbC03MDAgY3Vyc29yLW5vdC1hbGxvd2VkIHRleHQtd2hpdGUvOTAnXG4gICAgICAgICAgICAgICAgICAgICAgOiAnYmctcHJpbWFyeSBjdXJzb3ItcG9pbnRlciB0ZXh0LXdoaXRlIGhvdmVyOmJyaWdodG5lc3MtMTEwJ1xuICAgICAgICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1jYXJ0LXNob3BwaW5nXCI+PC9pPlxuICAgICAgICAgICAgICAgICAge3sgY291bnRkb3duID4gMFxuICAgICAgICAgICAgICAgICAgICA/IChpc0ZyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGBDb250aW51ZXIgdmVycyBsXFwnYWNoYXQgZGFucyAke2NvdW50ZG93bn1gXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGBDb250aW51ZSB0byBwdXJjaGFzZSBpbiAke2NvdW50ZG93bn1gKVxuICAgICAgICAgICAgICAgICAgICA6IHQoREVNT19TVUdHRVNUX0NPTlRJTlVFX1BVUkNIQVNFKSB9fVxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1hcnJvdy1yaWdodC1sb25nIGdyb3VwLWhvdmVyOnRyYW5zbGF0ZS14LTAuNSB0cmFuc2l0aW9uLXRyYW5zZm9ybVwiPjwvaT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9UcmFuc2l0aW9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvVHJhbnNpdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgc2V0dXA+XG4gIGltcG9ydCB7IG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIHJlZiwgd2F0Y2gsIG5leHRUaWNrIH0gZnJvbSAndnVlJ1xuICBpbXBvcnQgeyB1c2VVeFRyYW5zbGF0b3IgfSBmcm9tICcuLi8uLi8uLi9pMThuL3VzZVV4VHJhbnNsYXRvcidcbiAgaW1wb3J0IHsgREVNT19TVUdHRVNUX1RJVExFLCBERU1PX1NVR0dFU1RfVEVYVF9IVE1MLCBERU1PX1NVR0dFU1RfVEFLRV9ERU1PLCBERU1PX1NVR0dFU1RfQ09OVElOVUVfUFVSQ0hBU0UgfSBmcm9tICcuLi8uLi8uLi9pMThuL2tleXMnXG5cbiAgY29uc3QgeyB0IH0gPSB1c2VVeFRyYW5zbGF0b3IoKVxuXG4gIC8vIENvbXB0ZSDDoCByZWJvdXJzIGRlIDQgc2Vjb25kZXMgYXZhbnQgZCdhdXRvcmlzZXIgbGUgY2xpYyBzdXIgbGUgYm91dG9uIGQnYWNoYXRcbiAgY29uc3QgY291bnRkb3duID0gcmVmKDMpXG4gIGxldCBpbnRlcnZhbElkXG5cbiAgLy8gRMOpdGVjdGlvbiBzaW1wbGUgZGUgbGEgbGFuZ3VlIChGUi9FTikgcG91ciBsZSBsaWJlbGzDqSBkZSBkw6ljb21wdGUgYWpvdXTDqVxuICBjb25zdCBsYW5nID0gKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nIHx8IG5hdmlnYXRvci5sYW5ndWFnZSkpIHx8ICdlbidcbiAgY29uc3QgaXNGciA9IGxhbmcudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdmcicpXG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgaWYgKGNvdW50ZG93bi52YWx1ZSA+IDApIHtcbiAgICAgICAgY291bnRkb3duLnZhbHVlIC09IDFcbiAgICAgIH1cbiAgICAgIGlmIChjb3VudGRvd24udmFsdWUgPD0gMCkge1xuICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsSWQpXG4gICAgICB9XG4gICAgfSwgMTAwMClcbiAgfSlcblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKGludGVydmFsSWQpIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZClcbiAgfSlcbjwvc2NyaXB0PlxuXG48c3R5bGU+XG4gIC8qIEFuaW1hdGlvbiBiYXR0ZW1lbnQgZGUgY29ldXIgcG91ciBsZSBsb2dvICovXG4gIC5oZWFydGJlYXQge1xuICAgIC8qIEFsbG9uZ2VyIGxhIGR1csOpZSBwb3VyIGVzcGFjZXIgZGF2YW50YWdlIGxlcyAyIHB1bHNhdGlvbnMgKi9cbiAgICBhbmltYXRpb246IGhlYXJ0YmVhdCAyLjRzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7XG4gICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbiAgfVxuXG4gIEBrZXlmcmFtZXMgaGVhcnRiZWF0IHtcbiAgICAvKiBEb3VibGUgYmF0dGVtZW50IGF2ZWMgZXNwYWNlbWVudCBwbHVzIGxvbmcsIHB1aXMgcmVwb3MgKi9cbiAgICAwJSB7IHRyYW5zZm9ybTogc2NhbGUoMSk7IH1cbiAgICAxMiUgeyB0cmFuc2Zvcm06IHNjYWxlKDEuMDcpOyB9XG4gICAgMjAlIHsgdHJhbnNmb3JtOiBzY2FsZSgwLjk4NSk7IH1cbiAgICA1OCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEuMTA1KTsgfVxuICAgIDY2JSB7IHRyYW5zZm9ybTogc2NhbGUoMSk7IH1cbiAgICAxMDAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfVxuICB9XG5cbiAgLyogT25kZSBzdWJ0aWxlIGVuIG9wYWNpdMOpIGRlcnJpw6hyZSBsZSBsb2dvICovXG4gIC5wdWxzZS13YXZlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaW5zZXQ6IDA7XG4gICAgYm9yZGVyLXJhZGl1czogOTk5OXB4OyAvKiBmdWxsICovXG4gICAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yOyAvKiB1dGlsaXNlIGxhIGNvdWxldXIgcHJpbWFpcmUgdmlhIC50ZXh0LXByaW1hcnkgKi9cbiAgICBvcGFjaXR5OiAwOyAvKiBpbnZpc2libGUganVzcXUnYXUgcGljIGRlIHB1bHNhdGlvbiAqL1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgLyogU3luY2hyb25pc2VyIGxhIGR1csOpZSBkZSBsJ29uZGUgYXZlYyBsZSBoZWFydGJlYXQgcG91ciBjb2xsZXIgYXV4IHB1bHNhdGlvbnMgKi9cbiAgICBhbmltYXRpb246IHB1bHNlLXdhdmUgMi40cyBlYXNlLW91dCBpbmZpbml0ZTtcbiAgICBmaWx0ZXI6IGJsdXIoMC41cHgpO1xuICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm0sIG9wYWNpdHk7XG4gIH1cblxuICAucHVsc2Utd2F2ZS5kZWxheSB7XG4gICAgLyogRMOpY2FsZXIgcHLDqWNpc8OpbWVudCBwb3VyIGxhIDJlIHB1bHNhdGlvbiAoZGUgMTIlIMOgIDU4JSA9IDQ2JSBkZSAyLjRzID0+IH4xLjEwNHMpICovXG4gICAgYW5pbWF0aW9uLWRlbGF5OiAxLjEwNHM7XG4gIH1cblxuICBAa2V5ZnJhbWVzIHB1bHNlLXdhdmUge1xuICAgIC8qIE9uZGUgYWxpZ27DqWUgc3VyIGxlcyBwaWNzIGR1IGhlYXJ0YmVhdCAofjEyJSBldCB+NTglKSAqL1xuICAgIDAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgb3BhY2l0eTogMDsgfVxuICAgIDExLjklIHsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgb3BhY2l0eTogMDsgfVxuICAgIC8qIETDqWNsZW5jaGVtZW50IGRlIGwnb25kZSBhdSAxZXIgcGljICovXG4gICAgMTIlIHsgdHJhbnNmb3JtOiBzY2FsZSgxLjAyKTsgb3BhY2l0eTogMC4xMjsgfVxuICAgIDMwJSB7IHRyYW5zZm9ybTogc2NhbGUoMS4zNSk7IG9wYWNpdHk6IDAuMDg7IH1cbiAgICA0NSUgeyB0cmFuc2Zvcm06IHNjYWxlKDEuNSk7IG9wYWNpdHk6IDAuMDQ7IH1cbiAgICAvKiBGaW5pciBsJ29uZGUgYXZhbnQgbGUgcmVwb3MgKDY2JSkgKi9cbiAgICA2NiUgeyB0cmFuc2Zvcm06IHNjYWxlKDEuNTUpOyBvcGFjaXR5OiAwOyB9XG4gICAgMTAwJSB7IHRyYW5zZm9ybTogc2NhbGUoMS41NSk7IG9wYWNpdHk6IDA7IH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgc2V0dXA+XG5pbXBvcnQgeyB1c2VVeFRyYW5zbGF0b3IgfSBmcm9tICcuLi8uLi8uLi9pMThuL3VzZVV4VHJhbnNsYXRvcidcblxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wcyh7XG4gIGxvY2FsZXM6IHsgdHlwZTogQXJyYXksIGRlZmF1bHQ6ICgpID0+IFsnZnInLCAnZW4nXSB9LCAvLyBjb25maWd1cmUgaWNpIHRlcyBsb2NhbGVzXG4gIGxhYmVsOiAgIHsgdHlwZTogU3RyaW5nLCBkZWZhdWx0OiAnTGFuZ3VlJyB9XG59KVxuXG5jb25zdCB7IGN1cnJlbnRMb2NhbGUsIHNldExvY2FsZSB9ID0gdXNlVXhUcmFuc2xhdG9yKClcbmZ1bmN0aW9uIG9uQ2hhbmdlKGUpIHsgc2V0TG9jYWxlKGUudGFyZ2V0LnZhbHVlKSB9XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0yIG1yLTNcIj5cbiAgICA8c3BhbiBjbGFzcz1cImZpIGZpLWZyIHJvdW5kZWQteHMgb3BhY2l0eS01MCB0ZXh0LXhsIGN1cnNvci1wb2ludGVyIHNhdHVyYXRlLTUwXCIgQGNsaWNrPVwic2V0TG9jYWxlKCdmcicpXCIgOmNsYXNzPVwieydvcGFjaXR5LTEwMCBzYXR1cmF0ZS0xMDAnIDogY3VycmVudExvY2FsZSA9PT0gJ2ZyJ31cIj48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJmaSBmaS1nYiByb3VuZGVkLXhzIG9wYWNpdHktNTAgdGV4dC14bCBjdXJzb3ItcG9pbnRlciBzYXR1cmF0ZS01MFwiIEBjbGljaz1cInNldExvY2FsZSgnZW4nKVwiIDpjbGFzcz1cInsnb3BhY2l0eS0xMDAgc2F0dXJhdGUtMTAwJyA6IGN1cnJlbnRMb2NhbGUgPT09ICdlbid9XCI+PC9zcGFuPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG5zZWxlY3QgeyBvdXRsaW5lOiBub25lOyB9XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8aGVhZGVyXG4gICAgICByZWY9XCJoZWFkZXJcIlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgJ2ZpeGVkIHRvcC0wIGxlZnQtNiByaWdodC02IHB5LTQgdGV4dC13aGl0ZSB6LTUwIHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTMwMCBoZWFkZXInLFxuICAgICAgc2Nyb2xsZWQgPyAnYmctdHJhbnNwYXJlbnQgc2hhZG93IG5hdi1vbi1zY3JvbGwnIDogJ2JnLXRyYW5zcGFyZW50J1xuICAgIF1cIlxuICAgICAgc3R5bGU9XCJoZWlnaHQ6IDVyZW07XCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGgtZnVsbCBuYXYtY29udGVudFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInctMy81IGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxpbWcgc3JjPVwiL3Jlcy9pbWFnZXMvbG9nb19tb3V0aC5zdmdcIiBhbHQ9XCJcIiBjbGFzcz1cImgtZnVsbCBtci01IG1sLTIgbG9nb1wiPlxuICAgICAgICA8bmF2IGNsYXNzPVwidGV4dC1zbSB1cHBlcmNhc2UgdHJhY2tpbmctdGlnaHRlciBmb250LW1lZGl1bSBzcGFjZS14LTUgaGlkZGVuIGxnOmZsZXggbXItNVwiPlxuICAgICAgICAgIDxhIEBjbGljaz1cInNjcm9sbFRvKCcjcHJlc2VudGF0aW9uJylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+e3sgdChOQVZfUFJFU0VOVEFUSU9OKSB9fTwvYT5cbiAgICAgICAgICA8YSBAY2xpY2s9XCJzY3JvbGxUbygnI2ZvbmN0aW9ubmFsaXRlcycpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPnt7IHQoTkFWX0ZFQVRVUkVTKSB9fTwvYT5cbiAgICAgICAgICA8YSBAY2xpY2s9XCJzY3JvbGxUbygnI2RlbW9uc3RyYXRpb24nKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj57eyB0KE5BVl9ERU1PKSB9fTwvYT5cbiAgICAgICAgICA8YSBAY2xpY2s9XCJzY3JvbGxUbygnI3ByaWNlJylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+e3sgdChOQVZfUFJJQ0lORykgfX08L2E+XG4gICAgICAgICAgPGEgQGNsaWNrPVwic2Nyb2xsVG8oJyNmYXEnKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj57eyB0KE5BVl9GQVFTKSB9fTwvYT5cbiAgICAgICAgPC9uYXY+XG4gICAgICAgIDxMYW5ndWFnZVN3aXRjaGVyIDpsb2NhbGVzPVwiWydmcicsJ2VuJ11cIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidy0yLzUgZmxleCBqdXN0aWZ5LWVuZCBpdGVtcy1jZW50ZXIgcHItMi41XCI+XG4gICAgICAgIDxhIGhyZWY9XCIvdGVsZWNoYXJnZW1lbnRzXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB0ZXh0LXhzIHVwcGVyY2FzZSBmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0ZXIgYmctcHJpbWFyeSBweC00IHB5LTIuNSByb3VuZGVkLWZ1bGwgbXItMyBoaWRkZW4gbGc6YmxvY2tcIj48aSBjbGFzcz1cImZhLXNvbGlkIGZhLWFycm93LWRvd25cIj48L2k+IHt7IHQoTkFWX0RPV05MT0FEUykgfX08L2E+XG4gICAgICAgIDxhIGhyZWY9XCIvbW9uLWNvbXB0ZVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGV4dC14cyBmb250LXNlbWlib2xkIHVwcGVyY2FzZSB0cmFja2luZy10ZXR0ZXIgYm9yZGVyLWdyYXktMzAwIGJvcmRlci0yIHB4LTQgcHktMi41IHJvdW5kZWQtZnVsbFwiPjxpIGNsYXNzPVwiZmEtc29saWQgZmEtdXNlclwiPjwvaT4gPHNwYW4gY2xhc3M9XCJoaWRkZW4gbGc6aW5saW5lXCI+e3sgdChOQVZfQUNDT1VOVCkgfX08L3NwYW4+PC9hPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvaGVhZGVyPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBzZXR1cD5cbiAgaW1wb3J0IHsgcmVmLCBvbk1vdW50ZWQsIG9uVW5tb3VudGVkLCBjb21wdXRlZCB9IGZyb20gJ3Z1ZSdcbiAgaW1wb3J0IHsgZ3NhcCB9IGZyb20gJ2dzYXAnXG4gIGltcG9ydCB7IFNjcm9sbFRvUGx1Z2luIH0gZnJvbSAnZ3NhcC9TY3JvbGxUb1BsdWdpbidcbiAgaW1wb3J0IExhbmd1YWdlU3dpdGNoZXIgZnJvbSBcIi4uL1V0aWxzL0xhbmd1YWdlU3dpdGNoZXIudnVlXCI7XG4gIGltcG9ydCB7IHVzZVV4VHJhbnNsYXRvciB9IGZyb20gJy4uLy4uLy4uL2kxOG4vdXNlVXhUcmFuc2xhdG9yJ1xuICBpbXBvcnQgeyBOQVZfUFJFU0VOVEFUSU9OLCBOQVZfRkVBVFVSRVMsIE5BVl9ERU1PLCBOQVZfUFJJQ0lORywgTkFWX0ZBUVMsIE5BVl9ET1dOTE9BRFMsIE5BVl9BQ0NPVU5UIH0gZnJvbSAnLi4vLi4vLi4vaTE4bi9rZXlzJ1xuXG4gIGNvbnN0IHsgdCB9ID0gdXNlVXhUcmFuc2xhdG9yKClcblxuICBjb25zdCBsb2dvU3JjID0gJy9yZXMvaW1hZ2VzL2xvZ29fbW91dGguc3ZnJ1xuXG4gIGNvbnN0IHNjcm9sbGVkID0gcmVmKGZhbHNlKVxuICBjb25zdCBoZWFkZXIgPSByZWYobnVsbClcbiAgY29uc3QgbG9nbyA9IHJlZihudWxsKVxuXG4gIGdzYXAucmVnaXN0ZXJQbHVnaW4oU2Nyb2xsVG9QbHVnaW4pXG5cbiAgY29uc3QgbG9nb1N0eWxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogc2Nyb2xsZWQudmFsdWUgPyAnNDBweCcgOiAnNTZweCcsXG4gICAgICBoZWlnaHQ6IHNjcm9sbGVkLnZhbHVlID8gJzQwcHgnIDogJzU2cHgnXG4gICAgfVxuICB9KVxuXG4gIGZ1bmN0aW9uIGFuaW1hdGUoKSB7XG4gICAgZ3NhcC50byhoZWFkZXIudmFsdWUsIHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogc2Nyb2xsZWQudmFsdWUgPyAncmdiYSgwLDAsMCwwKScgOiAncmdiYSgwLDAsMCwwKScsXG4gICAgICBkdXJhdGlvbjogMC4zLFxuICAgICAgb3ZlcndyaXRlOiAnYXV0bydcbiAgICB9KVxuICAgIGdzYXAudG8obG9nby52YWx1ZSwge1xuICAgICAgd2lkdGg6IHNjcm9sbGVkLnZhbHVlID8gJzQwcHgnIDogJzU2cHgnLFxuICAgICAgaGVpZ2h0OiBzY3JvbGxlZC52YWx1ZSA/ICc0MHB4JyA6ICc1NnB4JyxcbiAgICAgIGR1cmF0aW9uOiAwLjMsXG4gICAgICBvdmVyd3JpdGU6ICdhdXRvJ1xuICAgIH0pXG4gIH1cblxuICBmdW5jdGlvbiBvblNjcm9sbCgpIHtcbiAgICBjb25zdCBoYXNTY3JvbGxlZCA9IHdpbmRvdy5zY3JvbGxZID4gMFxuICAgIGlmIChoYXNTY3JvbGxlZCAhPT0gc2Nyb2xsZWQudmFsdWUpIHtcbiAgICAgIHNjcm9sbGVkLnZhbHVlID0gaGFzU2Nyb2xsZWRcbiAgICAgIGFuaW1hdGUoKVxuICAgIH1cbiAgfVxuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgc2Nyb2xsZWQudmFsdWUgPSB3aW5kb3cuc2Nyb2xsWSA+IDBcbiAgICBhbmltYXRlKClcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25TY3JvbGwsIHsgcGFzc2l2ZTogdHJ1ZSB9KVxuICB9KVxuXG4gIG9uVW5tb3VudGVkKCgpID0+IHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25TY3JvbGwpXG4gIH0pXG5cbiAgZnVuY3Rpb24gc2Nyb2xsVG8oZWxlbWVudCkge1xuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIGlmIChlbGVtZW50ID09PSAnI3ByZXNlbnRhdGlvbicpIHtcbiAgICAgIG9mZnNldCA9IDUwO1xuICAgIH1cbiAgICBpZiAoZWxlbWVudCA9PT0gJyNmb25jdGlvbm5hbGl0ZXMnKSB7XG4gICAgICBvZmZzZXQgPSAxMDA7XG4gICAgfVxuICAgIGlmIChlbGVtZW50ID09PSAnI3ByaWNlJykge1xuICAgICAgb2Zmc2V0ID0gLTQ3O1xuICAgIH1cbiAgICBnc2FwLnRvKHdpbmRvdywge1xuICAgICAgZHVyYXRpb246IDEuNSxcbiAgICAgIHNjcm9sbFRvOiB7XG4gICAgICAgIHk6IGVsZW1lbnQsXG4gICAgICAgIG9mZnNldFk6IG9mZnNldFxuICAgICAgfVxuICAgIH0pO1xuICB9XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbiAgaGVhZGVyLmhlYWRlcl9ibHVyIHtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IHNhdHVyYXRlKDEyMCUpIGJsdXIoMTBweCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxoZWFkZXJcbiAgICAgIHJlZj1cImhlYWRlclwiXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAnZml4ZWQgdG9wLTAgbGVmdC0wIHJpZ2h0LTAgcHktNCB0ZXh0LXdoaXRlIHotNTAgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMzAwIGhlYWRlcicsXG4gICAgICBzY3JvbGxlZCA/ICdiZy10cmFuc3BhcmVudCBoZWFkZXJfYmx1ciBzaGFkb3cnIDogJ2JnLXRyYW5zcGFyZW50J1xuICAgIF1cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3LTIvNSBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8bmF2IGNsYXNzPVwiZmxleCB0ZXh0LXNtIHVwcGVyY2FzZSB0cmFja2luZy10aWdodGVyIGZvbnQtbWVkaXVtIHNwYWNlLXgtNVwiPlxuICAgICAgICAgIDxhIEBjbGljaz1cInNjcm9sbFRvKCcjcHJlc2VudGF0aW9uJylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+e3sgdChOQVZfUFJFU0VOVEFUSU9OKSB9fTwvYT5cbiAgICAgICAgICA8YSBAY2xpY2s9XCJzY3JvbGxUbygnI2ZvbmN0aW9ubmFsaXRlcycpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPnt7IHQoTkFWX0ZFQVRVUkVTKSB9fTwvYT5cbiAgICAgICAgICA8YSBAY2xpY2s9XCJzY3JvbGxUbygnI3ByaWNlJylcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+e3sgdChOQVZfUFJJQ0lORykgfX08L2E+XG4gICAgICAgICAgPGEgQGNsaWNrPVwic2Nyb2xsVG8oJyNmYXEnKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj57eyB0KE5BVl9GQVFTKSB9fTwvYT5cbiAgICAgICAgICA8YSBocmVmPVwiL2Rvd25sb2FkXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPnt7IHQoTkFWX0RPV05MT0FEUykgfX08L2E+XG4gICAgICAgIDwvbmF2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidy0xLzUgZmxleCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgICByZWY9XCJsb2dvXCJcbiAgICAgICAgICAgIDpzcmM9XCJsb2dvU3JjXCJcbiAgICAgICAgICAgIGFsdD1cIkxvZ29cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDBcIlxuICAgICAgICAgICAgOnN0eWxlPVwibG9nb1N0eWxlXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInctMi81IGZsZXgganVzdGlmeS1lbmQgaXRlbXMtY2VudGVyIFwiPlxuICAgICAgICA8YSBocmVmPVwiL21vbi1jb21wdGVcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHRleHQtc20gdXBwZXJjYXNlIHRyYWNraW5nLXRpZ2h0ZXIgZm9udC1tZWRpdW1cIj57eyB0KE5BVl9BQ0NPVU5UKSB9fTwvYT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2hlYWRlcj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgc2V0dXA+XG4gIGltcG9ydCB7IHJlZiwgb25Nb3VudGVkLCBvblVubW91bnRlZCwgY29tcHV0ZWQgfSBmcm9tICd2dWUnXG4gIGltcG9ydCB7IGdzYXAgfSBmcm9tICdnc2FwJ1xuICBpbXBvcnQgeyBTY3JvbGxUb1BsdWdpbiB9IGZyb20gJ2dzYXAvU2Nyb2xsVG9QbHVnaW4nXG4gIGltcG9ydCB7IHVzZVV4VHJhbnNsYXRvciB9IGZyb20gJy4uLy4uL2kxOG4vdXNlVXhUcmFuc2xhdG9yJ1xuICBpbXBvcnQgeyBOQVZfUFJFU0VOVEFUSU9OLCBOQVZfRkVBVFVSRVMsIE5BVl9QUklDSU5HLCBOQVZfRkFRUywgTkFWX0RPV05MT0FEUywgTkFWX0FDQ09VTlQgfSBmcm9tICcuLi8uLi9pMThuL2tleXMnXG5cbiAgY29uc3QgeyB0IH0gPSB1c2VVeFRyYW5zbGF0b3IoKVxuXG4gIGNvbnN0IGxvZ29TcmMgPSAnL3Jlcy9pbWFnZXMvbG9nb19tb3V0aC5zdmcnXG5cbiAgY29uc3Qgc2Nyb2xsZWQgPSByZWYoZmFsc2UpXG4gIGNvbnN0IGhlYWRlciA9IHJlZihudWxsKVxuICBjb25zdCBsb2dvID0gcmVmKG51bGwpXG5cbiAgZ3NhcC5yZWdpc3RlclBsdWdpbihTY3JvbGxUb1BsdWdpbilcblxuICBjb25zdCBsb2dvU3R5bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdpZHRoOiBzY3JvbGxlZC52YWx1ZSA/ICc0MHB4JyA6ICc1NnB4JyxcbiAgICAgIGhlaWdodDogc2Nyb2xsZWQudmFsdWUgPyAnNDBweCcgOiAnNTZweCdcbiAgICB9XG4gIH0pXG5cbiAgZnVuY3Rpb24gYW5pbWF0ZSgpIHtcbiAgICBnc2FwLnRvKGhlYWRlci52YWx1ZSwge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiBzY3JvbGxlZC52YWx1ZSA/ICdyZ2JhKDAsMCwwLDApJyA6ICdyZ2JhKDAsMCwwLDApJyxcbiAgICAgIGR1cmF0aW9uOiAwLjMsXG4gICAgICBvdmVyd3JpdGU6ICdhdXRvJ1xuICAgIH0pXG4gICAgZ3NhcC50byhsb2dvLnZhbHVlLCB7XG4gICAgICB3aWR0aDogc2Nyb2xsZWQudmFsdWUgPyAnNDBweCcgOiAnNTZweCcsXG4gICAgICBoZWlnaHQ6IHNjcm9sbGVkLnZhbHVlID8gJzQwcHgnIDogJzU2cHgnLFxuICAgICAgZHVyYXRpb246IDAuMyxcbiAgICAgIG92ZXJ3cml0ZTogJ2F1dG8nXG4gICAgfSlcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uU2Nyb2xsKCkge1xuICAgIGNvbnN0IGhhc1Njcm9sbGVkID0gd2luZG93LnNjcm9sbFkgPiAwXG4gICAgaWYgKGhhc1Njcm9sbGVkICE9PSBzY3JvbGxlZC52YWx1ZSkge1xuICAgICAgc2Nyb2xsZWQudmFsdWUgPSBoYXNTY3JvbGxlZFxuICAgICAgYW5pbWF0ZSgpXG4gICAgfVxuICB9XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBzY3JvbGxlZC52YWx1ZSA9IHdpbmRvdy5zY3JvbGxZID4gMFxuICAgIGFuaW1hdGUoKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvblNjcm9sbCwgeyBwYXNzaXZlOiB0cnVlIH0pXG4gIH0pXG5cbiAgb25Vbm1vdW50ZWQoKCkgPT4ge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvblNjcm9sbClcbiAgfSlcblxuICBmdW5jdGlvbiBzY3JvbGxUbyhlbGVtZW50KSB7XG4gICAgZ3NhcC50byh3aW5kb3csIHsgZHVyYXRpb246IDIsIHNjcm9sbFRvOiBlbGVtZW50IH0pO1xuICB9XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbiAgaGVhZGVyLmhlYWRlcl9ibHVyIHtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IHNhdHVyYXRlKDEyMCUpIGJsdXIoMTBweCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgdi1pZj1cImxvYWRpbmdcIiByZWY9XCJjb250YWluZXJcIiBjbGFzcz1cImZpeGVkIGluc2V0LTAgei1bMTAwMF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgaC1zY3JlZW4gdy1zY3JlZW4gYmctY3VzdG9tXCI+XG4gICAgPGRpdiBjbGFzcz1cImxvZ28td3JhcFwiPlxuICAgICAgPHN2Z1xuICAgICAgICAgIHJlZj1cImxvZ29cIlxuICAgICAgICAgIHdpZHRoPVwiMzkwXCJcbiAgICAgICAgICBoZWlnaHQ9XCIxMzZcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMzkwIDEzNlwiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgPlxuICAgICAgICA8ZyBmaWx0ZXI9XCJ1cmwoI2ZpbHRlcjApXCI+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgaWQ9XCJsZWZ0UGF0aFwiXG4gICAgICAgICAgICAgIGQ9XCJNMTQuNzk5MSA1Mi4zOTgzQzEwLjg3NDIgNjYuMjk1MiAxMi44Mjk4IDgxLjIzODMgMjAuMjM1NyA5My45NDA1QzI3LjY0MTcgMTA2LjY0MyAzOS44OTE0IDExNi4wNjMgNTQuMjg5OSAxMjAuMTNDNjguNjg4NSAxMjQuMTk3IDg0LjA1NjUgMTIyLjU3NiA5Ny4wMTMyIDExNS42MjVDMTA5Ljk3IDEwOC42NzQgMTE5LjQ1NCA5Ni45NjE4IDEyMy4zNzkgODMuMDY0OUw2OS4wODkgNjcuNzMxNkwxNC43OTkxIDUyLjM5ODNaXCJcbiAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2c+XG4gICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMSlcIj5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBpZD1cInJpZ2h0UGF0aFwiXG4gICAgICAgICAgICAgIGQ9XCJNMzc1LjIwMSA1Mi40OTRDMzc5LjEyNiA2Ni4zOTA4IDM3Ny4xNyA4MS4zMzQgMzY5Ljc2NCA5NC4wMzYyQzM2Mi4zNTggMTA2LjczOCAzNTAuMTA5IDExNi4xNTkgMzM1LjcxIDEyMC4yMjZDMzIxLjMxMSAxMjQuMjkyIDMwNS45NDMgMTIyLjY3MiAyOTIuOTg3IDExNS43MjFDMjgwLjAzIDEwOC43NyAyNzAuNTQ2IDk3LjA1NzUgMjY2LjYyMSA4My4xNjA2TDMyMC45MTEgNjcuODI3M0wzNzUuMjAxIDUyLjQ5NFpcIlxuICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZz5cblxuICAgICAgICA8Y2lyY2xlIGlkPVwiZXllTFwiIGN4PVwiNzlcIiBjeT1cIjEwM1wiIHI9XCIxNVwiIGZpbGw9XCJibGFja1wiLz5cbiAgICAgICAgPGNpcmNsZSBpZD1cImV5ZVJcIiBjeD1cIjMwOVwiIGN5PVwiMTAzXCIgcj1cIjE1XCIgZmlsbD1cImJsYWNrXCIvPlxuICAgICAgICA8IS0tIGxlcyBkZXV4IFwieWV1eFwiIC0tPlxuXG4gICAgICAgIDwhLS0gPT09IEZpbHRyZXMgZOKAmW9yaWdpbmUg4oCTIGluY2hhbmfDqXMsIGp1c3RlIHJlbm9tbcOpcyBwb3VyIMOqdHJlIHBsdXMgY291cnRzID09PSAtLT5cbiAgICAgICAgPGRlZnM+XG4gICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBcIiB4PVwiNS4xNTczMlwiIHk9XCI0NC43Mzc1XCIgd2lkdGg9XCIxMjUuODgyXCIgaGVpZ2h0PVwiODUuMjUwN1wiIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XG4gICAgICAgICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PVwiMFwiIHJlc3VsdD1cIkJhY2tncm91bmRJbWFnZUZpeFwiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIi8+XG4gICAgICAgICAgICA8ZmVPZmZzZXQvPlxuICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjAuMDkxMlwiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAxIDBcIi8+XG4gICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCIgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIwLjE4MjRcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0Ml9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIwLjYzODRcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDJfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0M19kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIxLjI3NjhcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDNfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0NF9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIyLjE4ODhcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDRfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0NV9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIzLjgzMDRcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cImVmZmVjdDVfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwiZWZmZWN0Nl9kcm9wU2hhZG93XzY1XzYzODNcIi8+XG4gICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0Nl9kcm9wU2hhZG93XzY1XzYzODNcIiByZXN1bHQ9XCJzaGFwZVwiLz5cbiAgICAgICAgICA8L2ZpbHRlcj5cbiAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMVwiIHg9XCIyNTguOTZcIiB5PVwiNDQuODMzMlwiIHdpZHRoPVwiMTI1Ljg4MlwiIGhlaWdodD1cIjg1LjI1MDdcIiBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPlxuICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIwLjA5MTJcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiIHJlc3VsdD1cImVmZmVjdDFfZHJvcFNoYWRvd182NV82MzgzXCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgIDxmZU9mZnNldC8+XG4gICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMC4xODI0XCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDEgMFwiLz5cbiAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfNjVfNjM4M1wiIHJlc3VsdD1cImVmZmVjdDJfZHJvcFNoYWRvd182NV82MzgzXCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgIDxmZU9mZnNldC8+XG4gICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMC42Mzg0XCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDEgMFwiLz5cbiAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJlZmZlY3QyX2Ryb3BTaGFkb3dfNjVfNjM4M1wiIHJlc3VsdD1cImVmZmVjdDNfZHJvcFNoYWRvd182NV82MzgzXCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgIDxmZU9mZnNldC8+XG4gICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMS4yNzY4XCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDEgMFwiLz5cbiAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJlZmZlY3QzX2Ryb3BTaGFkb3dfNjVfNjM4M1wiIHJlc3VsdD1cImVmZmVjdDRfZHJvcFNoYWRvd182NV82MzgzXCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgIDxmZU9mZnNldC8+XG4gICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMi4xODg4XCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDEgMFwiLz5cbiAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJlZmZlY3Q0X2Ryb3BTaGFkb3dfNjVfNjM4M1wiIHJlc3VsdD1cImVmZmVjdDVfZHJvcFNoYWRvd182NV82MzgzXCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgIDxmZU9mZnNldC8+XG4gICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMy44MzA0XCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDEgMFwiLz5cbiAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJlZmZlY3Q1X2Ryb3BTaGFkb3dfNjVfNjM4M1wiIHJlc3VsdD1cImVmZmVjdDZfZHJvcFNoYWRvd182NV82MzgzXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDZfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwic2hhcGVcIi8+XG4gICAgICAgICAgPC9maWx0ZXI+XG4gICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjJcIiB4PVwiNTkuMzM5MlwiIHk9XCI4My4zMzkyXCIgd2lkdGg9XCIzOS4zMjE2XCIgaGVpZ2h0PVwiMzkuNjYwOFwiIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XG4gICAgICAgICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PVwiMFwiIHJlc3VsdD1cIkJhY2tncm91bmRJbWFnZUZpeFwiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIi8+XG4gICAgICAgICAgICA8ZmVPZmZzZXQgZHk9XCI0XCIvPlxuICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjJcIi8+XG4gICAgICAgICAgICA8ZmVDb21wb3NpdGUgaW4yPVwiaGFyZEFscGhhXCIgb3BlcmF0b3I9XCJvdXRcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMC4yNSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiIHJlc3VsdD1cImVmZmVjdDFfZHJvcFNoYWRvd182NV82MzgzXCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgIDxmZU9mZnNldC8+XG4gICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMC4wOTEyXCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDEgMFwiLz5cbiAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfNjVfNjM4M1wiIHJlc3VsdD1cImVmZmVjdDJfZHJvcFNoYWRvd182NV82MzgzXCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgIDxmZU9mZnNldC8+XG4gICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMC4xODI0XCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDEgMFwiLz5cbiAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJlZmZlY3QyX2Ryb3BTaGFkb3dfNjVfNjM4M1wiIHJlc3VsdD1cImVmZmVjdDNfZHJvcFNoYWRvd182NV82MzgzXCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgIDxmZU9mZnNldC8+XG4gICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMC42Mzg0XCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDEgMFwiLz5cbiAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJlZmZlY3QzX2Ryb3BTaGFkb3dfNjVfNjM4M1wiIHJlc3VsdD1cImVmZmVjdDRfZHJvcFNoYWRvd182NV82MzgzXCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgIDxmZU9mZnNldC8+XG4gICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMS4yNzY4XCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDEgMFwiLz5cbiAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJlZmZlY3Q0X2Ryb3BTaGFkb3dfNjVfNjM4M1wiIHJlc3VsdD1cImVmZmVjdDVfZHJvcFNoYWRvd182NV82MzgzXCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgIDxmZU9mZnNldC8+XG4gICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMi4xODg4XCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDEgMFwiLz5cbiAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJlZmZlY3Q1X2Ryb3BTaGFkb3dfNjVfNjM4M1wiIHJlc3VsdD1cImVmZmVjdDZfZHJvcFNoYWRvd182NV82MzgzXCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgIDxmZU9mZnNldC8+XG4gICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMy44MzA0XCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDEgMFwiLz5cbiAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJlZmZlY3Q2X2Ryb3BTaGFkb3dfNjVfNjM4M1wiIHJlc3VsdD1cImVmZmVjdDdfZHJvcFNoYWRvd182NV82MzgzXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDdfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwic2hhcGVcIi8+XG4gICAgICAgICAgPC9maWx0ZXI+XG4gICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjNcIiB4PVwiMjg5LjMzOVwiIHk9XCI4My4zMzkyXCIgd2lkdGg9XCIzOS4zMjE2XCIgaGVpZ2h0PVwiMzkuNjYwOFwiIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XG4gICAgICAgICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PVwiMFwiIHJlc3VsdD1cIkJhY2tncm91bmRJbWFnZUZpeFwiLz5cbiAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIi8+XG4gICAgICAgICAgICA8ZmVPZmZzZXQgZHk9XCI0XCIvPlxuICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjJcIi8+XG4gICAgICAgICAgICA8ZmVDb21wb3NpdGUgaW4yPVwiaGFyZEFscGhhXCIgb3BlcmF0b3I9XCJvdXRcIi8+XG4gICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMC4yNSAwXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiIHJlc3VsdD1cImVmZmVjdDFfZHJvcFNoYWRvd182NV82MzgzXCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgIDxmZU9mZnNldC8+XG4gICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMC4wOTEyXCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDEgMFwiLz5cbiAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfNjVfNjM4M1wiIHJlc3VsdD1cImVmZmVjdDJfZHJvcFNoYWRvd182NV82MzgzXCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgIDxmZU9mZnNldC8+XG4gICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMC4xODI0XCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDEgMFwiLz5cbiAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJlZmZlY3QyX2Ryb3BTaGFkb3dfNjVfNjM4M1wiIHJlc3VsdD1cImVmZmVjdDNfZHJvcFNoYWRvd182NV82MzgzXCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgIDxmZU9mZnNldC8+XG4gICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMC42Mzg0XCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDEgMFwiLz5cbiAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJlZmZlY3QzX2Ryb3BTaGFkb3dfNjVfNjM4M1wiIHJlc3VsdD1cImVmZmVjdDRfZHJvcFNoYWRvd182NV82MzgzXCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgIDxmZU9mZnNldC8+XG4gICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMS4yNzY4XCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDEgMFwiLz5cbiAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJlZmZlY3Q0X2Ryb3BTaGFkb3dfNjVfNjM4M1wiIHJlc3VsdD1cImVmZmVjdDVfZHJvcFNoYWRvd182NV82MzgzXCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgIDxmZU9mZnNldC8+XG4gICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMi4xODg4XCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDEgMFwiLz5cbiAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJlZmZlY3Q1X2Ryb3BTaGFkb3dfNjVfNjM4M1wiIHJlc3VsdD1cImVmZmVjdDZfZHJvcFNoYWRvd182NV82MzgzXCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgIDxmZU9mZnNldC8+XG4gICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMy44MzA0XCIvPlxuICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDEgMFwiLz5cbiAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJlZmZlY3Q2X2Ryb3BTaGFkb3dfNjVfNjM4M1wiIHJlc3VsdD1cImVmZmVjdDdfZHJvcFNoYWRvd182NV82MzgzXCIvPlxuICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDdfZHJvcFNoYWRvd182NV82MzgzXCIgcmVzdWx0PVwic2hhcGVcIi8+XG4gICAgICAgICAgPC9maWx0ZXI+XG4gICAgICAgIDwvZGVmcz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgc2V0dXA+XG4gIGltcG9ydCB7IHJlZiwgb25Nb3VudGVkIH0gZnJvbSAndnVlJ1xuICBpbXBvcnQgeyBnc2FwIH0gZnJvbSAnZ3NhcCdcbiAgaW1wb3J0IHsgRHJhd1NWR1BsdWdpbiB9IGZyb20gJ2dzYXAvRHJhd1NWR1BsdWdpbidcblxuICBnc2FwLnJlZ2lzdGVyUGx1Z2luKERyYXdTVkdQbHVnaW4pXG5cbiAgY29uc3QgbG9hZGluZyA9IHJlZih0cnVlKTtcbiAgY29uc3QgbG9nbyA9IHJlZihudWxsKVxuICBjb25zdCBjb250YWluZXIgPSByZWYobnVsbClcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIGlmICghbG9hZGluZy52YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBsZWZ0UGF0aCA9IGxvZ28udmFsdWUucXVlcnlTZWxlY3RvcignI2xlZnRQYXRoJylcbiAgICBjb25zdCByaWdodFBhdGggPSBsb2dvLnZhbHVlLnF1ZXJ5U2VsZWN0b3IoJyNyaWdodFBhdGgnKVxuICAgIGNvbnN0IGV5ZUwgPSBsb2dvLnZhbHVlLnF1ZXJ5U2VsZWN0b3IoJyNleWVMJylcbiAgICBjb25zdCBleWVSID0gbG9nby52YWx1ZS5xdWVyeVNlbGVjdG9yKCcjZXllUicpXG5cbiAgICAvLyBPbiBwYXJ0IGTigJl1biB0cmFjw6kgXCJpbnZpc2libGVcIiAobG9uZ3VldXIgMCkgcHVpcyBvbiBsZSBkZXNzaW5lXG4gICAgZ3NhcC5zZXQoW2xlZnRQYXRoLCByaWdodFBhdGhdLCB7IGRyYXdTVkc6ICcwJSAwJScsIGZpbGxPcGFjaXR5OiAwIH0pXG4gICAgZ3NhcC5zZXQoW2V5ZUwsIGV5ZVJdLCB7IHNjYWxlOiAxLCBvcGFjaXR5OiAwLCB0cmFuc2Zvcm1PcmlnaW46ICdjZW50ZXIgY2VudGVyJyB9KVxuXG4gICAgY29uc3QgdGwgPSBnc2FwLnRpbWVsaW5lKHsgZGVmYXVsdHM6IHsgZWFzZTogJ3Bvd2VyMi5pbk91dCcgfSwgb25Db21wbGV0ZTogKCkgPT4geyBsb2FkaW5nLnZhbHVlID0gZmFsc2UgfSB9KVxuXG4gICAgdGxcbiAgICAgICAgLnRvKGxlZnRQYXRoLCB7IGRyYXdTVkc6ICcwJSAxMDAlJywgZHVyYXRpb246IDEuMiB9KVxuICAgICAgICAudG8ocmlnaHRQYXRoLCB7IGRyYXdTVkc6ICcwJSAxMDAlJywgZHVyYXRpb246IDEuMiB9LCAnLT0wLjYnKVxuICAgICAgICAudG8obGVmdFBhdGgsIHsgZmlsbE9wYWNpdHk6ICcxJywgZHVyYXRpb246IDAuMiB9KVxuICAgICAgICAudG8ocmlnaHRQYXRoLCB7IGZpbGxPcGFjaXR5OiAnMScsIGR1cmF0aW9uOiAwLjIgfSwgJy09MC4yJylcbiAgICAgICAgLnRvKGV5ZUwsIHsgb3BhY2l0eTogMSwgZHVyYXRpb246IDAuMiwgZGVsYXk6IDAuMSB9LCAnLT0wLjInKVxuICAgICAgICAudG8oZXllUiwgeyBvcGFjaXR5OiAxLCBkdXJhdGlvbjogMC4yIH0sICctPTAuMicpXG4gICAgICAgIC50byhleWVMLCB7IHNjYWxlOiAxLCBkdXJhdGlvbjogMC42IH0sICctPTAuMicpXG4gICAgICAgIC5hZGQobWFrZUZsaWNrZXIobG9nby52YWx1ZSkpXG4gICAgICAgIC50byhsb2dvLnZhbHVlLCB7IHNjYWxlOiAxLjMsIG9wYWNpdHk6IDAsIGR1cmF0aW9uOiAwLjMsIGRlbGF5OiAwLjIgfSApXG4gICAgICAgIC50byhjb250YWluZXIudmFsdWUsIHsgb3BhY2l0eTogMCwgZHVyYXRpb246IDAuMyB9LCAnLT0wLjInIClcbiAgfSlcblxuICBmdW5jdGlvbiBtYWtlRmxpY2tlcih0YXJnZXQsIGJ1cnN0cyA9IGdzYXAudXRpbHMucmFuZG9tKDMsIDYsIDEpKSB7XG4gICAgY29uc3QgdGwgPSBnc2FwLnRpbWVsaW5lKClcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ1cnN0czsgaSsrKSB7XG4gICAgICB0bC50byh0YXJnZXQsIHtcbiAgICAgICAgb3BhY2l0eTogMC4xOCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV4dGluY3Rpb24gZnVsZ3VyYW50ZVxuICAgICAgICBkdXJhdGlvbjogZ3NhcC51dGlscy5yYW5kb20oMC4wMTUsIDAuMDYpLFxuICAgICAgICBlYXNlOiAncG93ZXI0LmluJyxcbiAgICAgIH0pXG4gICAgICB0bC50byh0YXJnZXQsIHtcbiAgICAgICAgb3BhY2l0eTogMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJldG91ciBicnV0YWwgZGUgbGEgbHVtacOocmVcbiAgICAgICAgZHVyYXRpb246IGdzYXAudXRpbHMucmFuZG9tKDAuMDMsIDAuMDgpLFxuICAgICAgICBlYXNlOiAnZXhwby5vdXQnLFxuICAgICAgfSwgJz4nKVxuICAgIH1cbiAgICByZXR1cm4gdGxcbiAgfVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4ubG9nby13cmFwIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMzkwcHg7XG4gIG1hcmdpbjogMCBhdXRvO1xufVxuc3ZnIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gIC8qIEFjY2Vzc2liaWxpdMOpIDogb24gc2F1dGUgbOKAmWFuaW1hdGlvbiBzaSBs4oCZdXRpbGlzYXRldXIgbGEgZMOpc2FjdGl2ZSAqL1xuICBzdmcgKiB7XG4gICAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG48L3N0eWxlPiIsIjx0ZW1wbGF0ZT5cbiAgPGFydGljbGVcbiAgICAgIGNsYXNzPVwiYmFkZ2VcIlxuICAgICAgOmNsYXNzPVwieyAnaGFzLWhvbGUnOiBoYXNIb2xlIH1cIlxuICAgICAgOnN0eWxlPVwieyAnLS1hY2NlbnQnOiBhY2NlbnQsIHdpZHRoOiBweCh3aWR0aCksIGhlaWdodDogcHgoaGVpZ2h0KSB9XCJcbiAgICAgIDphcmlhLWxhYmVsPVwidChQUk9GSUxFX0JBREdFX0FSSUFfTEFCRUwpXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJnbG93XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9kaXY+XG5cbiAgICA8IS0tIHBldGl0IGxvZ28gLS0+XG4gICAgPGltZyBzcmM9XCIvcmVzL2ltYWdlcy9sb2dvX21vdXRoLnN2Z1wiIGFsdD1cIlwiIGNsYXNzPVwidy0xLzYgbXQtM1wiPlxuXG4gICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+e3sgdChQUk9GSUxFX0JBREdFX1RJVExFKSB9fTwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImt2XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwia1wiPnt7IHQoUFJPRklMRV9CQURHRV9UWVBFKSB9fTwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInZcIj5cbiAgICAgICAge3sgdHlwZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwia1wiPnt7IHQoUFJPRklMRV9CQURHRV9DUkVBVEVEX09OKSB9fTwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInZcIj5cbiAgICAgICAgICB7eyBpYXQgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImtcIj57eyB0KFBST0ZJTEVfQkFER0VfRVhQSVJFUykgfX0gPHNwYW4gdi1pZj1cImVhdCAhPT0gbnVsbFwiPnt7IHQoUFJPRklMRV9CQURHRV9PTikgfX08L3NwYW4+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidlwiPlxuICAgICAgICB7eyBlYXQgIT09IG51bGwgPyBlYXQgOiB0KFBST0ZJTEVfQkFER0VfTkVWRVIpIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJydWxlXCI+PC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiaGFuZGxlXCI+e3sgaGFuZGxlIH19PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm5hbWVcIj57eyBuYW1lIH19PC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZ3JpZFwiIHN0eWxlPVwibWFyZ2luLXRvcDo2cHhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJxclwiPjwvZGl2PlxuXG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtZXRhXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpZFwiPjxiPnt7IHQoUFJPRklMRV9CQURHRV9GT1IpIH19PC9iPlxuICAgICAgICAgIDxicj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMiBwci0xMFwiPlxuICAgICAgICAgICAgPGltZyBzcmM9XCIvcmVzL2ltYWdlcy9sb2dvLnBuZ1wiIGFsdD1cIlwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTEgbXQtMlwiPlxuICAgICAgICAgICAgPGEgaHJlZj1cIi90ZWxlY2hhcmdlbWVudHNcIiBjbGFzcz1cInRleHQteHNcIj5cbiAgICAgICAgICAgICAgPGI+PGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1hcnJvdy1kb3duIG1yLTFcIj48L2k+PC9iPjxzcGFuIGNsYXNzPVwidGV4dC1ncmF5LTMwMFwiPnt7IHQoUFJPRklMRV9CQURHRV9ET1dOTE9BRCkgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8YSBocmVmPVwiL21hbnVlbFwiIGNsYXNzPVwidGV4dC14c1wiPlxuICAgICAgICAgICAgICA8Yj48aSBjbGFzcz1cImZhLXNvbGlkIGZhLWJvb2sgbXItMVwiPjwvaT48L2I+PHNwYW4gY2xhc3M9XCJ0ZXh0LWdyYXktMzAwXCI+e3sgdChQUk9GSUxFX0JBREdFX0RPQ1VNRU5UQVRJT04pIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZvb3RlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNpZ1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRvdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4+UFBST0QuU1RPUkU8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9hcnRpY2xlPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBzZXR1cD5cbmltcG9ydCB7IHVzZVV4VHJhbnNsYXRvciB9IGZyb20gJy4uLy4uLy4uL2kxOG4vdXNlVXhUcmFuc2xhdG9yJ1xuaW1wb3J0IHsgUFJPRklMRV9CQURHRV9BUklBX0xBQkVMLCBQUk9GSUxFX0JBREdFX1RJVExFLCBQUk9GSUxFX0JBREdFX1RZUEUsIFBST0ZJTEVfQkFER0VfQ1JFQVRFRF9PTiwgUFJPRklMRV9CQURHRV9FWFBJUkVTLCBQUk9GSUxFX0JBREdFX09OLCBQUk9GSUxFX0JBREdFX05FVkVSLCBQUk9GSUxFX0JBREdFX0ZPUiwgUFJPRklMRV9CQURHRV9ET1dOTE9BRCwgUFJPRklMRV9CQURHRV9ET0NVTUVOVEFUSU9OIH0gZnJvbSAnLi4vLi4vLi4vaTE4bi9rZXlzJ1xuXG5jb25zdCB7IHQgfSA9IHVzZVV4VHJhbnNsYXRvcigpXG5cbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xuICBoYXNIb2xlOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IHRydWUgfSxcbiAgbmFtZTogeyB0eXBlOiBTdHJpbmcgfSxcbiAgdHlwZTogeyB0eXBlOiBTdHJpbmcgfSxcbiAgaGFuZGxlOiB7IHR5cGU6IFN0cmluZyB9LFxuICBpYXQ6IHsgdHlwZTogU3RyaW5nIH0sXG4gIGVhdDogeyB0eXBlOiBTdHJpbmcsIGRlZmF1bHQ6IG51bGwgfSxcbiAgcmVmZXJlbmNlSWQ6IHsgdHlwZTogU3RyaW5nLCBkZWZhdWx0OiAnTGVWb2l4JyB9LFxuICBjb21wYW55TGluZXM6IHtcbiAgICB0eXBlOiBBcnJheSxcbiAgICBkZWZhdWx0OiAoKSA9PiBbJ0lOVEVSTkVUIERFVkVMT1BNRU5UJywgJ1NUVURJTyBDT01QQU5ZJ11cbiAgfSxcbiAgd2lkdGg6IHsgdHlwZTogW051bWJlciwgU3RyaW5nXSwgZGVmYXVsdDogMzMwIH0sXG4gIGhlaWdodDogeyB0eXBlOiBbTnVtYmVyLCBTdHJpbmddLCBkZWZhdWx0OiA0NTAgfSxcbiAgYWNjZW50OiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJyNmZjI0MzgnIH1cbn0pXG5cbmZ1bmN0aW9uIHB4KHYpIHsgcmV0dXJuIHR5cGVvZiB2ID09PSAnbnVtYmVyJyA/IGAke3Z9cHhgIDogdiB9XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbkBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUlCTStQbGV4K01vbm86d2dodEAzMDA7NDAwOzYwMCZkaXNwbGF5PXN3YXAnKTtcblxuLmJhZGdle1xuICAvKiB2YXJpYWJsZXMgKi9cbiAgLS1hY2NlbnQ6ICNmZjI0Mzg7XG4gIC0tYmc6ICMwYjBiMGM7XG4gIC0taW5rOiAjZTllYWVjO1xuICAtLXN1YjogI2E2YTdhYjtcbiAgLS1ib3JkZXI6IHJnYmEoMjU1LDI1NSwyNTUsLjEyKTtcblxuICBib3JkZXItcmFkaXVzOiAyNHB4O1xuICBiYWNrZ3JvdW5kOlxuICAgICAgcmFkaWFsLWdyYWRpZW50KDEyMCUgMTIwJSBhdCAxMCUgLTEwJSwgcmdiYSgyNTUsMjU1LDI1NSwuMTApLCB0cmFuc3BhcmVudCA0MCUpLFxuICAgICAgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgIzExMTMxNiAwJSwgIzBhMGIwYyAxMDAlKTtcbiAgY29sb3I6IHZhcigtLWluayk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZzogMjZweCAyMnB4O1xuICBib3gtc2hhZG93OlxuICAgICAgMCAyOHB4IDYwcHggLTEycHggcmdiYSgwLDAsMCwuNjUpLFxuICAgICAgMCA4cHggMjBweCAtOHB4IHJnYmEoMjU1LDM2LDU2LC4yNSksXG4gICAgICBpbnNldCAwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjA2KSxcbiAgICAgIGluc2V0IDAgLTFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjAzKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgZm9udC1mYW1pbHk6IFwiSUJNIFBsZXggTW9ub1wiLCB1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZTtcbn1cblxuLmJhZGdlLmhhcy1ob2xlOjpiZWZvcmV7XG4gIGNvbnRlbnQ6XCJcIjtcbiAgcG9zaXRpb246YWJzb2x1dGU7XG4gIHRvcDoxNHB4OyBsZWZ0OjUwJTtcbiAgd2lkdGg6IDU3cHg7IGhlaWdodDogMThweDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLC40NSk7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjE1KTtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAycHggMnB4IHJnYmEoMCwwLDAsLjUpLCAwIDRweCAxMnB4IHJnYmEoMCwwLDAsLjM1KTtcbn1cblxuLyogVG9wIGxvZ28gKi9cbi5tYXJre1xuICB3aWR0aDogNTZweDsgaGVpZ2h0OiA1NnB4O1xuICBkaXNwbGF5OmJsb2NrO1xuICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICBvcGFjaXR5Oi45O1xuICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgNnB4IDhweCByZ2JhKDI1NSwzNiw1NiwuMjUpKTtcbn1cblxuLyogVGl0cmVzICovXG4udGl0bGV7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGxldHRlci1zcGFjaW5nOiAuMThlbTtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBtYXJnaW46IDZweCAwIDE4cHggMDtcbn1cblxuLyogUGFpcmVzIGNsw6kvdmFsZXVyICovXG4ua3Z7XG4gIGRpc3BsYXk6Z3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiA3MHB4IDFmcjtcbiAgZ2FwOiA2cHggMTZweDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBjb2xvcjogdmFyKC0tc3ViKTtcbiAgbGluZS1oZWlnaHQ6IDEuMztcbiAgbWFyZ2luLWJvdHRvbTogMTJweDtcbn1cbi5rdiAua3sgY29sb3I6IHZhcigtLXN1Yik7IG9wYWNpdHk6LjkgfVxuLmt2IC52eyBjb2xvcjogdmFyKC0taW5rKTsgb3BhY2l0eTouOSB9XG5cbi5ydWxle1xuICBoZWlnaHQ6MXB4O1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDI1NSwyNTUsMjU1LC4xOCksIHRyYW5zcGFyZW50KTtcbiAgbWFyZ2luOiAxNHB4IDAgMTBweDtcbn1cblxuLmhhbmRsZXtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBjb2xvcjogdmFyKC0tc3ViKTtcbiAgbGV0dGVyLXNwYWNpbmc6IC4wOGVtO1xuICBtYXJnaW4tdG9wOiAycHg7XG59XG5cbi5uYW1le1xuICBmb250LXNpemU6IDIycHg7XG4gIGxldHRlci1zcGFjaW5nOiAuMTJlbTtcbiAgbWFyZ2luOiA4cHggMCA4cHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5ncmlke1xuICBkaXNwbGF5OmdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgZ2FwOiAxNHB4O1xuICBhbGlnbi1pdGVtczogc3RhcnQ7XG59XG5cbi8qIFFSIChwbGFjZWhvbGRlcikgKi9cbi5xcntcbiAgd2lkdGg6IDEyOHB4OyBoZWlnaHQ6IDEyOHB4O1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICBiYWNrZ3JvdW5kOlxuICAgICAgcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgwZGVnLCAjMGYxMTEzLCAjMGYxMTEzIDhweCwgIzBkMGYxMSA4cHgsICMwZDBmMTEgMTZweCk7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDRweCAjMDAwLCAwIDhweCAyMHB4IC0xMHB4IHJnYmEoMCwwLDAsLjgpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OmhpZGRlbjtcbn1cbi5xcjo6YmVmb3JlLCAucXI6OmFmdGVye1xuICBjb250ZW50OlwiXCI7XG4gIHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDoxMHB4O1xuICBiYWNrZ3JvdW5kOlxuICAgICAgY29uaWMtZ3JhZGllbnQoZnJvbSAwZGVnIGF0IDIwJSAyMCUsICNmZmYgMCAyNSUsIHRyYW5zcGFyZW50IDAgMTAwJSksXG4gICAgICBjb25pYy1ncmFkaWVudChmcm9tIDBkZWcgYXQgODAlIDIwJSwgI2ZmZiAwIDI1JSwgdHJhbnNwYXJlbnQgMCAxMDAlKSxcbiAgICAgIGNvbmljLWdyYWRpZW50KGZyb20gMGRlZyBhdCAyMCUgODAlLCAjZmZmIDAgMjUlLCB0cmFuc3BhcmVudCAwIDEwMCUpLFxuICAgICAgY29uaWMtZ3JhZGllbnQoZnJvbSAwZGVnIGF0IDgwJSA4MCUsICNmZmYgMCAyNSUsIHRyYW5zcGFyZW50IDAgMTAwJSksXG4gICAgICByZXBlYXRpbmctY29uaWMtZ3JhZGllbnQoI2ZmZiAwIDIlLCB0cmFuc3BhcmVudCAwIDQlKTtcbiAgbWl4LWJsZW5kLW1vZGU6IHNjcmVlbjtcbiAgb3BhY2l0eTouOTtcbn1cbi5xcjo6YWZ0ZXJ7IGluc2V0OjM2cHg7IGJhY2tncm91bmQ6IzAwMCB9XG5cbi5tZXRhe1xuICBmb250LXNpemU6IDExcHg7XG4gIGNvbG9yOiB2YXIoLS1zdWIpO1xuICBsaW5lLWhlaWdodDogMS40NTtcbn1cbi5tZXRhIGJ7IGNvbG9yOiB2YXIoLS1pbmspOyBmb250LXdlaWdodDo2MDA7IGxldHRlci1zcGFjaW5nOi4wNmVtIH1cbi5tZXRhIC5pZHtcbiAgbWFyZ2luOiA4cHggMCAxMHB4O1xuICBwYWRkaW5nOiA2cHggOHB4O1xuICBib3JkZXI6IDFweCBkYXNoZWQgcmdiYSgyNTUsMjU1LDI1NSwuMjIpO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xufVxuXG4vKiBTaWduYXR1cmUgYmFzICovXG4uZm9vdGVye1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoyMnB4OyByaWdodDoyMnB4OyBib3R0b206MThweDtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO1xuICBjb2xvcjogdmFyKC0tc3ViKTsgZm9udC1zaXplOiAxMHB4O1xuICBsZXR0ZXItc3BhY2luZzouMDhlbTtcbn1cbi5zaWd7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6OHB4OyBvcGFjaXR5Oi45NTsgfVxuLmRvdHtcbiAgd2lkdGg6MTBweDsgaGVpZ2h0OjEwcHg7IGJvcmRlci1yYWRpdXM6NTAlO1xuICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDQwJSAzNSUsICNmZmYsICNmZmYwIDQ1JSk7XG4gIGJveC1zaGFkb3c6IDAgMCAxNHB4IHZhcigtLWFjY2VudCksIDAgMCA0cHggdmFyKC0tYWNjZW50KSBpbnNldDtcbn1cblxuLyogR2xvd3Mgcm91Z2VzICovXG4uZ2xvd3tcbiAgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0Oi00MCU7XG4gIGJhY2tncm91bmQ6XG4gICAgICByYWRpYWwtZ3JhZGllbnQoNDIwcHggMjIwcHggYXQgMjAlIC0xMCUsIHJnYmEoMjU1LDM2LDU2LC4xOCksIHRyYW5zcGFyZW50IDQwJSksXG4gICAgICByYWRpYWwtZ3JhZGllbnQoNDIwcHggMjIwcHggYXQgMTIwJSAxMjAlLCByZ2JhKDI1NSwzNiw1NiwuMTIpLCB0cmFuc3BhcmVudCA1MCUpO1xuICBwb2ludGVyLWV2ZW50czpub25lO1xuICBmaWx0ZXI6IGJsdXIoMnB4KTtcbn1cblxuLyogU8OpbGVjdGlvbiAqL1xuLmJhZGdlIDo6c2VsZWN0aW9ueyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwzNiw1NiwuMzUpOyBjb2xvcjojZmZmIH1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxzZWN0aW9uIHJlZj1cImNvbnRhaW5lclwiIGNsYXNzPVwidy1mdWxsIGgtc2NyZWVuIGZsZXggZmxleC1jb2wganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIHRleHQtd2hpdGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC00eGwgZm9udC1ib2xkIG1iLTEwXCI+RMOpY291dnJleiBsZXMgZWZmZXRzPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInctMy80XCI+XG4gICAgICA8ZGl2IHYtZm9yPVwiKGxpbmUsIGluZGV4KSBpbiBsaW5lc1wiIDprZXk9XCJpbmRleFwiIGNsYXNzPVwibGluZSBteS02IHRleHQtMnhsIHRyYW5zaXRpb24gZHVyYXRpb24tNTAwXCJcbiAgICAgICAgICAgOmNsYXNzPVwieyAndGV4dC1yZWQtNTAwIHNjYWxlLTExMCc6IGFjdGl2ZUluZGV4ID09PSBpbmRleCwgJ29wYWNpdHktMzAnOiBhY3RpdmVJbmRleCAhPT0gaW5kZXggfVwiPlxuICAgICAgICB7eyBsaW5lLnRpdGxlIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC14bCBtdC0xMCBoLTI0IHRyYW5zaXRpb24tb3BhY2l0eSBkdXJhdGlvbi01MDBcIj57eyBsaW5lc1thY3RpdmVJbmRleF0/LmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgc2V0dXA+XG5pbXBvcnQge29uTW91bnRlZCwgcmVmfSBmcm9tICd2dWUnXG5pbXBvcnQge2dzYXB9IGZyb20gJ2dzYXAnXG5pbXBvcnQge1Njcm9sbFRyaWdnZXJ9IGZyb20gJ2dzYXAvU2Nyb2xsVHJpZ2dlcidcblxuZ3NhcC5yZWdpc3RlclBsdWdpbihTY3JvbGxUcmlnZ2VyKVxuXG5jb25zdCBsaW5lcyA9IFtcbiAgeyB0aXRsZTogXCJDb21wcmVzc2V1clwiLCBkZXNjcmlwdGlvbjogXCJDb250csO0bGUgbGEgZHluYW1pcXVlIGRlIHZvdHJlIHNpZ25hbCBhdWRpby5cIiB9LFxuICB7IHRpdGxlOiBcIsOJZ2FsaXNldXJcIiwgZGVzY3JpcHRpb246IFwiQWp1c3RlIGxlcyBmcsOpcXVlbmNlcyBwb3VyIHVuIG1peCBjbGFpci5cIiB9LFxuICB7IHRpdGxlOiBcIlLDqXZlcmLDqXJhdGlvblwiLCBkZXNjcmlwdGlvbjogXCJBam91dGUgZGUgbCdlc3BhY2UgZXQgZGUgbGEgcHJvZm9uZGV1ci5cIiB9LFxuICB7IHRpdGxlOiBcIlN0w6lyw6lvIHdpZGVuZXJcIiwgZGVzY3JpcHRpb246IFwiw4lsYXJnaXQgbOKAmWltYWdlIHN0w6lyw6lvIGRlIHZvdHJlIG1peC5cIiB9LFxuXVxuXG5jb25zdCBhY3RpdmVJbmRleCA9IHJlZigwKVxuY29uc3QgY29udGFpbmVyID0gcmVmKClcblxub25Nb3VudGVkKCgpID0+IHtcbiAgU2Nyb2xsVHJpZ2dlci5kZWZhdWx0cyh7XG4gICAgc2Nyb2xsZXI6IFwiLnNjcm9sbFwiXG4gIH0pO1xuXG4gIFNjcm9sbFRyaWdnZXIuY3JlYXRlKHtcbiAgICB0cmlnZ2VyOiBjb250YWluZXIudmFsdWUsXG4gICAgc3RhcnQ6IFwidG9wIHRvcFwiLFxuICAgIGVuZDogKCkgPT4gYCs9JHt3aW5kb3cuaW5uZXJIZWlnaHQgKiAobGluZXMubGVuZ3RoKX1gLFxuICAgIHBpbjogdHJ1ZSxcbiAgICBzY3J1YjogdHJ1ZSxcbiAgICBzbmFwOiAxIC8gKGxpbmVzLmxlbmd0aCAtIDEpLFxuICAgIG9uVXBkYXRlOiAoc2VsZikgPT4ge1xuICAgICAgYWN0aXZlSW5kZXgudmFsdWUgPSBNYXRoLnJvdW5kKHNlbGYucHJvZ3Jlc3MgKiAobGluZXMubGVuZ3RoIC0gMSkpXG4gICAgfVxuICB9KVxufSlcbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuLmxpbmUge1xuICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7XG59XG48L3N0eWxlPlxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/