/* Colors */
/* even rows in list or tables, subtle shade of $c-bg-high */
/* Primary: blue */
/* text over primary background */
/* Secondary: green */
/* text over secondary background */
/* Accent: orange */
/* text over accent background */
/* Brag: gold */
/* text over brag background */
/* Error: red */
/* text over brag background */
/* Good: green */
/* Warn: orange */
/* Bad: red */
/* Fancy: pink */
/* text over brag background */
/* Borders */
/* Shadows */
/* Custom */
/* Common imports for all CSS modules */
/* Widths */
/* Heights */
/* Orientations */
/* Capabilities */
/* Aliases */
/* Uniboard: keep the same page layout accross pages */
/* when the width is appropriate for col1, but landscape prevents it */
/* atm only chrome supports min-content, max-content */
.piece-letter u8t {
  font-family: 'Noto Sans';
}

.mchat__tab, .mchat__messages a:not(.user-link), .game__tournament .clock, .rclock .time, i5z {
  font-family: 'Roboto';
}

u8t {
  font-family: 'Noto Chess', 'Noto Sans';
}

/* text printed directly on the page background deserves special treatment (transp theme) */
.chat__members, .rclock .tour-rank, .round__now-playing .now-playing {
  color: #5e5e5e;
}

.crosstable__users, .crosstable__score, .crosstable povs:hover, .cmn-toggle + label::after, .rcontrols .rematch.fbt, #powerTip .forecast-info .title {
  background: linear-gradient(to bottom, whitesmoke 0%, #ededed 100%);
  text-shadow: 0 1px 0 white;
}

.cmn-toggle:hover + label::after {
  background: linear-gradient(to bottom, #fafafa 0%, #f2f2f2 100%);
  text-shadow: 0 1px 0 white;
}

.pocket piece::after {
  box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15) inset;
}

.pocket piece::after {
  background: #bd111f;
  color: #fff;
  text-shadow: 1px 1px 1px white !important;
}

#trainer group.radio input:checked + label {
  background: #0456bc;
}

.variant-racingKings .cg-wrap.cg-wrap cg-container::before {
  box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);
}

.fbt {
  background: none;
  border: none;
  outline: none;
  color: #4d4d4d;
}

.mchat__tab input {
  -webkit-appearance: none;
  background: white;
  border: 1px solid #e3e3e3;
  display: inline-block;
  padding: .5em;
}

.mchat__tab input:checked {
  background: #0456bc;
  border-color: #0456bc;
}

.cmn-toggle:focus + label::before, .cmn-toggle:hover + label::before {
  box-shadow: 0 0 12px #787878;
}

.context-streamer, .mchat__tab {
  white-space: nowrap;
  overflow: hidden;
}

.mchat__tab span, .game__meta .user-tv {
  white-space: nowrap;
}

.mchat__messages {
  overflow-wrap: break-word;
  word-break: break-word;
}

.mchat__tab span, .game__meta .user-tv, .crosstable__users, .ruser a {
  overflow: hidden;
  text-overflow: ellipsis;
}

.pocket-c2 {
  position: relative;
  display: block;
  height: 0;
  padding-bottom: 100%;
  width: 100%;
}

#promotion-choice {
  position: absolute;
  width: 100%;
  height: 100%;
}

.expiration, .rclock .tour-rank,
.rclock .moretime,
.rclock .berserked, .rcontrols .suggestion, .round__now-playing .switcher {
  /* extends %flex-wrap */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
}

.context-streamer, .game__meta__infos, .ruser .line, .rcontrols .pending, .rcontrols .negotiation, .rcontrols .rematch-decline, .keyboard-move {
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
}

.round__now-playing h3 {
  /* extends %flex-center */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
  justify-content: space-between;
}

.crosstable povs, .crosstable__users, .crosstable__score, .crosstable__matchup, .mchat, .mchat__content, .round__side, rm6, .rcontrols .follow-up {
  display: flex;
  flex-flow: column;
}

.mchat__tab input, .crosstable, .mchat, .game__meta, .pocket, .pocket piece::after {
  border-radius: 3px;
}

.crosstable, .mchat, .game__meta {
  overflow: hidden;
  /* helps with clipping background into border-radius */
}

.crosstable .sep, .pocket.usable piece:first-child:hover {
  border-radius: 3px 0 0 3px;
}

.round__app__table, .rcontrols .rematch-decline {
  border-radius: 0 3px 3px 0;
}

.mchat__tab, .rclock-top .time {
  border-radius: 3px 3px 0 0;
}

.context-streamer, .rclock-bottom .time {
  border-radius: 0 0 3px 3px;
}

.crosstable, .mchat, .game__meta, .context-streamer, .round__app__table, .rclock .time, rm6 .buttons, .rcontrols .rematch-decline {
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
}

coords {
  /* handle hidden coords */
  /* handle inner coords */
  position: absolute;
  display: flex;
  pointer-events: none;
  user-select: none;
  color: #fff;
  text-shadow: 0 1px 2px #000;
  font-weight: bold;
  /* negate inner coords colors */
}

.coords-no coords {
  display: none;
}

coords {
  font-size: 8px;
}

@media (min-width: 320px) {
  coords {
    font-size: calc(8px + 4 * ((100vw - 320px) / 880));
  }
}

@media (min-width: 1200px) {
  coords {
    font-size: 12px;
  }
}

coords.ranks {
  flex-flow: column-reverse;
  top: 1px;
  right: 0;
  height: 100%;
  width: .8em;
}

coords.ranks.black {
  flex-flow: column;
}

coords.files {
  bottom: 0px;
  left: 0;
  text-align: left;
  flex-flow: row;
  width: 100%;
  height: 1.4em;
}

coords.files.black {
  flex-flow: row-reverse;
}

coords.files coord {
  padding-left: 4px;
}

coords coord {
  flex: 1 1 auto;
}

coords .is3d .cg-wrap coords coord {
  color: #fff !important;
  text-shadow: 0 1px 2px #000 !important;
}

coords .is3d .cg-wrap coords.files {
  bottom: calc(1px - 2.5%);
}

coords .is3d .cg-wrap coords.files coord {
  padding-left: 3px;
}

:root {
  --cg-coord-color-white: #fff;
  --cg-coord-color-black: #fff;
  --cg-coord-shadow: 0 1px 2px #000;
}

coords {
  text-shadow: var(--cg-coord-shadow);
}

.orientation-white .files coord:nth-child(2n+1),
.orientation-white .ranks coord:nth-child(2n),
.orientation-black .files coord:nth-child(2n),
.orientation-black .ranks coord:nth-child(2n+1) {
  color: var(--cg-coord-color-white);
}

.orientation-white .files coord:nth-child(2n),
.orientation-white .ranks coord:nth-child(2n+1),
.orientation-black .files coord:nth-child(2n+1),
.orientation-black .ranks coord:nth-child(2n) {
  color: var(--cg-coord-color-black);
}

/* handle outer coords */
@media (min-width: 800px), (orientation: landscape) {
  .coords-out coords {
    text-shadow: none;
  }
  .coords-out coords.ranks {
    right: -15px;
    top: 0;
    width: 12px;
  }
  .coords-out coords.ranks coord {
    transform: translateY(42%);
  }
  .coords-out coords.files {
    bottom: -15px;
    left: 0;
    text-align: center;
  }
  .coords-out coords coord {
    color: #5e5e5e !important;
  }
}

body {
  --board-scale: 1;
}

@media (min-width: 800px) and (min-height: 500px) {
  body {
    --board-scale: calc((var(--zoom) / 100) * 0.7 + 0.3);
  }
}

@media (max-width: 799px) and (orientation: portrait) {
  body {
    --col1: 1;
  }
  .main-board cg-board {
    border-radius: 0;
  }
}

body.resizing {
  user-select: none;
}

cg-resize {
  display: none;
}

@media (min-width: 800px) {
  cg-resize {
    display: block;
    position: absolute;
    right: -9px;
    bottom: -9px;
    width: 22px;
    height: 22px;
    cursor: nwse-resize;
  }
  cg-resize::before, cg-resize::after {
    background: #000;
    content: '';
    position: absolute;
    width: 12px;
    height: 1px;
  }
  cg-resize::before {
    width: 5px;
    transform: translate(7px, 8px) rotate(-45deg);
  }
  cg-resize::after {
    transform: translate(1px, 6px) rotate(-45deg);
  }
  cg-resize:hover {
    border-radius: 50%;
    background: rgba(189, 17, 31, 0.5);
  }
  .resizing cg-resize {
    border-radius: 50%;
    background: rgba(98, 153, 36, 0.5);
  }
}

.color-icon.white::before {
  content: "K";
}

.color-icon.black::before {
  content: "J";
}

.color-icon.random::before {
  content: "l";
}

.crosstable__users {
  flex: 1 1 auto;
}

.crosstable {
  width: 100%;
  line-height: 1.9em;
  display: flex;
}

.crosstable fill,
.crosstable povs {
  background: white;
  flex: 1 1 auto;
}

.crosstable povs, .crosstable__users, .crosstable__score, .crosstable__matchup {
  text-align: center;
}

.crosstable__users {
  max-width: 40vw;
  text-align: left;
}

.crosstable__users a {
  padding-left: 2vmin;
}

.crosstable__score {
  flex: 0 0 auto;
  font-weight: bold;
}

.crosstable__score span {
  padding: 0 2vmin;
}

.crosstable__matchup {
  flex: 1 1 auto;
  font-weight: bold;
  background: #f2cfd2;
}

.crosstable povs a {
  color: #787878;
  flex: 0 0 50%;
}

.crosstable povs:hover a {
  opacity: 1 !important;
}

.crosstable povs a.loss {
  opacity: .2;
}

.crosstable povs.current a {
  background: #d15862;
  color: #fff;
  opacity: 1 !important;
}

.crosstable povs.new {
  border: #d9d9d9;
}

.crosstable povs a.loss {
  opacity: .2;
}

@media (max-width: 649px) {
  .crosstable povs {
    display: none;
  }
  .crosstable povs:nth-last-child(-n+12) {
    display: flex;
  }
}

.crosstable .sep {
  border-left: 1px solid #d9d9d9;
  margin-left: .3em;
}

.crosstable .win {
  font-weight: bold;
  color: #629924;
}

.crosstable .loss {
  color: #cc3333;
}

.crosstable .unavailable {
  margin-top: 40px;
  opacity: 0.7;
}

.fbt {
  text-transform: uppercase;
  line-height: 1.5;
  transition: all 150ms;
}

@media (hover: hover) {
  .fbt:hover:not(.disabled):not([disabled]) {
    background: #ed1c24;
    color: #fff;
  }
}

.fbt.active {
  background: #bd111f !important;
  color: #fff;
}

.fbt.disabled, .fbt[disabled] {
  opacity: 0.5;
  cursor: default;
}

@keyframes glowing {
  42% {
    background: none;
  }
  50% {
    background: #f2cfd2;
  }
  58% {
    background: none;
  }
}

.glowing {
  animation: glowing 2s ease-in-out infinite;
}

@keyframes bar-glider-anim {
  0% {
    transform: translateX(-1300px);
  }
  100% {
    transform: translateX(2100px);
  }
}

.bar-glider {
  position: relative;
  overflow: hidden;
}

.bar-glider::after {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 70px;
  background: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.3));
  animation: bar-glider-anim 3s linear infinite;
}

.now-playing {
  display: grid;
  --np-min-width: 200px;
  grid-template-columns: repeat(auto-fill, minmax(var(--np-min-width), 1fr));
}

@media (max-width: 499px) {
  .now-playing {
    --np-min-width: 50%;
  }
}

.now-playing > a {
  color: #4d4d4d;
  padding: .3em;
}

.now-playing .indicator {
  color: #bd111f;
  margin-top: -3px;
  display: block;
}

.now-playing cg-board {
  box-shadow: none;
}

.context-streamers {
  max-height: 20vh;
  overflow-y: auto;
}

.context-streamer {
  height: 2.2em;
  color: #fff !important;
  background: #a1c27c;
  transition: all 150ms;
}

.context-streamer::before {
  font-size: 1.3em;
  margin-left: .4em;
}

.context-streamer:hover {
  background: #82ad50;
}

.cmn-toggle {
  position: absolute;
  margin-left: -99999px;
}

.cmn-toggle + label {
  display: block;
  position: relative;
  cursor: pointer;
  outline: none;
  -webkit-user-select: none;
  -moz-user-select: none;
}

.cmn-toggle + label {
  padding: 1px;
  width: 40px;
  height: 24px;
  background-color: #d9d9d9;
  border-radius: 24px;
}

.cmn-toggle + label::before,
.cmn-toggle + label::after {
  display: block;
  position: absolute;
  top: 1px;
  left: 1px;
  bottom: 1px;
  content: "";
}

.cmn-toggle + label::before {
  right: 1px;
  background-color: #cc3333;
  border-radius: 24px;
}

.cmn-toggle--subtle + label::before {
  background-color: #bd111f;
}

.cmn-toggle:hover + label::before {
  transition: background 150ms;
}

.cmn-toggle + label::after {
  width: 22px;
  border-radius: 100%;
  box-shadow: 0 1px 2.5px rgba(0, 0, 0, 0.3);
}

.cmn-toggle:hover + label::after {
  transition: margin 150ms;
}

.cmn-toggle:checked + label::before {
  background-color: #629924;
}

.cmn-toggle:checked + label::after {
  margin-left: 16px;
}

.variant-racingKings .cg-wrap.cg-wrap cg-container::before {
  background: rgba(230, 230, 230, 0.2);
  width: 100%;
  height: 12.5%;
  content: '';
  position: absolute;
  left: 0;
  z-index: 1;
  pointer-events: none;
}

.variant-racingKings .cg-wrap.orientation-white cg-container::before {
  top: 0;
}

.variant-racingKings .cg-wrap.orientation-black cg-container::before {
  bottom: 0;
}

.variant-kingOfTheHill cg-container::before {
  width: 25%;
  height: 25%;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.7);
  background: rgba(230, 230, 230, 0.2);
  content: '';
  position: absolute;
  top: 37.5%;
  left: 37.5%;
  z-index: 1;
  pointer-events: none;
}

#promotion-choice {
  background: rgba(255, 255, 255, 0.7);
  z-index: 205;
}

#promotion-choice square {
  cursor: pointer;
  border-radius: 50%;
  background-color: #b0b0b0;
  box-shadow: inset 0 0 25px 3px #808080;
  transition: all 150ms;
}

#promotion-choice piece {
  pointer-events: auto;
  opacity: 1;
  /* cancels blindfold */
}

.is2d #promotion-choice piece {
  width: 100%;
  height: 100%;
  transition: all 150ms;
  transform: scale(0.8);
}

#promotion-choice square:hover {
  box-shadow: inset 0 0 48px 8px #bd111f;
  border-radius: 0%;
}

.is2d #promotion-choice square:hover piece {
  transform: none;
}

.blindfold.main-board piece,
.blindfold .now-playing piece {
  opacity: 0;
}

.blindfold.main-board .check {
  background-image: none;
}

body ::-webkit-scrollbar,
body ::-webkit-scrollbar-corner {
  width: .5rem;
  background: white;
}

body ::-webkit-scrollbar-thumb {
  background: #dbdbdb;
}

body ::-webkit-scrollbar-thumb:hover,
body ::-webkit-scrollbar-thumb:active {
  background: #b3b3b3;
}

.mchat__tabs {
  flex: 0 0 auto;
  display: flex;
}

.mchat__tab {
  flex: 1 1 auto;
  text-align: center;
  padding: .4em 10px;
  cursor: pointer;
  color: #5e5e5e;
  transition: all 150ms;
}

.mchat__tab:hover {
  background: #f5dbdd;
}

.mchat__tab-active {
  color: #4d4d4d;
  background: white !important;
}

.mchat__tab input {
  cursor: pointer;
  display: none;
}

.mchat__tab-active input {
  display: block;
}

.mchat__tab:last-child {
  border-right: none;
}

.mchat-optional .mchat__tab.discussion {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.chat__members {
  font-size: .9em;
  height: 100%;
  overflow: hidden;
}

.mchat__messages {
  flex: 1 1 auto;
  max-height: 50vh;
  overflow-y: auto;
  overflow-x: hidden;
  cursor: initial;
  font-size: .9em;
}

@media (min-width: 1260px) {
  .mchat__messages {
    max-height: none;
  }
}

.mchat__messages li {
  position: relative;
  padding: .5em 0 .5em 10px;
  line-height: 1.2em;
  overflow-y: hidden;
  user-select: text;
}

.mchat__messages .deleted {
  opacity: 0.5;
}

.mchat__messages .system {
  display: block;
  opacity: 0.8;
  font-style: italic;
  font-size: .9em;
  margin-left: 0;
  text-align: center;
}

.mchat__messages .color,
.mchat__messages .user-link {
  font-weight: bold;
  padding: 0;
  color: #787878;
  letter-spacing: -1px;
  margin-right: .4em;
}

.mchat__messages .utitle {
  margin-right: 3px;
}

.mchat__messages i {
  display: none;
  position: absolute;
  top: 5px;
  right: 0;
  cursor: pointer;
  margin-right: 3px;
  padding: 4px 5px;
  opacity: 0.7;
  color: #bd111f;
}

.mchat__messages i:hover {
  opacity: 1;
}

.mchat__messages li:hover i {
  display: block;
  text-shadow: 0 0 2px white, 0 0 5px white, 0 0 10px white;
}

.mchat__say {
  flex: 0 0 auto;
  border: 0;
  border-top: 1px solid #d9d9d9;
  border-radius: 0;
  padding: 3px 20px 3px 4px;
}

.mchat__say.whisper {
  color: #629924;
  font-weight: bold;
  font-style: italic;
}

@keyframes palantir-glowing {
  40% {
    background: none;
  }
  50% {
    background: #d0e0bd;
  }
  60% {
    background: #ebb8bc;
  }
  70% {
    background: none;
  }
}

.palantir {
  flex: 0 1 auto;
  animation: palantir-glowing 1.5s ease-in-out infinite;
  border-radius: 0 3px 0 0;
}

.palantir-slot {
  animation: none;
  opacity: .6;
}

.palantir-slot:hover {
  opacity: 1;
}

.palantir-off {
  animation: none;
}

.palantir-on {
  background: #629924;
  color: #fff;
  animation: none;
}

.palantir-on:hover {
  background: #cc3333 !important;
  color: #fff !important;
}

.palantir::after {
  top: 1px;
  left: 0;
  right: auto;
  background: none;
  box-shadow: none;
}

.mchat {
  grid-area: chat;
  justify-content: stretch;
  min-height: 15em;
}

.mchat__content {
  background: white;
  flex: 1 1 auto;
  overflow: hidden;
}

.mchat__content.note textarea {
  font-size: .9em;
  flex-grow: 1;
  border: none;
  background-color: transparent;
  line-height: 1.7em;
  outline: none;
  resize: none;
}

.mchat__presets {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  flex-flow: row nowrap;
  line-height: 1.4em;
  user-select: none;
}

.mchat__presets span {
  flex: 1 1 auto;
  text-align: center;
  display: block;
  opacity: 0.8;
  border: 1px solid #d9d9d9;
  border-width: 1px 1px 0 0;
  font-size: .9em;
  text-transform: uppercase;
  cursor: pointer;
  transition: all 150ms;
}

.mchat__presets span.disabled {
  background: #f5dbdd;
  color: transparent;
  cursor: default;
}

.mchat__presets span:not(.disabled):hover {
  background: #bd111f;
  color: #fff;
  opacity: 1;
}

#main-wrap {
  --main-max-width: auto;
}

@media (max-width: 799px) and (orientation: portrait) {
  #main-wrap {
    --main-max-width: calc(100vh - calc(var(--site-header-height) + var(--site-header-margin)) - 100px - 2.5em);
  }
}

.round {
  grid-area: main;
  display: grid;
  grid-gap: 2vmin;
  grid-template-areas: 'app' 'under' 'side' 'uchat';
}

.round__app {
  grid-area: app;
}

.round__side {
  grid-area: side;
}

.round__underboard {
  grid-area: under;
}

.round__underchat {
  grid-area: uchat;
}

@media (min-width: 800px), (orientation: landscape) {
  .round {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto fit-content(0) fit-content(0);
    grid-template-areas: 'app   app' 'under side' 'under uchat';
  }
  .round__app {
    justify-self: center;
  }
}

@media (min-width: 1260px) {
  .round {
    grid-template-columns: minmax(230px, 20vw) minmax(calc(70vmin * var(--board-scale)), calc(100vh * var(--board-scale) - calc(var(--site-header-height) + var(--site-header-margin)) - 3rem)) minmax(240px, 400px);
    grid-template-rows: fit-content(0);
    grid-template-areas: 'side  app   app' 'uchat under .';
  }
  .round .crosstable__users {
    flex: 7 1 auto;
  }
}

@media (max-width: 799px) and (orientation: landscape) {
  .round .crosstable {
    display: none;
  }
}

.rcontrols {
  grid-area: controls;
}

.material-top {
  grid-area: mat-top;
}

.material-bottom {
  grid-area: mat-bot;
}

.expiration-top {
  grid-area: expi-top;
}

.expiration-bottom {
  grid-area: expi-bot;
}

.ruser-top {
  grid-area: user-top;
}

.ruser-bottom {
  grid-area: user-bot;
}

.rclock-top {
  grid-area: clock-top;
}

.rclock-bottom {
  grid-area: clock-bot;
}

rm6 {
  grid-area: moves;
}

.keyboard-move {
  grid-area: kb-move;
}

.round__app {
  display: grid;
}

@media (max-width: 799px) and (orientation: portrait) {
  .round__app {
    grid-template-rows: auto auto 50px auto min-content 50px auto;
    grid-template-areas: 'moves' 'mat-top' 'user-top' 'board' 'expi-bot' 'user-bot' 'mat-bot' 'kb-move' 'controls';
  }
  .round__app .rclock-top {
    grid-area: 3 / 1 / 3 / 2;
  }
  .round__app .rclock-bottom {
    grid-area: 6 / 1 / 6 / 2;
  }
  .round__app cg-board {
    box-shadow: none;
  }
  .round__app .expiration-top {
    display: none;
  }
  .round__app__table {
    display: none;
  }
  .round__app.move-confirm {
    grid-template-areas: 'controls' 'mat-top' 'user-top' 'board' 'expi-bot' 'user-bot' 'mat-bot' 'kb-move';
  }
  .round__app.move-confirm rm6 {
    display: none;
  }
}

@media (min-width: 800px), (orientation: landscape) {
  .round__app {
    grid-template-columns: minmax(calc(70vmin * var(--board-scale)), calc(100vh * var(--board-scale) - calc(var(--site-header-height) + var(--site-header-margin)) - 3rem)) minmax(240px, 400px);
    grid-template-rows: 1fr auto auto min-content auto auto auto auto min-content auto auto 1fr;
    grid-template-areas: 'board .' 'board mat-top' 'board clock-top' 'board expi-top' 'board user-top' 'board moves' 'board controls' 'board user-bot' 'board expi-bot' 'board clock-bot' 'board mat-bot' 'board .' 'kb-move .';
    grid-column-gap: 2vmin;
  }
  .round__app__table {
    grid-area: 4 / 2 / 10 / 3;
  }
  .round__app .expiration-top {
    display: flex;
  }
  .round__app rm6 {
    margin-bottom: 1px;
  }
  .round__app x2n {
    display: none;
    background: none;
  }
  .round__app .keyboard-move {
    margin-top: 2vmin;
  }
}

@media (min-width: 800px) and (min-height: 500px), (orientation: landscape) and (min-height: 500px) {
  .round__app x2n {
    display: flex;
  }
}

@media (max-width: 799px) and (orientation: landscape) {
  .round__app {
    grid-template-columns: minmax(calc(55vmin), calc(100vh - calc(var(--site-header-height) + var(--site-header-margin)) - 2vmin)) minmax(200px, 240px);
    grid-column-gap: 3vmin;
  }
}

.round__app__board {
  grid-area: board;
}

body.playing.zen .round__underboard, body.playing.zen .round__underchat, body.playing.zen #friend_box,
body.playing.zen .site-title-nav,
body.playing.zen .site-buttons, body.playing.zen .round__side, body.playing.zen .mchat, body.playing.zen .ruser, body.playing.zen .rclock .tour-rank, .rclock body.playing.zen .tour-rank,
body.playing.zen .rclock .moretime, .rclock body.playing.zen .moretime,
body.playing.zen .rclock .berserked, .rclock body.playing.zen .berserked, body.playing.zen x2n {
  display: none;
}

#zentog {
  position: absolute;
  padding: .5em 1em;
  opacity: 0.5;
  z-index: 110;
  display: none;
  border-bottom-right-radius: 3px;
}

body.playing.zen #zentog {
  display: block;
}

#zentog:hover {
  opacity: 1;
}

body.playing.zen .ricons {
  margin: .5em 0 1em 0;
}

body.playing.zen #top {
  justify-content: center;
}

.round__side .game__meta {
  flex: 0 0 auto;
}

.round__side .game__meta__players .team {
  margin-left: 1.7em;
}

.mchat {
  flex: 1 1 0;
  margin-top: 2vmin;
}

/* shared with analysis */
.game__meta {
  background: white;
  padding: 1.4vmin 2vmin;
}

.game__meta section:not(:last-child) {
  border-bottom: 1px solid #d9d9d9;
  margin-bottom: 1.33333vmin;
  padding-bottom: 1.33333vmin;
}

.game__meta__infos {
  position: relative;
  /* for bookmark */
}

.game__meta__infos::before {
  font-size: 3rem;
  margin-right: 4%;
}

.game__meta__infos p {
  margin: 0;
}

.game__meta__infos time {
  opacity: 1;
}

.game__meta .status {
  text-align: center;
}

.game__meta__players {
  margin-top: .3rem;
  font-size: 90%;
}

.game__meta .bookmark {
  position: absolute;
  right: 0;
  z-index: 2;
  color: #787878;
}

.game__meta .bookmark ::before {
  font-size: 1.3em;
}

.game__meta .bookmark:not(.bookmarked) .on,
.game__meta .bookmark.bookmarked .off {
  display: none;
}

.game__meta .user-tv {
  font-size: 1.2em;
}

.game__tournament .clock {
  font-size: 2em;
  text-align: center;
  margin-top: .2em;
}

@media (hover: hover) {
  .game__meta .bookmark {
    display: none;
  }
  .game__meta:hover .bookmark {
    display: block;
  }
}

.round__app__table {
  background: white;
}

.round__app .draw-yes span {
  font-size: 1.2em;
}

.expiration {
  font-size: .9rem;
  justify-content: center;
  line-height: 2;
  background: #629924;
  color: #fff;
}

.expiration-top {
  border-top-right-radius: 3px;
}

.expiration-bottom {
  border-bottom-right-radius: 3px;
}

.expiration.emerg {
  background: #cc3333;
}

.expiration strong {
  font-size: 1rem;
  margin-right: .3em;
}

.ruser {
  display: flex;
  justify-content: left;
  font-size: 1.2em;
  padding: 0 .3em;
  line-height: 50px;
}

.ruser:hover {
  color: #4d4d4d;
}

.ruser a {
  color: #4d4d4d;
}

.ruser.long a {
  letter-spacing: -0.5px;
}

.ruser rating {
  flex: 0 0 auto;
  margin: 0 .25em 0 .3em;
  color: #787878;
  letter-spacing: -0.5px;
}

.ruser .line {
  justify-content: center;
}

@keyframes connecting {
  0% {
    opacity: 0.1;
  }
  50% {
    opacity: 0.3;
  }
  100% {
    opacity: 0.1;
  }
}

.ruser.connecting .line {
  animation: connecting 0.9s ease-in-out infinite;
}

.ruser .rp {
  margin-right: .2em;
}

@media (min-width: 800px), (orientation: landscape) {
  .ruser {
    padding: .5em .5em .5em .3em;
    line-height: inherit;
  }
  .ruser a {
    flex: 1 1 auto;
  }
}

.rclock {
  position: relative;
  display: flex;
  justify-content: flex-end;
  user-select: none;
  /* overflow: hidden; is not possible because of clock bars and shadows */
}

@media (max-width: 799px) and (orientation: portrait) {
  .rclock {
    /* that weird shit is required so the clock goes above the player since they share the same grid cell */
    justify-self: flex-end;
    z-index: 1;
  }
}

@media (min-width: 800px), (orientation: landscape) {
  .rclock {
    justify-content: space-between;
  }
  .rclock-bottom {
    /* over the table shadow */
    z-index: 0;
  }
}

.rclock-turn {
  align-self: center;
  line-height: 50px;
}

@media (max-width: 799px) and (orientation: portrait) {
  .rclock-turn__text {
    background: white;
    padding: 0 2vmin;
    font-weight: bold;
    white-space: nowrap;
  }
}

@media (min-width: 800px), (orientation: landscape) {
  .rclock-turn {
    height: 2.2em;
    line-height: 2.2em;
  }
}

.rclock .bar {
  display: none;
}

.rclock .bar.berserk {
  background: #cc3333;
}

@media (min-width: 800px), (orientation: landscape) {
  .rclock .bar {
    display: block;
    position: absolute;
    width: 100%;
    height: 4px;
    background: #629924;
    transform-origin: left;
  }
  .with-expiration .rclock .bar {
    display: none;
  }
  .rclock-top .bar {
    bottom: -4px;
  }
  .rclock-bottom .bar {
    top: -4px;
  }
}

.rclock .time {
  background: white;
  min-width: 3em;
  font-size: 2.8em;
  line-height: 50px;
  font-weight: bold;
  padding: 0 2vmin;
  white-space: nowrap;
  /* ensure updates don't redraw other parts of the document */
  will-change: transform;
  z-index: -1;
  display: flex;
}

.rclock .time.hour {
  font-size: 2.3em;
}

@media (max-width: 799px) and (orientation: portrait) {
  .rclock .time {
    border-radius: 0;
    box-shadow: none;
  }
}

@media (min-width: 800px), (orientation: landscape) {
  .rclock .time {
    align-items: flex-end;
    line-height: 1.2em;
  }
}

@media (min-width: 500px) and (min-height: 600px) {
  .rclock .time {
    font-size: 3.5em;
    letter-spacing: .12em;
  }
  .rclock .time.hour {
    font-size: 2.9em;
    letter-spacing: .1em;
  }
}

.rclock-correspondence .time {
  font-size: 1.6em;
  letter-spacing: inherit;
}

@media (min-width: 800px), (orientation: landscape) {
  .rclock-correspondence .time {
    line-height: 1.5em;
  }
}

@media (min-width: 500px) {
  .rclock-correspondence .time {
    font-size: 1.9em;
  }
}

.rclock tenths {
  font-size: 70%;
  margin-bottom: -.18em;
}

.rclock huns {
  font-size: 80%;
}

@media (max-width: 799px) and (orientation: portrait) {
  .rclock huns {
    display: none;
    /* since clock is right-aligned, huns shift it left on every move */
  }
}

.rclock sep {
  opacity: 0.5;
  font-size: .8em;
}

.rclock sep.low {
  opacity: 0.15;
}

.rclock.running .time {
  background: #d0e0bd;
  color: black;
}

.rclock.emerg .time,
.rclock.outoftime .time {
  background-color: #f2cccc;
}

.rclock.emerg.running .time {
  background-color: #e69999;
  color: black;
}

.rclock .go-berserk {
  font-size: 2.2em;
  padding: 0 .3em;
}

.rclock .go-berserk:hover {
  color: #bd111f !important;
  background: none !important;
}

.rclock .tour-rank,
.rclock .moretime,
.rclock .berserked {
  display: none;
}

@media (min-width: 500px) {
  .rclock .tour-rank,
  .rclock .moretime,
  .rclock .berserked {
    order: -1;
    display: flex;
    flex: 0 1 auto;
    font-size: 1.7em;
    padding: 0 .3em;
  }
}

@media (min-width: 800px), (orientation: landscape) {
  .rclock .tour-rank,
  .rclock .moretime,
  .rclock .berserked {
    order: inherit;
  }
}

.rclock .tour-rank {
  opacity: .65;
}

.rclock .moretime {
  opacity: 0.4;
}

.rclock .moretime:hover {
  opacity: 1;
}

.rclock .berserked {
  font-size: 2.2em;
  color: #bd111f;
}

.material {
  align-self: center;
  display: none;
  height: 40px;
}

@media (min-width: 800px), (orientation: landscape) {
  .material {
    display: flex;
    align-items: center;
    line-height: 0;
    white-space: nowrap;
  }
  .material div {
    display: inline-block;
    margin-left: 10px;
  }
  .material mpiece {
    margin-left: -10px;
    width: 32px;
    height: 32px;
    background-size: cover;
    display: inline-block;
  }
  .material mpiece.pawn {
    background-image: url(../piece/mono/P.svg);
  }
  .material mpiece.bishop {
    background-image: url(../piece/mono/B.svg);
  }
  .material mpiece.knight {
    background-image: url(../piece/mono/N.svg);
  }
  .material mpiece.rook {
    background-image: url(../piece/mono/R.svg);
  }
  .material mpiece.queen {
    background-image: url(../piece/mono/Q.svg);
  }
  .material mpiece.king {
    background-image: url(../piece/mono/K.svg);
  }
  .material score {
    font-family: 'Roboto';
    line-height: 32px;
    vertical-align: top;
  }
}

rm6 {
  /* context: .rmoves */
  /* context: rm6 */
}

rm6 .buttons {
  flex: 0 0 auto;
  display: flex;
  justify-content: stretch;
  background: #f7f6f5;
  font-size: .9em;
  order: 2;
}

@media (min-width: 800px), (orientation: landscape) {
  rm6 .buttons {
    order: 0;
  }
}

rm6 .fbt, rm6 .noop {
  padding: 5px 0;
  flex: 0 0 calc(100% / 6);
  text-align: center;
}

rm6 x2n,
rm6 .message {
  flex: 0 0 7.4rem;
}

@media (max-width: 799px) and (orientation: portrait) {
  rm6 {
    overflow: hidden;
  }
  rm6 .col1-moves {
    flex: 0 0 2.5em;
    display: flex;
  }
  rm6 .col1-moves .fbt {
    flex: 0 0 auto;
    padding: 0 1.3em;
    opacity: .7;
  }
  body.playing.zen rm6 .col1-moves {
    display: none;
  }
  rm6 x2n {
    flex: 1 1 100%;
    display: flex;
    align-items: stretch;
    white-space: nowrap;
    overflow-x: scroll;
    color: #5e5e5e;
    box-shadow: 0 4px 4px #c7c7c7 inset;
  }
  rm6 x2n::-webkit-scrollbar {
    height: 0px;
  }
  rm6 x2n > :first-child {
    margin-left: auto !important;
  }
  rm6 i5z,
  rm6 u8t,
  rm6 .result-wrap {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0 .3rem;
  }
  rm6 i5z {
    padding-right: .15em;
  }
  rm6 u8t {
    font-size: 1.1em;
    cursor: pointer;
  }
  rm6 u8t.a1t, rm6 u8t:hover {
    background: #e0dbd1;
  }
  rm6 u8t.a1t {
    color: black;
  }
  rm6 .buttons {
    display: none;
  }
  rm6 .result {
    margin: 0;
    font-weight: bold;
    font-size: 1.1em;
  }
  rm6 .message {
    flex: 0 0 2.5em;
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1.2;
  }
  rm6 .message br {
    display: none;
  }
  rm6 .message strong {
    margin-left: .5em;
  }
  rm6 .message::before {
    margin-right: .3em;
  }
  body.playing.zen rm6 .message {
    display: none;
  }
  rm6 .status {
    display: none;
  }
}

@media (min-width: 800px), (orientation: landscape) {
  rm6 {
    background: white;
  }
  rm6 x2n {
    display: flex;
    flex-flow: row wrap;
    align-items: center;
    position: relative;
    /* required by autoScroll */
    overflow-y: auto;
    align-content: flex-start;
    will-change: scroll-position;
    user-select: none;
    line-height: 1.7;
    font-size: 1.1em;
  }
  rm6 x2n::-webkit-scrollbar {
    width: 0px;
  }
  rm6 i5z {
    /* Edge 18: flex: 0 0 calc(100% / 6); causes wrap */
    flex: 0 0 16.666%;
    display: flex;
    justify-content: center;
    align-items: flex-end;
    background: #f7f6f5;
  }
  rm6 u8t {
    /* Edge 18: flex: 0 0 calc(100% * 5 / 12); causes wrap */
    flex: 0 0 41.666%;
    padding-left: .7em;
    cursor: pointer;
  }
  rm6 u8t:hover {
    background: #bd111f;
    color: #fff;
  }
  rm6 u8t.a1t {
    font-weight: bold;
    background: #f2cfd2;
    color: #1f1f1f;
  }
  rm6 .message {
    display: flex;
    align-items: center;
    margin: 1em;
  }
  rm6 .message::before {
    color: #787878;
    font-size: 3em;
    margin-right: 12px;
  }
  rm6 .result-wrap {
    width: 100%;
    text-align: center;
  }
  rm6 .result {
    border-top: 1px solid #d9d9d9;
    font-weight: bold;
    font-size: 1.2em;
    padding: 5px 0 3px 0;
    margin: 0;
  }
  rm6 .status {
    font-style: italic;
    margin-bottom: .5em;
  }
}

.rcontrols {
  text-align: center;
  width: 100%;
}

.rcontrols-preload {
  height: 6em;
}

.rcontrols p {
  margin: 0;
}

.rcontrols .disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.rcontrols .ddloader {
  margin: 20px auto 10px auto;
}

.rcontrols .suggestion,
.rcontrols .pending,
.rcontrols .negotiation {
  padding: .5em 3%;
  background: #f7f6f5;
  border: 1px solid #d9d9d9;
  border-width: 0 1px;
}

.rcontrols .suggestion {
  justify-content: space-around;
}

.rcontrols .suggestion p {
  width: 100%;
}

.rcontrols .suggestion .button {
  margin: .5em 0 0 0;
}

.rcontrols .pending p {
  flex: 3 1;
  margin-right: 7px;
}

.rcontrols .pending .button {
  flex: 1 1;
}

.rcontrols .negotiation {
  background: #bd111f;
  color: #fff;
  padding: 1px;
}

.rcontrols .negotiation p {
  flex: 1 1 auto;
}

.rcontrols .negotiation a {
  flex: 0 0 3rem;
  font-size: 1.5em;
  line-height: 3em;
  background: white;
}

.rcontrols .negotiation .accept {
  color: #629924;
  margin-right: 1px;
}

.rcontrols .negotiation .decline {
  color: #cc3333;
}

.rcontrols .negotiation a:hover {
  color: #fff;
  background: #629924;
}

.rcontrols .negotiation a.decline:hover {
  background: #cc3333;
}

@media (max-width: 799px) and (orientation: portrait) {
  .rcontrols .negotiation {
    padding: 3px;
  }
  .rcontrols .negotiation a {
    line-height: 1.6em;
    flex: 0 0 2.5rem;
    padding: 0 1.2em;
  }
}

.rcontrols .glowing:hover {
  animation: none;
}

.rcontrols .follow-up {
  border-bottom: 1px solid #d9d9d9;
  position: relative;
  /* for rematch-decline */
}

.rcontrols .follow-up .fbt {
  padding: 12px 0;
  margin: 1px 1px 0 1px;
}

.rcontrols .follow-up > .fbt:first-child {
  margin-top: 0;
}

.rcontrols .follow-up .fbt.strong {
  padding: 2em 0;
  font-size: 1.2em;
}

.rcontrols .follow-up .weak {
  font-weight: normal;
  padding: 6px 0;
}

.rcontrols .follow-up .weak::before {
  opacity: 0.7;
}

.rcontrols .follow-up form .fbt {
  width: 100%;
}

.rcontrols .follow-up .spinner {
  width: 40px;
  height: 40px;
}

@media (max-width: 799px) and (orientation: portrait) {
  .rcontrols .follow-up {
    margin-top: 2vmin;
  }
}

.rcontrols .analysis {
  display: none;
}

@media (max-width: 799px) and (orientation: portrait) {
  .rcontrols .analysis {
    display: block;
    margin-left: 2em;
  }
}

.rcontrols .draw p {
  order: 2;
}

.rcontrols .draw a {
  order: 1;
}

.rcontrols .rematch.fbt {
  font-size: 1.2em;
  height: 6rem;
  transition: all 150ms;
}

.rcontrols .rematch.me {
  background: #ca414c;
}

@keyframes rubber-band {
  from {
    transform: scale3d(1, 1, 1);
  }
  6% {
    transform: scale3d(1.25, 0.75, 1);
  }
  8% {
    transform: scale3d(0.75, 1.25, 1);
  }
  10% {
    transform: scale3d(1.15, 0.85, 1);
  }
  13% {
    transform: scale3d(0.95, 1.05, 1);
  }
  15% {
    transform: scale3d(1.05, 0.95, 1);
  }
  20% {
    transform: scale3d(1, 1, 1);
  }
}

.rcontrols .rematch.glowing span {
  display: block;
  animation: rubber-band 5s infinite;
}

.rcontrols .rematch.fbt:not(.disabled):hover {
  background: #d15862;
  color: #fff;
  animation: none;
}

.rcontrols .rematch-decline {
  background: #f7f6f5;
  justify-content: center;
  position: absolute;
  top: 0;
  right: -25px;
  width: 25px;
  height: 6rem;
  border: 0;
  opacity: 0.7;
  background: #e69999;
  transition: all 150ms;
  display: none;
}

@media (min-width: 800px), (orientation: landscape) {
  .rcontrols .rematch-decline {
    display: block;
  }
}

.rcontrols .rematch-decline:hover {
  background: #cc3333;
  color: #fff;
  right: -36px;
  width: 35px;
}

.ricons {
  display: flex;
  justify-content: center;
  margin-top: 10px;
}

.ricons .fbt {
  font-size: 1.4em;
  padding: .1em 1em;
}

.ricons.confirm > button {
  visibility: hidden;
}

.ricons .act-confirm {
  visibility: visible;
  position: relative;
  width: 60px;
}

.ricons .act-confirm .fbt.no {
  padding: .1em 0;
  width: 30px;
  text-align: center;
  position: absolute;
  top: 0;
  right: -34px;
}

.ricons .act-confirm .fbt.yes {
  position: absolute;
  right: 0;
  top: -3px;
  border-radius: 8px;
  color: #fff;
  text-decoration: none;
  background: #bd111f;
  border-bottom: 5px solid #840c16;
  text-shadow: 0 -1px #840c16;
  transition: all 150ms;
  transform: translate(0px, 0px);
}

.ricons .act-confirm .fbt.yes:hover {
  filter: brightness(1.07);
}

.ricons .act-confirm .fbt.yes:active {
  transform: translate(0px, 5px);
  border-bottom-width: 1px;
  text-shadow: 0 0 #840c16;
  filter: brightness(1);
}

.round__now-playing h3 {
  margin: 1em 0 .5em 0;
}

@media (max-width: 799px) and (orientation: portrait) {
  .round__now-playing h3 {
    margin: 1em 2vmin 0.5em 2vmin;
  }
}

.round__now-playing .simul span {
  font-weight: bold;
  margin: 0 .5em;
}

.round__now-playing .simul .win {
  color: #629924;
}

.round__now-playing .simul .draw {
  color: #d59020;
}

.round__now-playing .simul .loss {
  color: #cc3333;
}

.round__now-playing .switcher label {
  cursor: pointer;
}

.round__now-playing .switcher .switch {
  margin-left: 10px;
}

.keyboard-move input {
  width: 4.5em;
  font-size: 1.1em;
  font-weight: bold;
  margin-right: 1rem;
  border: 1px solid #d9d9d9;
  transition: all 150ms;
}

.keyboard-move input.wrong {
  background: #cc3333;
  color: #fff;
}

.keyboard-move em {
  color: #787878;
}

#powerTip .forecast-info .title {
  display: block;
  padding: .7em;
  border-bottom: 1px solid #d9d9d9;
  text-align: center;
}

#powerTip .forecast-info .content {
  display: block;
  padding: 1em;
}

.pocket {
  display: flex;
  width: 62.5%;
}

@media (min-width: 800px), (orientation: landscape) {
  .pocket {
    width: 100%;
    box-shadow: 0 3px 5px rgba(0, 0, 0, 0.3) inset;
    background: #888;
  }
}

.pocket-c1 {
  flex: 0 0 20%;
  max-width: 10vmin;
}

.pocket piece {
  display: block;
  width: 100% !important;
  height: 100% !important;
  transition: all 150ms;
}

.pocket piece::after {
  content: attr(data-nb);
  bottom: 0;
  right: 0;
  position: absolute;
  line-height: .9em;
  padding: 3px .3em;
  font-weight: bold;
  font-size: 1.1em;
}

.pocket piece[data-nb='0'] {
  cursor: auto;
  opacity: 0.1;
}

.pocket piece[data-nb='0']::after {
  content: none;
}

.pocket piece.premove {
  background-color: #555;
}

.pocket.usable piece {
  cursor: pointer;
  pointer-events: auto;
}

.pocket.usable piece:hover {
  background-color: #aaa;
}

.blindfold .pocket:not(.usable) {
  opacity: 0;
}

.pocket-top {
  grid-area: mat-top;
  margin-bottom: -.5em;
}

.pocket-bottom {
  grid-area: mat-bot;
  margin-top: -.5em;
}

@media (min-width: 800px), (orientation: landscape) {
  .pocket-top {
    margin-bottom: 2vmin;
  }
  .pocket-bottom {
    margin-top: 2vmin;
  }
}

@media (min-width: 800px) and (min-height: 500px), (orientation: landscape) and (min-height: 500px) {
  x2n {
    display: none;
  }
}

@media (min-width: 800px) and (min-height: 600px), (orientation: landscape) and (min-height: 600px) {
  x2n {
    display: flex;
  }
}

@media (max-width: 799px) and (orientation: portrait) {
  .ricons {
    justify-content: flex-end;
  }
}

.rcontrols .follow-up .button {
  padding: 9px 0;
}

.rcontrols .rematch.button {
  height: 50px;
}

.rcontrols .rematch-decline {
  height: 49px;
}

body.cursor-white-pawn * {
  cursor: url(../piece/cburnett/wP.svg) 22 22, auto !important;
}

body.cursor-white-knight * {
  cursor: url(../piece/cburnett/wN.svg) 22 22, auto !important;
}

body.cursor-white-bishop * {
  cursor: url(../piece/cburnett/wB.svg) 22 22, auto !important;
}

body.cursor-white-rook * {
  cursor: url(../piece/cburnett/wR.svg) 22 22, auto !important;
}

body.cursor-white-queen * {
  cursor: url(../piece/cburnett/wQ.svg) 22 22, auto !important;
}

body.cursor-black-pawn * {
  cursor: url(../piece/cburnett/bP.svg) 22 22, auto !important;
}

body.cursor-black-knight * {
  cursor: url(../piece/cburnett/bN.svg) 22 22, auto !important;
}

body.cursor-black-bishop * {
  cursor: url(../piece/cburnett/bB.svg) 22 22, auto !important;
}

body.cursor-black-rook * {
  cursor: url(../piece/cburnett/bR.svg) 22 22, auto !important;
}

body.cursor-black-queen * {
  cursor: url(../piece/cburnett/bQ.svg) 22 22, auto !important;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91bmQvY3NzL2J1aWxkL3JvdW5kLnpoLmxpZ2h0LmNzcyIsInNvdXJjZXMiOlsicm91bmQvY3NzL2J1aWxkL3JvdW5kLnpoLmxpZ2h0LnNjc3MiLCJjb21tb24vY3NzL3RoZW1lL19saWdodC5zY3NzIiwiY29tbW9uL2Nzcy90aGVtZS9fZGVmYXVsdC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fZnVuY3Rpb25zLnNjc3MiLCJyb3VuZC9jc3MvYnVpbGQvX3JvdW5kLnpoLnNjc3MiLCJyb3VuZC9jc3MvYnVpbGQvX3JvdW5kLnNjc3MiLCJjb21tb24vY3NzL19wbHVnaW4uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvX2JyZWFrcG9pbnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fY29udGV4dC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19oZWxwZXJzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3BhcnNlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19xdWVyeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3NpbmdsZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvc2luZ2xlL19kZWZhdWx0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fZG91YmxlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQtcGFpci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kb3VibGUtc3RyaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL190cmlwbGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3RyaXBsZS9fZGVmYXVsdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3Jlc29sdXRpb24vX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbm8tcXVlcnkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fcmVzcG9uZC10by5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19sZWdhY3ktc2V0dGluZ3Muc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2FsbC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fei1pbmRleC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWVkaWEtcXVlcmllcy5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fdmFyaWFibGVzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L191bmlib2FyZC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWl4aW5zLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19leHRlbmRzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19mbGV4LnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19ib3guc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2ZsdWlkLXNpemUuc2NzcyIsImNvbW1vbi9jc3MvdmVuZG9yL2NoZXNzZ3JvdW5kL19jb29yZHMuc2NzcyIsImNvbW1vbi9jc3MvdmVuZG9yL2NoZXNzZ3JvdW5kL19jb29yZHMtY29sb3JzLnNjc3MiLCJjb21tb24vY3NzL2xheW91dC9fdW5pYm9hcmQuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19ib2FyZC1yZXNpemUuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19jb2xvci1pY29uLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fY3Jvc3N0YWJsZS5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2ZidC5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2dsb3dpbmcuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19iYXItZ2xpZGVyLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fbm93LXBsYXlpbmcuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19jb250ZXh0LXN0cmVhbWVyLnNjc3MiLCJjb21tb24vY3NzL2Zvcm0vX2Ntbi10b2dnbGUuc2NzcyIsImNoZXNzL2Nzcy9fdmFyaWFudC1zdHlsZS5zY3NzIiwiY2hlc3MvY3NzL19wcm9tb3Rpb24uc2NzcyIsImNoZXNzL2Nzcy9fYmxpbmRmb2xkLnNjc3MiLCJjaGF0L2Nzcy9fY2hhdC5zY3NzIiwiY29tbW9uL2Nzcy9iYXNlL19zY3JvbGxiYXIuc2NzcyIsImNoYXQvY3NzL190YWIuc2NzcyIsImNoYXQvY3NzL19tZW1iZXJzLnNjc3MiLCJjaGF0L2Nzcy9fZGlzY3Vzc2lvbi5zY3NzIiwiY2hhdC9jc3MvX3BhbGFudGlyLnNjc3MiLCJjaGF0L2Nzcy9fcHJlc2V0LnNjc3MiLCJyb3VuZC9jc3MvX3JvdW5kLnNjc3MiLCJyb3VuZC9jc3MvX2NvbnN0YW50cy5zY3NzIiwicm91bmQvY3NzL19sYXlvdXQuc2NzcyIsInJvdW5kL2Nzcy9fYXBwLWxheW91dC5zY3NzIiwicm91bmQvY3NzL196ZW4uc2NzcyIsInJvdW5kL2Nzcy9fc2lkZS5zY3NzIiwicm91bmQvY3NzL19tZXRhLnNjc3MiLCJyb3VuZC9jc3MvX3RhYmxlLnNjc3MiLCJyb3VuZC9jc3MvX3VzZXIuc2NzcyIsInJvdW5kL2Nzcy9fY2xvY2suc2NzcyIsInJvdW5kL2Nzcy9fbWF0ZXJpYWwuc2NzcyIsInJvdW5kL2Nzcy9fbW92ZXMuc2NzcyIsInJvdW5kL2Nzcy9fbW92ZXMtY29sMS5zY3NzIiwicm91bmQvY3NzL19tb3Zlcy1jb2wyLnNjc3MiLCJyb3VuZC9jc3MvX2NvbnRyb2wuc2NzcyIsInJvdW5kL2Nzcy9faWNvbi5zY3NzIiwicm91bmQvY3NzL19ub3ctcGxheWluZy5zY3NzIiwicm91bmQvY3NzL19rZXlib2FyZC1tb3ZlLnNjc3MiLCJyb3VuZC9jc3MvX2ZvcmVjYXN0LWluZm8uc2NzcyIsImNoZXNzL2Nzcy9femgtcG9ja2V0LnNjc3MiLCJyb3VuZC9jc3MvX3poLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvdGhlbWUvbGlnaHRcIjtcbkBpbXBvcnQgXCJyb3VuZC56aFwiO1xuIiwiQGltcG9ydCBcImRlZmF1bHRcIjtcblxuJHRoZW1lOiBcImxpZ2h0XCI7XG4kdGhlbWUtbGlnaHQ6IHRydWU7XG4kdGhlbWUtZGFyazogZmFsc2U7XG5cbiRjLWJnLXBhZ2U6IGhzbCgwLCAwJSwgMTAwJSk7XG4kYy1iZy1wYWdlLWltZzogdXJsKC4uL2ltYWdlcy9tb3Njb3ctY2hlc3NfcGF0dGVybl9saWdodF9hbmdsZWQtMDEucG5nKTtcbiRjLWJnLXBhZ2UtYnM6IDEwJTtcblxuQG1peGluIG1ldGFsLWJnIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKDAsIDAsIDk2KSAwJSwgaHNsKDAsIDAsIDkzKSAxMDAlKTtcbn1cblxuQG1peGluIG1ldGFsIHtcbiAgQGluY2x1ZGUgbWV0YWwtYmc7XG5cbiAgdGV4dC1zaGFkb3c6ICR0ZXh0LXNoYWRvdztcbn1cblxuQG1peGluIG1ldGFsLWhvdmVyIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKDAsIDAsIDk4KSAwJSwgaHNsKDAsIDAsIDk1KSAxMDAlKTtcbiAgdGV4dC1zaGFkb3c6ICR0ZXh0LXNoYWRvdztcbn1cblxuQG1peGluIHBhZ2UtbWV0YWwge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBtaXgoJGMtbGluaywgaHNsKDAsIDAlLCAxMDAlKSwgMjAlKSAwJSwgbWl4KCRjLWxpbmssIGhzbCgwLCAwJSwgOTQlKSwgMjAlKSAxMDAlKTtcbiAgdGV4dC1zaGFkb3c6ICR0ZXh0LXNoYWRvdztcbn1cblxuQG1peGluIHBhZ2UtbWV0YWwtaG92ZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBtaXgoJGMtbGluaywgI2ZmZiwgMjUlKSAwJSwgbWl4KCRjLWxpbmssIGMtbGlnaHQoJGMtYmctcGFnZSwgOTAlKSwgMjUlKSAxMDAlKTtcbiAgdGV4dC1zaGFkb3c6ICR0ZXh0LXNoYWRvdztcbn1cblxuQG1peGluIHRoZW1lLXN0eWxlIHt9XG4iLCJAaW1wb3J0IFwiLi4vYWJzdHJhY3QvZnVuY3Rpb25zXCI7XG5cbi8qIENvbG9ycyAqL1xuXG5AZnVuY3Rpb24gYy1kaW1tZXIoJGNvbG9yLCAkd2VpZ2h0OiAxNyUpIHtcbiAgQHJldHVybiBtaXgoI2ZmZiwgJGNvbG9yLCAkd2VpZ2h0KTtcbn1cblxuQGZ1bmN0aW9uIGMtY2xlYXJlcigkY29sb3IsICR3ZWlnaHQ6IDE3JSkge1xuICBAcmV0dXJuIG1peCgjMDAwLCAkY29sb3IsICR3ZWlnaHQpO1xufVxuXG4kYy1zaXRlLWh1ZTogMzc7XG5cbiRjLWJnLXBhZ2U6IGhzbCgkYy1zaXRlLWh1ZSwgMTAlLCA5MiUpO1xuXG4kYy1iZy1wYWdlLWltZzogbm9uZTtcbiRjLWJnLXBhZ2UtYnM6IGF1dG87XG5cbi8vIGhzbCgyMTAsIDE3JSwgOTUlKVxuJGMtYmctaGlnaDogaHNsKDAsIDAlLCAxMDAlKTtcbiRjLWJnLWxvdzogaHNsKDAsIDAlLCA4OSUpO1xuXG4vKiBldmVuIHJvd3MgaW4gbGlzdCBvciB0YWJsZXMsIHN1YnRsZSBzaGFkZSBvZiAkYy1iZy1oaWdoICovXG4kYy1iZy16ZWJyYTogaHNsKCRjLXNpdGUtaHVlLCAxMiUsIDk2LjUlKTtcbiRjLWJnLXplYnJhMjogaHNsKCRjLXNpdGUtaHVlLCAxMiUsIDkyJSk7XG5cbiRjLWJvZHktZ3JhZGllbnQ6IGhzbCgkYy1zaXRlLWh1ZSwgMTIlLCA4NCUpO1xuXG4kYy1mb250OiBoc2woMCwgMCUsIDMwJSk7XG4kYy1mb250LWRpbTogYy1saWdodCgkYy1mb250LCA0NyUpO1xuJGMtZm9udC1kaW1tZXI6IGMtbGlnaHQoJGMtZm9udCwgNzAlKTtcbiRjLWZvbnQtY2xlYXI6IGMtbGlnaHQoJGMtZm9udCwgMTIlKTtcbiRjLWZvbnQtY2xlYXJlcjogYy1saWdodCgkYy1mb250LCAwJSk7XG4kYy1zaGFkZTogYy1kaW1tZXIoJGMtZm9udCwgODAlKTtcbiRjLWZvbnQtcGFnZTogYy1saWdodCgkYy1mb250LCAzNyUpO1xuXG4vKiBQcmltYXJ5OiBibHVlICovXG4kYy1wcmltYXJ5OiAjYmQxMTFmO1xuJGMtcHJpbWFyeS1kaW06IGMtZGltbWVyKCRjLXByaW1hcnkpO1xuJGMtcHJpbWFyeS1jbGVhcjogYy1jbGVhcmVyKCRjLXByaW1hcnkpO1xuJGMtcHJpbWFyeS1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgcHJpbWFyeSBiYWNrZ3JvdW5kICovXG5cbi8qIFNlY29uZGFyeTogZ3JlZW4gKi9cbiRjLXNlY29uZGFyeTogaHNsKDg4LCA2MiUsIDM3JSk7XG4kYy1zZWNvbmRhcnktZGltOiBjLWRpbW1lcigkYy1zZWNvbmRhcnkpO1xuJGMtc2Vjb25kYXJ5LWRpbW1lcjogYy1kaW1tZXIoJGMtc2Vjb25kYXJ5LCA0MCUpO1xuJGMtc2Vjb25kYXJ5LW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBzZWNvbmRhcnkgYmFja2dyb3VuZCAqL1xuXG4vKiBBY2NlbnQ6IG9yYW5nZSAqL1xuJGMtYWNjZW50OiAjYmQxMTFmO1xuJGMtYWNjZW50LWRpbTogYy1kaW1tZXIoJGMtYWNjZW50KTtcbiRjLWFjY2VudC1jbGVhcjogYy1jbGVhcmVyKCRjLWFjY2VudCk7XG4kYy1hY2NlbnQtb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIGFjY2VudCBiYWNrZ3JvdW5kICovXG5cbi8qIEJyYWc6IGdvbGQgKi9cbiRjLWJyYWc6IGhzbCgzNywgNzQlLCA0OCUpO1xuJGMtYnJhZy1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgYnJhZyBiYWNrZ3JvdW5kICovXG5cbi8qIEVycm9yOiByZWQgKi9cbiRjLXJlZDogaHNsKDAsIDYwJSwgNTAlKTtcbiRjLWVycm9yOiAkYy1yZWQ7XG4kYy1lcnJvci1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgYnJhZyBiYWNrZ3JvdW5kICovXG5cbi8qIEdvb2Q6IGdyZWVuICovXG4kYy1nb29kOiAkYy1zZWNvbmRhcnk7XG4kYy1nb29kLW92ZXI6ICRjLXNlY29uZGFyeS1vdmVyO1xuXG4vKiBXYXJuOiBvcmFuZ2UgKi9cbiRjLXdhcm46ICRjLWJyYWc7XG4kYy13YXJuLW92ZXI6ICRjLWJyYWctb3ZlcjtcblxuLyogQmFkOiByZWQgKi9cbiRjLWJhZDogJGMtZXJyb3I7XG4kYy1iYWQtb3ZlcjogJGMtZXJyb3Itb3ZlcjtcblxuLyogRmFuY3k6IHBpbmsgKi9cbiRjLWZhbmN5OiBoc2woMjk0LCA2MSUsIDYyJSk7XG4kYy1mYW5jeS1vdmVyOiB3aGl0ZTtcblxuLyogdGV4dCBvdmVyIGJyYWcgYmFja2dyb3VuZCAqL1xuXG4kYy1saW5rOiAkYy1wcmltYXJ5O1xuJGMtbGluay1kaW06ICRjLXByaW1hcnktZGltO1xuJGMtbGluay1jbGVhcjogJGMtcHJpbWFyeS1jbGVhcjtcbiRjLWxpbmstaG92ZXI6IGMtY2xlYXJlcihzYXR1cmF0ZSgkYy1wcmltYXJ5LCAxMDAlKSwgMzUlKTtcbiRjLWxpbmstb3ZlcjogJGMtcHJpbWFyeS1vdmVyO1xuXG4kYy1iZy1ib3g6ICRjLWJnLWhpZ2g7XG4kYy1iZy1ib3gtb3BhcXVlOiAkYy1iZy1ib3g7XG4kYy1iZy1pbnB1dDogYy1saWdodCgkYy1iZy1wYWdlLCA5OCUpO1xuXG4kYy1ib3JkZXI6IGhzbCgwLCAwJSwgODUlKTtcbiRjLWJvcmRlci1wYWdlOiBoc2woMCwgMCUsIDgwJSk7XG5cbiRjLXBhZ2UtbWFzazogaHNsYSgwLCAwLCAwJSwgMC42KTtcblxuJGMtYmctcG9wdXA6ICRjLWJnLWhpZ2g7XG4kYy1wb3B1cDogJGMtZm9udDtcblxuJGMtYmctaGVhZGVyLWRyb3Bkb3duOiAkYy1iZy1wb3B1cDtcbiRjLWhlYWRlci1kcm9wZG93bjogJGMtcG9wdXA7XG5cbiRjLWZvbnQtc2hhZG93OiB3aGl0ZTtcbiR0ZXh0LXNoYWRvdzogMCAxcHggMCAkYy1mb250LXNoYWRvdztcblxuJGMtYm90OiAkYy1mYW5jeTtcblxuJGMtcGFnZS1pbnB1dDogJGMtYmctbG93O1xuXG4vKiBCb3JkZXJzICovXG5cbiRib3JkZXItd2lkdGg6IDFweDtcbiRib3JkZXItc3R5bGU6IHNvbGlkO1xuJGJvcmRlcjogJGJvcmRlci13aWR0aCAkYm9yZGVyLXN0eWxlICRjLWJvcmRlcjtcblxuLyogU2hhZG93cyAqL1xuXG4kYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuXG4vLyAkYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLDAsMCwuMTU3KTtcblxuLyogQ3VzdG9tICovXG4kd2FybmluZy1pY29uLWNvbG9yOiBoc2woNDQsIDEwMCUsIDQ2JSk7XG4iLCJAZnVuY3Rpb24gYy1saWdodCgkY29sb3IsICR2YWx1ZSkge1xuICBAcmV0dXJuIGNoYW5nZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICR2YWx1ZSk7XG59XG5cbkBmdW5jdGlvbiBpbWctdXJsKCRwYXRoKSB7XG4gIEByZXR1cm4gdXJsKFwiI3skaW1nLXBhdGh9LyN7JHBhdGh9XCIpO1xufVxuIiwiQGltcG9ydCBcInJvdW5kXCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vY2hlc3MvY3NzL3poLXBvY2tldFwiO1xuQGltcG9ydCBcIi4uL3poXCI7XG4iLCJAaW1wb3J0IFwiLi4vLi4vLi4vY29tbW9uL2Nzcy9wbHVnaW5cIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL3ZlbmRvci9jaGVzc2dyb3VuZC9jb29yZHNcIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL2xheW91dC91bmlib2FyZFwiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2JvYXJkLXJlc2l6ZVwiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2NvbG9yLWljb25cIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9jcm9zc3RhYmxlXCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvZmJ0XCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvZ2xvd2luZ1wiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2Jhci1nbGlkZXJcIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9ub3ctcGxheWluZ1wiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2NvbnRleHQtc3RyZWFtZXJcIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL2Zvcm0vY21uLXRvZ2dsZVwiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NoZXNzL2Nzcy92YXJpYW50LXN0eWxlXCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vY2hlc3MvY3NzL3Byb21vdGlvblwiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NoZXNzL2Nzcy9ibGluZGZvbGRcIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jaGF0L2Nzcy9jaGF0XCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vY2hhdC9jc3MvcHJlc2V0XCI7XG5AaW1wb3J0IFwiLi4vcm91bmRcIjtcbiIsIi8qIENvbW1vbiBpbXBvcnRzIGZvciBhbGwgQ1NTIG1vZHVsZXMgKi9cblxuQGltcG9ydCBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludFwiO1xuXG5AaW1wb3J0IFwiYWJzdHJhY3QvYWxsXCI7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERlZmF1bHQgVmFyaWFibGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRCcmVha3BvaW50LVNldHRpbmdzOiAoXG4gICdkZWZhdWx0IG1lZGlhJzogYWxsLFxuICAnZGVmYXVsdCBmZWF0dXJlJzogbWluLXdpZHRoLFxuICAnZGVmYXVsdCBwYWlyJzogd2lkdGgsXG5cbiAgJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJzogZmFsc2UsXG4gICd0byBlbXMnOiBmYWxzZSxcbiAgJ3RyYW5zZm9ybSByZXNvbHV0aW9ucyc6IHRydWUsXG5cbiAgJ25vIHF1ZXJpZXMnOiBmYWxzZSxcbiAgJ25vIHF1ZXJ5IGZhbGxiYWNrcyc6IGZhbHNlLFxuXG4gICdiYXNlIGZvbnQgc2l6ZSc6IDE2cHgsXG5cbiAgJ2xlZ2FjeSBzeW50YXgnOiBmYWxzZVxuKTtcblxuJGJyZWFrcG9pbnQ6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcImJyZWFrcG9pbnQvc2V0dGluZ3NcIjtcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvY29udGV4dCc7XG5AaW1wb3J0ICdicmVha3BvaW50L2hlbHBlcnMnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9wYXJzZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvbm8tcXVlcnknO1xuXG5AaW1wb3J0ICdicmVha3BvaW50L3Jlc3BvbmQtdG8nO1xuXG5AaW1wb3J0IFwiYnJlYWtwb2ludC9sZWdhY3ktc2V0dGluZ3NcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQG1peGluIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGxlZ2FjeS1zZXR0aW5ncy13YXJuaW5nO1xuXG4gIC8vIFJlc2V0IGNvbnRleHRzXG4gIEBpbmNsdWRlIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cygpO1xuXG4gICRicmVha3BvaW50OiBicmVha3BvaW50KCRxdWVyeSwgZmFsc2UpO1xuXG4gICRxdWVyeS1zdHJpbmc6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdxdWVyeScpO1xuICAkcXVlcnktZmFsbGJhY2s6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdmYWxsYmFjaycpO1xuXG4gICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdjb250ZXh0IGhvbGRlcicpICFnbG9iYWw7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdxdWVyeSBjb3VudCcpICFnbG9iYWw7XG5cbiAgLy8gQWxsb3cgZm9yIGFuIGFzLW5lZWRlZCBvdmVycmlkZSBvciB1c2FnZSBvZiBubyBxdWVyeSBmYWxsYmFjay5cbiAgQGlmICRuby1xdWVyeSAhPSBmYWxzZSB7XG4gICAgJHF1ZXJ5LWZhbGxiYWNrOiAkbm8tcXVlcnk7XG4gIH1cblxuICBAaWYgJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlIHtcbiAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgnbm8tcXVlcnknLCAkcXVlcnktZmFsbGJhY2spO1xuICB9XG5cbiAgLy8gUHJpbnQgT3V0IFF1ZXJ5IFN0cmluZ1xuICBAaWYgbm90IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykge1xuICAgIEBtZWRpYSAjeyRxdWVyeS1zdHJpbmd9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykgIT0gZmFsc2Ugb3IgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSA9PSB0cnVlIHtcblxuICAgICR0eXBlOiB0eXBlLW9mKGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSk7XG4gICAgJHByaW50OiBmYWxzZTtcblxuICAgIEBpZiAoJHR5cGUgPT0gJ2Jvb2wnKSB7XG4gICAgICAkcHJpbnQ6IHRydWU7XG4gICAgfVxuICAgIEBlbHNlIGlmICgkdHlwZSA9PSAnc3RyaW5nJykge1xuICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayA9PSBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICgkdHlwZSA9PSAnbGlzdCcpIHtcbiAgICAgIEBlYWNoICR3cmFwcGVyIGluIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gJHdyYXBwZXIge1xuICAgICAgICAgICRwcmludDogdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFdyaXRlIEZhbGxiYWNrXG4gICAgQGlmICgkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2UpIGFuZCAoJHByaW50ID09IHRydWUpIHtcbiAgICAgICR0eXBlLWZhbGxiYWNrOiB0eXBlLW9mKCRxdWVyeS1mYWxsYmFjayk7XG5cbiAgICAgIEBpZiAoJHR5cGUtZmFsbGJhY2sgIT0gJ2Jvb2wnKSB7XG4gICAgICAgICN7JHF1ZXJ5LWZhbGxiYWNrfSAmIHtcbiAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcbn1cblxuXG5AbWl4aW4gbXEoJHF1ZXJ5LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIYXMgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1oYXMoJHNldHRpbmcpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50LCAkc2V0dGluZykge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdldCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1nZXQoJHNldHRpbmcpIHtcbiAgQGlmIGJyZWFrcG9pbnQtaGFzKCRzZXR0aW5nKSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRicmVha3BvaW50LCAkc2V0dGluZyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkQnJlYWtwb2ludC1TZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpZiAoc3RyLWluZGV4KCRzZXR0aW5nLCAnLScpIG9yIHN0ci1pbmRleCgkc2V0dGluZywgJ18nKSkgYW5kIHN0ci1pbmRleCgkc2V0dGluZywgJyAnKSA9PSBudWxsIHtcbiAgICBAd2FybiBcIldvcmRzIGluIEJyZWFrcG9pbnQgc2V0dGluZ3Mgc2hvdWxkIGJlIHNlcGFyYXRlZCBieSBzcGFjZXMsIG5vdCBkYXNoZXMgb3IgdW5kZXJzY29yZXMuIFBsZWFzZSByZXBsYWNlIGRhc2hlcyBhbmQgdW5kZXJzY29yZXMgYmV0d2VlbiB3b3JkcyB3aXRoIHNwYWNlcy4gU2V0dGluZ3Mgd2lsbCBub3Qgd29yayBhcyBleHBlY3RlZCB1bnRpbCBjaGFuZ2VkLlwiO1xuICB9XG4gICRicmVha3BvaW50OiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnQsICgkc2V0dGluZzogJHZhbHVlKSkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICAkYnJlYWtwb2ludC1jaGFuZ2U6IGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIGJrcHQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5AbWl4aW4gYmtwdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZW1vdmUgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgQGlmIGxlbmd0aCgkc2V0dGluZ3MpID09IDEge1xuICAgICRzZXR0aW5nczogbnRoKCRzZXR0aW5ncywgMSk7XG4gIH1cblxuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRicmVha3BvaW50OiBtYXAtcmVtb3ZlKCRicmVha3BvaW50LCAkc2V0dGluZykgIWdsb2JhbDtcbiAgfVxuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICAkYnJlYWtwb2ludC1yZXNldDogYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MpO1xufVxuXG5AbWl4aW4gYmtwdC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgJGJyZWFrcG9pbnQtcmVzZXQ6IGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzKTtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgQnJlYWtwb2ludCBWYXJpYWJsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCk7XG4kcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgSGFzIENvbnRleHRcbi8vIFJldHVybnMgd2hldGhlciBvciBub3QgeW91IGFyZSBpbnNpZGUgYSBCcmVha3BvaW50IHF1ZXJ5XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWhhcy1jb250ZXh0KCkge1xuICBAaWYgbGVuZ3RoKCRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEdldCBDb250ZXh0XG4vLyAkZmVhdHVyZTogSW5wdXQgZmVhdHVyZSB0byBnZXQgaXQncyBjdXJyZW50IE1RIGNvbnRleHQuIFJldHVybnMgZmFsc2UgaWYgbm8gY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1nZXQtY29udGV4dCgkZmVhdHVyZSkge1xuICBAaWYgbWFwLWhhcy1rZXkoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpIHtcbiAgICAkZ2V0OiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgICAvLyBTcGVjaWFsIGhhbmRsaW5nIG9mIG5vLXF1ZXJ5IGZyb20gZ2V0IHNpZGUgc28gL2ZhbHNlLyBwcmVwZW5kcyBhcmVuJ3QgcmV0dXJuZWRcbiAgICBAaWYgJGZlYXR1cmUgPT0gJ25vLXF1ZXJ5JyB7XG4gICAgICBAaWYgdHlwZS1vZigkZ2V0KSA9PSAnbGlzdCcgYW5kIGxlbmd0aCgkZ2V0KSA+IDEgYW5kIG50aCgkZ2V0LCAxKSA9PSBmYWxzZSB7XG4gICAgICAgICRnZXQ6IG50aCgkZ2V0LCBsZW5ndGgoJGdldCkpO1xuICAgICAgfVxuICAgIH1cbiAgICBAcmV0dXJuICRnZXQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBicmVha3BvaW50LWhhcy1jb250ZXh0KCkgYW5kICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgQHJldHVybiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgZnVuY3Rpb24gdG8gc2V0IGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKSB7XG4gIEBpZiAkdmFsdWUgPT0gJ21vbm9jaHJvbWUnIHtcbiAgICAkZmVhdHVyZTogJ21vbm9jaHJvbWUnO1xuICB9XG5cbiAgJGN1cnJlbnQ6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICBAaWYgJGN1cnJlbnQgYW5kIGxlbmd0aCgkY3VycmVudCkgPT0gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgQHdhcm4gXCJZb3UgaGF2ZSBhbHJlYWR5IHF1ZXJpZWQgYWdhaW5zdCBgI3skZmVhdHVyZX1gLiBVbmV4cGVjdGVkIHRoaW5ncyBtYXkgaGFwcGVuIGlmIHlvdSBxdWVyeSBhZ2FpbnN0IHRoZSBzYW1lIGZlYXR1cmUgbW9yZSB0aGFuIG9uY2UgaW4gdGhlIHNhbWUgYGFuZGAgcXVlcnkuIEJyZWFrcG9pbnQgaXMgb3ZlcndyaXRpbmcgdGhlIGN1cnJlbnQgY29udGV4dCB3aXRoIGAjeyR2YWx1ZX1gXCI7XG4gIH1cblxuICBAaWYgbm90IG1hcC1oYXMta2V5KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKSB7XG4gICAgJHYtaG9sZGVyOiAoKTtcbiAgICBAZm9yICRpIGZyb20gMSB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgJHZhbHVlKTtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmZWF0dXJlOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkdi1ob2xkZXI6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICAgICRsZW5ndGg6IGxlbmd0aCgkdi1ob2xkZXIpO1xuICAgIEBmb3IgJGkgZnJvbSAkbGVuZ3RoIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQgLSAxIHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgJHZhbHVlKTtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmZWF0dXJlOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG5cbiAgQHJldHVybiB0cnVlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgZnVuY3Rpb24gdG8gcmVzZXQgY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzIHtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29udmVydHMgdGhlIGlucHV0IHZhbHVlIHRvIEJhc2UgRU1zXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXRvLWJhc2UtZW0oJHZhbHVlKSB7XG4gICR2YWx1ZS11bml0OiB1bml0KCR2YWx1ZSk7XG5cbiAgLy8gV2lsbCBjb252ZXJ0IHJlbGF0aXZlIEVNcyBpbnRvIHJvb3QgRU1zLlxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykgYW5kIHR5cGUtb2YoYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpID09ICdudW1iZXInIGFuZCAkdmFsdWUtdW5pdCA9PSAnZW0nIHtcbiAgICAkYmFzZS11bml0OiB1bml0KGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKTtcblxuICAgIEBpZiAkYmFzZS11bml0ID09ICdweCcgb3IgJGJhc2UtdW5pdCA9PSAnJScgb3IgJGJhc2UtdW5pdCA9PSAnZW0nIG9yICRiYXNlLXVuaXQgPT0gJ3B0JyB7XG4gICAgICBAcmV0dXJuIGJhc2UtY29udmVyc2lvbigkdmFsdWUpIC8gYmFzZS1jb252ZXJzaW9uKGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKSAqIDFlbTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJyN7YnJlYWtwb2ludC1nZXQoXFwnYmFzZSBmb250IHNpemVcXCcpfSBpcyBub3Qgc2V0IGluIHZhbGlkIHVuaXRzIGZvciBmb250IHNpemUhJztcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGJhc2UtY29udmVyc2lvbigkdmFsdWUpO1xuICB9XG59XG5cbkBmdW5jdGlvbiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKSB7XG4gICR1bml0OiB1bml0KCR2YWx1ZSk7XG5cbiAgQGlmICR1bml0ID09ICdweCcge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTZweCAqIDFlbTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAnJScge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTAwJSAqIDFlbTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAnZW0nIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAncHQnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDEycHQgKiAxZW07XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuLy8gICAgQHdhcm4gJ0V2ZXJ5dGhpbmcgaXMgdGVycmlibGUhIFdoYXQgaGF2ZSB5b3UgZG9uZT8hJztcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gaGF2ZSBhIG1pbi9tYXggcGFpclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1taW4tbWF4LWZlYXR1cmVzOiAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yLWluZGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1hc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1oZWlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS13aWR0aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb25vY2hyb21lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXNvbHV0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aWR0aCc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbi1tYXgoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtbWluLW1heC1mZWF0dXJlcyB7XG4gICAgQGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIGhhdmUgYSBzdHJpbmcgdmFsdWVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtc3RyaW5nLWZlYXR1cmVzOiAgJ29yaWVudGF0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY2FuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsdW1pbm9zaXR5JztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LXN0cmluZy1mZWF0dXJlcyB7XG4gICAgQGlmIGJyZWFrcG9pbnQtbWluLW1heCgkaXRlbSkge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtaW4tI3skaXRlbX0nIG9yICRmZWF0dXJlID09ICdtYXgtI3skaXRlbX0nIHtcbiAgICAgICAgQHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGlzIGEgbWVkaWEgdHlwZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1tZWRpYS10eXBlczogICdhbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnYnJhaWxsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdlbWJvc3NlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdoYW5kaGVsZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwcmludCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9qZWN0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjcmVlbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdzcGVlY2gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAndHR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R2JztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaXMtbWVkaWEoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJG1lZGlhIGluICRicmVha3BvaW50LW1lZGlhLXR5cGVzIHtcbiAgICBAaWYgKCRmZWF0dXJlID09ICRtZWRpYSkgb3IgKCRmZWF0dXJlID09ICdub3QgI3skbWVkaWF9Jykgb3IgKCRmZWF0dXJlID09ICdvbmx5ICN7JG1lZGlhfScpIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gc3RhbmQgYWxvbmVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZy1mZWF0dXJlczogJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvci1pbmRleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3JpZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9ub2Nocm9tZSc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZy1mZWF0dXJlcyB7XG4gICAgQGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaXMtcmVzb2x1dGlvbigkZmVhdHVyZSkge1xuICAkcmVzb2x1dGlvbnM6ICdkZXZpY2UtcGl4ZWwtcmF0aW8nLCAnZHByJztcblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIHtcbiAgICAkcmVzb2x1dGlvbnM6IGFwcGVuZCgkcmVzb2x1dGlvbnMsICdyZXNvbHV0aW9uJyk7XG4gIH1cblxuICBAZWFjaCAkcmVzbyBpbiAkcmVzb2x1dGlvbnMge1xuICAgIEBpZiBpbmRleCgkZmVhdHVyZSwgJHJlc28pIG9yIGluZGV4KCRmZWF0dXJlLCAnbWluLSN7JHJlc299Jykgb3IgaW5kZXgoJGZlYXR1cmUsICdtYXgtI3skcmVzb30nKSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBhcnNlciBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInBhcnNlcnMvcXVlcnlcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3NpbmdsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvZG91YmxlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy90cmlwbGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3Jlc29sdXRpb25cIjtcblxuJE1lbW8tRXhpc3RzOiBmdW5jdGlvbi1leGlzdHMobWVtby1nZXQpIGFuZCBmdW5jdGlvbi1leGlzdHMobWVtby1zZXQpO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgRnVuY3Rpb25cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkY29udGV4dHMuLi4pIHtcbiAgJHJ1bjogdHJ1ZTtcbiAgJHJldHVybjogKCk7XG5cbiAgLy8gR3JhYiB0aGUgTWVtbyBPdXRwdXQgaWYgTWVtb2l6YXRpb24gY2FuIGJlIGEgdGhpbmdcbiAgQGlmICRNZW1vLUV4aXN0cyB7XG4gICAgJHJldHVybjogbWVtby1nZXQoYnJlYWtwb2ludCwgYnJlYWtwb2ludCAkcXVlcnkgJGNvbnRleHRzKTtcblxuICAgIEBpZiAkcmV0dXJuICE9IG51bGwge1xuICAgICAgJHJ1bjogZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgQGlmIG5vdCAkTWVtby1FeGlzdHMgb3IgJHJ1biB7XG4gICAgLy8gSW50ZXJuYWwgVmFyaWFibGVzXG4gICAgJHF1ZXJ5LXN0cmluZzogJyc7XG4gICAgJHF1ZXJ5LWZhbGxiYWNrOiBmYWxzZTtcbiAgICAkcmV0dXJuOiAoKTtcblxuICAgIC8vIFJlc2VydmUgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJGhvbGRlci1jb250ZXh0OiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyO1xuICAgICRob2xkZXItcXVlcnktY291bnQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ7XG5cbiAgICAvLyBSZXNldCBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcblxuXG4gICAgLy8gVGVzdCB0byBzZWUgaWYgaXQncyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0XG4gICAgJG9yLWxpc3Q6IGlmKGxpc3Qtc2VwYXJhdG9yKCRxdWVyeSkgPT0gJ2NvbW1hJywgdHJ1ZSwgZmFsc2UpO1xuXG5cbiAgICBAaWYgKCRvci1saXN0ID09IGZhbHNlIGFuZCBicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpID09IGZhbHNlKSB7XG4gICAgICAkcXVlcnktc3RyaW5nOiBicmVha3BvaW50LXBhcnNlKCRxdWVyeSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRsZW5ndGg6IGxlbmd0aCgkcXVlcnkpO1xuXG4gICAgICAkbGFzdDogbnRoKCRxdWVyeSwgJGxlbmd0aCk7XG4gICAgICAkcXVlcnktZmFsbGJhY2s6IGJyZWFrcG9pbnQtbm8tcXVlcnkoJGxhc3QpO1xuXG4gICAgICBAaWYgKCRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSkge1xuICAgICAgICAkbGVuZ3RoOiAkbGVuZ3RoIC0gMTtcbiAgICAgIH1cblxuICAgICAgQGlmIChicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpID09IHRydWUpIHtcbiAgICAgICAgJG1xOiAoKTtcblxuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgICAgICRtcTogYXBwZW5kKCRtcSwgbnRoKCRxdWVyeSwgJGkpLCBjb21tYSk7XG4gICAgICAgIH1cblxuICAgICAgICAkcXVlcnktc3RyaW5nOiBicmVha3BvaW50LXBhcnNlKCRtcSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRxdWVyeS1zdHJpbmc6ICcnO1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgICAgICRxdWVyeS1zdHJpbmc6ICRxdWVyeS1zdHJpbmcgKyBpZigkaSA9PSAxLCAnJywgJywgJykgKyBicmVha3BvaW50LXBhcnNlKG50aCgkcXVlcnksICRpKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkcmV0dXJuOiAoJ3F1ZXJ5JzogJHF1ZXJ5LXN0cmluZyxcbiAgICAgICAgJ2ZhbGxiYWNrJzogJHF1ZXJ5LWZhbGxiYWNrLFxuICAgICAgICAnY29udGV4dCBob2xkZXInOiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLFxuICAgICAgICAncXVlcnkgY291bnQnOiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50XG4gICAgKTtcbiAgICBAaWYgbGVuZ3RoKCRjb250ZXh0cykgPiAwIGFuZCBudGgoJGNvbnRleHRzLCAxKSAhPSBmYWxzZSB7XG4gICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlIHtcbiAgICAgICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJ25vLXF1ZXJ5JywgJHF1ZXJ5LWZhbGxiYWNrKTtcbiAgICAgIH1cbiAgICAgICRjb250ZXh0LW1hcDogKCk7XG4gICAgICBAZWFjaCAkY29udGV4dCBpbiAkY29udGV4dHMge1xuICAgICAgICAkY29udGV4dC1tYXA6IG1hcC1tZXJnZSgkY29udGV4dC1tYXAsICgkY29udGV4dDogYnJlYWtwb2ludC1nZXQtY29udGV4dCgkY29udGV4dCkpKTtcbiAgICAgIH1cbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAoY29udGV4dDogJGNvbnRleHQtbWFwKSk7XG4gICAgfVxuXG4gICAgLy8gUmVzZXQgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG5cbiAgICBAaWYgJE1lbW8tRXhpc3RzIHtcbiAgICAgICRob2xkZXI6IG1lbW8tc2V0KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnQgJHF1ZXJ5ICRjb250ZXh0cywgJHJldHVybik7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdlbmVyYWwgQnJlYWtwb2ludCBQYXJzZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UoJHF1ZXJ5KSB7XG4gIC8vIEluY3JlYXNlIG51bWJlciBvZiAnYW5kJyBxdWVyaWVzXG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQgKyAxICFnbG9iYWw7XG5cbiAgLy8gU2V0IHVwIE1lZGlhIFR5cGVcbiAgJHF1ZXJ5LXByaW50OiAnJztcblxuICAkZm9yY2UtYWxsOiAoKGJyZWFrcG9pbnQtZ2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScpID09IHRydWUpIGFuZCAoYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSA9PSAnYWxsJykpO1xuICAkZW1wdHktbWVkaWE6IHRydWU7XG4gIEBpZiAoJGZvcmNlLWFsbCA9PSB0cnVlKSBvciAoYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSAhPSAnYWxsJykge1xuICAgIC8vIEZvcmNlIHRoZSBwcmludCBvZiB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlIGlmIChmb3JjZSBhbGwgaXMgdHJ1ZSBhbmQgZGVmYXVsdCBtZWRpYSB0eXBlIGlzIGFsbCkgb3IgKGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBub3QgYWxsKVxuICAgICRxdWVyeS1wcmludDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKTtcbiAgICAkZW1wdHktbWVkaWE6IGZhbHNlO1xuICB9XG5cblxuICAkcXVlcnktcmVzb2x1dGlvbjogZmFsc2U7XG5cbiAgJHF1ZXJ5LWhvbGRlcjogYnJlYWtwb2ludC1wYXJzZS1xdWVyeSgkcXVlcnkpO1xuXG5cblxuICAvLyBMb29wIG92ZXIgZWFjaCBwYXJzZWQgb3V0IHF1ZXJ5IGFuZCB3cml0ZSBpdCB0byAkcXVlcnktcHJpbnRcbiAgJGZpcnN0OiB0cnVlO1xuXG4gIEBlYWNoICRmZWF0dXJlIGluICRxdWVyeS1ob2xkZXIge1xuICAgICRsZW5ndGg6IGxlbmd0aCgkZmVhdHVyZSk7XG5cbiAgICAvLyBQYXJzZSBhIHNpbmdsZSBmZWF0dXJlXG4gICAgQGlmICgkbGVuZ3RoID09IDEpIHtcbiAgICAgIC8vIEZlYXR1cmUgaXMgY3VycmVudGx5IGEgbGlzdCwgZ3JhYiB0aGUgYWN0dWFsIHZhbHVlXG4gICAgICAkZmVhdHVyZTogbnRoKCRmZWF0dXJlLCAxKTtcblxuICAgICAgLy8gTWVkaWEgVHlwZSBtdXN0IGJ5IGNvbnZlbnRpb24gYmUgdGhlIGZpcnN0IGl0ZW0sIHNvIGl0J3Mgc2FmZSB0byBmbGF0IG92ZXJyaWRlICRxdWVyeS1wcmludCwgd2hpY2ggcmlnaHQgbm93IHNob3VsZCBvbmx5IGJlIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGVcbiAgICAgIEBpZiAoYnJlYWtwb2ludC1pcy1tZWRpYSgkZmVhdHVyZSkpIHtcbiAgICAgICAgQGlmICgkZm9yY2UtYWxsID09IHRydWUpIG9yICgkZmVhdHVyZSAhPSAnYWxsJykge1xuICAgICAgICAgIC8vIEZvcmNlIHRoZSBwcmludCBvZiB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlIGlmIChmb3JjZSBhbGwgaXMgdHJ1ZSBhbmQgZGVmYXVsdCBtZWRpYSB0eXBlIGlzIGFsbCkgb3IgKGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBub3QgYWxsKVxuICAgICAgICAgICRxdWVyeS1wcmludDogJGZlYXR1cmU7XG4gICAgICAgICAgJGVtcHR5LW1lZGlhOiBmYWxzZTtcblxuICAgICAgICAgIC8vIFNldCBDb250ZXh0XG4gICAgICAgICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWVkaWEsICRxdWVyeS1wcmludCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBQYXJzZSBhIGRvdWJsZSBmZWF0dXJlXG4gICAgQGVsc2UgaWYgKCRsZW5ndGggPT0gMikge1xuICAgICAgQGlmIChicmVha3BvaW50LWlzLXJlc29sdXRpb24oJGZlYXR1cmUpICE9IGZhbHNlKSB7XG4gICAgICAgICRxdWVyeS1yZXNvbHV0aW9uOiAkZmVhdHVyZTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHBhcnNlZDogbnVsbDtcbiAgICAgICAgLy8gSWYgaXQncyBhIHN0cmluZy9udW1iZXIgcGFpcixcbiAgICAgICAgLy8gd2UgY2hlY2sgdG8gc2VlIGlmIG9uZSBpcyBhIHNpbmdsZS1zdHJpbmcgdmFsdWUsXG4gICAgICAgIC8vIHRoZW4gd2UgcGFyc2UgaXQgYXMgYSBub3JtYWwgZG91YmxlXG4gICAgICAgICRhbHBoYTogbnRoKCRmZWF0dXJlLCAxKTtcbiAgICAgICAgJGJldGE6IG50aCgkZmVhdHVyZSwgMik7XG4gICAgICAgIEBpZiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGFscGhhKSBvciBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGJldGEpIHtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkYWxwaGEsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkYmV0YSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBQYXJzZSBhIHRyaXBsZSBmZWF0dXJlXG4gICAgQGVsc2UgaWYgKCRsZW5ndGggPT0gMykge1xuICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS10cmlwbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgfVxuXG4gIH1cblxuICBAaWYgKCRxdWVyeS1yZXNvbHV0aW9uICE9IGZhbHNlKSB7XG4gICAgJHF1ZXJ5LXByaW50OiBicmVha3BvaW50LWJ1aWxkLXJlc29sdXRpb24oJHF1ZXJ5LXByaW50LCAkcXVlcnktcmVzb2x1dGlvbiwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICB9XG5cbiAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggZmVhdHVyZSB0aGF0J3MgYmVlbiBkZXRlY3RlZCBzbyBmYXIgYW5kIGFwcGVuZCAnZmFsc2UnIHRvIHRoZSB0aGUgdmFsdWUgbGlzdCB0byBpbmNyZW1lbnQgdGhlaXIgY291bnRlcnNcbiAgQGVhY2ggJGYsICR2IGluICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIge1xuICAgICR2LWhvbGRlcjogJHY7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCR2LWhvbGRlcik7XG4gICAgQGlmIGxlbmd0aCgkdi1ob2xkZXIpIDwgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICBAZm9yICRpIGZyb20gJGxlbmd0aCB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgICAgQGlmICRmID09ICdtZWRpYScge1xuICAgICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGY6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cblxuICBAcmV0dXJuICRxdWVyeS1wcmludDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXF1ZXJ5KCRxdWVyeSkge1xuICAvLyBQYXJzZSBmZWF0dXJlcyBvdXQgb2YgYW4gaW5kaXZpZHVhbCBxdWVyeVxuICAkZmVhdHVyZS1ob2xkZXI6ICgpO1xuICAkcXVlcnktaG9sZGVyOiAoKTtcbiAgJGxlbmd0aDogbGVuZ3RoKCRxdWVyeSk7XG5cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgLy8gSWYgd2UndmUgZ290IGEgc3RyaW5nL251bWJlciwgbnVtYmVyL3N0cmluZywgY2hlY2sgdG8gc2VlIGlmIGl0J3MgYSB2YWxpZCBzdHJpbmcvbnVtYmVyIHBhaXIgb3IgdHdvIHNpbmdsZXNcbiAgICBAaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnbnVtYmVyJykgb3IgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnc3RyaW5nJykge1xuXG4gICAgICAkbnVtYmVyOiAnJztcbiAgICAgICR2YWx1ZTogJyc7XG5cbiAgICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyB7XG4gICAgICAgICRudW1iZXI6IG50aCgkcXVlcnksIDIpO1xuICAgICAgICAkdmFsdWU6IG50aCgkcXVlcnksIDEpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkbnVtYmVyOiBudGgoJHF1ZXJ5LCAxKTtcbiAgICAgICAgJHZhbHVlOiBudGgoJHF1ZXJ5LCAyKTtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhlIHN0cmluZyB2YWx1ZSBjYW4gYmUgYSBzaW5nbGUgdmFsdWUsIGNoZWNrIHRvIHNlZSBpZiB0aGUgbnVtYmVyIHBhc3NlZCBpbiBpcyBhIHZhbGlkIGlucHV0IGZvciBzYWlkIHNpbmdsZSB2YWx1ZS4gRm9ydHVuYXRlbHksIGFsbCBjdXJyZW50IHNpbmdsZS12YWx1ZSBvcHRpb25zIG9ubHkgYWNjZXB0IHVuaXRsZXNzIG51bWJlcnMsIHNvIHRoaXMgY2hlY2sgaXMgZWFzeS5cbiAgICAgIEBpZiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJHZhbHVlKSB7XG4gICAgICAgIEBpZiB1bml0bGVzcygkbnVtYmVyKSB7XG4gICAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJHZhbHVlLCAkbnVtYmVyLCBzcGFjZSk7XG4gICAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBhIG1lZGlhIHR5cGUsIHNwbGl0IHRoZSBxdWVyeVxuICAgICAgQGlmIGJyZWFrcG9pbnQtaXMtbWVkaWEoJHZhbHVlKSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAxKSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAyKSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICAgIC8vIElmIGl0J3Mgbm90IGEgc2luZ2xlIGZlYXR1cmUsIHdlJ3JlIGp1c3QgZ29pbmcgdG8gYXNzdW1lIGl0J3MgYSBwcm9wZXIgc3RyaW5nL3ZhbHVlIHBhaXIsIGFuZCByb2xsIHdpdGggaXQuXG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCR2YWx1ZSwgJG51bWJlciwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cblxuICAgIH1cbiAgICAvLyBJZiB0aGV5J3JlIGJvdGggbnVtYmVycywgd2UgYXNzdW1lIGl0J3MgYSBkb3VibGUgYW5kIHJvbGwgd2l0aCB0aGF0XG4gICAgQGVsc2UgaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnbnVtYmVyJykge1xuICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgfVxuICAgIC8vIElmIHRoZXkncmUgYm90aCBzdHJpbmdzIGFuZCBuZWl0aGVyIGFyZSBzaW5nbGVzLCB3ZSByb2xsIHdpdGggdGhhdC5cbiAgICBAZWxzZSBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdzdHJpbmcnKSB7XG4gICAgICBAaWYgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMikpIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkbGVuZ3RoID09IDMge1xuICAgIC8vIElmIHdlJ3ZlIGdvdCB0aHJlZSBpdGVtcyBhbmQgbm9uZSBpcyBhIGxpc3QsIHdlIGNoZWNrIHRvIHNlZVxuICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSAhPSAnbGlzdCcgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpICE9ICdsaXN0JyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAzKSkgIT0gJ2xpc3QnIHtcbiAgICAgIC8vIElmIG5vbmUgb2YgdGhlIGl0ZW1zIGFyZSBzaW5nbGUgc3RyaW5nIHZhbHVlcyBhbmQgbm9uZSBvZiB0aGUgdmFsdWVzIGFyZSBtZWRpYSB2YWx1ZXMsIHdlJ3JlIGdvb2QuXG4gICAgICBAaWYgKG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDIpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAzKSkpIGFuZCAgKChub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDIpKSBhbmQgbm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMykpKSkge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJGZlYXR1cmUtaG9sZGVyLCBudGgoJHF1ZXJ5LCAzKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICAgIC8vIGxldCdzIGNoZWNrIHRvIHNlZSBpZiB0aGUgZmlyc3QgaXRlbSBpcyBhIG1lZGlhIHR5cGVcbiAgICAgIEBlbHNlIGlmIGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMSkpIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDEpKTtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMiksIG50aCgkcXVlcnksIDMpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgaXQncyBhIHNpbmdsZSBpdGVtLCBvciBpZiBpdCdzIG5vdCBhIHNwZWNpYWwgY2FzZSBkb3VibGUgb3IgdHJpcGxlLCB3ZSBjYW4gc2ltcGx5IHJldHVybiB0aGUgcXVlcnkuXG4gIEByZXR1cm4gJHF1ZXJ5O1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJzaW5nbGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgLy8gSWYgaXQncyBhIHNpbmdsZSBmZWF0dXJlIHRoYXQgY2FuIHN0YW5kIGFsb25lLCB3ZSBsZXQgaXRcbiAgQGlmIChicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGZlYXR1cmUpKSB7XG4gICAgJHBhcnNlZDogJGZlYXR1cmU7XG4gICAgLy8gU2V0IENvbnRleHRcbiAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJGZlYXR1cmUpO1xuICB9XG4gIC8vIElmIGl0J3Mgbm90IGEgc3RhbmQgYWxvbmUgZmVhdHVyZSwgd2UgcGFzcyBpdCBvZmYgdG8gdGhlIGRlZmF1bHQgaGFuZGxlci5cbiAgQGVsc2Uge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdCgkZmVhdHVyZSk7XG4gIH1cblxuICBAcmV0dXJuICRsZWFkZXIgKyAnKCcgKyAkcGFyc2VkICsgJyknO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdCgkZmVhdHVyZSkge1xuICAkZGVmYXVsdDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgZmVhdHVyZScpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRkZWZhdWx0LCAkZmVhdHVyZSk7XG5cbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkgYW5kICh0eXBlLW9mKCRmZWF0dXJlKSA9PSAnbnVtYmVyJykge1xuICAgIEByZXR1cm4gJyN7JGRlZmF1bHR9OiAje2JyZWFrcG9pbnQtdG8tYmFzZS1lbSgkZmVhdHVyZSl9JztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAnI3skZGVmYXVsdH06ICN7JGZlYXR1cmV9JztcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJkb3VibGUvZGVmYXVsdC1wYWlyXCI7XG5AaW1wb3J0IFwiZG91YmxlL2RvdWJsZS1zdHJpbmdcIjtcbkBpbXBvcnQgXCJkb3VibGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgJGZpcnN0OiBudGgoJGZlYXR1cmUsIDEpO1xuICAkc2Vjb25kOiBudGgoJGZlYXR1cmUsIDIpO1xuXG4gIC8vIElmIHdlJ3ZlIGdvdCB0d28gbnVtYmVycywgd2Uga25vdyB3ZSBuZWVkIHRvIHVzZSB0aGUgZGVmYXVsdCBwYWlyIGJlY2F1c2UgdGhlcmUgYXJlIG5vIG1lZGlhIHF1ZXJpZXMgdGhhdCBoYXMgYSBtZWRpYSBmZWF0dXJlIHRoYXQgaXMgYSBudW1iZXJcbiAgQGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZigkc2Vjb25kKSA9PSAnbnVtYmVyJyB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0LXBhaXIoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuICAvLyBJZiB0aGV5IGFyZSBib3RoIHN0cmluZ3MsIHdlIHNlbmQgaXQgdGhyb3VnaCB0aGUgc3RyaW5nIHBhcnNlclxuICBAZWxzZSBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YoJHNlY29uZCkgPT0gJ3N0cmluZycge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLXN0cmluZygkZmlyc3QsICRzZWNvbmQpO1xuICB9XG4gIC8vIElmIGl0J3MgYSBzdHJpbmcvbnVtYmVyIHBhaXIsIHdlIHBhcnNlIGl0IGFzIGEgbm9ybWFsIGRvdWJsZVxuICBAZWxzZSB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtZGVmYXVsdCgkZmlyc3QsICRzZWNvbmQpO1xuICB9XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJHBhcnNlZDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQtcGFpcigkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGRlZmF1bHQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IHBhaXInKTtcbiAgJG1pbjogJyc7XG4gICRtYXg6ICcnO1xuXG4gIC8vIFNvcnQgaW50byBtaW4gYW5kIG1heFxuICAkbWluOiBtaW4oJGZpcnN0LCAkc2Vjb25kKTtcbiAgJG1heDogbWF4KCRmaXJzdCwgJHNlY29uZCk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWluLSN7JGRlZmF1bHR9LCAkbWluKTtcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWF4LSN7JGRlZmF1bHR9LCAkbWF4KTtcblxuICAvLyBNYWtlIHRoZW0gRU1zIGlmIG5lZWQgYmVcbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICRtaW46IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWluKTtcbiAgICAkbWF4OiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1heCk7XG4gIH1cblxuICBAcmV0dXJuICcobWluLSN7JGRlZmF1bHR9OiAjeyRtaW59KSBhbmQgKG1heC0jeyRkZWZhdWx0fTogI3skbWF4fSknO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLXN0cmluZygkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGZlYXR1cmU6ICcnO1xuICAkdmFsdWU6ICcnO1xuXG4gIC8vIFRlc3QgdG8gc2VlIHdoaWNoIGlzIHRoZSBmZWF0dXJlIGFuZCB3aGljaCBpcyB0aGUgdmFsdWVcbiAgQGlmIChicmVha3BvaW50LXN0cmluZy12YWx1ZSgkZmlyc3QpID09IHRydWUpIHtcbiAgICAkZmVhdHVyZTogJGZpcnN0O1xuICAgICR2YWx1ZTogJHNlY29uZDtcbiAgfVxuICBAZWxzZSBpZiAoYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJHNlY29uZCkgPT0gdHJ1ZSkge1xuICAgICRmZWF0dXJlOiAkc2Vjb25kO1xuICAgICR2YWx1ZTogJGZpcnN0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIk5laXRoZXIgI3skZmlyc3R9IG5vciAjeyRzZWNvbmR9IGlzIGEgdmFsaWQgbWVkaWEgcXVlcnkgbmFtZS5cIjtcbiAgfVxuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpO1xuXG4gIEByZXR1cm4gJygjeyRmZWF0dXJlfTogI3skdmFsdWV9KSc7XG59IiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLWRlZmF1bHQoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRmZWF0dXJlOiAnJztcbiAgJHZhbHVlOiAnJztcblxuICBAaWYgdHlwZS1vZigkZmlyc3QpID09ICdzdHJpbmcnIHtcbiAgICAkZmVhdHVyZTogJGZpcnN0O1xuICAgICR2YWx1ZTogJHNlY29uZDtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGZlYXR1cmU6ICRzZWNvbmQ7XG4gICAgJHZhbHVlOiAkZmlyc3Q7XG4gIH1cblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKTtcblxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJHZhbHVlOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJHZhbHVlKTtcbiAgfVxuXG4gIEByZXR1cm4gJygjeyRmZWF0dXJlfTogI3skdmFsdWV9KSdcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidHJpcGxlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG5cbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgLy8gc2VwYXJhdGUgdGhlIHN0cmluZyBmZWF0dXJlcyBmcm9tIHRoZSB2YWx1ZSBudW1iZXJzXG4gICRzdHJpbmc6IG51bGw7XG4gICRudW1iZXJzOiBudWxsO1xuICBAZWFjaCAkdmFsIGluICRmZWF0dXJlIHtcbiAgICBAaWYgdHlwZS1vZigkdmFsKSA9PSBzdHJpbmcge1xuICAgICAgJHN0cmluZzogJHZhbDtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmIHR5cGUtb2YoJG51bWJlcnMpID09ICdudWxsJyB7XG4gICAgICAgICRudW1iZXJzOiAkdmFsO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkbnVtYmVyczogYXBwZW5kKCRudW1iZXJzLCAkdmFsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXRyaXBsZS1kZWZhdWx0KCRzdHJpbmcsIG50aCgkbnVtYmVycywgMSksIG50aCgkbnVtYmVycywgMikpO1xuXG4gIEByZXR1cm4gJGxlYWRlciArICRwYXJzZWQ7XG5cbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXRyaXBsZS1kZWZhdWx0KCRmZWF0dXJlLCAkZmlyc3QsICRzZWNvbmQpIHtcblxuICAvLyBTb3J0IGludG8gbWluIGFuZCBtYXhcbiAgJG1pbjogbWluKCRmaXJzdCwgJHNlY29uZCk7XG4gICRtYXg6IG1heCgkZmlyc3QsICRzZWNvbmQpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1pbi0jeyRmZWF0dXJlfSwgJG1pbik7XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1heC0jeyRmZWF0dXJlfSwgJG1heCk7XG5cbiAgLy8gTWFrZSB0aGVtIEVNcyBpZiBuZWVkIGJlXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkbWluOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1pbik7XG4gICAgJG1heDogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtYXgpO1xuICB9XG5cbiAgQHJldHVybiAnKG1pbi0jeyRmZWF0dXJlfTogI3skbWlufSkgYW5kIChtYXgtI3skZmVhdHVyZX06ICN7JG1heH0pJztcbn1cbiIsIkBpbXBvcnQgXCJyZXNvbHV0aW9uL3Jlc29sdXRpb25cIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtYnVpbGQtcmVzb2x1dGlvbigkcXVlcnktcHJpbnQsICRxdWVyeS1yZXNvbHV0aW9uLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSBhbmQgJHF1ZXJ5LXJlc29sdXRpb24ge1xuICAgICRyZXNvbHV0aW9uczogYnJlYWtwb2ludC1tYWtlLXJlc29sdXRpb25zKCRxdWVyeS1yZXNvbHV0aW9uKTtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHJlc29sdXRpb25zKTtcbiAgICAkcXVlcnktaG9sZGVyOiAnJztcblxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAkcXVlcnk6ICcjeyRxdWVyeS1wcmludH0gI3skbGVhZGVyfSN7bnRoKCRyZXNvbHV0aW9ucywgJGkpfSc7XG4gICAgICBAaWYgJGkgPT0gMSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6ICRxdWVyeTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogJyN7JHF1ZXJ5LWhvbGRlcn0sICN7JHF1ZXJ5fSc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBSZXR1cm4gd2l0aCBhdHRhY2hlZCByZXNvbHV0aW9uXG4gICAgQHJldHVybiAkcXVlcnktcHJpbnQ7XG4gIH1cbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LW1ha2UtcmVzb2x1dGlvbnMoJHJlc29sdXRpb24pIHtcbiAgJGxlbmd0aDogbGVuZ3RoKCRyZXNvbHV0aW9uKTtcblxuICAkb3V0cHV0OiAoKTtcblxuICBAaWYgJGxlbmd0aCA9PSAyIHtcbiAgICAkZmVhdHVyZTogJyc7XG4gICAgJHZhbHVlOiAnJztcblxuICAgIC8vIEZpbmQgd2hpY2ggaXMgbnVtYmVyXG4gICAgQGlmIHR5cGUtb2YobnRoKCRyZXNvbHV0aW9uLCAxKSkgPT0gJ251bWJlcicge1xuICAgICAgJHZhbHVlOiBudGgoJHJlc29sdXRpb24sIDEpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkdmFsdWU6IG50aCgkcmVzb2x1dGlvbiwgMik7XG4gICAgfVxuXG4gICAgLy8gRGV0ZXJtaW5lIG1pbi9tYXgvc3RhbmRhcmRcbiAgICBAaWYgaW5kZXgoJHJlc29sdXRpb24sICdtaW4tcmVzb2x1dGlvbicpIHtcbiAgICAgICRmZWF0dXJlOiAnbWluLSc7XG4gICAgfVxuICAgIEBlbHNlIGlmIGluZGV4KCRyZXNvbHV0aW9uLCAnbWF4LXJlc29sdXRpb24nKSB7XG4gICAgICAkZmVhdHVyZTogJ21heC0nO1xuICAgIH1cblxuICAgICRzdGFuZGFyZDogJygjeyRmZWF0dXJlfXJlc29sdXRpb246ICN7JHZhbHVlfSknO1xuXG4gICAgLy8gSWYgd2UncmUgbm90IGRlYWxpbmcgd2l0aCBkcHB4LFxuICAgIEBpZiB1bml0KCR2YWx1ZSkgIT0gJ2RwcHgnIHtcbiAgICAgICRiYXNlOiA5NmRwaTtcbiAgICAgIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ2RwY20nIHtcbiAgICAgICAgJGJhc2U6IDI0My44NGRwY207XG4gICAgICB9XG4gICAgICAvLyBXcml0ZSBvdXQgZmVhdHVyZSB0ZXN0c1xuICAgICAgJHdlYmtpdDogJyc7XG4gICAgICAkbW96OiAnJztcbiAgICAgICR3ZWJraXQ6ICcoLXdlYmtpdC0jeyRmZWF0dXJlfWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAkYmFzZX0pJztcbiAgICAgICRtb3o6ICcoI3skZmVhdHVyZX0tbW96LWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAkYmFzZX0pJztcbiAgICAgIC8vIEFwcGVuZCB0byBvdXRwdXRcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkc3RhbmRhcmQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkd2Via2l0LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJG1veiwgc3BhY2UpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkd2Via2l0OiAnJztcbiAgICAgICRtb3o6ICcnO1xuICAgICAgJHdlYmtpdDogJygtd2Via2l0LSN7JGZlYXR1cmV9ZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvIDFkcHB4fSknO1xuICAgICAgJG1vejogJygjeyRmZWF0dXJlfS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvIDFkcHB4fSknO1xuICAgICAgJGZhbGxiYWNrOiAnKCN7JGZlYXR1cmV9cmVzb2x1dGlvbjogI3skdmFsdWUgLyAxZHBweCAqIDk2ZHBpfSknO1xuICAgICAgLy8gQXBwZW5kIHRvIG91dHB1dFxuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRzdGFuZGFyZCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICR3ZWJraXQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkbW96LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJGZhbGxiYWNrLCBzcGFjZSk7XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1uby1xdWVyeSgkcXVlcnkpIHtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSAnbGlzdCcge1xuICAgICRrZXl3b3JkOiBudGgoJHF1ZXJ5LCAxKTtcblxuICAgIEBpZiB0eXBlLW9mKCRrZXl3b3JkKSA9PSAnc3RyaW5nJyBhbmQgKCRrZXl3b3JkID09ICduby1xdWVyeScgb3IgJGtleXdvcmQgPT0gJ25vIHF1ZXJ5JyBvciAka2V5d29yZCA9PSAnZmFsbGJhY2snKSB7XG4gICAgICBAcmV0dXJuIG50aCgkcXVlcnksIDIpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IHRoZSBCcmVha3BvaW50cyB2YXJpYWJsZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludHM6ICgpICFkZWZhdWx0O1xuJEJSRUFLUE9JTlRTOiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXNwb25kLXRvIEFQSSBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gcmVzcG9uZC10bygkY29udGV4dCwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaWYgbGVuZ3RoKCRicmVha3BvaW50cykgPiAwIGFuZCBsZW5ndGgoJEJSRUFLUE9JTlRTKSA9PSAwIHtcbiAgICBAd2FybiBcIkluIG9yZGVyIHRvIGF2b2lkIHZhcmlhYmxlIG5hbWVzcGFjZSBjb2xsaXNpb25zLCB3ZSBoYXZlIHVwZGF0ZWQgdGhlIHdheSB0byBhZGQgYnJlYWtwb2ludHMgZm9yIHJlc3BvbmQtdG8uIFBsZWFzZSBjaGFuZ2UgYWxsIGluc3RhbmNlcyBvZiBgJGJyZWFrcG9pbnRzOiBhZGQtYnJlYWtwb2ludCgpYCB0byBgQGluY2x1ZGUgYWRkLWJyZWFrcG9pbnQoKWAuIFRoZSBgYWRkLWJyZWFrcG9pbnQoKWAgZnVuY3Rpb24gd2lsbCBiZSBkZXByZWNhdGVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXCI7XG4gICAgJEJSRUFLUE9JTlRTOiAkYnJlYWtwb2ludHMgIWdsb2JhbDtcbiAgICAkYnJlYWtwb2ludHM6ICgpICFnbG9iYWw7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkQlJFQUtQT0lOVFMpICE9ICdtYXAnIHtcbiAgICAvLyBKdXN0IGluIGNhc2Ugc29tZW9uZSB3cml0ZXMgZ2liYmVyaXNoIHRvIHRoZSAkYnJlYWtwb2ludHMgdmFyaWFibGUuXG4gICAgQHdhcm4gXCJZb3VyIGJyZWFrcG9pbnRzIGFyZW4ndCBhIG1hcCEgYHJlc3BvbmQtdG9gIGV4cGVjdHMgYSBtYXAuIFBsZWFzZSBjaGVjayB0aGUgdmFsdWUgb2YgJEJSRUFLUE9JTlRTIHZhcmlhYmxlLlwiO1xuICAgIEBjb250ZW50O1xuICB9XG4gIEBlbHNlIGlmIG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1hcC1nZXQoJEJSRUFLUE9JTlRTLCAkY29udGV4dCksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSB7XG4gICAgQHdhcm4gXCJgI3skY29udGV4dH1gIGlzbid0IGEgZGVmaW5lZCBicmVha3BvaW50ISBQbGVhc2UgYWRkIGl0IHVzaW5nIGAkYnJlYWtwb2ludHM6IGFkZC1icmVha3BvaW50KGAjeyRjb250ZXh0fWAsICR2YWx1ZSk7YFwiO1xuICAgIEBjb250ZW50O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIllvdSBoYXZlbid0IGNyZWF0ZWQgYW55IGJyZWFrcG9pbnRzIHlldCEgTWFrZSBzb21lIGFscmVhZHkhIGBAaW5jbHVkZSBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQpYFwiO1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQWRkIEJyZWFrcG9pbnQgdG8gQnJlYWtwb2ludHNcbi8vIFRPRE86IFJlbW92ZSBmdW5jdGlvbiBpbiBuZXh0IHJlbGVhc2Vcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdCwgJG92ZXJ3cml0ZTogZmFsc2UpIHtcbiAgJG91dHB1dDogKCRuYW1lOiAkYmtwdCk7XG5cbiAgQGlmIGxlbmd0aCgkYnJlYWtwb2ludHMpID09IDAge1xuICAgIEByZXR1cm4gJG91dHB1dDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJG5hbWUpIGFuZCAkb3ZlcndyaXRlICE9IHRydWUge1xuICAgICAgQHdhcm4gXCJZb3UgYWxyZWFkeSBoYXZlIGEgYnJlYWtwb2ludCBuYW1lZCBgI3skbmFtZX1gLCBwbGVhc2UgY2hvb3NlIGFub3RoZXIgYnJlYWtwb2ludCBuYW1lLCBvciBwYXNzIGluIGAkb3ZlcndyaXRlOiB0cnVlYCB0byBvdmVyd3JpdGUgdGhlIHByZXZpb3VzIGJyZWFrcG9pbnQuXCI7XG4gICAgICBAcmV0dXJuICRicmVha3BvaW50cztcbiAgICB9XG4gICAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJG5hbWUpIG9yICRvdmVyd3JpdGUgPT0gdHJ1ZSB7XG4gICAgICBAcmV0dXJuIG1hcC1tZXJnZSgkYnJlYWtwb2ludHMsICRvdXRwdXQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0LCAkb3ZlcndyaXRlOiBmYWxzZSkge1xuICAkb3V0cHV0OiAoJG5hbWU6ICRia3B0KTtcblxuICBAaWYgbGVuZ3RoKCRCUkVBS1BPSU5UUykgPT0gMCB7XG4gICAgJEJSRUFLUE9JTlRTOiAkb3V0cHV0ICFnbG9iYWw7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRuYW1lKSBhbmQgJG92ZXJ3cml0ZSAhPSB0cnVlIHtcbiAgICAgIEB3YXJuIFwiWW91IGFscmVhZHkgaGF2ZSBhIGJyZWFrcG9pbnQgbmFtZWQgYCN7JG5hbWV9YCwgcGxlYXNlIGNob29zZSBhbm90aGVyIGJyZWFrcG9pbnQgbmFtZSwgb3IgcGFzcyBpbiBgJG92ZXJ3cml0ZTogdHJ1ZWAgdG8gb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBicmVha3BvaW50LlwiO1xuICAgICAgJEJSRUFLUE9JTlRTOiAkQlJFQUtQT0lOVFMgIWdsb2JhbDtcbiAgICB9XG4gICAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJG5hbWUpIG9yICRvdmVyd3JpdGUgPT0gdHJ1ZSB7XG4gICAgICAkQlJFQUtQT0lOVFM6IG1hcC1tZXJnZSgkQlJFQUtQT0lOVFMsICRvdXRwdXQpICFnbG9iYWw7XG4gICAgfVxuICB9XG59XG5cbkBmdW5jdGlvbiBnZXQtYnJlYWtwb2ludCgkbmFtZTogZmFsc2UpIHtcbiAgQGlmICRuYW1lID09IGZhbHNlIHtcbiAgICBAcmV0dXJuICRCUkVBS1BPSU5UUztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRCUkVBS1BPSU5UUywgJG5hbWUpO1xuICB9XG59XG4iLCJAbWl4aW4gbGVnYWN5LXNldHRpbmdzLXdhcm5pbmcge1xuICAkbGVnYWN5VmFyczogKFxuICAgICdkZWZhdWx0LW1lZGlhJzogJ2RlZmF1bHQgbWVkaWEnLFxuICAgICdkZWZhdWx0LWZlYXR1cmUnOiAnZGVmYXVsdCBmZWF0dXJlJyxcbiAgICAnZm9yY2UtbWVkaWEtYWxsJzogJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJyxcbiAgICAndG8tZW1zJzogJ3RvIGVtcycsXG4gICAgJ3Jlc29sdXRpb25zJzogJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycsXG4gICAgJ25vLXF1ZXJpZXMnOiAnbm8gcXVlcmllcycsXG4gICAgJ25vLXF1ZXJ5LWZhbGxiYWNrcyc6ICdubyBxdWVyeSBmYWxsYmFja3MnLFxuICAgICdiYXNlLWZvbnQtc2l6ZSc6ICdiYXNlIGZvbnQgc2l6ZScsXG4gICAgJ2xlZ2FjeS1zeW50YXgnOiAnbGVnYWN5IHN5bnRheCdcbiAgKTtcblxuICBAZWFjaCAkbGVnYWN5LCAkbmV3IGluICRsZWdhY3lWYXJzIHtcbiAgICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC0nICsgJGxlZ2FjeSkge1xuICAgICAgQHdhcm4gXCJJbiBvcmRlciB0byBhdm9pZCB2YXJpYWJsZSBuYW1zcGFjZSBjb2xsaXNpb25zLCB3ZSBoYXZlIHVwZGF0ZWQgdGhlIHdheSB0byBjaGFuZ2Ugc2V0dGluZ3MgZm9yIEJyZWFrcG9pbnQuIFBsZWFzZSBjaGFuZ2UgYWxsIGluc3RhbmNlcyBvZiBgJGJyZWFrcG9pbnQtI3skbGVnYWN5fToge3tzZXR0aW5nfX1gIHRvIGBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnI3skbmV3fScsIHt7c2V0dGluZ319KWAuIFZhcmlhYmxlIHNldHRpbmdzLCBhcyB3ZWxsIGFzIHRoaXMgd2FybmluZyB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS5cIlxuICAgIH1cbiAgfTtcblxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gSGFuZCBjb3JyZWN0IGVhY2ggc2V0dGluZ1xuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYScpIGFuZCAkYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhICE9IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdkZWZhdWx0IG1lZGlhJywgJGJyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlJykgYW5kICRicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZSAhPSBicmVha3BvaW50LWdldCgnZGVmYXVsdCBmZWF0dXJlJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdkZWZhdWx0IGZlYXR1cmUnLCAkYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCcpIGFuZCAkYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwgIT0gYnJlYWtwb2ludC1nZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScsICRicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtdG8tZW1zJykgYW5kICRicmVha3BvaW50LXRvLWVtcyAhPSBicmVha3BvaW50LWdldCgndG8gZW1zJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCd0byBlbXMnLCAkYnJlYWtwb2ludC10by1lbXMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LXJlc29sdXRpb25zJykgYW5kICRicmVha3BvaW50LXJlc29sdXRpb25zICE9IGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycsICRicmVha3BvaW50LXJlc29sdXRpb25zKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1uby1xdWVyaWVzJykgYW5kICRicmVha3BvaW50LW5vLXF1ZXJpZXMgIT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ25vIHF1ZXJpZXMnLCAkYnJlYWtwb2ludC1uby1xdWVyaWVzKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MnKSBhbmQgJGJyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzICE9IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycsICRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtYmFzZS1mb250LXNpemUnKSBhbmQgJGJyZWFrcG9pbnQtYmFzZS1mb250LXNpemUgIT0gYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdiYXNlIGZvbnQgc2l6ZScsICRicmVha3BvaW50LWJhc2UtZm9udC1zaXplKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4JykgYW5kICRicmVha3BvaW50LWxlZ2FjeS1zeW50YXggIT0gYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2xlZ2FjeSBzeW50YXgnLCAkYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4KTtcbiAgfVxufSIsIkBpbXBvcnQgXCJmdW5jdGlvbnNcIjtcbkBpbXBvcnQgXCJ6LWluZGV4XCI7XG5AaW1wb3J0IFwibWVkaWEtcXVlcmllc1wiO1xuQGltcG9ydCBcInZhcmlhYmxlc1wiO1xuQGltcG9ydCBcInVuaWJvYXJkXCI7XG5AaW1wb3J0IFwibWl4aW5zXCI7XG5AaW1wb3J0IFwiZXh0ZW5kc1wiO1xuQGltcG9ydCBcImZsZXhcIjtcbkBpbXBvcnQgXCJib3hcIjtcbkBpbXBvcnQgXCJmbHVpZC1zaXplXCI7XG4iLCIvLy8gWi1pbmRleGVzIG1hcCwgZ2F0aGVyaW5nIGFsbCBaIGxheWVycyBvZiB0aGUgYXBwbGljYXRpb25cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAdHlwZSBNYXBcbi8vLyBAcHJvcCB7U3RyaW5nfSBrZXkgLSBMYXllcuKAmXMgbmFtZVxuLy8vIEBwcm9wIHtOdW1iZXJ9IHZhbHVlIC0gWiB2YWx1ZSBtYXBwZWQgdG8gdGhlIGtleVxuJHotaW5kZXhlczogKFwiY2dfX3Byb21vdGlvblwiOiAyMDUsIFwiY2dfX3BpZWNlLmRyYWdnaW5nXCI6IDIwNCwgXCJjZ19fcGllY2UuYW5pbVwiOiAzLCBcImNnX19zdmdcIjogMiwgXCJjZ19fcGllY2VcIjogMiwgXCJjZ19fcGllY2UuZmFkaW5nXCI6IDEsIFwicG93ZXJ0aXBcIjogMTIwLCBcImlucXVpcnlcIjogMTExLCBcInplbi10b2dnbGVcIjogMTEwLCBcIm1vZGFsXCI6IDExMCwgXCJtc2VsZWN0XCI6IDExMCwgXCJ0b3BuYXZcIjogMTEwLCBcImZ1bGxzY3JlZW4tbWFza1wiOiAxMDksIFwiZHJvcGRvd25cIjogMTA4LCBcImNvbnRleHQtbWVudVwiOiAxMDcsIFwic2l0ZS1oZWFkZXJcIjogMTA2LCBcInJlY29ubmVjdGluZ1wiOiAxMDUsIFwidG91ci1yZW1pbmRlclwiOiAxMDQsIFwibmFnLWNpcmNsZVwiOiAxMDMsIFwibXotbWVudVwiOiA0LCBcImFib3ZlLWxpbmstb3ZlcmxheVwiOiAzLCBcImZyaWVuZC1ib3hcIjogMiwgXCJsaW5rLW92ZXJsYXlcIjogMiwgXCJnYW1lLWJvb2ttYXJrXCI6IDIsIFwic3VibmF2LXNpZGVcIjogMiwgXCJkZWZhdWx0XCI6IDApO1xuXG4vLy8gR2V0IGEgei1pbmRleCB2YWx1ZSBmcm9tIGEgbGF5ZXIgbmFtZVxuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRsYXllciAtIExheWVy4oCZcyBuYW1lXG4vLy8gQHJldHVybiB7TnVtYmVyfVxuLy8vIEByZXF1aXJlICR6LWluZGV4ZXNcbkBmdW5jdGlvbiB6KCRsYXllcikge1xuICBAcmV0dXJuIG1hcC1nZXQoJHotaW5kZXhlcywgJGxheWVyKTtcbn1cbiIsIi8qIFdpZHRocyAqL1xuXG4kbXEteHgtc21hbGw6IG1pbi13aWR0aCA1MDBweDtcbiRtcS14LXNtYWxsOiBtaW4td2lkdGggNjUwcHg7XG4kbXEtc21hbGw6IG1pbi13aWR0aCA4MDBweDtcbiRtcS1tZWRpdW06IG1pbi13aWR0aCA5ODBweDtcbiRtcS1sYXJnZTogbWluLXdpZHRoIDExMjBweDtcbiRtcS14LWxhcmdlOiBtaW4td2lkdGggMTI2MHB4O1xuXG4kbXEtbm90LXh4LXNtYWxsOiBtYXgtd2lkdGggNDk5cHg7XG4kbXEtbm90LXgtc21hbGw6IG1heC13aWR0aCA2NDlweDtcbiRtcS1ub3Qtc21hbGw6IG1heC13aWR0aCA3OTlweDtcbiRtcS1ub3QtbWVkaXVtOiBtYXgtd2lkdGggOTc5cHg7XG4kbXEtbm90LXgtbGFyZ2U6IG1heC13aWR0aCAxMjU5cHg7XG5cbi8qIEhlaWdodHMgKi9cblxuJG1xLXgtc2hvcnQ6IG1pbi1oZWlnaHQgNDAwcHg7XG4kbXEtc2hvcnQ6IG1pbi1oZWlnaHQgNTAwcHg7XG4kbXEtdGFsbDogbWluLWhlaWdodCA2MDBweDtcbiRtcS14LXRhbGw6IG1pbi1oZWlnaHQgNzAwcHg7XG5cbiRtcS1ub3QteC1zaG9ydDogbWF4LWhlaWdodCAzOTlweDtcblxuLyogT3JpZW50YXRpb25zICovXG5cbiRtcS1wb3J0cmFpdDogb3JpZW50YXRpb24gcG9ydHJhaXQ7XG4kbXEtbGFuZHNjYXBlOiBvcmllbnRhdGlvbiBsYW5kc2NhcGU7XG5cbi8qIENhcGFiaWxpdGllcyAqL1xuXG4kbXEtaG92ZXIteWVzOiBcImhvdmVyOiBob3ZlclwiO1xuJG1xLWhvdmVyLW5vOiBob3ZlciBub25lO1xuXG4vKiBBbGlhc2VzICovXG5cbiRtcS1tYWluLW1hcmdpbjogJG1xLXNtYWxsO1xuXG4kbXEtdG9wbmF2LXZpc2libGU6ICRtcS1tZWRpdW07XG4kbXEtdG9wbmF2LWhpZGRlbjogJG1xLW5vdC1tZWRpdW07XG5cbiRtcS1zaXRlLWhlYWRlci10YWxsOiAkbXEtdGFsbDtcblxuJG1xLXN1Ym5hdi10b3A6ICRtcS1ub3Qtc21hbGw7XG4kbXEtc3VibmF2LXNpZGU6ICRtcS1zbWFsbDtcblxuJG1xLXpvb20tZW5hYmxlZDogJG1xLXNtYWxsICRtcS1zaG9ydDtcbiIsIiRkZWJ1ZzogZmFsc2U7XG5cbiRmb250LXBhdGg6IFwiLi4vZm9udFwiO1xuJGltZy1wYXRoOiBcIi4uL2ltYWdlc1wiO1xuXG4kdmlld3BvcnQtbWluLXdpZHRoOiAzMjBweDtcblxuJGJsb2NrLWdhcDogMnZtaW47XG4kYmxvY2stZ2FwLWhhbGY6IDF2bWluO1xuXG4kYmxvY2stZ2FwLWg6IDJ2aDtcbiRibG9jay1nYXAtdzogMnZ3O1xuJGJsb2NrLWdhcC13LWhhbGY6IDF2dztcblxuJGJveC1yYWRpdXMtc2l6ZTogM3B4O1xuXG4kc2l0ZS1oZWFkZXItdGFsbC1oZWlnaHQ6IDYwcHg7XG4kc2l0ZS1oZWFkZXItc2hvcnQtaGVpZ2h0OiA0MHB4O1xuXG4kdHJhbnNpdGlvbi1kdXJhdGlvbjogMTUwbXM7XG5cbiRtYWluLW1heC13aWR0aDogMTMwMHB4ICFkZWZhdWx0O1xuXG4kbWFpbi1tYXJnaW46IHZhcigtLW1haW4tbWFyZ2luKTtcbiRzaXRlLWhlYWRlci1oZWlnaHQ6IHZhcigtLXNpdGUtaGVhZGVyLWhlaWdodCk7XG5cbiRzaXRlLWhlYWRlci1tYXJnaW46IHZhcigtLXNpdGUtaGVhZGVyLW1hcmdpbik7XG5cbiRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHQ6IGNhbGMoI3skc2l0ZS1oZWFkZXItaGVpZ2h0fSArICN7JHNpdGUtaGVhZGVyLW1hcmdpbn0pO1xuIiwiLyogVW5pYm9hcmQ6IGtlZXAgdGhlIHNhbWUgcGFnZSBsYXlvdXQgYWNjcm9zcyBwYWdlcyAqL1xuXG4kbXEtYm9hcmQtcmVzaXphYmxlOiAkbXEtc21hbGw7XG4kbXEtY29sMS11bmlib2FyZDogJG1xLW5vdC1zbWFsbCAkbXEtcG9ydHJhaXQ7XG4kbXEtY29sMi11bmlib2FyZDogJG1xLXNtYWxsLCAkbXEtbGFuZHNjYXBlO1xuJG1xLWNvbDMtdW5pYm9hcmQ6ICRtcS14LWxhcmdlO1xuXG4vKiB3aGVuIHRoZSB3aWR0aCBpcyBhcHByb3ByaWF0ZSBmb3IgY29sMSwgYnV0IGxhbmRzY2FwZSBwcmV2ZW50cyBpdCAqL1xuJG1xLWNvbDItdW5pYm9hcmQtc3F1ZWV6ZTogJG1xLW5vdC1zbWFsbCAkbXEtbGFuZHNjYXBlO1xuXG4kY29sMy11bmlib2FyZC1zaWRlOiBtaW5tYXgoMjMwcHgsIDIwdncpO1xuJGNvbDMtdW5pYm9hcmQtdGFibGU6IG1pbm1heCgyNDBweCwgNDAwcHgpO1xuJGNvbDMtdW5pYm9hcmQtY29udHJvbHM6IDNyZW07XG5cbiRjb2wzLXVuaWJvYXJkLW1pbi13aWR0aDogY2FsYyg3MHZtaW4gKiB2YXIoLS1ib2FyZC1zY2FsZSkpO1xuJGNvbDMtdW5pYm9hcmQtbWF4LXdpZHRoOiBjYWxjKDEwMHZoICogdmFyKC0tYm9hcmQtc2NhbGUpIC0gI3skc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0fSAtICN7JGNvbDMtdW5pYm9hcmQtY29udHJvbHN9KTtcbiRjb2wzLXVuaWJvYXJkLXdpZHRoOiBtaW5tYXgoJGNvbDMtdW5pYm9hcmQtbWluLXdpZHRoLCAkY29sMy11bmlib2FyZC1tYXgtd2lkdGgpO1xuXG4kY29sMy11bmlib2FyZC1kZWZhdWx0LXNjYWxlOiAwLjk7XG5cbi8vIHpvb206IDg1JVxuJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1taW4td2lkdGg6IDUwMHB4O1xuJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1tYXgtd2lkdGg6IGNhbGMoMTAwdmggKiAjeyRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtc2NhbGV9IC0gI3skc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0fSAtICN7JGNvbDMtdW5pYm9hcmQtY29udHJvbHN9KTtcbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtd2lkdGg6IG1pbm1heCgjeyRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWluLXdpZHRofSwgI3skY29sMy11bmlib2FyZC1kZWZhdWx0LW1heC13aWR0aH0pO1xuXG4kY29sMi11bmlib2FyZC10YWJsZTogJGNvbDMtdW5pYm9hcmQtdGFibGU7XG4kY29sMi11bmlib2FyZC1jb250cm9sczogJGNvbDMtdW5pYm9hcmQtY29udHJvbHM7XG4kY29sMi11bmlib2FyZC13aWR0aDogJGNvbDMtdW5pYm9hcmQtd2lkdGg7XG4kY29sMi11bmlib2FyZC1kZWZhdWx0LXdpZHRoOiAkY29sMy11bmlib2FyZC1kZWZhdWx0LXdpZHRoO1xuXG4kY29sMi11bmlib2FyZC1zcXVlZXplLXRhYmxlOiBtaW5tYXgoMjAwcHgsIDI0MHB4KTtcbiRjb2wyLXVuaWJvYXJkLXNxdWVlemUtd2lkdGg6IG1pbm1heChjYWxjKDU1dm1pbiksIGNhbGMoMTAwdmggLSAjeyRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHR9IC0gI3skYmxvY2stZ2FwfSkpO1xuXG4kY29sMS11bmlib2FyZC1jb250cm9sczogJGNvbDItdW5pYm9hcmQtY29udHJvbHM7XG4iLCJAbWl4aW4gYm94LXJhZGl1cyB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemU7XG59XG5cbkBtaXhpbiBib3gtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogJGJveC1zaGFkb3c7XG59XG5cbkBtaXhpbiBib3gtbmVhdCB7XG4gIEBpbmNsdWRlIGJveC1yYWRpdXM7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3c7XG59XG5cbkBtaXhpbiBkZWJ1Zy16b29tLWlucHV0IHtcbiAgI3pvb20taW5wdXQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS16b29tLWVuYWJsZWQpIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgYm90dG9tOiAzcHg7XG4gICAgICByaWdodDogM3B4O1xuICAgICAgd2lkdGg6IDEwdnc7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uKCRwcm9wOiBhbGwsICRkdXI6ICR0cmFuc2l0aW9uLWR1cmF0aW9uKSB7XG4gIHRyYW5zaXRpb246ICRwcm9wICRkdXI7XG59XG5cbkBtaXhpbiBob3ZlcmZsb3cge1xuICBvdmVyZmxvdy15OiBhdXRvO1xuXG4gIEBtZWRpYSAoaG92ZXI6IGhvdmVyKSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICY6aG92ZXIge1xuICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGhpZGUge1xuICBkaXNwbGF5OiBub25lO1xuXG4gIC5ibGluZC1tb2RlICYge1xuICAgIGRpc3BsYXk6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIGVsbGlwc2lzIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG5cbkBtaXhpbiBjcm9zc3RhYmxlLWxhcmdlIHtcbiAgLmNyb3NzdGFibGVfX3VzZXJzIHtcbiAgICBmbGV4OiA3IDEgYXV0bztcbiAgfVxufVxuXG5AbWl4aW4gY3Jvc3N0YWJsZS1zbWFsbCB7XG4gIC5jcm9zc3RhYmxlX191c2VycyB7XG4gICAgZmxleDogMSAxIGF1dG87XG4gIH1cbn1cblxuLyogYXRtIG9ubHkgY2hyb21lIHN1cHBvcnRzIG1pbi1jb250ZW50LCBtYXgtY29udGVudCAqL1xuQG1peGluIHByb3Blci1ncmlkIHtcbiAgQHN1cHBvcnRzIChoZWlnaHQ6IG1heC1jb250ZW50KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGJvZHktZml4ZWQtc2Nyb2xsIHtcbiAgYm9keSB7XG4gICAgLyogcHJldmVudHMgc2Nyb2xsIGJhciBmbGlja2VyIHdoZW4gZHJhZ2dpbmcgYSBwaWVjZSBvdXQgKi9cbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gIH1cbn1cbiIsIiViYXNlLWZvbnQtZmFsbGJhY2sge1xuICBmb250LWZhbWlseTogJ05vdG8gU2FucycsIFNhbnMtU2VyaWY7XG59XG5cbiViYXNlLWZvbnQge1xuICBmb250LWZhbWlseTogJ05vdG8gU2Fucyc7XG59XG5cbiVyb2JvdG8ge1xuICBmb250LWZhbWlseTogJ1JvYm90byc7XG59XG5cbiVyb2JvdG8tZmF0IHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xuICBmb250LXdlaWdodDogNjAwO1xufVxuXG4lY2hlc3MtZm9udCB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBDaGVzcycsICdOb3RvIFNhbnMnO1xufVxuXG4lc2FuIHtcbiAgQGV4dGVuZCAlY2hlc3MtZm9udDtcblxuICAucGllY2UtbGV0dGVyICYge1xuICAgIEBleHRlbmQgJWJhc2UtZm9udDtcbiAgfVxufVxuXG4vKiB0ZXh0IHByaW50ZWQgZGlyZWN0bHkgb24gdGhlIHBhZ2UgYmFja2dyb3VuZCBkZXNlcnZlcyBzcGVjaWFsIHRyZWF0bWVudCAodHJhbnNwIHRoZW1lKSAqL1xuJXBhZ2UtZm9udCB7XG4gIGNvbG9yOiAkYy1mb250LXBhZ2U7XG59XG5cbiVwYWdlLXRleHQge1xuICBAZXh0ZW5kICVwYWdlLWZvbnQsICVwYWdlLXRleHQtc2hhZG93ICFvcHRpb25hbDtcbn1cblxuJXBhZ2UtbGluayB7XG4gIEBleHRlbmQgJXBhZ2UtbGluay1mb250ICFvcHRpb25hbDtcblxuICBAZXh0ZW5kICVwYWdlLXRleHQtc2hhZG93ICFvcHRpb25hbDtcbn1cblxuJW1ldGFsIHtcbiAgQGluY2x1ZGUgbWV0YWw7XG59XG5cbiVtZXRhbC1ob3ZlciB7XG4gIEBpbmNsdWRlIG1ldGFsLWhvdmVyO1xufVxuXG4lcGFnZS1tZXRhbCB7XG4gIEBpbmNsdWRlIHBhZ2UtbWV0YWw7XG59XG5cbiVwYWdlLW1ldGFsLWhvdmVyIHtcbiAgQGluY2x1ZGUgcGFnZS1tZXRhbDtcbn1cblxuJW1ldGFsLWJnIHtcbiAgQGluY2x1ZGUgbWV0YWwtYmc7XG59XG5cbiVhY3RpdmUtaW5zZXQtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAzcHggNHB4IGhzbGEoMCwgMCwgMCwgMC4xNSkgaW5zZXQ7XG59XG5cbiVhY3RpdmUge1xuICBAZXh0ZW5kICVhY3RpdmUtaW5zZXQtc2hhZG93O1xuXG4gIGJhY2tncm91bmQ6ICNiZDExMWY7XG4gIGNvbG9yOiAjZmZmO1xuICB0ZXh0LXNoYWRvdzogMXB4IDFweCAxcHggd2hpdGUgIWltcG9ydGFudDtcbn1cblxuI3RyYWluZXIgZ3JvdXAucmFkaW8gaW5wdXQ6Y2hlY2tlZCArIGxhYmVse1xuICBiYWNrZ3JvdW5kOiAjMDQ1NmJjO1xufVxuXG4lYWN0aXZlLWhvdmVyIHtcbiAgYmFja2dyb3VuZDogbWl4KHdoaXRlLCAkYy1hY2NlbnQsIDIwJSk7XG59XG5cbiVhY3RpdmUtc29mdCB7XG4gIEBleHRlbmQgJWFjdGl2ZS1pbnNldC1zaGFkb3c7XG5cbiAgYmFja2dyb3VuZDogIzA0NTZiYztcbiAgY29sb3I6ICNmZmZmZmY7XG4gIHRleHQtc2hhZG93OiAxcHggMXB4IDFweCAkYy1mb250LXNoYWRvdyAhaW1wb3J0YW50O1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuJWRyb3Bkb3duLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IC0xcHggNXB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG59XG5cbiVwb3B1cC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDE0cHggMjhweCByZ2JhKDAsIDAsIDAsIDAuMjUpLCAwIDEwcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMjIpO1xufVxuXG4lYnV0dG9uLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDVweCAwIGhzbGEoMCwgMCwgMCUsIDAuMjI1KTtcbn1cblxuJWJ1dHRvbi1yYWlzZWQtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCA0cHggMTBweCAwcHggaHNsYSgwLCAwLCAwLCAwLjIyNSk7XG59XG5cbiVidXR0b24tbm9uZSB7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgY29sb3I6ICRjLWZvbnQ7XG59XG5cbiVjaGVja2JveCB7XG4gIEBleHRlbmQgJWJveC1yYWRpdXM7XG5cbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICBiYWNrZ3JvdW5kOiAkYy1iZy1wYWdlO1xuICBib3JkZXI6IDFweCBzb2xpZCAkYy1iZy1sb3c7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogLjVlbTtcblxuICAmOmNoZWNrZWQge1xuICAgIGJhY2tncm91bmQ6ICMwNDU2YmM7XG4gICAgYm9yZGVyLWNvbG9yOiAjMDQ1NmJjO1xuICB9XG59XG5cbiVmb2N1cy1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDAgMTJweCAkYy1mb250LWRpbTtcbn1cblxuJW5vd3JhcC1oaWRkZW4ge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4lbm93cmFwLWVsbGlwc2lzIHtcbiAgQGV4dGVuZCAlZWxsaXBzaXM7XG5cbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuJWJveC1wYWRkaW5nIHtcbiAgcGFkZGluZzogNXZoIHZhcigtLWJveC1wYWRkaW5nKTtcbn1cblxuJWJveC1wYWRkaW5nLWhvcml6IHtcbiAgcGFkZGluZzogMCB2YXIoLS1ib3gtcGFkZGluZyk7XG59XG5cbiVicmVhay13b3JkIHtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbn1cblxuJWJyZWFrLXdvcmQtaGFyZCB7XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcblxuICAvKiBzdXBwb3J0OiBmaXJlZm94ICovXG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG59XG5cbiVicmVhay1ub3BlIHtcbiAgb3ZlcmZsb3ctd3JhcDogbm9ybWFsO1xuICB3b3JkLWJyZWFrOiBub3JtYWw7XG59XG5cbiVlbGxpcHNpcyB7XG4gIEBpbmNsdWRlIGVsbGlwc2lzO1xufVxuXG4lc3F1YXJlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAwO1xuICBwYWRkaW5nLWJvdHRvbTogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbiV2aWRlbyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogMDtcbiAgcGFkZGluZy1ib3R0b206IDU2LjI1JTtcblxuICAvKiAxNi85ICovXG4gIC8vIHBhZGRpbmctYm90dG9tOiA3NSU7IC8qIDQvMyAqL1xuICB3aWR0aDogMTAwJTtcblxuICA+ICoge1xuICAgIEBleHRlbmQgJWFicy0xMDA7XG5cbiAgICBib3JkZXI6IG5vbmU7XG4gIH1cbn1cblxuJWRhdGEtaWNvbiB7XG4gIGZvbnQtc2l6ZTogMS4yZW07XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGZvbnQtZmFtaWx5OiAnbGljaGVzcyc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIHNwZWFrOiBub25lO1xuICBjb250ZW50OiBhdHRyKGRhdGEtaWNvbik7XG4gIG9wYWNpdHk6IDAuOTtcbn1cblxuJWRhdGEtaWNvbi10b3Age1xuICAmOjpiZWZvcmUge1xuICAgIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDtcbiAgfVxufVxuXG4lZnVsbHNjcmVlbi1tYXNrIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIGJhY2tncm91bmQ6ICRjLXBhZ2UtbWFzaztcbiAgei1pbmRleDogeihcImZ1bGxzY3JlZW4tbWFza1wiKTtcbn1cblxuJWxpbmstb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB6LWluZGV4OiB6KFwibGluay1vdmVybGF5XCIpO1xufVxuXG4lYWJzLTEwMCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cbiIsIiVmbGV4LXdyYXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xufVxuXG4lZmxleC1jZW50ZXIge1xuICAvKiBleHRlbmRzICVmbGV4LXdyYXAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuJWZsZXgtY2VudGVyLW5vd3JhcCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuJWZsZXgtYmV0d2VlbiB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtY2VudGVyICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuJWZsZXgtYmV0d2Vlbi1ub3dyYXAge1xuICAvKiBleHRlbmRzICVmbGV4LWNlbnRlciAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuJWZsZXgtYmV0d2Vlbi1zdHJldGNoIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbn1cblxuJWZsZXgtYXJvdW5kIHtcbiAgLyogZXh0ZW5kcyAlZmxleC1jZW50ZXIgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG59XG5cbiVmbGV4LWNvbHVtbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogY29sdW1uO1xufVxuIiwiJWJveC1yYWRpdXMge1xuICBAaW5jbHVkZSBib3gtcmFkaXVzO1xufVxuXG4lYm94LXJhZGl1cy1mb3JjZSB7XG4gIEBleHRlbmQgJWJveC1yYWRpdXM7XG5cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAvKiBoZWxwcyB3aXRoIGNsaXBwaW5nIGJhY2tncm91bmQgaW50byBib3JkZXItcmFkaXVzICovXG59XG5cbiVib3gtcmFkaXVzLWxlZnQge1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplIDAgMCAkYm94LXJhZGl1cy1zaXplO1xufVxuXG4lYm94LXJhZGl1cy1yaWdodCB7XG4gIGJvcmRlci1yYWRpdXM6IDAgJGJveC1yYWRpdXMtc2l6ZSAkYm94LXJhZGl1cy1zaXplIDA7XG59XG5cbiVib3gtcmFkaXVzLXRvcCB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemUgJGJveC1yYWRpdXMtc2l6ZSAwIDA7XG59XG5cbiVib3gtcmFkaXVzLWJvdHRvbSB7XG4gIGJvcmRlci1yYWRpdXM6IDAgMCAkYm94LXJhZGl1cy1zaXplICRib3gtcmFkaXVzLXNpemU7XG59XG5cbiVib3gtcmFkaXVzLXRvcC1sZWZ0IHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZSAwIDAgMDtcbn1cblxuJWJveC1yYWRpdXMtdG9wLXJpZ2h0IHtcbiAgYm9yZGVyLXJhZGl1czogMCAkYm94LXJhZGl1cy1zaXplIDAgMDtcbn1cblxuJWJveC1zaGFkb3cge1xuICBAaW5jbHVkZSBib3gtc2hhZG93O1xufVxuXG4lYm94LW5lYXQge1xuICBAZXh0ZW5kICVib3gtc2hhZG93LCAlYm94LXJhZGl1cztcbn1cblxuJWJveC1uZWF0LXRvcCB7XG4gIEBleHRlbmQgJWJveC1zaGFkb3csICVib3gtcmFkaXVzLXRvcDtcbn1cblxuJWJveC1uZWF0LWZvcmNlIHtcbiAgQGV4dGVuZCAlYm94LXNoYWRvdywgJWJveC1yYWRpdXMtZm9yY2U7XG59XG4iLCIkdnAtbWluLXdpZHRoOiAzMjBweCAhZGVmYXVsdDtcbiR2cC1tYXgtd2lkdGg6IDEyMDBweCAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHN0cmlwLXVuaXQoJHZhbHVlKSB7XG4gIEByZXR1cm4gJHZhbHVlIC8gKCR2YWx1ZSAqIDAgKyAxKTtcbn1cblxuQG1peGluIGZsdWlkLXNpemUoJHByb3AsICRtaW4tc2l6ZSwgJG1heC1zaXplLCAkbWluLXZ3OiAkdnAtbWluLXdpZHRoLCAkbWF4LXZ3OiAkdnAtbWF4LXdpZHRoKSB7XG4gICR1MTogdW5pdCgkbWluLXZ3KTtcbiAgJHUyOiB1bml0KCRtYXgtdncpO1xuICAkdTM6IHVuaXQoJG1pbi1zaXplKTtcbiAgJHU0OiB1bml0KCRtYXgtc2l6ZSk7XG5cbiAgQGlmICR1MSA9PSAkdTIgYW5kICR1MSA9PSAkdTMgYW5kICR1MSA9PSAkdTQge1xuICAgICYge1xuICAgICAgI3skcHJvcH06ICRtaW4tc2l6ZTtcblxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4tdncpIHtcbiAgICAgICAgI3skcHJvcH06IGNhbGMoI3skbWluLXNpemV9ICsgI3tzdHJpcC11bml0KCRtYXgtc2l6ZSAtICRtaW4tc2l6ZSl9ICogKCgxMDB2dyAtICN7JG1pbi12d30pIC8gI3tzdHJpcC11bml0KCRtYXgtdncgLSAkbWluLXZ3KX0pKTtcbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6ICRtYXgtdncpIHtcbiAgICAgICAgI3skcHJvcH06ICRtYXgtc2l6ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBlcnJvciBcImZsdWlkLXNpemUgcmVxdWlyZXMgdGhhdCBhbGwgdmFsdWVzIGhhdmUgdGhlIHNhbWUgdW5pdFwiO1xuICB9XG59XG4iLCJAaW1wb3J0IFwiY29vcmRzLWNvbG9yc1wiO1xuXG5jb29yZHMge1xuICAvKiBoYW5kbGUgaGlkZGVuIGNvb3JkcyAqL1xuICAuY29vcmRzLW5vICYge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAvKiBoYW5kbGUgaW5uZXIgY29vcmRzICovXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgQGluY2x1ZGUgZmx1aWQtc2l6ZShcImZvbnQtc2l6ZVwiLCA4cHgsIDEycHgpO1xuXG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1zaGFkb3c6IDAgMXB4IDJweCAjMDAwO1xuICBmb250LXdlaWdodDogYm9sZDtcblxuICAmLnJhbmtzIHtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbi1yZXZlcnNlO1xuICAgIHRvcDogMXB4O1xuICAgIHJpZ2h0OiAwO1xuXG4gICAgLy8gYSBuZWdhdGl2ZSB2YWx1ZSBjcmVhdGVzIGVtcHR5IHNwYWNlIG9uIHRoZSByaWdodCBzaWRlIGluIG1vYmlsZSBicm93c2Vyc1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogLjhlbTtcblxuICAgICYuYmxhY2sge1xuICAgICAgZmxleC1mbG93OiBjb2x1bW47XG4gICAgfVxuICB9XG5cbiAgJi5maWxlcyB7XG4gICAgYm90dG9tOiAwcHg7XG4gICAgbGVmdDogMDtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIGZsZXgtZmxvdzogcm93O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMS40ZW07XG5cbiAgICAmLmJsYWNrIHtcbiAgICAgIGZsZXgtZmxvdzogcm93LXJldmVyc2U7XG4gICAgfVxuXG4gICAgY29vcmQge1xuICAgICAgcGFkZGluZy1sZWZ0OiA0cHg7XG4gICAgfVxuICB9XG5cbiAgY29vcmQge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICB9XG5cbiAgLyogbmVnYXRlIGlubmVyIGNvb3JkcyBjb2xvcnMgKi9cbiAgLmlzM2QgLmNnLXdyYXAgY29vcmRzIGNvb3JkIHtcbiAgICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuICAgIHRleHQtc2hhZG93OiAwIDFweCAycHggIzAwMCAhaW1wb3J0YW50O1xuICB9XG5cbiAgLmlzM2QgLmNnLXdyYXAgY29vcmRzLmZpbGVzIHtcbiAgICBib3R0b206IGNhbGMoMXB4IC0gMi41JSk7XG5cbiAgICBjb29yZCB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDNweDtcbiAgICB9XG4gIH1cbn1cblxuQGluY2x1ZGUgY29vcmRzLWNvbG9ycztcblxuLyogaGFuZGxlIG91dGVyIGNvb3JkcyAqL1xuQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMi11bmlib2FyZCkge1xuICAuY29vcmRzLW91dCBjb29yZHMge1xuICAgIHRleHQtc2hhZG93OiBub25lO1xuXG4gICAgJi5yYW5rcyB7XG4gICAgICByaWdodDogLTE1cHg7XG4gICAgICB0b3A6IDA7XG4gICAgICB3aWR0aDogMTJweDtcblxuICAgICAgY29vcmQge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNDIlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmZpbGVzIHtcbiAgICAgIGJvdHRvbTogLTE1cHg7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cblxuICAgIGNvb3JkIHtcbiAgICAgIGNvbG9yOiAkYy1mb250LXBhZ2UgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cbiIsIkBtaXhpbiBjb29yZHMtY29sb3JzIHtcbiAgOnJvb3Qge1xuICAgIC0tY2ctY29vcmQtY29sb3Itd2hpdGU6ICNmZmY7XG4gICAgLS1jZy1jb29yZC1jb2xvci1ibGFjazogI2ZmZjtcbiAgICAtLWNnLWNvb3JkLXNoYWRvdzogMCAxcHggMnB4ICMwMDA7XG4gIH1cblxuICBjb29yZHMge1xuICAgIHRleHQtc2hhZG93OiB2YXIoLS1jZy1jb29yZC1zaGFkb3cpO1xuICB9XG5cbiAgLm9yaWVudGF0aW9uLXdoaXRlIC5maWxlcyBjb29yZDpudGgtY2hpbGQoMm4rMSksXG4gIC5vcmllbnRhdGlvbi13aGl0ZSAucmFua3MgY29vcmQ6bnRoLWNoaWxkKDJuKSxcbiAgLm9yaWVudGF0aW9uLWJsYWNrIC5maWxlcyBjb29yZDpudGgtY2hpbGQoMm4pLFxuICAub3JpZW50YXRpb24tYmxhY2sgLnJhbmtzIGNvb3JkOm50aC1jaGlsZCgybisxKSB7XG4gICAgY29sb3I6IHZhcigtLWNnLWNvb3JkLWNvbG9yLXdoaXRlKTtcbiAgfVxuXG4gIC5vcmllbnRhdGlvbi13aGl0ZSAuZmlsZXMgY29vcmQ6bnRoLWNoaWxkKDJuKSxcbiAgLm9yaWVudGF0aW9uLXdoaXRlIC5yYW5rcyBjb29yZDpudGgtY2hpbGQoMm4rMSksXG4gIC5vcmllbnRhdGlvbi1ibGFjayAuZmlsZXMgY29vcmQ6bnRoLWNoaWxkKDJuKzEpLFxuICAub3JpZW50YXRpb24tYmxhY2sgLnJhbmtzIGNvb3JkOm50aC1jaGlsZCgybikge1xuICAgIGNvbG9yOiB2YXIoLS1jZy1jb29yZC1jb2xvci1ibGFjayk7XG4gIH1cbn1cbiIsImJvZHkge1xuICAtLWJvYXJkLXNjYWxlOiAxO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXpvb20tZW5hYmxlZCkge1xuICAgIC8vIC0tem9vbTogODA7IGRlZmluZWQgaW4gdGhlIEhUTUwsIGxvYWRlZCBmcm9tIHNlcnZlclxuICAgIC0tYm9hcmQtc2NhbGU6IGNhbGMoKHZhcigtLXpvb20pIC8gMTAwKSAqIDAuNyArIDAuMyk7XG4gIH1cbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMS11bmlib2FyZCkge1xuICBib2R5IHtcbiAgICAtLWNvbDE6IDE7XG4gIH1cblxuICAubWFpbi1ib2FyZCBjZy1ib2FyZCB7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgfVxufVxuIiwiYm9keS5yZXNpemluZyB7XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG5jZy1yZXNpemUge1xuICAkcmVzaXplLXdpZHRoOiAyMnB4O1xuXG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtYm9hcmQtcmVzaXphYmxlKSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAjezEzcHggLSAkcmVzaXplLXdpZHRofTtcbiAgICBib3R0b206ICN7MTNweCAtICRyZXNpemUtd2lkdGh9O1xuICAgIHdpZHRoOiAkcmVzaXplLXdpZHRoO1xuICAgIGhlaWdodDogJHJlc2l6ZS13aWR0aDtcbiAgICBjdXJzb3I6IG53c2UtcmVzaXplO1xuXG4gICAgJjo6YmVmb3JlLCAmOjphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAjMDAwO1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDogMTJweDtcbiAgICAgIGhlaWdodDogMXB4O1xuICAgIH1cblxuICAgICY6OmJlZm9yZSB7XG4gICAgICB3aWR0aDogNXB4O1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoN3B4LCA4cHgpIHJvdGF0ZSgtNDVkZWcpO1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDFweCwgNnB4KSByb3RhdGUoLTQ1ZGVnKTtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGJhY2tncm91bmQ6IGZhZGUtb3V0KCRjLWFjY2VudCwgMC41KTtcbiAgICB9XG5cbiAgICAucmVzaXppbmcgJiB7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICBiYWNrZ3JvdW5kOiBmYWRlLW91dCgkYy1zZWNvbmRhcnksIDAuNSk7XG4gICAgfVxuICB9XG59XG4iLCIuY29sb3ItaWNvbiB7XG4gIEBpZiAkdGhlbWUtbGlnaHQge1xuICAgICYud2hpdGU6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIktcIjtcbiAgICB9XG5cbiAgICAmLmJsYWNrOjpiZWZvcmUge1xuICAgICAgY29udGVudDogXCJKXCI7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAmLndoaXRlOjpiZWZvcmUge1xuICAgICAgY29udGVudDogXCJKXCI7XG4gICAgfVxuXG4gICAgJi5ibGFjazo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6IFwiS1wiO1xuICAgIH1cbiAgfVxuXG4gICYucmFuZG9tOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwibFwiO1xuICB9XG59XG4iLCJAaW5jbHVkZSBjcm9zc3RhYmxlLXNtYWxsO1xuXG4uY3Jvc3N0YWJsZSB7XG4gIEBleHRlbmQgJWJveC1uZWF0LWZvcmNlO1xuXG4gIHdpZHRoOiAxMDAlO1xuICBsaW5lLWhlaWdodDogMS45ZW07XG4gIGRpc3BsYXk6IGZsZXg7XG5cbiAgZmlsbCxcbiAgcG92cyB7XG4gICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICB9XG5cbiAgcG92cyxcbiAgJl9fdXNlcnMsXG4gICZfX3Njb3JlLFxuICAmX19tYXRjaHVwIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuXG4gICZfX3VzZXJzLFxuICAmX19zY29yZSB7XG4gICAgQGV4dGVuZCAlbWV0YWw7XG4gIH1cblxuICAmX191c2VycyB7XG4gICAgQGV4dGVuZCAlZWxsaXBzaXM7XG5cbiAgICBtYXgtd2lkdGg6IDQwdnc7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgIGEge1xuICAgICAgcGFkZGluZy1sZWZ0OiAkYmxvY2stZ2FwO1xuICAgIH1cbiAgfVxuXG4gICZfX3Njb3JlIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBmb250LXdlaWdodDogYm9sZDtcblxuICAgIHNwYW4ge1xuICAgICAgcGFkZGluZzogMCAkYmxvY2stZ2FwO1xuICAgIH1cbiAgfVxuXG4gICZfX21hdGNodXAge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1wcmltYXJ5LCAkYy1iZy1ib3gsIDIwJSk7XG4gIH1cblxuICBwb3ZzIHtcbiAgICBhIHtcbiAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICBAZXh0ZW5kICVtZXRhbDtcblxuICAgICAgYSB7XG4gICAgICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhLmxvc3Mge1xuICAgICAgb3BhY2l0eTogLjI7XG4gICAgfVxuXG4gICAgJi5jdXJyZW50IGEge1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLWFjY2VudCwgJGMtYmctYm94LCA3MCUpO1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgJi5uZXcge1xuICAgICAgYm9yZGVyOiAkYy1ib3JkZXI7XG4gICAgfVxuXG4gICAgYS5sb3NzIHtcbiAgICAgIG9wYWNpdHk6IC4yO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLW5vdC14LXNtYWxsKSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICAmOm50aC1sYXN0LWNoaWxkKC1uKzEyKSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnNlcCB7XG4gICAgQGV4dGVuZCAlYm94LXJhZGl1cy1sZWZ0O1xuXG4gICAgYm9yZGVyLWxlZnQ6ICRib3JkZXI7XG4gICAgbWFyZ2luLWxlZnQ6IC4zZW07XG4gIH1cblxuICAud2luIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogJGMtZ29vZDtcbiAgfVxuXG4gIC5sb3NzIHtcbiAgICBjb2xvcjogJGMtYmFkO1xuICB9XG5cbiAgLnVuYXZhaWxhYmxlIHtcbiAgICBtYXJnaW4tdG9wOiA0MHB4O1xuICAgIG9wYWNpdHk6IDAuNztcbiAgfVxufVxuIiwiLmZidCB7XG4gIEBleHRlbmQgJWJ1dHRvbi1ub25lO1xuXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG5cbiAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAgICY6aG92ZXI6bm90KC5kaXNhYmxlZCk6bm90KFtkaXNhYmxlZF0pIHtcbiAgICAgIGJhY2tncm91bmQ6ICNlZDFjMjQ7XG4gICAgICBjb2xvcjogI2ZmZjtcbiAgICB9XG4gIH1cblxuICAmLmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZDogI2JkMTExZiAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAjZmZmO1xuICB9XG5cbiAgJi5kaXNhYmxlZCxcbiAgJltkaXNhYmxlZF0ge1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gIH1cbn1cbiIsIkBrZXlmcmFtZXMgZ2xvd2luZyB7XG4gIDQyJSB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgfVxuXG4gIDUwJSB7XG4gICAgYmFja2dyb3VuZDogbWl4KCRjLWxpbmssICRjLWJnLWJveCwgMjAlKTtcbiAgfVxuXG4gIDU4JSB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgfVxufVxuXG4uZ2xvd2luZyB7XG4gIGFuaW1hdGlvbjogZ2xvd2luZyAycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cbiIsIkBrZXlmcmFtZXMgYmFyLWdsaWRlci1hbmltIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTMwMHB4KTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMTAwcHgpO1xuICB9XG59XG5cbi5iYXItZ2xpZGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiA3MHB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpKTtcbiAgICBhbmltYXRpb246IGJhci1nbGlkZXItYW5pbSAzcyBsaW5lYXIgaW5maW5pdGU7XG4gIH1cbn1cbiIsIi5ub3ctcGxheWluZyB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIC0tbnAtbWluLXdpZHRoOiAyMDBweDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ub3QteHgtc21hbGwpIHtcbiAgICAtLW5wLW1pbi13aWR0aDogNTAlO1xuICB9XG5cblxuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCh2YXIoLS1ucC1taW4td2lkdGgpLCAxZnIpKTtcblxuICA+IGEge1xuICAgIGNvbG9yOiAkYy1mb250O1xuICAgIHBhZGRpbmc6IC4zZW07XG4gIH1cblxuICAuaW5kaWNhdG9yIHtcbiAgICBjb2xvcjogJGMtYWNjZW50O1xuICAgIG1hcmdpbi10b3A6IC0zcHg7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICBjZy1ib2FyZCB7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgfVxufVxuIiwiLmNvbnRleHQtc3RyZWFtZXJzIHtcbiAgbWF4LWhlaWdodDogMjB2aDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbn1cblxuLmNvbnRleHQtc3RyZWFtZXIge1xuICBAZXh0ZW5kICVub3dyYXAtaGlkZGVuLCAlYm94LXJhZGl1cy1ib3R0b20sICVib3gtc2hhZG93LCAlZmxleC1jZW50ZXItbm93cmFwO1xuXG4gIGhlaWdodDogMi4yZW07XG4gIGNvbG9yOiAkYy1zZWNvbmRhcnktb3ZlciAhaW1wb3J0YW50O1xuICBiYWNrZ3JvdW5kOiBtaXgoJGMtc2Vjb25kYXJ5LCAkYy1iZy1wYWdlLCA2MCUpO1xuXG4gIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBmb250LXNpemU6IDEuM2VtO1xuICAgIG1hcmdpbi1sZWZ0OiAuNGVtO1xuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctcGFnZSwgODAlKTtcbiAgfVxufVxuIiwiLmNtbi10b2dnbGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG1hcmdpbi1sZWZ0OiAtOTk5OTlweDtcbn1cblxuLmNtbi10b2dnbGUgKyBsYWJlbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgb3V0bGluZTogbm9uZTtcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuLmNtbi10b2dnbGUgKyBsYWJlbCB7XG4gIHBhZGRpbmc6IDFweDtcbiAgd2lkdGg6IDQwcHg7XG4gIGhlaWdodDogMjRweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGMtYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAyNHB4O1xufVxuXG4uY21uLXRvZ2dsZSArIGxhYmVsOjpiZWZvcmUsXG4uY21uLXRvZ2dsZSArIGxhYmVsOjphZnRlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMXB4O1xuICBsZWZ0OiAxcHg7XG4gIGJvdHRvbTogMXB4O1xuICBjb250ZW50OiBcIlwiO1xufVxuXG4uY21uLXRvZ2dsZSArIGxhYmVsOjpiZWZvcmUge1xuICByaWdodDogMXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1iYWQ7XG4gIGJvcmRlci1yYWRpdXM6IDI0cHg7XG59XG5cbi5jbW4tdG9nZ2xlOmZvY3VzICsgbGFiZWw6OmJlZm9yZSB7XG4gIEBleHRlbmQgJWZvY3VzLXNoYWRvdztcbn1cblxuLmNtbi10b2dnbGUtLXN1YnRsZSArIGxhYmVsOjpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmQxMTFmO1xufVxuXG4uY21uLXRvZ2dsZTpob3ZlciArIGxhYmVsOjpiZWZvcmUge1xuICBAZXh0ZW5kICVmb2N1cy1zaGFkb3c7XG5cbiAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kKTtcbn1cblxuLmNtbi10b2dnbGUgKyBsYWJlbDo6YWZ0ZXIge1xuICBAZXh0ZW5kICVtZXRhbDtcblxuICB3aWR0aDogMjJweDtcbiAgYm9yZGVyLXJhZGl1czogMTAwJTtcbiAgYm94LXNoYWRvdzogMCAxcHggMi41cHggcmdiYSgwLCAwLCAwLCAwLjMpO1xufVxuXG4uY21uLXRvZ2dsZTpob3ZlciArIGxhYmVsOjphZnRlciB7XG4gIEBleHRlbmQgJW1ldGFsLWhvdmVyO1xuXG4gIEBpbmNsdWRlIHRyYW5zaXRpb24obWFyZ2luKTtcbn1cblxuLmNtbi10b2dnbGU6Y2hlY2tlZCArIGxhYmVsOjpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1nb29kO1xufVxuXG4uY21uLXRvZ2dsZTpjaGVja2VkICsgbGFiZWw6OmFmdGVyIHtcbiAgbWFyZ2luLWxlZnQ6IDE2cHg7XG59XG4iLCIudmFyaWFudC1yYWNpbmdLaW5ncyAuY2ctd3JhcCB7XG4gICYuY2ctd3JhcCBjZy1jb250YWluZXI6OmJlZm9yZSB7XG4gICAgQGV4dGVuZCAlcG9wdXAtc2hhZG93O1xuXG4gICAgYmFja2dyb3VuZDogaHNsYSgwLCAwJSwgOTAlLCAwLjIpO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTIuNSU7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgei1pbmRleDogMTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxuXG4gICYub3JpZW50YXRpb24td2hpdGUgY2ctY29udGFpbmVyOjpiZWZvcmUge1xuICAgIHRvcDogMDtcbiAgfVxuXG4gICYub3JpZW50YXRpb24tYmxhY2sgY2ctY29udGFpbmVyOjpiZWZvcmUge1xuICAgIGJvdHRvbTogMDtcbiAgfVxufVxuXG4udmFyaWFudC1raW5nT2ZUaGVIaWxsIGNnLWNvbnRhaW5lcjo6YmVmb3JlIHtcbiAgd2lkdGg6IDI1JTtcbiAgaGVpZ2h0OiAyNSU7XG4gIGJveC1zaGFkb3c6IDAgMCAxMHB4IHJnYmEoMCwgMCwgMCwgMC43KTtcbiAgYmFja2dyb3VuZDogaHNsYSgwLCAwJSwgOTAlLCAwLjIpO1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDM3LjUlO1xuICBsZWZ0OiAzNy41JTtcbiAgei1pbmRleDogMTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4iLCIjcHJvbW90aW9uLWNob2ljZSB7XG4gIEBleHRlbmQgJWFicy0xMDA7XG5cbiAgYmFja2dyb3VuZDogZmFkZS1vdXQoJGMtYmctcGFnZSwgMC4zKTtcbiAgei1pbmRleDogeihcImNnX19wcm9tb3Rpb25cIik7XG5cbiAgc3F1YXJlIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNiMGIwYjA7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDI1cHggM3B4ICM4MDgwODA7XG5cbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuICB9XG5cbiAgcGllY2Uge1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgIG9wYWNpdHk6IDE7XG5cbiAgICAvKiBjYW5jZWxzIGJsaW5kZm9sZCAqL1xuICB9XG5cbiAgLmlzMmQgJiBwaWVjZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAgIHRyYW5zZm9ybTogc2NhbGUoMC44KTtcbiAgfVxuXG4gIHNxdWFyZTpob3ZlciB7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDQ4cHggOHB4ICRjLWFjY2VudDtcbiAgICBib3JkZXItcmFkaXVzOiAwJTtcbiAgfVxuXG4gIC5pczJkICYgc3F1YXJlOmhvdmVyIHBpZWNlIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn1cbiIsIi5ibGluZGZvbGQge1xuICAmLm1haW4tYm9hcmQgcGllY2UsXG4gIC5ub3ctcGxheWluZyBwaWVjZSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gICYubWFpbi1ib2FyZCAuY2hlY2sge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL2Jhc2Uvc2Nyb2xsYmFyXCI7XG5cbkBpbXBvcnQgXCJ0YWJcIjtcbkBpbXBvcnQgXCJtZW1iZXJzXCI7XG5AaW1wb3J0IFwiZGlzY3Vzc2lvblwiO1xuQGltcG9ydCBcInBhbGFudGlyXCI7XG5cbi5tY2hhdCB7XG4gIEBleHRlbmQgJWJveC1uZWF0LWZvcmNlLCAlZmxleC1jb2x1bW47XG5cbiAgZ3JpZC1hcmVhOiBjaGF0O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHN0cmV0Y2g7XG5cbiAgJl9fY29udGVudCB7XG4gICAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG5cbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICYubm90ZSB0ZXh0YXJlYSB7XG4gICAgICBmb250LXNpemU6IC45ZW07XG4gICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjdlbTtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICByZXNpemU6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgbWluLWhlaWdodDogMTVlbTtcbn1cbiIsImJvZHkgOjotd2Via2l0LXNjcm9sbGJhcixcbmJvZHkgOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIge1xuICB3aWR0aDogLjVyZW07XG4gIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbn1cblxuYm9keSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgYmFja2dyb3VuZDogJGMtc2hhZGU7XG59XG5cbmJvZHkgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlcixcbmJvZHkgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjphY3RpdmUge1xuICBiYWNrZ3JvdW5kOiAkYy1mb250LWRpbW1lcjtcbn1cbiIsIi5tY2hhdCB7XG4gICZfX3RhYnMge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH1cblxuICAmX190YWIge1xuICAgIEBleHRlbmQgJXJvYm90bywgJW5vd3JhcC1oaWRkZW4sICVib3gtcmFkaXVzLXRvcDtcblxuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAuNGVtIDEwcHg7XG5cbiAgICAvLyBiYWNrZ3JvdW5kOiAkYy1zaGFkZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgY29sb3I6ICRjLWZvbnQtcGFnZTtcblxuICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1hY2NlbnQsICRjLWJnLWJveCwgMTUlKTtcbiAgICB9XG5cbiAgICAmLWFjdGl2ZSB7XG4gICAgICBjb2xvcjogJGMtZm9udDtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIGlucHV0IHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgIEBleHRlbmQgJWNoZWNrYm94O1xuICAgIH1cblxuICAgICYtYWN0aXZlIGlucHV0IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIHNwYW4ge1xuICAgICAgQGV4dGVuZCAlbm93cmFwLWVsbGlwc2lzO1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgJi1vcHRpb25hbCAubWNoYXRfX3RhYi5kaXNjdXNzaW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG59XG4iLCIuY2hhdF9fbWVtYmVycyB7XG4gIEBleHRlbmQgJXBhZ2UtdGV4dDtcblxuICBmb250LXNpemU6IC45ZW07XG5cbiAgLy8gbWluLWhlaWdodDogNWVtO1xuICAvLyBtYXgtaGVpZ2h0OiA5ZW07XG4gIGhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbiIsIi5tY2hhdCB7XG4gICZfX21lc3NhZ2VzIHtcbiAgICBAZXh0ZW5kICVicmVhay13b3JkO1xuXG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgbWF4LWhlaWdodDogNTB2aDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDMtdW5pYm9hcmQpIHtcbiAgICAgIG1heC1oZWlnaHQ6IG5vbmU7XG4gICAgfVxuXG5cbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICBjdXJzb3I6IGluaXRpYWw7XG4gICAgZm9udC1zaXplOiAuOWVtO1xuXG4gICAgbGkge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgcGFkZGluZzogLjVlbSAwIC41ZW0gMTBweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjJlbTtcbiAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgICAgIHVzZXItc2VsZWN0OiB0ZXh0O1xuICAgIH1cblxuICAgIC5kZWxldGVkIHtcbiAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICB9XG5cbiAgICAuc3lzdGVtIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgb3BhY2l0eTogMC44O1xuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgZm9udC1zaXplOiAuOWVtO1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmNvbG9yLFxuICAgIC51c2VyLWxpbmsge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IC0xcHg7XG4gICAgICBtYXJnaW4tcmlnaHQ6IC40ZW07XG4gICAgfVxuXG4gICAgLnV0aXRsZSB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDNweDtcbiAgICB9XG5cbiAgICBhOm5vdCgudXNlci1saW5rKSB7XG4gICAgICBAZXh0ZW5kICVyb2JvdG87XG4gICAgfVxuXG4gICAgaSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA1cHg7XG4gICAgICByaWdodDogMDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIG1hcmdpbi1yaWdodDogM3B4O1xuICAgICAgcGFkZGluZzogNHB4IDVweDtcbiAgICAgIG9wYWNpdHk6IDAuNztcbiAgICAgIGNvbG9yOiAkYy1hY2NlbnQ7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxpOmhvdmVyIGkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB0ZXh0LXNoYWRvdzogMCAwIDJweCAkYy1iZy1ib3gsIDAgMCA1cHggJGMtYmctYm94LCAwIDAgMTBweCAkYy1iZy1ib3g7XG4gICAgfVxuICB9XG5cbiAgJl9fc2F5IHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBib3JkZXI6IDA7XG4gICAgYm9yZGVyLXRvcDogJGJvcmRlcjtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIHBhZGRpbmc6IDNweCAyMHB4IDNweCA0cHg7XG5cbiAgICAmLndoaXNwZXIge1xuICAgICAgY29sb3I6ICRjLWdvb2Q7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICB9XG4gIH1cbn1cbiIsIkBrZXlmcmFtZXMgcGFsYW50aXItZ2xvd2luZyB7XG4gIDQwJSB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgfVxuXG4gIDUwJSB7XG4gICAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctYm94LCAzMCUpO1xuICB9XG5cbiAgNjAlIHtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtcHJpbWFyeSwgJGMtYmctYm94LCAzMCUpO1xuICB9XG5cbiAgNzAlIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICB9XG59XG5cbi5wYWxhbnRpciB7XG4gIGZsZXg6IDAgMSBhdXRvO1xuICBhbmltYXRpb246IHBhbGFudGlyLWdsb3dpbmcgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgYm9yZGVyLXJhZGl1czogMCAzcHggMCAwO1xuXG4gICYtc2xvdCB7XG4gICAgYW5pbWF0aW9uOiBub25lO1xuICAgIG9wYWNpdHk6IC42O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuXG4gICYtb2ZmIHtcbiAgICBhbmltYXRpb246IG5vbmU7XG4gIH1cblxuICAmLW9uIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1nb29kO1xuICAgIGNvbG9yOiAkYy1nb29kLW92ZXI7XG4gICAgYW5pbWF0aW9uOiBub25lO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iYWQgIWltcG9ydGFudDtcbiAgICAgIGNvbG9yOiAkYy1iYWQtb3ZlciAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gICY6OmFmdGVyIHtcbiAgICB0b3A6IDFweDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgfVxufVxuIiwiLm1jaGF0IHtcbiAgJl9fcHJlc2V0cyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgICBsaW5lLWhlaWdodDogMS40ZW07XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgICBzcGFuIHtcbiAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICBib3JkZXI6ICRib3JkZXI7XG4gICAgICBib3JkZXItd2lkdGg6IDFweCAxcHggMCAwO1xuICAgICAgZm9udC1zaXplOiAuOWVtO1xuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAgICAgJi5kaXNhYmxlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1hY2NlbnQsICRjLWJnLWJveCwgMTUlKTtcbiAgICAgICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICB9XG5cbiAgICAgICY6bm90KC5kaXNhYmxlZCk6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYy1hY2NlbnQ7XG4gICAgICAgIGNvbG9yOiAkYy1hY2NlbnQtb3ZlcjtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCJjb25zdGFudHNcIjtcbkBpbXBvcnQgXCJsYXlvdXRcIjtcbkBpbXBvcnQgXCJhcHAtbGF5b3V0XCI7XG5AaW1wb3J0IFwiemVuXCI7XG5AaW1wb3J0IFwic2lkZVwiO1xuQGltcG9ydCBcIm1ldGFcIjtcbkBpbXBvcnQgXCJ0YWJsZVwiO1xuQGltcG9ydCBcInVzZXJcIjtcbkBpbXBvcnQgXCJjbG9ja1wiO1xuQGltcG9ydCBcIm1hdGVyaWFsXCI7XG5AaW1wb3J0IFwibW92ZXNcIjtcbkBpbXBvcnQgXCJjb250cm9sXCI7XG5AaW1wb3J0IFwiaWNvblwiO1xuQGltcG9ydCBcIm5vdy1wbGF5aW5nXCI7XG5AaW1wb3J0IFwia2V5Ym9hcmQtbW92ZVwiO1xuQGltcG9ydCBcImZvcmVjYXN0LWluZm9cIjtcbiIsIi8vIGxheW91dFxuJG1xLWNvbDE6ICRtcS1jb2wxLXVuaWJvYXJkO1xuJG1xLWNvbDI6ICRtcS1jb2wyLXVuaWJvYXJkO1xuJG1xLWNvbDM6ICRtcS1jb2wzLXVuaWJvYXJkO1xuXG4kY29sMS1wbGF5ZXItY2xvY2staGVpZ2h0OiA1MHB4O1xuJGNvbDEtbW92ZXMtaGVpZ2h0OiAyLjVlbTtcbiRtb3ZlLXRhZzogXCJ1OHRcIjtcbiRybW92ZXMtdGFnOiBcInJtNlwiO1xuJG1vdmVzLXRhZzogXCJ4Mm5cIjtcbiRpbmRleC10YWc6IFwiaTV6XCI7XG4kYWN0aXZlLWNsYXNzOiBcImExdFwiO1xuXG4vLyBhcHAtbGF5b3V0XG4kY29sMS1wb2NrZXQtaGVpZ2h0OiBhdXRvO1xuJG1hdGVyaWFsLWhlaWdodDogYXV0bztcbiRjbG9jay1oZWlnaHQ6IGF1dG87XG4kZXhwaXJhdGlvbi1oZWlnaHQ6IG1pbi1jb250ZW50O1xuJHVzZXItaGVpZ2h0OiBhdXRvO1xuJG1vdmVzLWhlaWdodDogYXV0bztcbiRjb250cm9scy1oZWlnaHQ6IGF1dG87XG4iLCIjbWFpbi13cmFwIHtcbiAgLS1tYWluLW1heC13aWR0aDogYXV0bztcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxKSB7XG4gICAgLS1tYWluLW1heC13aWR0aDogY2FsYygxMDB2aCAtICN7JHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodH0gLSAjeyRjb2wxLXBsYXllci1jbG9jay1oZWlnaHQgKiAyfSAtICN7JGNvbDEtbW92ZXMtaGVpZ2h0fSk7XG4gIH1cbn1cblxuLnJvdW5kIHtcbiAgZ3JpZC1hcmVhOiBtYWluO1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLWdhcDogJGJsb2NrLWdhcDtcblxuICAmX19hcHAge1xuICAgIGdyaWQtYXJlYTogYXBwO1xuICB9XG5cbiAgJl9fc2lkZSB7XG4gICAgZ3JpZC1hcmVhOiBzaWRlO1xuICB9XG5cbiAgJl9fdW5kZXJib2FyZCB7XG4gICAgQGV4dGVuZCAlemVuO1xuXG4gICAgZ3JpZC1hcmVhOiB1bmRlcjtcbiAgfVxuXG4gICZfX3VuZGVyY2hhdCB7XG4gICAgQGV4dGVuZCAlemVuO1xuXG4gICAgZ3JpZC1hcmVhOiB1Y2hhdDtcbiAgfVxuXG4gIGdyaWQtdGVtcGxhdGUtYXJlYXM6ICdhcHAnICd1bmRlcicgJ3NpZGUnICd1Y2hhdCc7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gZml0LWNvbnRlbnQoMCkgZml0LWNvbnRlbnQoMCk7XG4gICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczogJ2FwcCAgIGFwcCcgJ3VuZGVyIHNpZGUnICd1bmRlciB1Y2hhdCc7XG5cbiAgICAmX19hcHAge1xuICAgICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gICAgfVxuICB9XG5cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wzKSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAkY29sMy11bmlib2FyZC1zaWRlICRjb2wzLXVuaWJvYXJkLXdpZHRoICRjb2wzLXVuaWJvYXJkLXRhYmxlO1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogZml0LWNvbnRlbnQoMCk7XG4gICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczogJ3NpZGUgIGFwcCAgIGFwcCcgJ3VjaGF0IHVuZGVyIC4nO1xuXG4gICAgQGluY2x1ZGUgY3Jvc3N0YWJsZS1sYXJnZTtcbiAgfVxuXG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMi11bmlib2FyZC1zcXVlZXplKSB7XG4gICAgLmNyb3NzdGFibGUge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cbiIsIi5yY29udHJvbHMge1xuICBncmlkLWFyZWE6IGNvbnRyb2xzO1xufVxuXG4ubWF0ZXJpYWwtdG9wIHtcbiAgZ3JpZC1hcmVhOiBtYXQtdG9wO1xufVxuXG4ubWF0ZXJpYWwtYm90dG9tIHtcbiAgZ3JpZC1hcmVhOiBtYXQtYm90O1xufVxuXG4uZXhwaXJhdGlvbi10b3Age1xuICBncmlkLWFyZWE6IGV4cGktdG9wO1xufVxuXG4uZXhwaXJhdGlvbi1ib3R0b20ge1xuICBncmlkLWFyZWE6IGV4cGktYm90O1xufVxuXG4ucnVzZXItdG9wIHtcbiAgZ3JpZC1hcmVhOiB1c2VyLXRvcDtcbn1cblxuLnJ1c2VyLWJvdHRvbSB7XG4gIGdyaWQtYXJlYTogdXNlci1ib3Q7XG59XG5cbi5yY2xvY2stdG9wIHtcbiAgZ3JpZC1hcmVhOiBjbG9jay10b3A7XG59XG5cbi5yY2xvY2stYm90dG9tIHtcbiAgZ3JpZC1hcmVhOiBjbG9jay1ib3Q7XG59XG5cbiN7JHJtb3Zlcy10YWd9IHtcbiAgZ3JpZC1hcmVhOiBtb3Zlcztcbn1cblxuLmtleWJvYXJkLW1vdmUge1xuICBncmlkLWFyZWE6IGtiLW1vdmU7XG59XG5cbi5yb3VuZF9fYXBwIHtcbiAgZGlzcGxheTogZ3JpZDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxKSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvICRjb2wxLXBvY2tldC1oZWlnaHQgJGNvbDEtcGxheWVyLWNsb2NrLWhlaWdodCBhdXRvICRleHBpcmF0aW9uLWhlaWdodCAkY29sMS1wbGF5ZXItY2xvY2staGVpZ2h0ICRjb2wxLXBvY2tldC1oZWlnaHQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczogJ21vdmVzJyAnbWF0LXRvcCcgJ3VzZXItdG9wJyAnYm9hcmQnICdleHBpLWJvdCcgJ3VzZXItYm90JyAnbWF0LWJvdCcgJ2tiLW1vdmUnICdjb250cm9scyc7XG5cbiAgICAvLyBQdXQgY2xvY2tzIGFuZCBwbGF5ZXJzIGluIHRoZSBzYW1lIGdyaWQgY2VsbC5cbiAgICAvLyBUaGlzIGFsbG93cyBoYXZpbmcgYSBzaW5nbGUgY2VsbCBjb2x1bW4sIGluc3RlYWQgb2ZcbiAgICAvLyBjb2x1bW5zOiBhdXRvIG1pbi1jb250ZW50O1xuICAgIC8vIFRoaXMgaXMgcmVxdWlyZWQgdG8gZGlzcGxheSB0aGUgb3ZlcmZsb3dhYmxlIGhvcml6b250YWwgbW92ZSBsaXN0LFxuICAgIC8vIHNvIHRoYXQgaXQgY2FuIGJlIGNvbnRhaW4gd2l0aGluIHRoZSBncmlkIHBhcmVudC5cbiAgICAucmNsb2NrLXRvcCB7XG4gICAgICBncmlkLWFyZWE6IDMgLyAxIC8gMyAvIDI7XG4gICAgfVxuXG4gICAgLnJjbG9jay1ib3R0b20ge1xuICAgICAgZ3JpZC1hcmVhOiA2IC8gMSAvIDYgLyAyO1xuICAgIH1cblxuICAgIGNnLWJvYXJkIHtcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgfVxuXG4gICAgLmV4cGlyYXRpb24tdG9wIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgJl9fdGFibGUge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAmLm1vdmUtY29uZmlybSB7XG4gICAgICAvLyByZXBsYWNlIG1vdmUgbGlzdCB3aXRoIG1vdmUgY29uZmlybWF0aW9uXG4gICAgICBncmlkLXRlbXBsYXRlLWFyZWFzOiAnY29udHJvbHMnICdtYXQtdG9wJyAndXNlci10b3AnICdib2FyZCcgJ2V4cGktYm90JyAndXNlci1ib3QnICdtYXQtYm90JyAna2ItbW92ZSc7XG5cbiAgICAgICN7JHJtb3Zlcy10YWd9IHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6ICRjb2wyLXVuaWJvYXJkLXdpZHRoICRjb2wyLXVuaWJvYXJkLXRhYmxlO1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogMWZyICRtYXRlcmlhbC1oZWlnaHQgJGNsb2NrLWhlaWdodCAkZXhwaXJhdGlvbi1oZWlnaHQgJHVzZXItaGVpZ2h0ICRtb3Zlcy1oZWlnaHQgJGNvbnRyb2xzLWhlaWdodCAkdXNlci1oZWlnaHQgJGV4cGlyYXRpb24taGVpZ2h0ICRjbG9jay1oZWlnaHQgJG1hdGVyaWFsLWhlaWdodCAxZnI7XG4gICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczogJ2JvYXJkIC4nICdib2FyZCBtYXQtdG9wJyAnYm9hcmQgY2xvY2stdG9wJyAnYm9hcmQgZXhwaS10b3AnICdib2FyZCB1c2VyLXRvcCcgJ2JvYXJkIG1vdmVzJyAnYm9hcmQgY29udHJvbHMnICdib2FyZCB1c2VyLWJvdCcgJ2JvYXJkIGV4cGktYm90JyAnYm9hcmQgY2xvY2stYm90JyAnYm9hcmQgbWF0LWJvdCcgJ2JvYXJkIC4nICdrYi1tb3ZlIC4nO1xuICAgIGdyaWQtY29sdW1uLWdhcDogJGJsb2NrLWdhcDtcblxuICAgICZfX3RhYmxlIHtcbiAgICAgIGdyaWQtYXJlYTogNCAvIDIgLyAxMCAvIDM7XG4gICAgfVxuXG4gICAgLmV4cGlyYXRpb24tdG9wIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgfVxuXG4gICAgI3skcm1vdmVzLXRhZ30ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMXB4O1xuICAgIH1cblxuICAgICN7JG1vdmVzLXRhZ30ge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgfVxuXG4gICAgLmtleWJvYXJkLW1vdmUge1xuICAgICAgbWFyZ2luLXRvcDogJGJsb2NrLWdhcDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1zaG9ydCkge1xuICAgICAgI3skbW92ZXMtdGFnfSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyLXVuaWJvYXJkLXNxdWVlemUpIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6ICRjb2wyLXVuaWJvYXJkLXNxdWVlemUtd2lkdGggJGNvbDItdW5pYm9hcmQtc3F1ZWV6ZS10YWJsZTtcbiAgICBncmlkLWNvbHVtbi1nYXA6ICN7JGJsb2NrLWdhcCAqIDMgLyAyfTtcbiAgfVxuXG5cbiAgJl9fYm9hcmQge1xuICAgIGdyaWQtYXJlYTogYm9hcmQ7XG4gIH1cbn1cbiIsIiV6ZW4ge1xuICBib2R5LnBsYXlpbmcuemVuICYge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuI3plbnRvZyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcGFkZGluZzogLjVlbSAxZW07XG4gIG9wYWNpdHk6IDAuNTtcbiAgei1pbmRleDogeihcInplbi10b2dnbGVcIik7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplO1xuXG4gIGJvZHkucGxheWluZy56ZW4gJiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICAmOmhvdmVyIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5cbmJvZHkucGxheWluZy56ZW4ge1xuICAucmljb25zIHtcbiAgICBtYXJnaW46IC41ZW0gMCAxZW0gMDtcbiAgfVxuXG4gICN0b3Age1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB9XG59XG5cbiNmcmllbmRfYm94LFxuLnNpdGUtdGl0bGUtbmF2LFxuLnNpdGUtYnV0dG9ucyB7XG4gIEBleHRlbmQgJXplbjtcbn1cbiIsIi5yb3VuZF9fc2lkZSB7XG4gIEBleHRlbmQgJWZsZXgtY29sdW1uLCAlemVuO1xuXG4gIC5nYW1lX19tZXRhIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcblxuICAgICZfX3BsYXllcnMgLnRlYW0ge1xuICAgICAgbWFyZ2luLWxlZnQ6IDEuN2VtO1xuICAgIH1cbiAgfVxufVxuXG4ubWNoYXQge1xuICBAZXh0ZW5kICV6ZW47XG5cbiAgZmxleDogMSAxIDA7XG4gIG1hcmdpbi10b3A6ICRibG9jay1nYXA7XG59XG4iLCIvKiBzaGFyZWQgd2l0aCBhbmFseXNpcyAqL1xuLmdhbWVfX21ldGEge1xuICBAZXh0ZW5kICVib3gtbmVhdC1mb3JjZTtcblxuICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gIHBhZGRpbmc6ICN7JGJsb2NrLWdhcCAqIDAuN30gJGJsb2NrLWdhcDtcblxuICBzZWN0aW9uOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgIGJvcmRlci1ib3R0b206ICRib3JkZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogI3skYmxvY2stZ2FwICogMiAvIDN9O1xuICAgIHBhZGRpbmctYm90dG9tOiAjeyRibG9jay1nYXAgKiAyIC8gM307XG4gIH1cblxuICAmX19pbmZvcyB7XG4gICAgQGV4dGVuZCAlZmxleC1jZW50ZXItbm93cmFwO1xuXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLyogZm9yIGJvb2ttYXJrICovXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGZvbnQtc2l6ZTogM3JlbTtcbiAgICAgIG1hcmdpbi1yaWdodDogNCU7XG4gICAgfVxuXG4gICAgcCB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgdGltZSB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuXG4gIC5zdGF0dXMge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuXG4gICZfX3BsYXllcnMge1xuICAgIG1hcmdpbi10b3A6IC4zcmVtO1xuICAgIGZvbnQtc2l6ZTogOTAlO1xuICB9XG5cbiAgLmJvb2ttYXJrIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDA7XG4gICAgei1pbmRleDogeihcImdhbWUtYm9va21hcmtcIik7XG4gICAgY29sb3I6ICRjLWZvbnQtZGltO1xuXG4gICAgOjpiZWZvcmUge1xuICAgICAgZm9udC1zaXplOiAxLjNlbTtcbiAgICB9XG5cbiAgICAmOm5vdCguYm9va21hcmtlZCkgLm9uLFxuICAgICYuYm9va21hcmtlZCAub2ZmIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLnVzZXItdHYge1xuICAgIEBleHRlbmQgJW5vd3JhcC1lbGxpcHNpcztcblxuICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gIH1cbn1cblxuLmdhbWVfX3RvdXJuYW1lbnQge1xuICAuY2xvY2sge1xuICAgIEBleHRlbmQgJXJvYm90bztcblxuICAgIGZvbnQtc2l6ZTogMmVtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW4tdG9wOiAuMmVtO1xuICB9XG59XG5cbkBtZWRpYSAoaG92ZXI6IGhvdmVyKSB7XG4gIC5nYW1lX19tZXRhIC5ib29rbWFyayB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5nYW1lX19tZXRhOmhvdmVyIC5ib29rbWFyayB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cbiIsIi5yb3VuZF9fYXBwIHtcbiAgJl9fdGFibGUge1xuICAgIEBleHRlbmQgJWJveC1yYWRpdXMtcmlnaHQsICVib3gtc2hhZG93O1xuXG4gICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICB9XG5cbiAgLmRyYXcteWVzIHNwYW4ge1xuICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gIH1cbn1cblxuLmV4cGlyYXRpb24ge1xuICBAZXh0ZW5kICVmbGV4LWNlbnRlcjtcblxuICBmb250LXNpemU6IC45cmVtO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgbGluZS1oZWlnaHQ6IDI7XG4gIGJhY2tncm91bmQ6ICRjLWdvb2Q7XG4gIGNvbG9yOiAjZmZmO1xuXG4gICYtdG9wIHtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZTtcbiAgfVxuXG4gICYtYm90dG9tIHtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZTtcbiAgfVxuXG4gICYuZW1lcmcge1xuICAgIGJhY2tncm91bmQ6ICRjLWJhZDtcbiAgfVxuXG4gIHN0cm9uZyB7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIG1hcmdpbi1yaWdodDogLjNlbTtcbiAgfVxufVxuIiwiLnJ1c2VyIHtcbiAgQGV4dGVuZCAlemVuO1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogbGVmdDtcbiAgZm9udC1zaXplOiAxLjJlbTtcbiAgcGFkZGluZzogMCAuM2VtO1xuICBsaW5lLWhlaWdodDogJGNvbDEtcGxheWVyLWNsb2NrLWhlaWdodDtcblxuICAmOmhvdmVyIHtcbiAgICBjb2xvcjogJGMtZm9udDtcbiAgfVxuXG4gIGEge1xuICAgIEBleHRlbmQgJWVsbGlwc2lzO1xuXG4gICAgY29sb3I6ICRjLWZvbnQ7XG4gIH1cblxuICAmLmxvbmcgYSB7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjVweDtcbiAgfVxuXG4gIHJhdGluZyB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgbWFyZ2luOiAwIC4yNWVtIDAgLjNlbTtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjVweDtcbiAgfVxuXG4gIC5saW5lIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuXG4gIEBrZXlmcmFtZXMgY29ubmVjdGluZyB7XG4gICAgMCUge1xuICAgICAgb3BhY2l0eTogMC4xO1xuICAgIH1cblxuICAgIDUwJSB7XG4gICAgICBvcGFjaXR5OiAwLjM7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICBvcGFjaXR5OiAwLjE7XG4gICAgfVxuICB9XG5cbiAgJi5jb25uZWN0aW5nIC5saW5lIHtcbiAgICBhbmltYXRpb246IGNvbm5lY3RpbmcgMC45cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgfVxuXG4gIC5ycCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAuMmVtO1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgIHBhZGRpbmc6IC41ZW0gLjVlbSAuNWVtIC4zZW07XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG5cbiAgICBhIHtcbiAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIH1cbiAgfVxufVxuIiwiLnJjbG9jayB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMSkge1xuICAgIC8qIHRoYXQgd2VpcmQgc2hpdCBpcyByZXF1aXJlZCBzbyB0aGUgY2xvY2sgZ29lcyBhYm92ZSB0aGUgcGxheWVyIHNpbmNlIHRoZXkgc2hhcmUgdGhlIHNhbWUgZ3JpZCBjZWxsICovXG4gICAganVzdGlmeS1zZWxmOiBmbGV4LWVuZDtcbiAgICB6LWluZGV4OiAxO1xuICB9XG5cbiAgLyogb3ZlcmZsb3c6IGhpZGRlbjsgaXMgbm90IHBvc3NpYmxlIGJlY2F1c2Ugb2YgY2xvY2sgYmFycyBhbmQgc2hhZG93cyAqL1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXG4gICAgJi1ib3R0b20ge1xuICAgICAgLyogb3ZlciB0aGUgdGFibGUgc2hhZG93ICovXG4gICAgICB6LWluZGV4OiAwO1xuICAgIH1cbiAgfVxuXG5cbiAgJi10dXJuIHtcbiAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgbGluZS1oZWlnaHQ6ICRjb2wxLXBsYXllci1jbG9jay1oZWlnaHQ7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxLXVuaWJvYXJkKSB7XG4gICAgICAmX190ZXh0IHtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICAgICAgICBwYWRkaW5nOiAwICRibG9jay1nYXA7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgfVxuICAgIH1cblxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgICAgaGVpZ2h0OiAyLjJlbTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAyLjJlbTtcbiAgICB9XG4gIH1cblxuICAuYmFyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgJi5iZXJzZXJrIHtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJhZDtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gICAgLmJhciB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiA0cHg7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1nb29kO1xuICAgICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdDtcblxuICAgICAgLndpdGgtZXhwaXJhdGlvbiAmIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLXRvcCAuYmFyIHtcbiAgICAgIGJvdHRvbTogLTRweDtcbiAgICB9XG5cbiAgICAmLWJvdHRvbSAuYmFyIHtcbiAgICAgIHRvcDogLTRweDtcbiAgICB9XG4gIH1cblxuXG4gIC50aW1lIHtcbiAgICBAZXh0ZW5kICVyb2JvdG8sICVib3gtc2hhZG93O1xuXG4gICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICAgIG1pbi13aWR0aDogM2VtO1xuICAgIGZvbnQtc2l6ZTogMi44ZW07XG4gICAgbGluZS1oZWlnaHQ6ICRjb2wxLXBsYXllci1jbG9jay1oZWlnaHQ7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgcGFkZGluZzogMCAkYmxvY2stZ2FwO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAvKiBlbnN1cmUgdXBkYXRlcyBkb24ndCByZWRyYXcgb3RoZXIgcGFydHMgb2YgdGhlIGRvY3VtZW50ICovXG4gICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbiAgICB6LWluZGV4OiAtMTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgJi5ob3VyIHtcbiAgICAgIGZvbnQtc2l6ZTogMi4zZW07XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMSkge1xuICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgfVxuXG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgICBsaW5lLWhlaWdodDogMS4yZW07XG4gICAgfVxuXG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS14eC1zbWFsbCAkbXEtdGFsbCkge1xuICAgICAgZm9udC1zaXplOiAzLjVlbTtcbiAgICAgIGxldHRlci1zcGFjaW5nOiAuMTJlbTtcblxuICAgICAgJi5ob3VyIHtcbiAgICAgICAgZm9udC1zaXplOiAyLjllbTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC4xZW07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi10b3AgLnRpbWUge1xuICAgIEBleHRlbmQgJWJveC1yYWRpdXMtdG9wO1xuICB9XG5cbiAgJi1ib3R0b20gLnRpbWUge1xuICAgIEBleHRlbmQgJWJveC1yYWRpdXMtYm90dG9tO1xuICB9XG5cbiAgJi1jb3JyZXNwb25kZW5jZSAudGltZSB7XG4gICAgZm9udC1zaXplOiAxLjZlbTtcbiAgICBsZXR0ZXItc3BhY2luZzogaW5oZXJpdDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjVlbTtcbiAgICB9XG5cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXh4LXNtYWxsKSB7XG4gICAgICBmb250LXNpemU6IDEuOWVtO1xuICAgIH1cbiAgfVxuXG4gIHRlbnRocyB7XG4gICAgZm9udC1zaXplOiA3MCU7XG4gICAgbWFyZ2luLWJvdHRvbTogLS4xOGVtO1xuICB9XG5cbiAgaHVucyB7XG4gICAgZm9udC1zaXplOiA4MCU7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxKSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICAvKiBzaW5jZSBjbG9jayBpcyByaWdodC1hbGlnbmVkLCBodW5zIHNoaWZ0IGl0IGxlZnQgb24gZXZlcnkgbW92ZSAqL1xuICAgIH1cbiAgfVxuXG4gIHNlcCB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGZvbnQtc2l6ZTogLjhlbTtcblxuICAgICYubG93IHtcbiAgICAgIG9wYWNpdHk6IDAuMTU7XG4gICAgfVxuICB9XG5cbiAgJi5ydW5uaW5nIC50aW1lIHtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtc2Vjb25kYXJ5LCAkYy1iZy1ib3gsIDMwJSk7XG4gICAgY29sb3I6ICRjLWZvbnQtY2xlYXJlcjtcbiAgfVxuXG4gICYuZW1lcmcgLnRpbWUsXG4gICYub3V0b2Z0aW1lIC50aW1lIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtaXgoJGMtYmFkLCAkYy1iZy1ib3gsIDI1JSk7XG4gIH1cblxuICAmLmVtZXJnLnJ1bm5pbmcgLnRpbWUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1peCgkYy1iYWQsICRjLWJnLWJveCwgNTAlKTtcbiAgICBjb2xvcjogJGMtZm9udC1jbGVhcmVyO1xuICB9XG5cbiAgLmdvLWJlcnNlcmsge1xuICAgIGZvbnQtc2l6ZTogMi4yZW07XG4gICAgcGFkZGluZzogMCAuM2VtO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogJGMtYWNjZW50ICFpbXBvcnRhbnQ7XG4gICAgICBiYWNrZ3JvdW5kOiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgLnRvdXItcmFuayxcbiAgLm1vcmV0aW1lLFxuICAuYmVyc2Vya2VkIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlciwgJXplbjtcblxuICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS14eC1zbWFsbCkge1xuICAgICAgb3JkZXI6IC0xO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgICAgZm9udC1zaXplOiAxLjdlbTtcbiAgICAgIHBhZGRpbmc6IDAgLjNlbTtcbiAgICB9XG5cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICAgIG9yZGVyOiBpbmhlcml0O1xuICAgIH1cbiAgfVxuXG4gIC50b3VyLXJhbmsge1xuICAgIEBleHRlbmQgJXBhZ2UtdGV4dDtcblxuICAgIG9wYWNpdHk6IC42NTtcbiAgfVxuXG4gIC5tb3JldGltZSB7XG4gICAgb3BhY2l0eTogMC40O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuXG4gIC5iZXJzZXJrZWQge1xuICAgIGZvbnQtc2l6ZTogMi4yZW07XG4gICAgY29sb3I6ICRjLWFjY2VudDtcbiAgfVxufVxuIiwiLm1hdGVyaWFsIHtcbiAgYWxpZ24tc2VsZjogY2VudGVyO1xuICBkaXNwbGF5OiBub25lO1xuICBoZWlnaHQ6IDQwcHg7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBsaW5lLWhlaWdodDogMDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgZGl2IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICAgIH1cblxuICAgIG1waWVjZSB7XG4gICAgICBtYXJnaW4tbGVmdDogLTEwcHg7XG4gICAgICB3aWR0aDogMzJweDtcbiAgICAgIGhlaWdodDogMzJweDtcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgICAgICYucGF3biB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9waWVjZS9tb25vL1Auc3ZnKTtcbiAgICAgIH1cblxuICAgICAgJi5iaXNob3Age1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vcGllY2UvbW9uby9CLnN2Zyk7XG4gICAgICB9XG5cbiAgICAgICYua25pZ2h0IHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL3BpZWNlL21vbm8vTi5zdmcpO1xuICAgICAgfVxuXG4gICAgICAmLnJvb2sge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vcGllY2UvbW9uby9SLnN2Zyk7XG4gICAgICB9XG5cbiAgICAgICYucXVlZW4ge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vcGllY2UvbW9uby9RLnN2Zyk7XG4gICAgICB9XG5cbiAgICAgICYua2luZyB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9waWVjZS9tb25vL0suc3ZnKTtcbiAgICAgIH1cblxuICAgICAgQGlmICR0aGVtZSA9PSBcInRyYW5zcFwiIHtcbiAgICAgICAgZmlsdGVyOiBicmlnaHRuZXNzKDEuMykgZHJvcC1zaGFkb3coMCAxcHggMXB4ICMwMDApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHNjb3JlIHtcbiAgICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcbiAgICAgIGxpbmUtaGVpZ2h0OiAzMnB4O1xuICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICB9XG4gIH1cbn1cbiIsIiN7JG1vdmVzLXRhZ30ge1xuICBAZXh0ZW5kICV6ZW47XG59XG5cbiN7JGluZGV4LXRhZ30ge1xuICBAZXh0ZW5kICVyb2JvdG87XG59XG5cbiN7JG1vdmUtdGFnfSB7XG4gIEBleHRlbmQgJXNhbjtcbn1cblxuI3skcm1vdmVzLXRhZ30ge1xuICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAuYnV0dG9ucyB7XG4gICAgQGV4dGVuZCAlYm94LXNoYWRvdztcblxuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzdHJldGNoO1xuICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICAgIGZvbnQtc2l6ZTogLjllbTtcbiAgICBvcmRlcjogMjtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICAgIG9yZGVyOiAwO1xuICAgIH1cbiAgfVxuXG4gIC5mYnQsIC5ub29wIHtcbiAgICBwYWRkaW5nOiA1cHggMDtcbiAgICBmbGV4OiAwIDAgY2FsYygxMDAlIC8gNik7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgI3skbW92ZXMtdGFnfSxcbiAgLm1lc3NhZ2Uge1xuICAgIGZsZXg6IDAgMCA3LjRyZW07XG4gIH1cblxuICBAaW1wb3J0IFwibW92ZXMtY29sMVwiO1xuICBAaW1wb3J0IFwibW92ZXMtY29sMlwiO1xufVxuIiwiLyogY29udGV4dDogLnJtb3ZlcyAqL1xuQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMSkge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIC5jb2wxLW1vdmVzIHtcbiAgICBmbGV4OiAwIDAgJGNvbDEtbW92ZXMtaGVpZ2h0O1xuICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICAuZmJ0IHtcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgcGFkZGluZzogMCAxLjNlbTtcbiAgICAgIG9wYWNpdHk6IC43O1xuICAgIH1cblxuICAgIGJvZHkucGxheWluZy56ZW4gJiB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gICN7JG1vdmVzLXRhZ30ge1xuICAgIGZsZXg6IDEgMSAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdy14OiBzY3JvbGw7XG4gICAgY29sb3I6ICRjLWZvbnQtcGFnZTtcblxuICAgIEBpZiAkdGhlbWUtbGlnaHQge1xuICAgICAgYm94LXNoYWRvdzogMCA0cHggNHB4IGMtbGlnaHQoJGMtYmctcGFnZSwgNzglKSBpbnNldDtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCAjMDAwIGluc2V0O1xuICAgIH1cblxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgIGhlaWdodDogMHB4O1xuICAgIH1cblxuICAgID4gOmZpcnN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgI3skaW5kZXgtdGFnfSxcbiAgI3skbW92ZS10YWd9LFxuICAucmVzdWx0LXdyYXAge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAwIC4zcmVtO1xuICB9XG5cbiAgI3skaW5kZXgtdGFnfSB7XG4gICAgcGFkZGluZy1yaWdodDogLjE1ZW07XG4gIH1cblxuICAjeyRtb3ZlLXRhZ30ge1xuICAgIGZvbnQtc2l6ZTogMS4xZW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJi4jeyRhY3RpdmUtY2xhc3N9LFxuICAgICY6aG92ZXIge1xuICAgICAgQGlmICR0aGVtZS1saWdodCB7XG4gICAgICAgIGJhY2tncm91bmQ6IGhzbCgkYy1zaXRlLWh1ZSwgMjAlLCA4NSUpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLiN7JGFjdGl2ZS1jbGFzc30ge1xuICAgICAgY29sb3I6ICRjLWZvbnQtY2xlYXJlcjtcbiAgICB9XG4gIH1cblxuICAuYnV0dG9ucyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5yZXN1bHQge1xuICAgIG1hcmdpbjogMDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBmb250LXNpemU6IDEuMWVtO1xuICB9XG5cbiAgLm1lc3NhZ2Uge1xuICAgIGZsZXg6IDAgMCAkY29sMS1tb3Zlcy1oZWlnaHQ7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG5cbiAgICBiciB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIHN0cm9uZyB7XG4gICAgICBtYXJnaW4tbGVmdDogLjVlbTtcbiAgICB9XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAuM2VtO1xuICAgIH1cblxuICAgIGJvZHkucGxheWluZy56ZW4gJiB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC5zdGF0dXMge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiIsIi8qIGNvbnRleHQ6ICN7JHJtb3Zlcy10YWd9ICovXG5AaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcblxuICAjeyRtb3Zlcy10YWd9IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAvKiByZXF1aXJlZCBieSBhdXRvU2Nyb2xsICovXG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIHdpbGwtY2hhbmdlOiBzY3JvbGwtcG9zaXRpb247XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgbGluZS1oZWlnaHQ6IDEuNztcbiAgICBmb250LXNpemU6IDEuMWVtO1xuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgd2lkdGg6IDBweDtcbiAgICB9XG4gIH1cblxuICAjeyRpbmRleC10YWd9IHtcbiAgICAvKiBFZGdlIDE4OiBmbGV4OiAwIDAgY2FsYygxMDAlIC8gNik7IGNhdXNlcyB3cmFwICovXG4gICAgZmxleDogMCAwIDE2LjY2NiU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG4gIH1cblxuICAjeyRtb3ZlLXRhZ30ge1xuICAgIC8qIEVkZ2UgMTg6IGZsZXg6IDAgMCBjYWxjKDEwMCUgKiA1IC8gMTIpOyBjYXVzZXMgd3JhcCAqL1xuICAgIGZsZXg6IDAgMCA0MS42NjYlO1xuICAgIHBhZGRpbmctbGVmdDogLjdlbTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRjLXByaW1hcnk7XG4gICAgICBjb2xvcjogI2ZmZjtcbiAgICB9XG5cbiAgICAmLiN7JGFjdGl2ZS1jbGFzc30ge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtcHJpbWFyeSwgJGMtYmctYm94LCAyMCUpO1xuICAgICAgY29sb3I6ICRjLWZvbnQtY2xlYXI7XG4gICAgfVxuICB9XG5cbiAgLm1lc3NhZ2Uge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW46IDFlbTtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgICBmb250LXNpemU6IDNlbTtcbiAgICAgIG1hcmdpbi1yaWdodDogMTJweDtcbiAgICB9XG4gIH1cblxuICAucmVzdWx0LXdyYXAge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuXG4gIC5yZXN1bHQge1xuICAgIGJvcmRlci10b3A6ICRib3JkZXI7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgZm9udC1zaXplOiAxLjJlbTtcbiAgICBwYWRkaW5nOiA1cHggMCAzcHggMDtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICAuc3RhdHVzIHtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgbWFyZ2luLWJvdHRvbTogLjVlbTtcbiAgfVxufVxuIiwiLnJjb250cm9scyB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgJi1wcmVsb2FkIHtcbiAgICBoZWlnaHQ6IDZlbTtcbiAgfVxuXG4gIHAge1xuICAgIG1hcmdpbjogMDtcbiAgfVxuXG4gIC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gIH1cblxuICAuZGRsb2FkZXIge1xuICAgIG1hcmdpbjogMjBweCBhdXRvIDEwcHggYXV0bztcbiAgfVxuXG4gIC5zdWdnZXN0aW9uLFxuICAucGVuZGluZyxcbiAgLm5lZ290aWF0aW9uIHtcbiAgICBwYWRkaW5nOiAuNWVtIDMlO1xuICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICAgIGJvcmRlcjogJGJvcmRlcjtcbiAgICBib3JkZXItd2lkdGg6IDAgMXB4O1xuICB9XG5cbiAgLnN1Z2dlc3Rpb24ge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyO1xuXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG5cbiAgICBwIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5idXR0b24ge1xuICAgICAgbWFyZ2luOiAuNWVtIDAgMCAwO1xuICAgIH1cbiAgfVxuXG4gIC5wZW5kaW5nIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgICBwIHtcbiAgICAgIGZsZXg6IDMgMTtcbiAgICAgIG1hcmdpbi1yaWdodDogN3B4O1xuICAgIH1cblxuICAgIC5idXR0b24ge1xuICAgICAgZmxleDogMSAxO1xuICAgIH1cbiAgfVxuXG4gIC5uZWdvdGlhdGlvbiB7XG4gICAgQGV4dGVuZCAlZmxleC1jZW50ZXItbm93cmFwO1xuXG4gICAgYmFja2dyb3VuZDogJGMtYWNjZW50O1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIHBhZGRpbmc6IDFweDtcblxuICAgIHAge1xuICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICBmbGV4OiAwIDAgM3JlbTtcbiAgICAgIGZvbnQtc2l6ZTogMS41ZW07XG4gICAgICBsaW5lLWhlaWdodDogM2VtO1xuICAgICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICAgIH1cblxuICAgIC5hY2NlcHQge1xuICAgICAgY29sb3I6ICRjLWdvb2Q7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDFweDtcbiAgICB9XG5cbiAgICAuZGVjbGluZSB7XG4gICAgICBjb2xvcjogJGMtYmFkO1xuICAgIH1cblxuICAgIGE6aG92ZXIge1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1nb29kO1xuICAgIH1cblxuICAgIGEuZGVjbGluZTpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iYWQ7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMSkge1xuICAgICAgYSB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjZlbTtcbiAgICAgICAgZmxleDogMCAwIDIuNXJlbTtcbiAgICAgICAgcGFkZGluZzogMCAxLjJlbTtcbiAgICAgIH1cblxuICAgICAgcGFkZGluZzogM3B4O1xuICAgIH1cbiAgfVxuXG4gIC5nbG93aW5nOmhvdmVyIHtcbiAgICBhbmltYXRpb246IG5vbmU7XG4gIH1cblxuICAuZm9sbG93LXVwIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAgIGJvcmRlci1ib3R0b206ICRib3JkZXI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLyogZm9yIHJlbWF0Y2gtZGVjbGluZSAqL1xuICAgIC5mYnQge1xuICAgICAgcGFkZGluZzogMTJweCAwO1xuICAgICAgbWFyZ2luOiAxcHggMXB4IDAgMXB4O1xuICAgIH1cblxuICAgID4gLmZidDpmaXJzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tdG9wOiAwO1xuICAgIH1cblxuICAgIC5mYnQuc3Ryb25nIHtcbiAgICAgIHBhZGRpbmc6IDJlbSAwO1xuICAgICAgZm9udC1zaXplOiAxLjJlbTtcbiAgICB9XG5cbiAgICAud2VhayB7XG4gICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgcGFkZGluZzogNnB4IDA7XG4gICAgfVxuXG4gICAgLndlYWs6OmJlZm9yZSB7XG4gICAgICBvcGFjaXR5OiAwLjc7XG4gICAgfVxuXG4gICAgZm9ybSAuZmJ0IHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5zcGlubmVyIHtcbiAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDEpIHtcbiAgICAgIG1hcmdpbi10b3A6ICRibG9jay1nYXA7XG4gICAgfVxuICB9XG5cbiAgLmFuYWx5c2lzIHtcbiAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMSkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBtYXJnaW4tbGVmdDogMmVtO1xuICAgIH1cbiAgfVxuXG4gIC5kcmF3IHtcbiAgICBwIHtcbiAgICAgIG9yZGVyOiAyO1xuICAgIH1cblxuICAgIGEge1xuICAgICAgb3JkZXI6IDE7XG4gICAgfVxuICB9XG5cbiAgLnJlbWF0Y2gge1xuICAgICYuZmJ0IHtcbiAgICAgIEBleHRlbmQgJW1ldGFsO1xuXG4gICAgICBmb250LXNpemU6IDEuMmVtO1xuICAgICAgaGVpZ2h0OiA2cmVtO1xuXG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuICAgIH1cblxuICAgICYubWUge1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLXByaW1hcnksICRjLWJnLWJveCwgODAlKTtcbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIHJ1YmJlci1iYW5kIHtcbiAgICAgIGZyb20ge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMSwgMSwgMSk7XG4gICAgICB9XG5cbiAgICAgIDYlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEuMjUsIDAuNzUsIDEpO1xuICAgICAgfVxuXG4gICAgICA4JSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjc1LCAxLjI1LCAxKTtcbiAgICAgIH1cblxuICAgICAgMTAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEuMTUsIDAuODUsIDEpO1xuICAgICAgfVxuXG4gICAgICAxMyUge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC45NSwgMS4wNSwgMSk7XG4gICAgICB9XG5cbiAgICAgIDE1JSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjA1LCAwLjk1LCAxKTtcbiAgICAgIH1cblxuICAgICAgMjAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEsIDEsIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuZ2xvd2luZyB7XG4gICAgICBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGFuaW1hdGlvbjogcnViYmVyLWJhbmQgNXMgaW5maW5pdGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5mYnQ6bm90KC5kaXNhYmxlZCk6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLWxpbmssICRjLWJnLWJveCwgNzAlKTtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgYW5pbWF0aW9uOiBub25lO1xuICAgIH1cblxuICAgICYtZGVjbGluZSB7XG4gICAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXAsICVib3gtcmFkaXVzLXJpZ2h0LCAlYm94LXNoYWRvdztcblxuICAgICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIHJpZ2h0OiAtMjVweDtcbiAgICAgIHdpZHRoOiAyNXB4O1xuICAgICAgaGVpZ2h0OiA2cmVtO1xuICAgICAgYm9yZGVyOiAwO1xuICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLWJhZCwgJGMtYmctYm94LCA1MCUpO1xuXG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuXG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYy1iYWQ7XG4gICAgICAgIGNvbG9yOiAkYy1iYWQtb3ZlcjtcbiAgICAgICAgcmlnaHQ6IC0zNnB4O1xuICAgICAgICB3aWR0aDogMzVweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi5yaWNvbnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgbWFyZ2luLXRvcDogMTBweDtcblxuICAuZmJ0IHtcbiAgICBmb250LXNpemU6IDEuNGVtO1xuICAgIHBhZGRpbmc6IC4xZW0gMWVtO1xuICB9XG5cbiAgJi5jb25maXJtID4gYnV0dG9uIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIH1cblxuICAuYWN0LWNvbmZpcm0ge1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiA2MHB4O1xuXG4gICAgLmZidC5ubyB7XG4gICAgICBwYWRkaW5nOiAuMWVtIDA7XG4gICAgICB3aWR0aDogMzBweDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIHJpZ2h0OiAtMzRweDtcbiAgICB9XG5cbiAgICAuZmJ0LnllcyB7XG4gICAgICAkYWN0LWNvbmZpcm0tc2hhZGU6IG1peCgjMDAwLCAkYy1hY2NlbnQsIDMwJSk7XG5cbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgdG9wOiAtM3B4O1xuICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1hY2NlbnQ7XG4gICAgICBib3JkZXItYm90dG9tOiA1cHggc29saWQgJGFjdC1jb25maXJtLXNoYWRlO1xuICAgICAgdGV4dC1zaGFkb3c6IDAgLTFweCAkYWN0LWNvbmZpcm0tc2hhZGU7XG5cbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDBweCwgMHB4KTtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGZpbHRlcjogYnJpZ2h0bmVzcygxLjA3KTtcbiAgICAgIH1cblxuICAgICAgJjphY3RpdmUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwcHgsIDVweCk7XG4gICAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDFweDtcbiAgICAgICAgdGV4dC1zaGFkb3c6IDAgMCAkYWN0LWNvbmZpcm0tc2hhZGU7XG4gICAgICAgIGZpbHRlcjogYnJpZ2h0bmVzcygxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi5yb3VuZF9fbm93LXBsYXlpbmcge1xuICBoMyB7XG4gICAgQGV4dGVuZCAlZmxleC1iZXR3ZWVuO1xuXG4gICAgbWFyZ2luOiAxZW0gMCAuNWVtIDA7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxKSB7XG4gICAgICBtYXJnaW46IDFlbSAkYmxvY2stZ2FwIDAuNWVtICRibG9jay1nYXA7XG4gICAgfVxuICB9XG5cbiAgLnNpbXVsIHtcbiAgICBzcGFuIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgbWFyZ2luOiAwIC41ZW07XG4gICAgfVxuXG4gICAgLndpbiB7XG4gICAgICBjb2xvcjogJGMtZ29vZDtcbiAgICB9XG5cbiAgICAuZHJhdyB7XG4gICAgICBjb2xvcjogJGMtYnJhZztcbiAgICB9XG5cbiAgICAubG9zcyB7XG4gICAgICBjb2xvcjogJGMtYmFkO1xuICAgIH1cbiAgfVxuXG4gIC5zd2l0Y2hlciB7XG4gICAgQGV4dGVuZCAlZmxleC1jZW50ZXI7XG5cbiAgICBsYWJlbCB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgLnN3aXRjaCB7XG4gICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICB9XG4gIH1cblxuICAubm93LXBsYXlpbmcge1xuICAgIEBleHRlbmQgJXBhZ2UtdGV4dDtcbiAgfVxufVxuIiwiLmtleWJvYXJkLW1vdmUge1xuICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgaW5wdXQge1xuICAgIHdpZHRoOiA0LjVlbTtcbiAgICBmb250LXNpemU6IDEuMWVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIG1hcmdpbi1yaWdodDogMXJlbTtcbiAgICBib3JkZXI6ICRib3JkZXI7XG5cbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICAgJi53cm9uZyB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iYWQ7XG4gICAgICBjb2xvcjogJGMtYmFkLW92ZXI7XG4gICAgfVxuICB9XG5cbiAgZW0ge1xuICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgfVxufVxuIiwiI3Bvd2VyVGlwIHtcbiAgLmZvcmVjYXN0LWluZm8ge1xuICAgIC50aXRsZSB7XG4gICAgICBAZXh0ZW5kICVtZXRhbDtcblxuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwYWRkaW5nOiAuN2VtO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuY29udGVudCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBhZGRpbmc6IDFlbTtcbiAgICB9XG4gIH1cbn1cbiIsIi5wb2NrZXQge1xuICBAZXh0ZW5kICVib3gtcmFkaXVzO1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiA2Mi41JTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyLXVuaWJvYXJkKSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm94LXNoYWRvdzogMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4zKSBpbnNldDtcbiAgICBiYWNrZ3JvdW5kOiAjODg4O1xuICB9XG5cblxuICAmLWMxIHtcbiAgICBmbGV4OiAwIDAgMjAlO1xuICAgIG1heC13aWR0aDogMTB2bWluO1xuICB9XG5cbiAgJi1jMiB7XG4gICAgQGV4dGVuZCAlc3F1YXJlO1xuICB9XG5cbiAgcGllY2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG5cbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgQGV4dGVuZCAlYWN0aXZlLCAlYm94LXJhZGl1cztcblxuICAgICAgY29udGVudDogYXR0cihkYXRhLW5iKTtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgbGluZS1oZWlnaHQ6IC45ZW07XG4gICAgICBwYWRkaW5nOiAzcHggLjNlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgZm9udC1zaXplOiAxLjFlbTtcbiAgICB9XG5cbiAgICAmW2RhdGEtbmI9JzAnXSB7XG4gICAgICBjdXJzb3I6IGF1dG87XG4gICAgICBvcGFjaXR5OiAwLjE7XG5cbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogbm9uZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnByZW1vdmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NTtcbiAgICB9XG4gIH1cblxuICAmLnVzYWJsZSB7XG4gICAgcGllY2Uge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWFhO1xuICAgICAgfVxuXG4gICAgICAmOmZpcnN0LWNoaWxkOmhvdmVyIHtcbiAgICAgICAgQGV4dGVuZCAlYm94LXJhZGl1cy1sZWZ0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5ibGluZGZvbGQgJjpub3QoLnVzYWJsZSkge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cbiIsIi5wb2NrZXQge1xuICAmLXRvcCB7XG4gICAgZ3JpZC1hcmVhOiBtYXQtdG9wO1xuICAgIG1hcmdpbi1ib3R0b206IC0uNWVtO1xuICB9XG5cbiAgJi1ib3R0b20ge1xuICAgIGdyaWQtYXJlYTogbWF0LWJvdDtcbiAgICBtYXJnaW4tdG9wOiAtLjVlbTtcbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDItdW5pYm9hcmQpIHtcbiAgICAmLXRvcCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkYmxvY2stZ2FwO1xuICAgIH1cblxuICAgICYtYm90dG9tIHtcbiAgICAgIG1hcmdpbi10b3A6ICRibG9jay1nYXA7XG4gICAgfVxuICB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtc2hvcnQpIHtcbiAgICAjeyRtb3Zlcy10YWd9IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS10YWxsKSB7XG4gICAgI3skbW92ZXMtdGFnfSB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cbiAgfVxufVxuXG4ucmljb25zIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMSkge1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIH1cbn1cblxuLnJjb250cm9scyB7XG4gIC5mb2xsb3ctdXAge1xuICAgICYgLmJ1dHRvbiB7XG4gICAgICBwYWRkaW5nOiA5cHggMDtcbiAgICB9XG4gIH1cblxuICAucmVtYXRjaCB7XG4gICAgJi5idXR0b24ge1xuICAgICAgaGVpZ2h0OiA1MHB4O1xuICAgIH1cblxuICAgICYtZGVjbGluZSB7XG4gICAgICBoZWlnaHQ6IDQ5cHg7XG4gICAgfVxuICB9XG59XG5cbi8vIFRoZXNlIGltYWdlcyBhcmUgYWxzbyByZWZlcmVuY2VkIGluIGNyYXp5Q3RybC50cyAoZm9yIHByZWxvYWRpbmcpLlxuLy8gVGhlIG90aGVyIGZpbGUgc2hvdWxkIGJlIGtlcHQgaW4gc3luYy5cbkBlYWNoICRjb2xvciwgJGMgaW4gKFwid2hpdGVcIjogdywgXCJibGFja1wiOiBiKSB7XG4gIEBlYWNoICRyb2xlLCAkciBpbiAocGF3bjogUCwga25pZ2h0OiBOLCBiaXNob3A6IEIsIHJvb2s6IFIsIHF1ZWVuOiBRKSB7XG4gICAgYm9keS5jdXJzb3ItI3skY29sb3J9LSN7JHJvbGV9ICoge1xuICAgICAgY3Vyc29yOiB1cmwoLi4vcGllY2UvY2J1cm5ldHQvI3skY30jeyRyfS5zdmcpIDIyIDIyLCBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFFRUEsWUFBWTtBQXFCWiw2REFBNkQ7QUFjN0QsbUJBQW1CO0FBTW5CLGtDQUFrQztBQUVsQyxzQkFBc0I7QUFNdEIsb0NBQW9DO0FBRXBDLG9C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 */
