@charset "UTF-8";
/* 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 */
/* Heart: red */
/* Fancy: pink */
/* text over brag background */
/* Borders */
/* Shadows */
/* even rows in list or tables, subtle shade of $c-bg-high */
/* Primary: blue */
/* Secondary: green */
/* Brag: gold */
/* Fancy: pink */
/* Good: green */
/* Warn: orange */
/* Bad: red */
/* Common imports for all CSS modules */
/* Widths */
/* Heights */
/* Orientations */
/* Capabilities */
/* Aliases */
/* Uniboard: keep the same page layout across pages */
/* when the width is appropriate for col1, but landscape prevents it */
.piece-letter .tview2 move, .tview2 .piece-letter move, .piece-letter .pv_box .pv span, .pv_box .pv .piece-letter span, .piece-letter .explorer-box .moves td:first-child, .explorer-box .moves .piece-letter td:first-child, .piece-letter .explorer-box .tablebase td:first-child, .explorer-box .tablebase .piece-letter td:first-child, .piece-letter .analyse__fork move, .analyse__fork .piece-letter move, .piece-letter #analyse-cm .title, #analyse-cm .piece-letter .title, .tview2 glyph, .analyse__fork glyph {
  font-family: 'Noto Sans', Sans-Serif;
}

.tview2 move draw, .pv_box .pv span draw, .explorer-box .moves td:first-child draw, .explorer-box .tablebase td:first-child draw, .analyse__fork move draw, #analyse-cm .title draw, .tview2 eval, .tview2 tick, .tview2 comment .by, .ceval .engine .cloud, .game__tournament .clock, .mchat__tab, .mchat__messages a:not(.user-link), .explorer-box .moves th, .analyse__fork eval, .analyse__underboard__menu > span {
  font-family: 'Roboto', Sans-Serif;
}

.tview2 move, .pv_box .pv span, .explorer-box .moves td:first-child, .explorer-box .tablebase td:first-child, .analyse__fork move, #analyse-cm .title, .mofw-nom-overlay__header .mofw-san, .mofw-nom-overlay__cont-chip .mofw-cont-san {
  font-family: 'Noto Chess', 'Noto Sans';
}

.tview2 move draw, .pv_box .pv span draw, .explorer-box .moves td:first-child draw, .explorer-box .tablebase td:first-child draw, .analyse__fork move draw, #analyse-cm .title draw {
  margin-left: 1ch;
  font-weight: normal;
}

/* text printed directly on the page background deserves special treatment (transp theme) */
.chat__members, .analyse__controls .fbt {
  color: #999999;
}

.crosstable__users, .crosstable__score, .crosstable povs:hover, .cmn-toggle + label::after, .explorer__config .choices button, #analyse-cm .title, .analyse__clock {
  background: linear-gradient(to bottom, #3c3934, #33312e 100%);
}

.cmn-toggle:hover:not(:disabled) + label::after, .explorer__config .choices button:hover {
  background: linear-gradient(to bottom, #44413b, #3b3935 100%);
  color: #cccccc;
}

.ceval, .analyse__tools .comp-off__hint {
  background: linear-gradient(to bottom, #3c3934, #33312e 100%);
}

#modal-wrap, .pv_box .pv-board, .variant-racingKings .cg-wrap.cg-wrap cg-container::before, #analyse-cm {
  box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);
}

.fbt, .analyse__tools .comp-off__hint button, .mofw-nom-overlay__close, .mofw-nom-overlay__cont-remove, .mofw-nom-overlay__btn {
  background: none;
  border: none;
  outline: none;
  color: #bababa;
  align-items: normal;
}

.mchat__tab input {
  -webkit-appearance: none;
  background: #161512;
  border: 1px solid #3c3934;
  display: inline-block;
  padding: 0.5em;
}

.mchat__tab input:checked {
  background: #3b5c16;
  border-color: #4f7a1d;
}

.cmn-toggle:focus:not(:disabled) + label, .cmn-toggle:hover:not(:disabled) + label {
  box-shadow: 0 0 12px #999999;
}

.tview2 move, .ceval help,
.ceval .engine, .context-streamer, .mchat__tab, #acpl-chart-loader span {
  white-space: nowrap;
  overflow: hidden;
}

.tview2 comment .by, .pv_box .pv.pv--nowrap, .game__meta .user-tv, .mchat__tab span {
  white-space: nowrap;
}

.tview2-column > interrupt > comment, .mchat__messages {
  overflow-wrap: break-word;
  word-break: break-word;
}

.tview2 comment .by, .pv_box .pv.pv--nowrap, .game__meta .user-tv, .mchat__tab span, .crosstable__users, .explorer-box .games td span {
  overflow: hidden;
  text-overflow: ellipsis;
}

.pv_box .pv-board .pv-board-square {
  position: relative;
  display: block;
  height: 0;
  padding-bottom: 100%;
  width: 100%;
}

.cmn-toggle + label::before, .tview2 shapes::before {
  font-size: 1.2em;
  vertical-align: middle;
  font-family: 'lichess';
  font-style: normal;
  font-weight: normal;
  text-transform: none;
  content: attr(data-icon);
  opacity: 0.9;
}

#modal-overlay {
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  background: rgba(0, 0, 0, 0.6);
  z-index: 109;
}

.explorer-box .overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 2;
}

.pv_box .pv-board .pv-board-square .cg-wrap {
  position: absolute;
  width: 100%;
  height: 100%;
}

.cmn-toggle, .analyse-controls {
  touch-action: manipulation;
}

.tview2-column, .action-menu .autoplay, .explorer__config__player__choice .previous, .analyse__underboard .fen-pgn .pgn-options div {
  display: flex;
  flex-flow: row wrap;
}

#modal-overlay, .ceval .switch, .explorer__config .name > div, .analyse__fork, .analyse__fork move {
  /* extends %flex-wrap */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
}

.context-streamer, .game__meta__infos, .chat__members__number, .explorer-box .explorer-title, .explorer-box .explorer-title .active, #analyse-cm a, .material, .analyse__underboard__menu, .analyse__underboard .fen-pgn > div {
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
}

.explorer__config .date label {
  /* extends %flex-center */
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
  justify-content: space-between;
}

#modal-wrap, .continue-with, .crosstable povs, .crosstable__users, .crosstable__score, .crosstable__matchup, .mchat, .mchat__content, .analyse__tools, .action-menu__tools > *, .explorer-box .message, .training-box, .analyse--wiki .analyse__side, .advice-summary {
  display: flex;
  flex-flow: column;
}

.mchat__tab input, .crosstable, .game__meta, .mchat, .analyse__tools, #modal-wrap, .tview2-inline move.active,
.tview2 line move.active, .tview2-inline move:hover, .ceval .engine .cloud, #analyse-cm, .is3d .analyse__clock.top {
  border-radius: 3px;
}

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

.crosstable .sep, .explorer__config .choices button:first-child, .explorer-box .bar span:first-child {
  border-radius: 3px 0 0 3px;
}

.explorer__config .choices button:last-child, .explorer-box .bar span:last-child {
  border-radius: 0 3px 3px 0;
}

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

.analyse-controls .fbt, .context-streamer, .analyse__clock.bottom, .analyse__underboard__menu > span {
  border-radius: 0 0 3px 3px;
}

.crosstable, .game__meta, .mchat, .analyse__tools, #modal-wrap .close:hover, .context-streamer, .analyse__clock {
  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: 0.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;
}

coords {
  text-shadow: var(--cg-cs, 0 1px 2px #000);
}

.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-ccw, #fff);
}

.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-ccb, #fff);
}

/* 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.ranks coord,
  .coords-out .is2d coords.files coord {
    color: #999999 !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::-webkit-scrollbar,
body::-webkit-scrollbar-corner {
  width: 0.5rem;
  background: #262421;
}

body::-webkit-scrollbar-thumb {
  background: #4d4d4d;
}

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

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;
    z-index: 10;
  }
  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(214, 79, 0, 0.5);
  }
  .resizing cg-resize {
    border-radius: 50%;
    background: rgba(98, 153, 36, 0.5);
  }
}

#modal-overlay {
  justify-content: center;
}

#modal-wrap {
  background: #262421;
  position: relative;
  text-align: center;
  max-width: 100vw;
  max-height: 96vh;
}

#modal-wrap > div {
  overflow: hidden;
  overflow-y: auto;
  padding: 2rem;
}

#modal-wrap .close {
  color: #bababa;
  position: absolute;
  font-size: 16px;
  line-height: 28px;
  width: 32px;
  height: 32px;
  cursor: pointer;
  top: 0;
  right: 0;
  background: none;
}

@media (min-width: 800px) {
  #modal-wrap .close {
    top: -12px;
    right: -12px;
    background: #3c3934;
    border-radius: 50%;
  }
}

#modal-wrap .close:hover {
  background: #cc3333;
  color: #fff;
}

.continue-with > *:not(:first-child) {
  margin-top: 1em;
}

.color-icon.white::before {
  content: '';
}

.color-icon.black::before {
  content: '';
}

.color-icon.random::before {
  content: '';
}

.crosstable__users {
  flex: 1 1 auto;
}

.crosstable {
  width: 100%;
  line-height: 1.9em;
  display: flex;
  flex-wrap: wrap;
  /* ─── Tab bar (full width first row, rest unwrapped on second row) ─── */
  /* ─── Filtered view: hide non-matching povs ─── */
}

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

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

.crosstable__tabs {
  flex: 0 0 100%;
  display: flex;
  background: #262421;
  border-bottom: 1px solid #404040;
}

.crosstable__tab {
  flex: 1 1 50%;
  text-align: center;
  padding: 0.2em 0.5em;
  cursor: pointer;
  font-size: 0.85em;
  color: #999999;
  transition: background 0.15s, color 0.15s;
}

.crosstable__tab:hover {
  background: #282f35;
}

.crosstable__tab.active {
  background: #3692e7;
  color: #fff;
  font-weight: bold;
}

.crosstable--filtered povs:not(.matching) {
  display: none !important;
}

.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: #293a49;
}

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

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

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

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

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

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

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

.crosstable .sep {
  border-left: 1px solid #404040;
  margin-left: 0.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: #537c23;
    color: #fff;
  }
}

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

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

.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;
  padding: 1px;
  width: 40px;
  height: 24px;
  border: 1px solid #404040;
  border-radius: 24px;
}

.cmn-toggle + label::before, .cmn-toggle + label::after {
  display: block;
  position: absolute;
  content: '';
  width: 22px;
  height: 22px;
  bottom: 0;
  left: 0;
}

.cmn-toggle + label::before {
  font-size: 1em;
  z-index: 1;
  text-align: center;
  line-height: 22px;
}

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

.cmn-toggle:not(:checked) + label {
  background-color: #cc3333;
}

.cmn-toggle--subtle:not(:checked) + label {
  background-color: #6b6b6b;
}

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

.cmn-toggle:disabled + label {
  opacity: 60%;
  cursor: not-allowed !important;
}

.cmn-toggle:hover:not(:disabled) + label {
  transition: background 150ms;
}

.cmn-toggle:hover:not(:disabled) + label::before {
  transition: margin 150ms, color 150ms;
}

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

.cmn-toggle:not(:checked) + label::before {
  content: '';
  color: #cc3333;
}

.cmn-toggle--subtle:not(:checked) + label::before {
  color: #6b6b6b;
}

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

.cmn-toggle:checked + label::before {
  content: '';
  color: #629924;
}

input.range {
  -webkit-appearance: none;
  background: none;
  border: 0;
}

input.range:focus {
  outline: none;
}

input.range::-webkit-slider-runnable-track {
  width: 100%;
  height: 1em;
  cursor: pointer;
  background: #4d4d4d;
  border-radius: 0.5em;
}

input.range::-webkit-slider-thumb {
  background: linear-gradient(to bottom, #3c3934, #33312e 100%);
  border: 1px solid #6b6b6b;
  height: 1em;
  width: 1.5em;
  border-radius: 12px;
  background: #262421;
  cursor: pointer;
  -webkit-appearance: none;
}

input.range::-moz-range-track {
  width: 100%;
  height: 1em;
  cursor: pointer;
  background: #4d4d4d;
  border-radius: 0.5em;
}

input.range::-moz-range-thumb {
  background: linear-gradient(to bottom, #3c3934, #33312e 100%);
  border: 1px solid #6b6b6b;
  height: 1em;
  width: 1.5em;
  border-radius: 12px;
  background: #262421;
  cursor: pointer;
}

.tview2 move {
  display: inline-block;
  cursor: pointer;
}

.tview2 {
  white-space: normal;
}

.tview2-inline {
  padding: 7px 3px 7px 7px;
}

@media (hover: none) {
  .tview2 move {
    user-select: none;
  }
}

.tview2 move.inaccuracy {
  color: #56b4e9;
}

.tview2 move.mistake {
  color: #e69f00;
}

.tview2 move.blunder {
  color: #df5353;
}

.tview2-column move {
  font-size: 1.092em;
  padding: 0 2px;
}

.tview2-inline move {
  padding: 0.25em 0.17em;
  white-space: nowrap;
  font-weight: bold;
}

.tview2 move.parent {
  color: #3692e7;
}

.tview2 comment a {
  vertical-align: top;
}

.tview2 move.current {
  border: 1px solid #d64f00;
}

.tview2 move.active {
  font-weight: bold;
  background: #2a4053;
  color: #cccccc;
}

.tview2-inline move.active,
.tview2 line move.active {
  background: #2d5070;
  color: #e3e3e3;
  outline: 1px solid #306698;
}

.tview2 move.nongame {
  font-style: italic;
}

.tview2 move:not(.empty):hover,
.tview2 move:not(.empty):hover index,
.tview2 move:not(.empty):hover eval {
  background: #3692e7;
  color: #fff;
}

.tview2 move.empty {
  color: #6b6b6b;
  cursor: default;
}

.tview2 move index {
  font-size: 90%;
  color: #999999;
}

.tview2 move.context-menu {
  background: #d64f00;
  color: #fff;
}

.tview2 move.context-menu index {
  color: #fff;
}

.tview2-column move index {
  padding-left: 5px;
}

.tview2-column move index:first-child {
  padding-left: 0;
}

.tview2-inline move index {
  padding-right: 0.2em;
  line-height: 111.11%;
}

.tview2 line move {
  color: #bababa;
}

.tview2-column > move {
  flex: 0 0 43.5%;
  display: flex;
  font-size: 1.185em;
  line-height: 1.75em;
  padding: 0 0.3em 0 0.5em;
}

.tview2-column > index + move {
  border-right: #404040;
}

.tview2 eval {
  flex: 3 0 auto;
  text-align: right;
  font-size: 0.8em;
  color: #999999;
}

.tview2 glyph {
  margin-left: 0.08em;
  vertical-align: bottom;
}

.tview2 .mofw-star {
  font-size: 0.75em;
  margin-left: 0.15em;
  vertical-align: middle;
  cursor: default;
}

.tview2 .mofw-star--complete {
  color: #4caf50;
}

.tview2 .mofw-star--draft {
  color: #e6b800;
}

.tview2 tick {
  font-size: 0.7em;
  color: #999999;
  margin-left: 0.3em;
  vertical-align: middle;
}

.tview2 shapes {
  font-size: 0.7em;
  margin-left: 0.4em;
  text-align: right;
  color: #629924;
}

.tview2 shapes::before {
  content: '';
}

.tview2-column > move glyph {
  flex: 0 1 auto;
  text-align: center;
  overflow: hidden;
  font-size: 0.82em;
}

.tview2-column > index {
  flex: 0 0 13%;
  display: flex;
  justify-content: center;
  border-right: 1px solid #404040;
  background: #302e2c;
  line-height: 2.07em;
  color: #6b6b6b;
}

.tview2 > interrupt {
  font-size: 95%;
}

.tview2-column > interrupt {
  flex: 0 0 100%;
  background: #302e2c;
  border-top: 1px solid #404040;
  border-bottom: 1px solid #404040;
  max-width: 100%;
}

.tview2-column div.pgr {
  flex: 0 0 100%;
  display: flex;
  align-items: flex-start;
}

.tview2-column div.pgr > index {
  flex: 0 0 10%;
  display: flex;
  justify-content: center;
  border-right: 1px solid #404040;
  background: #302e2c;
  line-height: 2.07em;
  color: #6b6b6b;
  align-self: stretch;
}

.tview2-column div.pgr > .pgr-sym {
  flex: 0 0 10%;
  display: flex;
  justify-content: center;
  line-height: 2.07em;
  font-size: 1.1em;
}

.tview2-column div.pgr > .pgr-cnt {
  flex: 0 0 12%;
  display: flex;
  justify-content: center;
  line-height: 2.07em;
  color: #6b6b6b;
  font-size: 0.85em;
}

.tview2-column div.pgr > move {
  flex: 1;
  font-size: 1.185em;
  line-height: 1.75em;
  padding: 0 0.3em 0 0.5em;
}

.tview2-column div.pgr > move:hover {
  background: none !important;
  color: inherit !important;
}

.tview2-column div.pgr > move span {
  cursor: pointer;
  margin-right: 0.35em;
  padding: 0 2px;
  display: inline-block;
}

.tview2-column div.pgr > move span:hover {
  background: #3692e7;
  color: #fff;
}

.tview2-column div.pgr > move span.active {
  font-weight: bold;
  background: #2a4053;
  color: #cccccc;
}

.tview2-column div.pgr > move span.current {
  border: 1px solid #d64f00;
}

.tview2-column > interrupt > comment {
  display: block;
  padding: 3px 5px;
}

.tview2-inline comment {
  vertical-align: 45%;
  word-wrap: break-word;
  margin: 0 0.2em 0 0.1em;
  font-size: 0.9em;
}

.tview2 comment .by {
  display: inline-block;
  vertical-align: -0.3em;
  font-size: 0.9em;
  opacity: 0.8;
  margin-right: 0.4em;
  max-width: 9em;
}

.tview2-column comment.white {
  border-left: 3px solid;
}

.tview2-column comment.black {
  border-right: 3px solid;
  overflow-x: hidden;
}

.tview2-column comment.inaccuracy {
  border-color: #56b4e9;
}

.tview2-column comment.mistake {
  border-color: #e69f00;
}

.tview2-column comment.blunder {
  border-color: #df5353;
}

.tview2-column comment.undefined {
  border-color: #66558c;
}

.tview2 line comment {
  font-size: 90%;
}

.tview2-column line comment {
  display: inline;
  color: #999999;
  word-wrap: break-word;
  padding: 0 5px 0 3px;
  vertical-align: top;
}

.tview2 line comment .by {
  font-size: 1em;
  vertical-align: top;
}

.tview2 lines {
  display: block;
  margin-top: 2px;
  margin-left: 6px;
  margin-bottom: 0.8em;
  border-left: 2px solid #404040;
}

.tview2 > interrupt > lines {
  margin-left: 0px;
}

.tview2 lines.single {
  border-left: none;
}

.tview2 lines:last-child {
  margin-bottom: 0;
}

.tview2 line {
  display: block;
  padding-left: 7px;
}

.tview2-column line {
  margin: 2px 0;
}

.tview2 lines lines move {
  font-size: 13px;
}

.tview2 lines lines {
  margin-left: 1px;
}

.tview2 lines lines::before {
  content: ' ';
  border-top: 2px solid #404040;
  position: absolute;
  margin-left: -11px;
  width: 9px;
  height: 6px;
}

.tview2 lines line::before {
  margin-top: 0.65em;
  margin-left: -8px;
  content: ' ';
  border-top: 2px solid #404040;
  position: absolute;
  width: 8px;
  height: 6px;
}

.tview2 lines lines:last-child {
  margin-bottom: 0;
}

.tview2 inline {
  display: inline;
  font-style: italic;
  font-size: 0.9em;
  opacity: 0.8;
}

.tview2 inline::before,
.tview2 inline::after {
  vertical-align: 0.4em;
  opacity: 0.7;
  font-size: 0.9em;
}

.tview2 inline::before {
  content: '(';
  margin-left: 2px;
}

.tview2 inline::after {
  content: ')';
  margin-right: 2px;
}

.tview2-inline inline::before,
.tview2-inline inline::after {
  vertical-align: 0.7em;
}

.tview2 .conceal {
  opacity: 0.4;
}

.tview2 .hide {
  display: none;
}

.ceval {
  position: relative;
  display: flex;
  align-items: stretch;
}

.ceval.enabled {
  padding-top: 2px;
  height: 40px;
}

.ceval.enabled .show-threat {
  visibility: visible;
}

.ceval .switch {
  flex: 0 0 40px;
  margin-right: 8px;
}

.ceval pearl {
  flex: 0 0 75px;
  line-height: 38px;
  font-size: 1.6em;
  text-align: center;
  font-weight: bold;
}

.ceval help,
.ceval .engine {
  flex: 1 1 auto;
  font-size: 12px;
  line-height: 16px;
  margin-top: 3px;
  color: #999999;
}

.ceval .engine .cloud {
  margin-left: 4px;
  background: #4f7a1d;
  color: #fff;
  padding: 1px 3px;
  text-transform: uppercase;
  font-size: 11px;
}

.ceval .engine .info {
  display: block;
  white-space: nowrap;
}

.ceval .engine .deeper {
  color: #3692e7;
  margin-left: 4px;
}

.ceval .engine .deeper::before {
  vertical-align: -2px;
}

.ceval .technology {
  margin-left: 5px;
}

.ceval .technology.good {
  color: #629924;
}

.ceval .bar {
  position: absolute;
  width: 100%;
  height: 3px;
  top: 0px;
}

@keyframes bar-anim {
  from {
    background-position: 0 0;
  }
  to {
    background-position: 100000px 0;
  }
}

.ceval .bar span {
  display: block;
  height: 3px;
  width: 0;
  background: #629924;
  transition: width 1s;
}

.ceval .bar span.threat {
  background: #cc3333;
}

.ceval.computing .bar span {
  background-image: url("../images/bar-highlight.png");
  animation: bar-anim 1000s linear infinite;
}

.ceval .show-threat {
  flex: 0 99 auto;
  line-height: 38px;
  color: #999999;
  font-size: 0.9em;
  padding-right: 0.5em;
  overflow: hidden;
  visibility: hidden;
}

.ceval .show-threat:hover:not(.hidden), .ceval .show-threat.active {
  color: #cc3333;
}

.ceval .show-threat.hidden {
  opacity: 0.3;
  cursor: default;
}

.pv_box {
  position: relative;
  background: #262421;
  font-size: 13px;
}

.pv_box .pv {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  line-height: 2em;
  border-top: 1px solid #404040;
  padding-right: 14px;
  min-height: 2em;
}

.pv_box .pv.pv--nowrap {
  display: block;
  flex-wrap: initial;
  height: 2em;
}

.pv_box .pv[data-uci]:hover {
  background: #323c22;
  cursor: pointer;
}

.pv_box .pv strong {
  display: inline-block;
  width: 34px;
  text-align: center;
}

.pv_box .pv span {
  margin-left: 4px;
}

.pv_box .pv[data-uci] .pv-san:hover {
  color: #3692e7;
}

.pv_box .pv .pv-wrap-toggle {
  position: absolute;
  top: 0;
  right: 0;
  padding: 0 4px;
  margin: 0;
  cursor: pointer;
}

.pv_box .pv .pv-wrap-toggle:hover {
  background: #629924;
  color: #fff;
}

.pv_box .pv .pv-wrap-toggle::before {
  content: '▲';
}

.pv_box .pv.pv--nowrap .pv-wrap-toggle {
  transform: rotate(180deg);
}

.pv_box .pv-board {
  position: absolute;
  width: 80%;
  left: 34px;
  max-width: 240px;
  z-index: 1;
}

main {
  --gauge-gap: 8px;
}

@media (min-width: 320px) {
  main {
    --gauge-gap: calc( 8px + 9 * ((100vw - 320px) / 880));
  }
}

@media (min-width: 1200px) {
  main {
    --gauge-gap: 17px;
  }
}

.eval-gauge {
  width: var(--gauge-gap);
  position: relative;
  background: #a0a0a0;
  overflow: hidden;
}

@media (max-width: 799px) and (orientation: portrait) {
  .eval-gauge {
    display: none;
  }
}

.eval-gauge.reverse {
  transform: rotateX(180deg);
}

.eval-gauge::after {
  content: '';
  display: block;
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.7) inset;
}

.eval-gauge tick {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  border-bottom: 2px ridge #a0a0a0;
  opacity: 0.4;
}

.eval-gauge tick.zero {
  top: 6px;
  opacity: 1;
  border-bottom: 7px solid rgba(214, 79, 0, 0.4);
  margin-top: -3px;
}

.eval-gauge .black {
  width: 100%;
  height: 50%;
  background: #666;
  transition: height 1s;
}

.analyse-controls {
  display: flex;
  justify-content: space-between;
  align-items: stretch;
  font-size: 1.3rem;
}

.analyse-controls .fbt {
  text-align: center;
}

.analyse-controls .hidden {
  visibility: hidden;
}

.analyse-controls .jumps {
  display: flex;
}

.analyse-controls .jumps .fbt {
  flex: 1 1 30%;
}

.analyse-controls .jumps .fbt:first-child, .analyse-controls .jumps .fbt:last-child {
  flex: 1 1 20%;
  font-size: 0.7em;
}

#promotion-choice {
  background: rgba(22, 21, 18, 0.7);
  z-index: 205;
  position: absolute;
  width: var(--cg-width, 100%);
  height: var(--cg-height, 100%);
  right: 0;
}

#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 #d64f00;
  border-radius: 0%;
}

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

.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;
}

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

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

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

.context-streamer:hover {
  background: #537e20;
}

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

.game__meta section:not(:last-child) {
  border-bottom: 1px solid #404040;
  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: 0.3rem;
  font-size: 90%;
}

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

.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: 0.2em;
}

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

body::-webkit-scrollbar,
body::-webkit-scrollbar-corner {
  width: 0.5rem;
  background: #262421;
}

body::-webkit-scrollbar-thumb {
  background: #4d4d4d;
}

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

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

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

.mchat__tab:hover {
  background: #412b1c;
}

.mchat__tab-active {
  color: #bababa;
  background: #262421 !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: 0.9em;
  height: 100%;
  overflow: hidden;
}

.chat__members__inner {
  display: flex;
  align-items: flex-start;
}

.chat__members__number {
  margin-right: 1ch;
}

.chat__members__number::before {
  font-size: 1em;
  color: #999999;
  margin-right: 0.2ch;
}

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

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

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

.mchat__messages li.me {
  border-left: 3px solid #4f7a1d;
  padding-left: 7px;
}

.mchat__messages li.host {
  background-color: rgba(79, 122, 29, 0.4);
}

.mchat__messages .deleted {
  opacity: 0.5;
}

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

.mchat__messages .announcement {
  display: block;
  font-size: 1.1em;
  margin-left: 0;
  text-align: center;
  font-weight: bold;
}

.mchat__messages .color,
.mchat__messages .user-link {
  font-weight: bold;
  padding: 0;
  color: #999999;
  letter-spacing: -1px;
  padding-right: 0.4em;
  max-width: 110px;
  text-overflow: ellipsis;
  display: inline-block;
  vertical-align: bottom;
}

.mchat__messages line.patron {
  font-size: 1.1em;
  width: 1.2em;
  text-align: left;
  color: #bf811d;
}

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

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

.mchat__messages i:hover {
  opacity: 1;
}

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

.mchat__messages li.me i {
  display: none !important;
}

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

@media (hover: none) {
  .mchat__say {
    font-size: 16px;
  }
}

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

@keyframes palantir-glowing {
  40% {
    background: none;
  }
  50% {
    background: #384722;
  }
  60% {
    background: #2b455d;
  }
  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: 0.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: #262421;
  flex: 1 1 auto;
  overflow: hidden;
}

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

@media (hover: none) {
  .mchat__content.note textarea {
    font-size: 16px;
  }
}

/* analyse a game replay */
.analyse__tools .sub-box, .action-menu {
  border-bottom: 1px solid #404040;
}

@media (min-width: 800px), (orientation: landscape) {
  .analyse__tools .sub-box, .action-menu {
    border-bottom: 3px solid #629924;
  }
}

body {
  /* prevents scroll bar flicker on page height changes */
  overflow-y: scroll;
}

#main-wrap {
  --main-max-width: calc(100vh - calc(var(--site-header-height) + var(--site-header-margin)) - 5rem);
}

@media (min-width: 800px), (orientation: landscape) {
  #main-wrap {
    --main-max-width: auto;
  }
}

.analyse {
  grid-area: main;
  display: grid;
  --meta-height: auto;
  --chat-height: fit-content(0);
  grid-template-rows: auto auto minmax(20em, 30vh);
  grid-template-areas: 'board' 'controls' 'tools' 'side' 'acpl' 'under' 'chat' 'uchat';
}

.analyse__side {
  grid-area: side;
  justify-content: start;
  margin: 2vmin;
}

.analyse__board {
  grid-area: board;
}

.analyse .relay-tour {
  grid-row-start: board;
  grid-row-end: tools;
  grid-column: board;
}

.analyse__tools {
  grid-area: tools;
}

.analyse__controls {
  grid-area: controls;
}

.analyse__underboard {
  grid-area: under;
}

@media (max-width: 799px) and (orientation: portrait) {
  .analyse__underboard {
    overflow: hidden;
  }
}

.analyse__acpl {
  grid-area: acpl;
}

.analyse .chat__members {
  grid-area: uchat;
}

.analyse .eval-gauge {
  grid-area: gauge;
  display: none;
}

.analyse--wiki {
  --chat-height: 0;
}

@media (min-width: 800px), (orientation: landscape) {
  .analyse {
    grid-template-columns: minmax(calc(70vmin * var(--board-scale)), calc(100vh * var(--board-scale) - calc(var(--site-header-height) + var(--site-header-margin)) - 3rem)) var(--gauge-gap) minmax(240px, 400px);
    grid-template-rows: fit-content(0);
    grid-template-areas: 'board      gauge tools' 'under      .     controls' 'under      .     acpl' 'under      .     side' 'chat       .     side' 'uchat      .     side';
    grid-row-gap: 0;
  }
  .analyse__side,
  .analyse .chat__members,
  .analyse .mchat {
    margin: 2vmin 0 0 0;
  }
  .analyse__underboard {
    margin-top: 23px;
  }
  .analyse .eval-gauge {
    display: block;
  }
  .analyse .relay-tour {
    grid-row-end: under;
  }
}

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

@media (min-width: 1260px) {
  .analyse {
    grid-template-columns: minmax(230px, 20vw) 2vmin minmax(calc(70vmin * var(--board-scale)), calc(100vh * var(--board-scale) - calc(var(--site-header-height) + var(--site-header-margin)) - 3rem)) var(--gauge-gap) minmax(240px, 400px);
    grid-template-rows: var(--meta-height) var(--chat-height) 2.5em 1fr;
    grid-template-areas: 'side    . board gauge tools' 'chat    . board gauge tools' 'uchat   . under .     controls' 'uchat   . under .     acpl';
  }
  .analyse__side {
    margin-top: 0;
  }
  .analyse .mchat {
    min-height: 10em;
  }
  .analyse .crosstable__users {
    flex: 7 1 auto;
  }
}

.analyse__tools {
  background: #262421;
}

.analyse__tools .ceval {
  flex: 0 0 38px;
}

.analyse__tools .sub-box {
  user-select: none;
}

.analyse__tools .sub-box .title {
  font-size: 0.9rem;
  line-height: 1.9em;
  background: #3e5322;
  padding: 0 7px;
}

.analyse__tools .comp-off__hint {
  opacity: 0.8;
  padding: 0.3em 1em;
  text-align: center;
}

.analyse__tools .comp-off__hint button {
  margin-left: 1em;
  color: #3692e7;
}

.analyse__tools .comp-off__hint button:hover {
  color: #57aeff;
}

.analyse__moves {
  flex: 2 1 0;
  overflow-y: auto;
  overflow-x: hidden;
  border-top: 1px solid #404040;
  position: relative;
  /* required so line::before scrolls along the moves! */
}

.analyse__moves .result,
.analyse__moves .status {
  background: #302e2c;
  text-align: center;
}

.analyse__moves .result {
  border-top: 1px solid #404040;
  font-weight: bold;
  font-size: 1.2em;
  padding: 5px 0 3px 0;
}

.analyse__moves .status {
  font-size: 1em;
  font-style: italic;
  padding-bottom: 7px;
}

.analyse__controls {
  height: 3rem;
  align-items: stretch;
}

.analyse__controls div {
  display: flex;
  flex: 1 1 auto;
  align-items: stretch;
}

.analyse__controls .jumps {
  flex: 3 1 auto;
}

.analyse__controls .fbt {
  flex: 0 0 2.5rem;
  transition: visibility 0s;
}

.analyse__controls .active {
  margin-top: -3px;
  padding-top: 3px;
}

.analyse__controls ::before {
  vertical-align: middle;
}

@media (max-width: 799px) and (orientation: portrait) {
  .analyse__controls {
    height: 5rem;
  }
  .analyse__controls .fbt {
    flex: 0 0 3.5rem;
  }
}

.action-menu {
  flex: 1 1 0;
  display: flex;
  flex-flow: column;
  overflow: auto;
  padding: 2vmin;
}

.action-menu h2 {
  font-size: 1em;
  text-transform: uppercase;
  text-align: center;
  white-space: nowrap;
  margin: 2vmin 0 3px 0;
  display: table;
  padding: 0 10px;
}

.action-menu h2:before, .action-menu h2:after {
  border-top: 1px solid #404040;
  content: '';
  display: table-cell;
  position: relative;
  top: 0.5em;
  width: 45%;
}

.action-menu h2:before {
  right: 8px;
}

.action-menu h2:after {
  left: 8px;
}

.action-menu__tools {
  flex: 0 0 auto;
  display: flex;
  flex-flow: row wrap;
}

.action-menu__tools > * {
  flex: 0 0 50%;
  text-align: center;
  padding: 0;
  height: 75px;
  justify-content: center;
}

.action-menu__tools .button {
  color: #bababa;
  text-transform: none;
  white-space: normal;
}

.action-menu__tools .button::before {
  display: block;
  font-size: 2em;
  line-height: 1em;
  margin-bottom: 5px;
}

.action-menu .autoplay a {
  color: #999999;
  font-size: 0.9em;
  flex: 1 1 auto;
  padding: 7px 0;
  text-align: center;
}

.action-menu form.delete {
  text-align: right;
  margin-top: 6px;
}

.action-menu form.delete .button::before {
  font-size: 1.2em;
}

.action-menu .setting {
  flex: 0 0 auto;
  margin-top: 2vmin;
  display: flex;
}

.action-menu .setting label {
  flex: 4 1 auto;
  cursor: pointer;
  white-space: nowrap;
}

.action-menu .setting input[type='range'] {
  flex: 1 4 auto;
  padding: 0 0 0 1em;
  height: 1.6em;
  width: 100%;
  margin: 0 1ch;
}

.action-menu .setting input[type='range'][min='0'] {
  padding: 0;
}

.action-menu .setting .range_value {
  flex: 0 0 auto;
  display: block;
  text-align: right;
}

@media (max-width: 799px) and (orientation: portrait) {
  .action-menu .abset-inline {
    display: none;
  }
}

.explorer__config section,
.explorer__config .toggle {
  margin: 0.4em 2vmin 0 2vmin;
}

.explorer__config section.save {
  text-align: center;
  padding: 15px 0 10px 0;
}

.explorer__config label {
  font-weight: bold;
  display: block;
  line-height: 2em;
}

.explorer__config .choices {
  display: flex;
}

.explorer__config .choices button {
  flex-grow: 1;
  padding: 5px 0;
  text-align: center;
  cursor: pointer;
  transition: all 150ms;
  border: 1px solid #404040;
  border-width: 1px 0 1px 1px;
  text-transform: capitalize;
}

.explorer__config .choices button:last-child {
  border-right-width: 1px;
}

.explorer__config .choices button[aria-pressed='true'], .explorer__config .choices button.active {
  background: #629924;
  color: #fff;
  text-shadow: 1px 0 0 rgba(0, 0, 0, 0.5);
  font-weight: bold;
}

.explorer__config .choices button[aria-pressed='true'] {
  box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2) inset;
}

.explorer__config .name .player-name {
  border-radius: 3px !important;
  font-weight: bold;
  padding-right: 1em;
  padding-left: 1em;
  text-transform: none;
  margin-right: 0.5em;
}

.explorer__config .name .player-name.active:hover {
  background: #82ad50;
}

.explorer__config .name .color {
  margin-left: 1ch;
}

.explorer__config .toggle {
  font-weight: bold;
  display: block;
  line-height: 2em;
}

.explorer__config .date input {
  border: none;
  background: none;
  padding: 0.1em 0.5em;
}

.explorer__config .date input:invalid {
  background: #582927;
}

.explorer__config__player__choice {
  max-width: 70ch !important;
}

.explorer__config__player__choice > div {
  overflow: visible !important;
}

.explorer__config__player__choice .input-wrapper {
  overflow: visible !important;
  position: relative;
  display: inline-block;
  padding-top: 2em;
  margin-bottom: 2em;
}

.explorer__config__player__choice .previous .button {
  margin: 0.3em 0.2em;
  text-transform: none;
}

.explorer-box {
  position: relative;
  flex: 3 1 0px;
  white-space: nowrap;
  transition: all 150ms;
  transition-delay: 0.3s;
  overflow-x: hidden;
  overflow-y: auto;
  font-size: 0.9em;
}

.explorer-box.reduced {
  flex: 0.3 3 0px;
}

.explorer-box.reduced:hover {
  flex: 1 2 0px;
}

.explorer-box .overlay {
  display: none;
}

.explorer-box.loading .overlay {
  display: block;
}

.explorer-box tbody {
  transition: all 150ms;
}

.explorer-box.loading tbody {
  opacity: 0.4;
}

.explorer-box .title {
  overflow: hidden;
  text-overflow: ellipsis;
  user-select: text;
}

.explorer-box .explorer-title {
  align-items: stretch;
  font-size: 0.9rem;
  line-height: 1.9em;
  padding: 0;
  background: #384722;
}

.explorer-box .explorer-title .ddloader {
  padding-left: 7px;
}

.explorer-box .explorer-title .active {
  padding: 0 7px;
  color: #cccccc;
  background: #3e5322;
}

.explorer-box .explorer-title .active strong {
  margin-right: 0.5ch;
}

.explorer-box .explorer-title .active.player {
  cursor: pointer;
}

.explorer-box .explorer-title .long {
  letter-spacing: -0.1ch;
}

.explorer-box .explorer-title button {
  display: inline-block;
  padding: 0 0.5ch;
  margin-left: 1px;
  color: #999999;
}

.explorer-box .explorer-title button:hover {
  color: #cccccc;
  background: #445f23;
}

.explorer-box .empty {
  display: flex;
  flex-flow: column;
  height: 100%;
}

.explorer-box .empty .message {
  text-align: center;
}

.explorer-box tr:nth-child(even) {
  background: #302e2c;
}

.explorer-box tr:hover {
  background: #323c22;
}

.explorer-box td {
  cursor: pointer;
  padding-left: 7px;
}

.explorer-box .moves th {
  font-size: 0.8rem;
  line-height: 1.8em;
  background: #3e5322;
  padding-left: 7px;
}

.explorer-box .moves td:first-child {
  line-height: 30px;
  padding-left: 7px;
}

.explorer-box .moves td:nth-child(2) {
  font-size: 0.75em;
  text-align: right;
}

.explorer-box .moves td:last-child {
  width: 100%;
  padding-right: 7px;
}

.explorer-box .moves tbody tr.sum {
  /* sum row */
  background: #2a4053;
  font-weight: bold;
}

@media (min-width: 800px) and (min-height: 400px), (orientation: landscape) and (min-height: 400px) {
  .explorer-box .moves tbody tr.sum {
    position: sticky;
    bottom: 0;
  }
}

.explorer-box .moves tbody tr.sum td {
  cursor: default;
}

.explorer-box .bar span {
  text-align: center;
  display: inline-block;
  overflow: hidden;
  vertical-align: middle;
  background-clip: padding-box;
  border: 0 solid rgba(186, 186, 186, 0.17);
  border-width: 1px 0;
  height: 16px;
  line-height: 14px;
  font-size: 0.9em;
  transition: width 1s;
}

.explorer-box .white {
  background: #ccc;
  box-shadow: 0 -5px 7px rgba(0, 0, 0, 0.25) inset;
  color: #222;
}

.explorer-box .draws,
.explorer-box .black {
  color: #ddd;
  box-shadow: 0 5px 7px rgba(255, 255, 255, 0.1) inset;
}

.explorer-box .draws {
  background: #666;
}

.explorer-box .black {
  background: #333;
  color: #ddd;
}

.explorer-box .bar span:first-child {
  border-left-width: 1px;
}

.explorer-box .bar span:last-child {
  border-right-width: 1px;
}

.explorer-box .games {
  width: 100%;
}

.explorer-box .games td {
  padding: 5px 0 5px 7px;
  max-width: 110px;
}

.explorer-box .games td:nth-child(2) {
  max-width: none;
}

.explorer-box .games td span {
  display: block;
}

.explorer-box .games result {
  display: block;
  text-align: center;
  padding: 3px 5px;
  border-radius: 3px;
  font-size: 0.9em;
}

.explorer-box .game_menu {
  background: #629924;
  cursor: default;
  padding: 0;
}

.explorer-box .game_menu .game_title {
  text-align: center;
  color: #fff;
  margin: 3px 0 1px 0;
}

.explorer-box .game_menu .menu {
  display: flex;
  justify-content: space-between;
  text-transform: uppercase;
}

.explorer-box .game_menu .menu a {
  color: #fff;
  padding: 4px 8px;
}

.explorer-box .game_menu .menu a:hover {
  background: rgba(255, 255, 255, 0.2);
}

.explorer-box .tablebase {
  width: 100%;
}

.explorer-box .tablebase td:first-child {
  font-size: 14px;
  line-height: 30px;
  padding-left: 7px;
}

.explorer-box .tablebase td:last-child {
  padding-right: 7px;
  text-align: right;
}

.explorer-box .tablebase result {
  padding: 3px 5px;
  margin-left: 5px;
  border-radius: 3px;
  font-size: 0.9em;
}

.explorer-box .toconf {
  position: absolute;
  top: 0;
  right: 0;
  cursor: pointer;
  display: block;
  font-size: 1.2em;
  width: 1.5em;
  line-height: 1.5em;
  text-align: center;
  opacity: 0.8;
}

.explorer-box .toconf:hover {
  opacity: 1;
}

.explorer-box .message {
  flex: 1 1 auto;
  justify-content: center;
  text-align: center;
  font-style: italic;
}

.explorer-box.reduced .message {
  justify-content: flex-start;
}

.explorer-box .message strong {
  font-weight: bold;
  margin: 1em 0;
}

.explorer-box:not(.reduced) .message h3,
.explorer-box.reduced:hover .message h3 {
  font-weight: bold;
}

.explorer-box .message p {
  white-space: normal;
  padding: 0 8px;
  margin: 0 0 8px 0;
}

.explorer-box.reduced .message p,
.explorer-box.reduced .message button {
  display: none;
}

.explorer-box.reduced:hover .message p,
.explorer-box.reduced:hover .message button {
  display: block;
}

.explorer-box .message button {
  margin: 0 30px;
}

.training-box {
  flex: 1.5 1 0px;
}

.training-box .feedback {
  flex: 1 1 100%;
  display: flex;
  flex-flow: column;
  justify-content: center;
}

.training-box .feedback .find,
.training-box .feedback .fail {
  padding-top: 5px;
  padding-bottom: 8px;
}

.training-box .progress {
  margin-top: 5px;
  opacity: 0.8;
  width: 100%;
  height: 4px;
  background: #4d4d4d;
}

.training-box .progress div {
  background: #629924;
  height: 4px;
  transition: width 0.5s;
  max-width: 100%;
}

.training-box .player {
  display: flex;
  align-items: center;
  margin-left: 10px;
}

.training-box .no-square {
  width: 64px;
  height: 64px;
  margin-right: 10px;
}

.is3d .training-box div.no-square {
  height: 82px;
}

.training-box piece {
  position: inherit;
  display: block;
  width: 100% !important;
  height: 100% !important;
}

.training-box .icon {
  display: block;
  width: 64px;
  height: 64px;
  margin-right: 10px;
  font-size: 50px;
  font-size: 64px;
  line-height: 64px;
  text-align: center;
}

.training-box .instruction > * {
  display: block;
}

.training-box .instruction > strong {
  font-weight: normal;
  font-size: 1.2em;
}

.training-box .choices {
  line-height: 1.6em;
  margin: 5px 0 -5px 0;
}

.training-box .choices a {
  display: block;
}

.practice-box {
  flex: 0 0 135px;
  user-select: none;
}

.practice-box .comment {
  flex: 0 0 30px;
  display: flex;
  align-items: stretch;
  background: #302e2c;
  border-top: 1px solid #404040;
  white-space: nowrap;
  line-height: 30px;
}

.practice-box .progress div {
  background: #4d4d4d;
}

.practice-box.goodMove .progress div {
  background: #629924;
  color: #fff;
}

.practice-box.inaccuracy .title,
.practice-box.inaccuracy .progress div {
  background: #bf811d;
  color: #fff;
}

.practice-box.mistake .title,
.practice-box.blunder .title,
.practice-box.mistake .progress div,
.practice-box.blunder .progress div {
  background: #cc3333;
  color: #fff;
}

.practice-box .comment .wait {
  padding-left: 15px;
}

.practice-box .verdict {
  font-weight: bold;
  margin-right: 10px;
  display: flex;
}

.practice-box .verdict::before {
  width: 30px;
  height: 100%;
  color: #fff;
  margin-right: 7px;
  text-align: center;
  font-size: 1.4em;
  font-weight: normal;
}

.practice-box.goodMove .verdict {
  color: #629924;
}

.practice-box.goodMove .verdict::before {
  background: #629924;
  content: '✓';
  font-size: 1.7em;
}

.practice-box.inaccuracy .verdict {
  color: #bf811d;
}

.practice-box.inaccuracy .verdict::before {
  background: #bf811d;
  content: '?';
}

.practice-box.mistake .verdict,
.practice-box.blunder .verdict {
  color: #cc3333;
}

.practice-box.mistake .verdict::before,
.practice-box.blunder .verdict::before {
  background: #cc3333;
  content: '✗';
}

.practice-box .comment move {
  cursor: pointer;
  margin-left: 5px;
  color: #3692e7;
  transition: 0.3s;
}

.analyse__fork {
  flex: 0 0 auto;
}

@media (max-width: 799px) and (orientation: portrait) {
  .analyse__fork {
    display: none;
  }
}

.analyse__fork move {
  background: #2a4053;
  color: #cccccc;
  flex: 0 0 50%;
  cursor: pointer;
  padding: 0.2em 1em;
  border-bottom: 1px solid #262421;
}

.analyse__fork move:nth-child(odd) {
  border-right: 1px solid #262421;
}

.analyse__fork move:hover,
.analyse__fork:not(:hover) move.selected {
  background: #3692e7;
  color: #fff;
}

.analyse__fork glyph {
  margin-left: 2px;
}

.analyse__fork eval {
  flex: 3 0 auto;
  text-align: right;
  font-size: 0.9em;
}

.analyse__side {
  align-self: start;
}

.analyse__side .back-to-game {
  margin-top: 2em;
  text-align: center;
}

@media (min-width: 1260px) {
  .analyse__side .back-to-game {
    margin-top: 10vh;
  }
}

.analyse__side .back-to-game .button {
  margin: 0 auto;
}

.analyse__side .analyse__wiki {
  margin-top: 2vh;
  flex: 1 1 auto;
}

@media (min-width: 1260px) {
  .analyse__side .analyse__wiki {
    flex: 1 1 0;
    padding: 0.5em 1em 0 0;
  }
}

.analyse--wiki .analyse__side {
  align-self: auto;
}

.analyse__wiki {
  overflow-y: auto;
}

.analyse__wiki p {
  text-align: justify;
  line-height: 1.5;
}

.analyse__wiki h1,
.analyse__wiki h2 {
  margin-bottom: 1rem;
}

.analyse__wiki h1,
.analyse__wiki h2 {
  font-size: 17px;
}

@media (min-width: 320px) {
  .analyse__wiki h1,
  .analyse__wiki h2 {
    font-size: calc( 17px + 6 * ((100vw - 320px) / 880));
  }
}

@media (min-width: 1200px) {
  .analyse__wiki h1,
  .analyse__wiki h2 {
    font-size: 23px;
  }
}

.analyse__wiki h3 {
  font-size: 1.2em;
  font-weight: bold;
  margin-bottom: 0.7rem;
}

#analyse-cm {
  background: #262421;
  position: absolute;
  display: none;
  z-index: 107;
  cursor: default;
  user-select: none;
}

#analyse-cm.visible {
  display: block;
}

#analyse-cm .title {
  padding: 0.4em;
  text-align: center;
  font-size: 1.2em;
  border-bottom: 1px solid #404040;
  margin: 0;
}

#analyse-cm a {
  color: #bababa;
  padding: 0.5em 0.6em 0.5em 0.3em;
}

#analyse-cm a::before {
  width: 2em;
  text-align: center;
}

#analyse-cm a:hover {
  background: #38291e;
}

.material div {
  display: inline-block;
  margin-left: 10px;
}

.material mpiece {
  margin-left: -10px;
  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';
}

.analyse__player_strip {
  position: absolute;
  right: 0;
  display: flex;
  /* Where to put them in col1 layout? It moves the entire board and controls down for little benefit */
}

.analyse__player_strip.top {
  top: -20px;
}

.is3d .analyse__player_strip.top {
  top: -55px;
}

.analyse__player_strip.bottom {
  top: var(--cg-height, 100%);
  z-index: 1;
}

.is3d .analyse__player_strip.bottom {
  top: calc(var(--cg-height, 100%) + 15px);
}

@media (max-width: 799px) and (orientation: portrait) {
  .analyse__player_strip {
    display: none;
  }
}

.analyse__clock {
  padding: 0 0.5em;
  margin-left: 12px;
  height: 20px;
  font-weight: bold;
  text-align: center;
}

.analyse__clock.active {
  background: #2b455d;
}

.analyse__clock tenths {
  font-size: 80%;
}

.material {
  padding-right: 1px;
}

.material mpiece {
  width: 20px;
  height: 20px;
}

.material mpiece.pawn {
  margin-left: -10px;
}

.material score {
  margin-top: -2px;
}

.material-top {
  margin-top: -1px;
}

.material-bottom {
  margin-top: 1px;
}

.mofw-nom-overlay {
  position: absolute;
  z-index: 1001;
  left: 0;
  right: 0;
  background: #262421;
  border-top: 3px solid #d64f00;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.18);
}

.mofw-nom-overlay__header {
  display: flex;
  align-items: center;
  padding: 0.55rem 1rem;
  font-size: 1rem;
  font-weight: bold;
  border-bottom: 1px solid #404040;
  gap: 0.5rem;
}

.mofw-nom-overlay__header .mofw-san {
  color: #d64f00;
}

.mofw-nom-overlay__close {
  margin-left: auto;
  font-size: 1.2rem;
  line-height: 1;
  color: #999999;
  cursor: pointer;
  padding: 0 0.2rem;
}

.mofw-nom-overlay__close:hover {
  color: #bababa;
}

.mofw-nom-overlay__section {
  padding: 0.5rem 1rem;
  border-bottom: 1px solid #404040;
}

.mofw-nom-overlay__actions {
  padding: 0.5rem 1rem;
  display: flex;
  gap: 0.5rem;
  align-items: center;
  border-top: 1px solid #404040;
}

.mofw-nom-overlay__label {
  font-size: 0.78rem;
  color: #999999;
  margin-bottom: 0.3rem;
  font-weight: bold;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.mofw-nom-overlay__optional {
  font-weight: normal;
  text-transform: none;
  letter-spacing: 0;
}

.mofw-nom-overlay__tag-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: 0.2rem 0.5rem;
}

.mofw-nom-overlay__tag-item {
  display: flex;
  align-items: center;
  gap: 0.3rem;
  font-size: 0.88rem;
  cursor: pointer;
  padding: 0.12rem 0;
  color: #bababa;
}

.mofw-nom-overlay__tag-item:hover {
  color: #d64f00;
}

.mofw-nom-overlay__tag-item:first-child {
  font-weight: bold;
}

.mofw-nom-overlay__tag-cb {
  cursor: pointer;
  accent-color: #d64f00;
  width: 15px;
  height: 15px;
}

.mofw-nom-overlay__cont-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.3rem;
  min-height: 1.8rem;
}

.mofw-nom-overlay__cont-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.2rem;
  background: #3f2a1d;
  border: 1px solid #7c4626;
  border-radius: 4px;
  padding: 0.12rem 0.3rem;
  font-size: 0.88rem;
}

.mofw-nom-overlay__cont-remove {
  font-size: 0.78rem;
  line-height: 1;
  color: #999999;
  cursor: pointer;
  padding: 0 0.1rem;
}

.mofw-nom-overlay__cont-remove:hover {
  color: #cc3333;
}

.mofw-nom-overlay__cont-arrow {
  color: #999999;
  font-size: 0.75rem;
}

.mofw-nom-overlay__cont-hint {
  font-size: 0.78rem;
  color: #999999;
  font-style: italic;
  margin-left: 0.2rem;
}

.mofw-nom-overlay__cont-empty {
  font-size: 0.82rem;
  color: #999999;
  font-style: italic;
}

.mofw-nom-overlay__note {
  width: 100%;
  box-sizing: border-box;
  padding: 0.35rem 0.5rem;
  background: #24221e;
  border: 1px solid #404040;
  border-radius: 4px;
  color: #bababa;
  font-size: 0.88rem;
  resize: vertical;
  font-family: inherit;
}

.mofw-nom-overlay__note:focus {
  outline: none;
  border-color: #d64f00;
}

.mofw-nom-overlay__btn {
  padding: 0.38rem 0.85rem;
  border-radius: 5px;
  font-size: 0.88rem;
  cursor: pointer;
  font-weight: bold;
  transition: background 0.12s, opacity 0.12s;
}

.mofw-nom-overlay__btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.mofw-nom-overlay__btn--cancel {
  color: #999999;
  border: 1px solid #404040;
  background: transparent;
  margin-right: auto;
}

.mofw-nom-overlay__btn--cancel:hover:not(:disabled) {
  background: #302e2c;
}

.mofw-nom-overlay__btn--draft {
  color: #c08a0f;
  border: 2px solid #c08a0f;
  background: transparent;
}

.mofw-nom-overlay__btn--draft:hover:not(:disabled) {
  background: #39301f;
}

.mofw-nom-overlay__btn--submit {
  background: #d64f00;
  color: #fff;
  border: 2px solid #d64f00;
}

.mofw-nom-overlay__btn--submit:hover:not(:disabled) {
  filter: brightness(1.1);
}

.retro-box .title {
  display: flex;
  justify-content: space-between;
}

.retro-box .player.center {
  justify-content: center;
}

.retro-box:not(.find) .player {
  height: 100%;
}

.retro-box .win .icon:not(.off) {
  color: #759900;
}

.retro-box .fail .icon:not(.off) {
  color: #dc322f;
}

.retro-box .instruction glyph {
  font-weight: normal;
  opacity: 0.7;
}

.retro-box .half {
  flex: 1 1 50%;
}

.retro-box .continue {
  display: flex;
  font-size: 1.3em;
  background: rgba(56, 147, 232, 0.8);
  color: #fff;
  align-items: center;
  justify-content: center;
  text-transform: uppercase;
  padding: 0 10px;
}

.retro-box .continue:hover {
  background: #3893e8;
}

.retro-box .continue i::before {
  font-size: 2.5em;
  margin-right: 10px;
}

.advice-summary {
  color: #999999;
  font-size: 0.9em;
  line-height: 1.15em;
  margin-top: 1em;
}

.advice-summary__side > div {
  display: flex;
}

.advice-summary__side > div i,
.advice-summary__side > div strong {
  flex: 0 1 4ch;
  text-align: center;
}

.advice-summary__side > div.symbol {
  cursor: pointer;
}

.advice-summary__side > div.symbol:hover {
  color: #3692e7;
}

.advice-summary .color-icon::before {
  vertical-align: text-bottom;
}

.advice-summary .button {
  margin: 0.6em 0;
}

@media (max-width: 799px) and (orientation: portrait) {
  .advice-summary {
    flex-flow: row wrap;
    justify-content: center;
    padding-bottom: 2vmin;
    border-bottom: 1px solid #404040;
    margin: 0;
  }
  .advice-summary__side {
    flex: 0 0 calc(50% - 2vmin);
    margin-left: 2vmin;
  }
  .advice-summary > a {
    order: 1;
  }
}

.comp-off .computer-analysis {
  display: none !important;
}

.analyse__underboard__menu {
  justify-content: center;
  align-items: flex-start;
  border-top: 2px solid #404040;
}

.analyse__underboard__menu > span {
  flex: 1 1 0;
  text-align: center;
  font-size: 0.9em;
  padding: 0.4em 0.1em;
  cursor: pointer;
  position: relative;
  transition: color 0.25s;
}

.analyse__underboard__menu > span::after {
  content: '';
  background: rgba(214, 79, 0, 0.6);
  height: 2px;
  position: absolute;
  width: 96%;
  left: 2%;
  top: -2px;
  transition: all 0.25s;
  transform: scale(0);
}

.analyse__underboard__menu > span.active, .analyse__underboard__menu > span:hover::after {
  transform: scale(1);
}

.analyse__underboard__menu > span.active {
  color: #d64f00;
}

.analyse-hunter .analyse__underboard__menu {
  display: none;
}

.analyse__underboard__panels {
  --panel-height: 30vh;
}

@media (min-width: 800px), (orientation: landscape) {
  .analyse__underboard__panels {
    --panel-height: 240px;
  }
}

.analyse__underboard__panels > div {
  height: var(--panel-height);
  display: none;
  text-align: left;
}

.analyse__underboard__panels > div.active {
  display: block;
}

.analyse__underboard__panels .crosstable table {
  margin-top: 60px;
}

.analyse-hunter .analyse__underboard__panels > div {
  display: block;
}

.analyse__underboard .computer-analysis,
.analyse__underboard .ctable {
  align-items: center;
  justify-content: center;
  position: relative;
}

.analyse__underboard .computer-analysis.active,
.analyse__underboard .ctable.active {
  display: flex;
}

.analyse__underboard .future-game-analysis {
  text-align: center;
}

.analyse__underboard .fen-pgn {
  overflow-x: visible;
  overflow-y: auto;
  font-size: 0.9em;
}

.analyse__underboard .fen-pgn > div {
  margin-bottom: 1em;
}

.analyse__underboard .fen-pgn .pgn {
  white-space: pre-wrap;
  font-family: monospace;
}

.analyse__underboard .fen-pgn strong {
  display: inline-block;
  margin-right: 1em;
}

.analyse__underboard .fen-pgn .pgn-options a {
  flex: 0 0 50%;
  line-height: 1.6em;
}

.analyse__underboard__fen {
  width: 100%;
  border: 0;
  background: none;
  padding: 0.3em;
  margin-right: 0.5em;
}

.analyse__underboard .puz-matches {
  overflow-x: auto;
  overflow-y: auto;
}

.analyse__underboard .round__puzzle-matches__list {
  display: flex;
}

.analyse__underboard .round__puzzle-match-container {
  margin-right: 10px;
}

.analyse__underboard .round__puzzle-match {
  display: block;
  width: 200px;
  height: 200px;
}

.analyse__underboard .round__puzzle-match__board--success::before {
  position: absolute;
  display: inline-block;
  content: " ";
  background: url("/assets/images/CoinFlip.gif") no-repeat 0 0;
  background-size: 30px 30px;
  width: 30px;
  height: 30px;
  right: -2px;
  top: -33px;
  z-index: 999;
}

#acpl-chart,
#movetimes-chart {
  width: 100%;
  height: var(--panel-height);
  background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 20%, rgba(128, 128, 128, 0.2) 50%, rgba(255, 255, 255, 0) 80%, rgba(255, 255, 255, 0) 100%);
  overflow: hidden;
}

#acpl-chart-loader {
  font-size: 0.9em;
  position: absolute;
  top: 91px;
  left: -1px;
  background: #262421;
  padding: 7px 10px 7px 0;
  line-height: 20px;
  box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.3);
  display: flex;
  border: 1px solid #404040;
  border-radius: 0 99px 99px 0;
}

#acpl-chart-loader span {
  margin-left: 7px;
  opacity: 1;
  transition: 0.5s;
  width: 100px;
  display: block;
}

.analyse__underboard:hover #acpl-chart-loader span {
  margin-left: 0;
  width: 0;
  opacity: 0;
}

#acpl-chart-loader .spinner {
  width: 32px;
  height: 32px;
  display: inline-block;
  margin-left: 10px;
}

#move-times-stats {
  padding: 8px 10px;
  font-size: 0.85em;
}

.moves-stats-section {
  margin-bottom: 10px;
}

.moves-stats-section h3 {
  font-size: 1em;
  font-weight: 600;
  margin: 0 0 4px 0;
  color: #cccccc;
}

.moves-stats-table {
  width: 100%;
  border-collapse: collapse;
}

.moves-stats-table th, .moves-stats-table td {
  text-align: center;
  padding: 2px 6px;
}

.moves-stats-table th {
  font-weight: 500;
  color: #999999;
}

.moves-stats-table tr td:first-child {
  text-align: left;
  color: #999999;
}

.pgr-analysis {
  display: flex;
  gap: 1em;
  padding: 1em;
  max-width: 1100px;
  margin: 0 auto;
  align-items: flex-start;
}

.pgr-analysis__board-wrap {
  flex: 0 0 auto;
  width: 500px;
  max-width: 60vw;
}

.pgr-analysis__board-wrap .cg-wrap {
  width: 500px;
  max-width: 60vw;
  padding-bottom: 100%;
}

.pgr-analysis__panel {
  flex: 1 1 0;
  min-width: 220px;
  max-width: 340px;
  display: flex;
  flex-direction: column;
  gap: 0.6em;
}

.pgr-analysis__header h1 {
  font-size: 1.3em;
  margin: 0 0 0.2em;
}

.pgr-analysis__players {
  font-size: 0.9em;
  color: #999999;
  display: flex;
  align-items: center;
  gap: 0.4em;
}

.pgr-analysis__moves {
  flex: 1;
  overflow-y: auto;
  max-height: 40vh;
  border: 1px solid #404040;
  border-radius: 3px;
  padding: 0.4em;
  background: #262421;
}

.pgr-analysis__nav {
  display: flex;
  gap: 0.3em;
}

.pgr-analysis__nav button {
  flex: 1;
  padding: 0.4em;
  font-size: 1.1em;
  cursor: pointer;
  background: #3c3934;
  border: 1px solid #404040;
  border-radius: 3px;
  color: #bababa;
}

.pgr-analysis__nav button:hover {
  background: #3e3b38;
}

.pgr-color-swatch {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  border: 1px solid #999999;
}

.pgr-color-swatch--white {
  background: #fff;
}

.pgr-color-swatch--black {
  background: #333;
}

.pgr-vs {
  color: #6b6b6b;
}

.pgr-pair {
  display: flex;
  align-items: baseline;
  gap: 0.15em;
  padding: 0.1em 0;
}

.pgr-pair:nth-child(even) {
  background: #302e2c;
}

.pgr-num {
  font-size: 0.8em;
  color: #6b6b6b;
  min-width: 1.8em;
  text-align: right;
  flex-shrink: 0;
}

.pgr-move {
  flex: 1;
  padding: 0.15em 0.3em;
  border-radius: 3px;
  cursor: pointer;
  font-family: monospace;
  font-size: 0.95em;
  white-space: nowrap;
  overflow: hidden;
}

.pgr-move:hover {
  background: #3e3b38;
}

.pgr-move.active {
  background: #d64f00;
  color: #fff;
}

.pgr-move.missed-mate {
  color: #cc3333;
  font-weight: bold;
}

.pgr-move.mate-open {
  background: #502826;
  color: #cc3333;
}

.pgr-move--empty {
  pointer-events: none;
  cursor: default;
}

.pgr-move--empty:hover {
  background: none;
}

.pgr-badge {
  font-size: 0.75em;
  margin-left: 0.25em;
  color: #cc3333;
}

.pgr-empty {
  padding: 1em;
  text-align: center;
  color: #999999;
}

#pgr-mate-info .pgr-mate-header {
  padding: 0.5em 0.6em;
  background: #3a2623;
  border: 1px solid #582927;
  border-radius: 3px;
  font-size: 0.88em;
  color: #cc3333;
}

#pgr-mateline .pgr-line {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3em;
  padding: 0.4em 0.2em;
}

#pgr-mateline .pgr-line-move {
  padding: 0.15em 0.4em;
  border-radius: 3px;
  cursor: pointer;
  font-family: monospace;
  font-size: 0.92em;
  background: #3c3934;
  border: 1px solid #404040;
}

#pgr-mateline .pgr-line-move:hover {
  background: #3e3b38;
}

#pgr-mateline .pgr-line-move.active {
  background: #629924;
  color: #fff;
  border-color: transparent;
}

#pgr-mateline .pgr-line-nav {
  display: flex;
  align-items: center;
  gap: 0.4em;
  padding: 0.3em 0;
}

#pgr-mateline .pgr-line-nav button {
  padding: 0.2em 0.6em;
  cursor: pointer;
  background: #3c3934;
  border: 1px solid #404040;
  border-radius: 3px;
  font-size: 1.1em;
  color: #bababa;
}

#pgr-mateline .pgr-line-nav button:hover {
  background: #3e3b38;
}

#pgr-mateline .pgr-line-nav button.pgr-close-mate {
  font-size: 0.8em;
  margin-left: auto;
  color: #999999;
}

#pgr-mateline .pgr-line-nav .pgr-line-pos {
  font-size: 0.8em;
  color: #999999;
}

.pgr-analysis__debug {
  margin-top: 2em;
  padding: 1em;
  border-top: 1px solid #404040;
}

.pgr-analysis__debug h3 {
  margin: 0 0 0.3em;
  font-size: 1em;
  font-weight: bold;
}

.pgr-analysis__debug .pgr-debug-hint {
  font-size: 0.85em;
  color: #999999;
  margin: 0 0 0.5em;
}

.pgr-analysis__debug .pgr-debug-text {
  width: 100%;
  font-family: monospace;
  font-size: 0.85em;
  background: #302e2c;
  color: #bababa;
  border: 1px solid #404040;
  border-radius: 3px;
  padding: 0.5em;
  resize: vertical;
  white-space: pre;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHlzZS9jc3MvYnVpbGQvYW5hbHlzZS5yb3VuZC5kYXJrLmNzcyIsInNvdXJjZXMiOlsiYW5hbHlzZS9jc3MvYnVpbGQvYW5hbHlzZS5yb3VuZC5kYXJrLnNjc3MiLCJjb21tb24vY3NzL3RoZW1lL19kYXJrLnNjc3MiLCJjb21tb24vY3NzL3RoZW1lL19kZWZhdWx0LnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19mdW5jdGlvbnMuc2NzcyIsImFuYWx5c2UvY3NzL2J1aWxkL19hbmFseXNlLnJvdW5kLnNjc3MiLCJhbmFseXNlL2Nzcy9idWlsZC9fYW5hbHlzZS5iYXNlLnNjc3MiLCJjb21tb24vY3NzL19wbHVnaW4uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvX2JyZWFrcG9pbnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fY29udGV4dC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19oZWxwZXJzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3BhcnNlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19xdWVyeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3NpbmdsZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvc2luZ2xlL19kZWZhdWx0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fZG91YmxlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQtcGFpci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kb3VibGUtc3RyaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL190cmlwbGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3RyaXBsZS9fZGVmYXVsdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3Jlc29sdXRpb24vX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbm8tcXVlcnkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fcmVzcG9uZC10by5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19sZWdhY3ktc2V0dGluZ3Muc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2FsbC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fei1pbmRleC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWVkaWEtcXVlcmllcy5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fdmFyaWFibGVzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L191bmlib2FyZC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWl4aW5zLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19leHRlbmRzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19mbGV4LnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19ib3guc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2ZsdWlkLXNpemUuc2NzcyIsImNvbW1vbi9jc3MvdmVuZG9yL2NoZXNzZ3JvdW5kL19jb29yZHMuc2NzcyIsImNvbW1vbi9jc3MvdmVuZG9yL2NoZXNzZ3JvdW5kL19jb29yZHMtY29sb3JzLnNjc3MiLCJjb21tb24vY3NzL2xheW91dC9fdW5pYm9hcmQuc2NzcyIsImNvbW1vbi9jc3MvYmFzZS9fc2Nyb2xsYmFyLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fYm9hcmQtcmVzaXplLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fbW9kYWwuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19jb250aW51ZS13aXRoLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fY29sb3ItaWNvbi5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2Nyb3NzdGFibGUuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19mYnQuc2NzcyIsImNvbW1vbi9jc3MvZm9ybS9fY21uLXRvZ2dsZS5zY3NzIiwiY29tbW9uL2Nzcy9mb3JtL19yYW5nZS5zY3NzIiwidHJlZS9jc3MvX3RyZWUuc2NzcyIsInRyZWUvY3NzL19leHRlbmQuc2NzcyIsImNldmFsL2Nzcy9fY2V2YWwuc2NzcyIsImNldmFsL2Nzcy9fY3RybC5zY3NzIiwiY2V2YWwvY3NzL19wdi5zY3NzIiwiY2V2YWwvY3NzL19ldmFsLWdhdWdlLnNjc3MiLCJjaGVzcy9jc3MvX2NvbnRyb2wuc2NzcyIsImNoZXNzL2Nzcy9fcHJvbW90aW9uLnNjc3MiLCJjaGVzcy9jc3MvX3ZhcmlhbnQtc3R5bGUuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19jb250ZXh0LXN0cmVhbWVyLnNjc3MiLCJyb3VuZC9jc3MvX21ldGEuc2NzcyIsImNoYXQvY3NzL19jaGF0LnNjc3MiLCJjaGF0L2Nzcy9fdGFiLnNjc3MiLCJjaGF0L2Nzcy9fbWVtYmVycy5zY3NzIiwiY2hhdC9jc3MvX2Rpc2N1c3Npb24uc2NzcyIsImNoYXQvY3NzL19wYWxhbnRpci5zY3NzIiwiYW5hbHlzZS9jc3MvX2FuYWx5c2Uucm91bmQuc2NzcyIsImFuYWx5c2UvY3NzL19hbmFseXNlLmJhc2Uuc2NzcyIsImFuYWx5c2UvY3NzL192YXJpYWJsZXMuc2NzcyIsImFuYWx5c2UvY3NzL19sYXlvdXQuc2NzcyIsImFuYWx5c2UvY3NzL190b29scy5zY3NzIiwiYW5hbHlzZS9jc3MvX2FjdGlvbi1tZW51LnNjc3MiLCJhbmFseXNlL2Nzcy9leHBsb3Jlci9fZXhwbG9yZXIuc2NzcyIsImFuYWx5c2UvY3NzL2V4cGxvcmVyL19jb25maWcuc2NzcyIsImFuYWx5c2UvY3NzL190cmFpbmluZy5zY3NzIiwiYW5hbHlzZS9jc3MvX3ByYWN0aWNlLnNjc3MiLCJhbmFseXNlL2Nzcy9fZm9yay5zY3NzIiwiYW5hbHlzZS9jc3MvX3NpZGUuc2NzcyIsImFuYWx5c2UvY3NzL19jb250ZXh0LW1lbnUuc2NzcyIsImFuYWx5c2UvY3NzL19wbGF5ZXItY2xvY2suc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19tYXRlcmlhbC5zY3NzIiwiYW5hbHlzZS9jc3MvX21vZncuc2NzcyIsImFuYWx5c2UvY3NzL19yZXRyby5zY3NzIiwiYW5hbHlzZS9jc3MvX2FjcGwuc2NzcyIsImFuYWx5c2UvY3NzL19yb3VuZC11bmRlcmJvYXJkLnNjc3MiLCJhbmFseXNlL2Nzcy9fcGdyLWFuYWx5c2lzLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy90aGVtZS9kYXJrJztcbkBpbXBvcnQgJ2FuYWx5c2Uucm91bmQnO1xuIiwiQGltcG9ydCAnZGVmYXVsdCc7XG5cbiR0aGVtZTogJ2RhcmsnO1xuJGNvbG9yLXNjaGVtZTogJ2RhcmsnO1xuJHRoZW1lLWxpZ2h0OiBmYWxzZTtcbiR0aGVtZS1kYXJrOiB0cnVlO1xuXG5AZnVuY3Rpb24gYy1kaW1tZXIoJGNvbG9yLCAkd2VpZ2h0OiAyMCUpIHtcbiAgQHJldHVybiBtaXgoIzAwMCwgJGNvbG9yLCAkd2VpZ2h0KTtcbn1cblxuQGZ1bmN0aW9uIGMtY2xlYXJlcigkY29sb3IsICR3ZWlnaHQ6IDIwJSkge1xuICBAcmV0dXJuIG1peCgjZmZmLCAkY29sb3IsICR3ZWlnaHQpO1xufVxuXG4kYy1iZy1wYWdlOiBoc2woJGMtc2l0ZS1odWUsIDEwJSwgOCUpO1xuJGMtYmctaGlnaDogaHNsKCRjLXNpdGUtaHVlLCA3JSwgMTQlKTtcbiRjLWJnLWxvdzogaHNsKCRjLXNpdGUtaHVlLCA3JSwgMjIlKTtcblxuLyogZXZlbiByb3dzIGluIGxpc3Qgb3IgdGFibGVzLCBzdWJ0bGUgc2hhZGUgb2YgJGMtYmctaGlnaCAqL1xuJGMtYmctemVicmE6IGhzbCgkYy1zaXRlLWh1ZSwgNSUsIDE4JSk7XG4kYy1iZy16ZWJyYTI6IGhzbCgkYy1zaXRlLWh1ZSwgNSUsIDIzJSk7XG5cbiRjLWJvZHktZ3JhZGllbnQ6IGhzbCgkYy1zaXRlLWh1ZSwgMTIlLCAxNiUpO1xuXG4kYy1mb250OiBoc2woMCwgMCUsIDczJSk7XG4kYy1mb250LWRpbTogYy1saWdodCgkYy1mb250LCA2MCUpO1xuJGMtZm9udC1kaW1tZXI6IGMtbGlnaHQoJGMtZm9udCwgNDIlKTtcbiRjLWZvbnQtY2xlYXI6IGMtbGlnaHQoJGMtZm9udCwgODAlKTtcbiRjLWZvbnQtY2xlYXJlcjogYy1saWdodCgkYy1mb250LCA4OSUpO1xuJGMtc2hhZGU6IGMtbGlnaHQoJGMtZm9udCwgMzAlKTtcbiRjLWZvbnQtcGFnZTogJGMtZm9udC1kaW07XG5cbi8qIFByaW1hcnk6IGJsdWUgKi9cbiRjLXByaW1hcnk6IGhzbCgyMDksIDc5JSwgNTYlKTtcbiRjLXByaW1hcnktZGltOiBjLWRpbW1lcigkYy1wcmltYXJ5LCAxNSUpO1xuJGMtcHJpbWFyeS1jbGVhcjogYy1jbGVhcmVyKCRjLXByaW1hcnkpO1xuXG4vKiBTZWNvbmRhcnk6IGdyZWVuICovXG4kYy1zZWNvbmRhcnk6IGhzbCg4OCwgNjIlLCAzNyUpO1xuJGMtc2Vjb25kYXJ5LWRpbTogYy1kaW1tZXIoJGMtc2Vjb25kYXJ5KTtcbiRjLXNlY29uZGFyeS1kaW1tZXI6IGMtZGltbWVyKCRjLXNlY29uZGFyeSwgNDAlKTtcblxuLyogQnJhZzogZ29sZCAqL1xuJGMtYnJhZzogaHNsKDM3LCA3NCUsIDQzJSk7XG5cbi8qIEZhbmN5OiBwaW5rICovXG4kYy1mYW5jeTogaHNsKDI5NCwgNjIlLCA0OCUpO1xuXG4vKiBHb29kOiBncmVlbiAqL1xuJGMtZ29vZDogJGMtc2Vjb25kYXJ5O1xuJGMtZ29vZC1vdmVyOiAkYy1zZWNvbmRhcnktb3ZlcjtcblxuLyogV2Fybjogb3JhbmdlICovXG4kYy13YXJuOiAkYy1icmFnO1xuJGMtd2Fybi1vdmVyOiAkYy1icmFnLW92ZXI7XG5cbi8qIEJhZDogcmVkICovXG4kYy1iYWQ6ICRjLWVycm9yO1xuJGMtYmFkLW92ZXI6ICRjLWVycm9yLW92ZXI7XG5cbiRjLWxpbms6ICRjLXByaW1hcnk7XG4kYy1saW5rLWRpbTogJGMtcHJpbWFyeS1kaW07XG4kYy1saW5rLWNsZWFyOiAkYy1wcmltYXJ5LWNsZWFyO1xuJGMtbGluay1ob3ZlcjogYy1jbGVhcmVyKHNhdHVyYXRlKCRjLXByaW1hcnksIDEwMCUpLCAyNSUpO1xuXG4kYy1iZy1ib3g6ICRjLWJnLWhpZ2g7XG4kYy1iZy1ib3gtb3BhcXVlOiAkYy1iZy1ib3g7XG4kYy1iZy1pbnB1dDogYy1saWdodCgkYy1iZy1wYWdlLCAxMyUpO1xuXG4kYy1iZy1wb3B1cDogJGMtYmctbG93O1xuJGMtcG9wdXA6ICRjLWZvbnQtY2xlYXI7XG5cbiRjLWJnLWhlYWRlci1kcm9wZG93bjogJGMtYmctcG9wdXA7XG4kYy1oZWFkZXItZHJvcGRvd246ICRjLXBvcHVwO1xuXG4kYy1ib3Q6ICRjLWZhbmN5O1xuXG4kYy1wYWdlLWlucHV0OiAkYy1iZy1ib3g7XG5cbiRjLWJvcmRlcjogaHNsKDAsIDAlLCAyNSUpO1xuJGMtYm9yZGVyLXBhZ2U6IGhzbCgwLCAwJSwgMjIlKTtcbiRib3JkZXI6ICRib3JkZXItd2lkdGggJGJvcmRlci1zdHlsZSAkYy1ib3JkZXI7XG5cbiRjLWZvbnQtc2hhZG93OiBibGFjaztcbiR0ZXh0LXNoYWRvdzogbm9uZTtcblxuQG1peGluIG1ldGFsLWJnIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKCRjLXNpdGUtaHVlLCA3JSwgMjIpLCBoc2woJGMtc2l0ZS1odWUsIDUlLCAxOSkgMTAwJSk7XG59XG5cbkBtaXhpbiBtZXRhbCB7XG4gIEBpbmNsdWRlIG1ldGFsLWJnO1xufVxuXG5AbWl4aW4gbWV0YWwtaG92ZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woJGMtc2l0ZS1odWUsIDclLCAyNSksIGhzbCgkYy1zaXRlLWh1ZSwgNSUsIDIyKSAxMDAlKTtcbiAgY29sb3I6ICRjLWZvbnQtY2xlYXI7XG59XG5cbkBtaXhpbiBwYWdlLW1ldGFsIHtcbiAgQGluY2x1ZGUgbWV0YWw7XG59XG5cbkBtaXhpbiBwYWdlLW1ldGFsLWhvdmVyIHtcbiAgQGluY2x1ZGUgbWV0YWwtaG92ZXI7XG59XG5cbkBtaXhpbiB0aGVtZS1zdHlsZSB7XG59XG4iLCJAaW1wb3J0ICcuLi9hYnN0cmFjdC9mdW5jdGlvbnMnO1xuXG4vKiBDb2xvcnMgKi9cblxuQGZ1bmN0aW9uIGMtZGltbWVyKCRjb2xvciwgJHdlaWdodDogMTclKSB7XG4gIEByZXR1cm4gbWl4KCNmZmYsICRjb2xvciwgJHdlaWdodCk7XG59XG5cbkBmdW5jdGlvbiBjLWNsZWFyZXIoJGNvbG9yLCAkd2VpZ2h0OiAxNyUpIHtcbiAgQHJldHVybiBtaXgoIzAwMCwgJGNvbG9yLCAkd2VpZ2h0KTtcbn1cblxuJGMtc2l0ZS1odWU6IDM3O1xuXG4kYy1iZy1wYWdlOiBoc2woJGMtc2l0ZS1odWUsIDEwJSwgOTIlKTtcblxuLy8gaHNsKDIxMCwgMTclLCA5NSUpXG4kYy1iZy1oaWdoOiBoc2woMCwgMCUsIDEwMCUpO1xuJGMtYmctbG93OiBoc2woMCwgMCUsIDg5JSk7XG5cbi8qIGV2ZW4gcm93cyBpbiBsaXN0IG9yIHRhYmxlcywgc3VidGxlIHNoYWRlIG9mICRjLWJnLWhpZ2ggKi9cbiRjLWJnLXplYnJhOiBoc2woJGMtc2l0ZS1odWUsIDEyJSwgOTYuNSUpO1xuJGMtYmctemVicmEyOiBoc2woJGMtc2l0ZS1odWUsIDEyJSwgOTIlKTtcblxuJGMtYm9keS1ncmFkaWVudDogaHNsKCRjLXNpdGUtaHVlLCAxMiUsIDg0JSk7XG5cbiRjLWZvbnQ6IGhzbCgwLCAwJSwgMzAlKTtcbiRjLWZvbnQtZGltOiBjLWxpZ2h0KCRjLWZvbnQsIDQ3JSk7XG4kYy1mb250LWRpbW1lcjogYy1saWdodCgkYy1mb250LCA3MCUpO1xuJGMtZm9udC1jbGVhcjogYy1saWdodCgkYy1mb250LCAxMiUpO1xuJGMtZm9udC1jbGVhcmVyOiBjLWxpZ2h0KCRjLWZvbnQsIDAlKTtcbiRjLXNoYWRlOiBjLWRpbW1lcigkYy1mb250LCA4MCUpO1xuJGMtZm9udC1wYWdlOiBjLWxpZ2h0KCRjLWZvbnQsIDM3JSk7XG5cbi8qIFByaW1hcnk6IGJsdWUgKi9cbiRjLXByaW1hcnk6IGhzbCgyMDksIDc3JSwgNDYlKTtcbiRjLXByaW1hcnktZGltOiBjLWRpbW1lcigkYy1wcmltYXJ5KTtcbiRjLXByaW1hcnktY2xlYXI6IGMtY2xlYXJlcigkYy1wcmltYXJ5KTtcbiRjLXByaW1hcnktb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIHByaW1hcnkgYmFja2dyb3VuZCAqL1xuXG4vKiBTZWNvbmRhcnk6IGdyZWVuICovXG4kYy1zZWNvbmRhcnk6IGhzbCg4OCwgNjIlLCAzNyUpO1xuJGMtc2Vjb25kYXJ5LWRpbTogYy1kaW1tZXIoJGMtc2Vjb25kYXJ5KTtcbiRjLXNlY29uZGFyeS1kaW1tZXI6IGMtZGltbWVyKCRjLXNlY29uZGFyeSwgNDAlKTtcbiRjLXNlY29uZGFyeS1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgc2Vjb25kYXJ5IGJhY2tncm91bmQgKi9cblxuLyogQWNjZW50OiBvcmFuZ2UgKi9cbiRjLWFjY2VudDogaHNsKDIyLCAxMDAlLCA0MiUpO1xuJGMtYWNjZW50LWRpbTogYy1kaW1tZXIoJGMtYWNjZW50KTtcbiRjLWFjY2VudC1jbGVhcjogYy1jbGVhcmVyKCRjLWFjY2VudCk7XG4kYy1hY2NlbnQtb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIGFjY2VudCBiYWNrZ3JvdW5kICovXG5cbi8qIEJyYWc6IGdvbGQgKi9cbiRjLWJyYWc6IGhzbCgzNywgNzQlLCA0OCUpO1xuJGMtYnJhZy1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgYnJhZyBiYWNrZ3JvdW5kICovXG5cbi8qIEVycm9yOiByZWQgKi9cbiRjLXJlZDogaHNsKDAsIDYwJSwgNTAlKTtcbiRjLWVycm9yOiAkYy1yZWQ7XG4kYy1lcnJvci1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgYnJhZyBiYWNrZ3JvdW5kICovXG5cbi8qIEdvb2Q6IGdyZWVuICovXG4kYy1nb29kOiAkYy1zZWNvbmRhcnk7XG4kYy1nb29kLW92ZXI6ICRjLXNlY29uZGFyeS1vdmVyO1xuXG4vKiBXYXJuOiBvcmFuZ2UgKi9cbiRjLXdhcm46ICRjLWJyYWc7XG4kYy13YXJuLW92ZXI6ICRjLWJyYWctb3ZlcjtcblxuLyogQmFkOiByZWQgKi9cbiRjLWJhZDogJGMtZXJyb3I7XG4kYy1iYWQtb3ZlcjogJGMtZXJyb3Itb3ZlcjtcblxuLyogSGVhcnQ6IHJlZCAqL1xuJGMtaGVhcnQ6ICRjLWVycm9yO1xuJGMtaGVhcnQtb3ZlcjogJGMtZXJyb3Itb3ZlcjtcblxuLyogRmFuY3k6IHBpbmsgKi9cbiRjLWZhbmN5OiBoc2woMjk0LCA2MSUsIDYyJSk7XG4kYy1mYW5jeS1vdmVyOiB3aGl0ZTtcblxuLyogdGV4dCBvdmVyIGJyYWcgYmFja2dyb3VuZCAqL1xuXG4kYy1saW5rOiAkYy1wcmltYXJ5O1xuJGMtbGluay1kaW06ICRjLXByaW1hcnktZGltO1xuJGMtbGluay1jbGVhcjogJGMtcHJpbWFyeS1jbGVhcjtcbiRjLWxpbmstaG92ZXI6IGMtY2xlYXJlcihzYXR1cmF0ZSgkYy1wcmltYXJ5LCAxMDAlKSwgMzUlKTtcbiRjLWxpbmstb3ZlcjogJGMtcHJpbWFyeS1vdmVyO1xuXG4kYy1iZy1ib3g6ICRjLWJnLWhpZ2g7XG4kYy1iZy1ib3gtb3BhcXVlOiAkYy1iZy1ib3g7XG4kYy1iZy1pbnB1dDogYy1saWdodCgkYy1iZy1wYWdlLCA5OCUpO1xuXG4kYy1ib3JkZXI6IGhzbCgwLCAwJSwgODUlKTtcbiRjLWJvcmRlci1wYWdlOiBoc2woMCwgMCUsIDgwJSk7XG5cbiRjLXBhZ2UtbWFzazogaHNsYSgwLCAwLCAwJSwgMC42KTtcblxuJGMtYmctcG9wdXA6ICRjLWJnLWhpZ2g7XG4kYy1wb3B1cDogJGMtZm9udDtcblxuJGMtYmctaGVhZGVyLWRyb3Bkb3duOiAkYy1iZy1wb3B1cDtcbiRjLWhlYWRlci1kcm9wZG93bjogJGMtcG9wdXA7XG5cbiRjLWZvbnQtc2hhZG93OiB3aGl0ZTtcbiR0ZXh0LXNoYWRvdzogMCAxcHggMCAkYy1mb250LXNoYWRvdztcblxuJGMtYm90OiAkYy1mYW5jeTtcblxuJGMtcGFnZS1pbnB1dDogJGMtYmctbG93O1xuXG4vKiBCb3JkZXJzICovXG5cbiRib3JkZXItd2lkdGg6IDFweDtcbiRib3JkZXItc3R5bGU6IHNvbGlkO1xuJGJvcmRlcjogJGJvcmRlci13aWR0aCAkYm9yZGVyLXN0eWxlICRjLWJvcmRlcjtcblxuLyogU2hhZG93cyAqL1xuXG4kYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuXG4vLyAkYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLDAsMCwuMTU3KTtcbiIsIkBmdW5jdGlvbiBjLWxpZ2h0KCRjb2xvciwgJHZhbHVlKSB7XG4gIEByZXR1cm4gY2hhbmdlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJHZhbHVlKTtcbn1cblxuQGZ1bmN0aW9uIGltZy11cmwoJHBhdGgpIHtcbiAgQHJldHVybiB1cmwoJyN7JGltZy1wYXRofS8jeyRwYXRofScpO1xufVxuIiwiQGltcG9ydCAnYW5hbHlzZS5iYXNlJztcblxuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvY29udGV4dC1zdHJlYW1lcic7XG5cbkBpbXBvcnQgJy4uLy4uLy4uL3JvdW5kL2Nzcy9tZXRhJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NoYXQvY3NzL2NoYXQnO1xuXG5AaW1wb3J0ICcuLi9hbmFseXNlLnJvdW5kJztcbiIsIkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvcGx1Z2luJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvdmVuZG9yL2NoZXNzZ3JvdW5kL2Nvb3Jkcyc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2xheW91dC91bmlib2FyZCc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2Jhc2Uvc2Nyb2xsYmFyJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2JvYXJkLXJlc2l6ZSc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9tb2RhbCc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9jb250aW51ZS13aXRoJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2NvbG9yLWljb24nO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvY3Jvc3N0YWJsZSc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9mYnQnO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9mb3JtL2Ntbi10b2dnbGUnO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9mb3JtL3JhbmdlJztcbkBpbXBvcnQgJy4uLy4uLy4uL3RyZWUvY3NzL3RyZWUnO1xuQGltcG9ydCAnLi4vLi4vLi4vY2V2YWwvY3NzL2NldmFsJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NldmFsL2Nzcy9ldmFsLWdhdWdlJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NoZXNzL2Nzcy9jb250cm9sJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NoZXNzL2Nzcy9wcm9tb3Rpb24nO1xuQGltcG9ydCAnLi4vLi4vLi4vY2hlc3MvY3NzL3ZhcmlhbnQtc3R5bGUnO1xuIiwiLyogQ29tbW9uIGltcG9ydHMgZm9yIGFsbCBDU1MgbW9kdWxlcyAqL1xuXG5AaW1wb3J0ICcuLi8uLi8uLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQnO1xuXG5AaW1wb3J0ICdhYnN0cmFjdC9hbGwnO1xuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kQnJlYWtwb2ludC1TZXR0aW5nczogKFxuICAnZGVmYXVsdCBtZWRpYSc6IGFsbCxcbiAgJ2RlZmF1bHQgZmVhdHVyZSc6IG1pbi13aWR0aCxcbiAgJ2RlZmF1bHQgcGFpcic6IHdpZHRoLFxuXG4gICdmb3JjZSBhbGwgbWVkaWEgdHlwZSc6IGZhbHNlLFxuICAndG8gZW1zJzogZmFsc2UsXG4gICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnOiB0cnVlLFxuXG4gICdubyBxdWVyaWVzJzogZmFsc2UsXG4gICdubyBxdWVyeSBmYWxsYmFja3MnOiBmYWxzZSxcblxuICAnYmFzZSBmb250IHNpemUnOiAxNnB4LFxuXG4gICdsZWdhY3kgc3ludGF4JzogZmFsc2Vcbik7XG5cbiRicmVha3BvaW50OiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJicmVha3BvaW50L3NldHRpbmdzXCI7XG5AaW1wb3J0ICdicmVha3BvaW50L2NvbnRleHQnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9oZWxwZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcGFyc2Vycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L25vLXF1ZXJ5JztcblxuQGltcG9ydCAnYnJlYWtwb2ludC9yZXNwb25kLXRvJztcblxuQGltcG9ydCBcImJyZWFrcG9pbnQvbGVnYWN5LXNldHRpbmdzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBsZWdhY3ktc2V0dGluZ3Mtd2FybmluZztcblxuICAvLyBSZXNldCBjb250ZXh0c1xuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcblxuICAkYnJlYWtwb2ludDogYnJlYWtwb2ludCgkcXVlcnksIGZhbHNlKTtcblxuICAkcXVlcnktc3RyaW5nOiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnknKTtcbiAgJHF1ZXJ5LWZhbGxiYWNrOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnZmFsbGJhY2snKTtcblxuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnY29udGV4dCBob2xkZXInKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnkgY291bnQnKSAhZ2xvYmFsO1xuXG4gIC8vIEFsbG93IGZvciBhbiBhcy1uZWVkZWQgb3ZlcnJpZGUgb3IgdXNhZ2Ugb2Ygbm8gcXVlcnkgZmFsbGJhY2suXG4gIEBpZiAkbm8tcXVlcnkgIT0gZmFsc2Uge1xuICAgICRxdWVyeS1mYWxsYmFjazogJG5vLXF1ZXJ5O1xuICB9XG5cbiAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJ25vLXF1ZXJ5JywgJHF1ZXJ5LWZhbGxiYWNrKTtcbiAgfVxuXG4gIC8vIFByaW50IE91dCBRdWVyeSBTdHJpbmdcbiAgQGlmIG5vdCBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpIHtcbiAgICBAbWVkaWEgI3skcXVlcnktc3RyaW5nfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpICE9IGZhbHNlIG9yIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykgPT0gdHJ1ZSB7XG5cbiAgICAkdHlwZTogdHlwZS1vZihicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykpO1xuICAgICRwcmludDogZmFsc2U7XG5cbiAgICBAaWYgKCR0eXBlID09ICdib29sJykge1xuICAgICAgJHByaW50OiB0cnVlO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ2xpc3QnKSB7XG4gICAgICBAZWFjaCAkd3JhcHBlciBpbiBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09ICR3cmFwcGVyIHtcbiAgICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXcml0ZSBGYWxsYmFja1xuICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSBhbmQgKCRwcmludCA9PSB0cnVlKSB7XG4gICAgICAkdHlwZS1mYWxsYmFjazogdHlwZS1vZigkcXVlcnktZmFsbGJhY2spO1xuXG4gICAgICBAaWYgKCR0eXBlLWZhbGxiYWNrICE9ICdib29sJykge1xuICAgICAgICAjeyRxdWVyeS1mYWxsYmFja30gJiB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG59XG5cblxuQG1peGluIG1xKCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSGFzIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaGFzKCRzZXR0aW5nKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludCwgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0KCRzZXR0aW5nKSB7XG4gIEBpZiBicmVha3BvaW50LWhhcygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkYnJlYWtwb2ludCwgJHNldHRpbmcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEJyZWFrcG9pbnQtU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaWYgKHN0ci1pbmRleCgkc2V0dGluZywgJy0nKSBvciBzdHItaW5kZXgoJHNldHRpbmcsICdfJykpIGFuZCBzdHItaW5kZXgoJHNldHRpbmcsICcgJykgPT0gbnVsbCB7XG4gICAgQHdhcm4gXCJXb3JkcyBpbiBCcmVha3BvaW50IHNldHRpbmdzIHNob3VsZCBiZSBzZXBhcmF0ZWQgYnkgc3BhY2VzLCBub3QgZGFzaGVzIG9yIHVuZGVyc2NvcmVzLiBQbGVhc2UgcmVwbGFjZSBkYXNoZXMgYW5kIHVuZGVyc2NvcmVzIGJldHdlZW4gd29yZHMgd2l0aCBzcGFjZXMuIFNldHRpbmdzIHdpbGwgbm90IHdvcmsgYXMgZXhwZWN0ZWQgdW50aWwgY2hhbmdlZC5cIjtcbiAgfVxuICAkYnJlYWtwb2ludDogbWFwLW1lcmdlKCRicmVha3BvaW50LCAoJHNldHRpbmc6ICR2YWx1ZSkpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJGJyZWFrcG9pbnQtY2hhbmdlOiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBia3B0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuQG1peGluIGJrcHQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVtb3ZlIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJHNldHRpbmdzKSA9PSAxIHtcbiAgICAkc2V0dGluZ3M6IG50aCgkc2V0dGluZ3MsIDEpO1xuICB9XG5cbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkYnJlYWtwb2ludDogbWFwLXJlbW92ZSgkYnJlYWtwb2ludCwgJHNldHRpbmcpICFnbG9iYWw7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgJGJyZWFrcG9pbnQtcmVzZXQ6IGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIGJrcHQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gICRicmVha3BvaW50LXJlc2V0OiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncyk7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIEJyZWFrcG9pbnQgVmFyaWFibGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpO1xuJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEhhcyBDb250ZXh0XG4vLyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHlvdSBhcmUgaW5zaWRlIGEgQnJlYWtwb2ludCBxdWVyeVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIHtcbiAgQGlmIGxlbmd0aCgkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50KSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBHZXQgQ29udGV4dFxuLy8gJGZlYXR1cmU6IElucHV0IGZlYXR1cmUgdG8gZ2V0IGl0J3MgY3VycmVudCBNUSBjb250ZXh0LiBSZXR1cm5zIGZhbHNlIGlmIG5vIGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGZlYXR1cmUpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKSB7XG4gICAgJGdldDogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gICAgLy8gU3BlY2lhbCBoYW5kbGluZyBvZiBuby1xdWVyeSBmcm9tIGdldCBzaWRlIHNvIC9mYWxzZS8gcHJlcGVuZHMgYXJlbid0IHJldHVybmVkXG4gICAgQGlmICRmZWF0dXJlID09ICduby1xdWVyeScge1xuICAgICAgQGlmIHR5cGUtb2YoJGdldCkgPT0gJ2xpc3QnIGFuZCBsZW5ndGgoJGdldCkgPiAxIGFuZCBudGgoJGdldCwgMSkgPT0gZmFsc2Uge1xuICAgICAgICAkZ2V0OiBudGgoJGdldCwgbGVuZ3RoKCRnZXQpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQHJldHVybiAkZ2V0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIGFuZCAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgIEByZXR1cm4gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHNldCBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSkge1xuICBAaWYgJHZhbHVlID09ICdtb25vY2hyb21lJyB7XG4gICAgJGZlYXR1cmU6ICdtb25vY2hyb21lJztcbiAgfVxuXG4gICRjdXJyZW50OiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgQGlmICRjdXJyZW50IGFuZCBsZW5ndGgoJGN1cnJlbnQpID09ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgIEB3YXJuIFwiWW91IGhhdmUgYWxyZWFkeSBxdWVyaWVkIGFnYWluc3QgYCN7JGZlYXR1cmV9YC4gVW5leHBlY3RlZCB0aGluZ3MgbWF5IGhhcHBlbiBpZiB5b3UgcXVlcnkgYWdhaW5zdCB0aGUgc2FtZSBmZWF0dXJlIG1vcmUgdGhhbiBvbmNlIGluIHRoZSBzYW1lIGBhbmRgIHF1ZXJ5LiBCcmVha3BvaW50IGlzIG92ZXJ3cml0aW5nIHRoZSBjdXJyZW50IGNvbnRleHQgd2l0aCBgI3skdmFsdWV9YFwiO1xuICB9XG5cbiAgQGlmIG5vdCBtYXAtaGFzLWtleSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSkge1xuICAgICR2LWhvbGRlcjogKCk7XG4gICAgQGZvciAkaSBmcm9tIDEgdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHYtaG9sZGVyOiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHYtaG9sZGVyKTtcbiAgICBAZm9yICRpIGZyb20gJGxlbmd0aCB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IC0gMSB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHJlc2V0IGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cyB7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbnZlcnRzIHRoZSBpbnB1dCB2YWx1ZSB0byBCYXNlIEVNc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSkge1xuICAkdmFsdWUtdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIC8vIFdpbGwgY29udmVydCByZWxhdGl2ZSBFTXMgaW50byByb290IEVNcy5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIGFuZCB0eXBlLW9mKGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKSA9PSAnbnVtYmVyJyBhbmQgJHZhbHVlLXVuaXQgPT0gJ2VtJyB7XG4gICAgJGJhc2UtdW5pdDogdW5pdChicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSk7XG5cbiAgICBAaWYgJGJhc2UtdW5pdCA9PSAncHgnIG9yICRiYXNlLXVuaXQgPT0gJyUnIG9yICRiYXNlLXVuaXQgPT0gJ2VtJyBvciAkYmFzZS11bml0ID09ICdwdCcge1xuICAgICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKSAvIGJhc2UtY29udmVyc2lvbihicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSkgKiAxZW07XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICcje2JyZWFrcG9pbnQtZ2V0KFxcJ2Jhc2UgZm9udCBzaXplXFwnKX0gaXMgbm90IHNldCBpbiB2YWxpZCB1bml0cyBmb3IgZm9udCBzaXplISc7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSkge1xuICAkdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIEBpZiAkdW5pdCA9PSAncHgnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDE2cHggKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJyUnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDEwMCUgKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ2VtJyB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ3B0JyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxMnB0ICogMWVtO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbi8vICAgIEB3YXJuICdFdmVyeXRoaW5nIGlzIHRlcnJpYmxlISBXaGF0IGhhdmUgeW91IGRvbmU/ISc7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIGhhdmUgYSBtaW4vbWF4IHBhaXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWluLW1heC1mZWF0dXJlczogJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvci1pbmRleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2Utd2lkdGgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9ub2Nocm9tZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzb2x1dGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4tbWF4KCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LW1pbi1tYXgtZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBoYXZlIGEgc3RyaW5nIHZhbHVlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXN0cmluZy1mZWF0dXJlczogICdvcmllbnRhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NhbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWFzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbHVtaW5vc2l0eSc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXN0cmluZy12YWx1ZSgkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiBicmVha3BvaW50LW1pbi1tYXgoJGl0ZW0pIHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWluLSN7JGl0ZW19JyBvciAkZmVhdHVyZSA9PSAnbWF4LSN7JGl0ZW19JyB7XG4gICAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBpcyBhIG1lZGlhIHR5cGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWVkaWEtdHlwZXM6ICAnYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JyYWlsbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnZW1ib3NzZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFuZGhlbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvamVjdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdzY3JlZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlZWNoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICd0dic7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLW1lZGlhKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRtZWRpYSBpbiAkYnJlYWtwb2ludC1tZWRpYS10eXBlcyB7XG4gICAgQGlmICgkZmVhdHVyZSA9PSAkbWVkaWEpIG9yICgkZmVhdHVyZSA9PSAnbm90ICN7JG1lZGlhfScpIG9yICgkZmVhdHVyZSA9PSAnb25seSAjeyRtZWRpYX0nKSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIHN0YW5kIGFsb25lXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXM6ICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3ItaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dyaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbm9jaHJvbWUnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLXJlc29sdXRpb24oJGZlYXR1cmUpIHtcbiAgJHJlc29sdXRpb25zOiAnZGV2aWNlLXBpeGVsLXJhdGlvJywgJ2Rwcic7XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSB7XG4gICAgJHJlc29sdXRpb25zOiBhcHBlbmQoJHJlc29sdXRpb25zLCAncmVzb2x1dGlvbicpO1xuICB9XG5cbiAgQGVhY2ggJHJlc28gaW4gJHJlc29sdXRpb25zIHtcbiAgICBAaWYgaW5kZXgoJGZlYXR1cmUsICRyZXNvKSBvciBpbmRleCgkZmVhdHVyZSwgJ21pbi0jeyRyZXNvfScpIG9yIGluZGV4KCRmZWF0dXJlLCAnbWF4LSN7JHJlc299Jykge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQYXJzZXIgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJwYXJzZXJzL3F1ZXJ5XCI7XG5AaW1wb3J0IFwicGFyc2Vycy9zaW5nbGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL2RvdWJsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvdHJpcGxlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy9yZXNvbHV0aW9uXCI7XG5cbiRNZW1vLUV4aXN0czogZnVuY3Rpb24tZXhpc3RzKG1lbW8tZ2V0KSBhbmQgZnVuY3Rpb24tZXhpc3RzKG1lbW8tc2V0KTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEZ1bmN0aW9uXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50KCRxdWVyeSwgJGNvbnRleHRzLi4uKSB7XG4gICRydW46IHRydWU7XG4gICRyZXR1cm46ICgpO1xuXG4gIC8vIEdyYWIgdGhlIE1lbW8gT3V0cHV0IGlmIE1lbW9pemF0aW9uIGNhbiBiZSBhIHRoaW5nXG4gIEBpZiAkTWVtby1FeGlzdHMge1xuICAgICRyZXR1cm46IG1lbW8tZ2V0KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnQgJHF1ZXJ5ICRjb250ZXh0cyk7XG5cbiAgICBAaWYgJHJldHVybiAhPSBudWxsIHtcbiAgICAgICRydW46IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBub3QgJE1lbW8tRXhpc3RzIG9yICRydW4ge1xuICAgIC8vIEludGVybmFsIFZhcmlhYmxlc1xuICAgICRxdWVyeS1zdHJpbmc6ICcnO1xuICAgICRxdWVyeS1mYWxsYmFjazogZmFsc2U7XG4gICAgJHJldHVybjogKCk7XG5cbiAgICAvLyBSZXNlcnZlIEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRob2xkZXItY29udGV4dDogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjtcbiAgICAkaG9sZGVyLXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50O1xuXG4gICAgLy8gUmVzZXQgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG5cblxuICAgIC8vIFRlc3QgdG8gc2VlIGlmIGl0J3MgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdFxuICAgICRvci1saXN0OiBpZihsaXN0LXNlcGFyYXRvcigkcXVlcnkpID09ICdjb21tYScsIHRydWUsIGZhbHNlKTtcblxuXG4gICAgQGlmICgkb3ItbGlzdCA9PSBmYWxzZSBhbmQgYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSBmYWxzZSkge1xuICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkcXVlcnkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkbGVuZ3RoOiBsZW5ndGgoJHF1ZXJ5KTtcblxuICAgICAgJGxhc3Q6IG50aCgkcXVlcnksICRsZW5ndGgpO1xuICAgICAgJHF1ZXJ5LWZhbGxiYWNrOiBicmVha3BvaW50LW5vLXF1ZXJ5KCRsYXN0KTtcblxuICAgICAgQGlmICgkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2UpIHtcbiAgICAgICAgJGxlbmd0aDogJGxlbmd0aCAtIDE7XG4gICAgICB9XG5cbiAgICAgIEBpZiAoYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSB0cnVlKSB7XG4gICAgICAgICRtcTogKCk7XG5cbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkbXE6IGFwcGVuZCgkbXEsIG50aCgkcXVlcnksICRpKSwgY29tbWEpO1xuICAgICAgICB9XG5cbiAgICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkbXEpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcXVlcnktc3RyaW5nOiAnJztcbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkcXVlcnktc3RyaW5nOiAkcXVlcnktc3RyaW5nICsgaWYoJGkgPT0gMSwgJycsICcsICcpICsgYnJlYWtwb2ludC1wYXJzZShudGgoJHF1ZXJ5LCAkaSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJHJldHVybjogKCdxdWVyeSc6ICRxdWVyeS1zdHJpbmcsXG4gICAgICAgICdmYWxsYmFjayc6ICRxdWVyeS1mYWxsYmFjayxcbiAgICAgICAgJ2NvbnRleHQgaG9sZGVyJzogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcixcbiAgICAgICAgJ3F1ZXJ5IGNvdW50JzogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudFxuICAgICk7XG4gICAgQGlmIGxlbmd0aCgkY29udGV4dHMpID4gMCBhbmQgbnRoKCRjb250ZXh0cywgMSkgIT0gZmFsc2Uge1xuICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCduby1xdWVyeScsICRxdWVyeS1mYWxsYmFjayk7XG4gICAgICB9XG4gICAgICAkY29udGV4dC1tYXA6ICgpO1xuICAgICAgQGVhY2ggJGNvbnRleHQgaW4gJGNvbnRleHRzIHtcbiAgICAgICAgJGNvbnRleHQtbWFwOiBtYXAtbWVyZ2UoJGNvbnRleHQtbWFwLCAoJGNvbnRleHQ6IGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGNvbnRleHQpKSk7XG4gICAgICB9XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKGNvbnRleHQ6ICRjb250ZXh0LW1hcCkpO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xuXG4gICAgQGlmICRNZW1vLUV4aXN0cyB7XG4gICAgICAkaG9sZGVyOiBtZW1vLXNldChicmVha3BvaW50LCBicmVha3BvaW50ICRxdWVyeSAkY29udGV4dHMsICRyZXR1cm4pO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmFsIEJyZWFrcG9pbnQgUGFyc2VyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlKCRxdWVyeSkge1xuICAvLyBJbmNyZWFzZSBudW1iZXIgb2YgJ2FuZCcgcXVlcmllc1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50ICsgMSAhZ2xvYmFsO1xuXG4gIC8vIFNldCB1cCBNZWRpYSBUeXBlXG4gICRxdWVyeS1wcmludDogJyc7XG5cbiAgJGZvcmNlLWFsbDogKChicmVha3BvaW50LWdldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnKSA9PSB0cnVlKSBhbmQgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgPT0gJ2FsbCcpKTtcbiAgJGVtcHR5LW1lZGlhOiB0cnVlO1xuICBAaWYgKCRmb3JjZS1hbGwgPT0gdHJ1ZSkgb3IgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgIT0gJ2FsbCcpIHtcbiAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAkcXVlcnktcHJpbnQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJyk7XG4gICAgJGVtcHR5LW1lZGlhOiBmYWxzZTtcbiAgfVxuXG5cbiAgJHF1ZXJ5LXJlc29sdXRpb246IGZhbHNlO1xuXG4gICRxdWVyeS1ob2xkZXI6IGJyZWFrcG9pbnQtcGFyc2UtcXVlcnkoJHF1ZXJ5KTtcblxuXG5cbiAgLy8gTG9vcCBvdmVyIGVhY2ggcGFyc2VkIG91dCBxdWVyeSBhbmQgd3JpdGUgaXQgdG8gJHF1ZXJ5LXByaW50XG4gICRmaXJzdDogdHJ1ZTtcblxuICBAZWFjaCAkZmVhdHVyZSBpbiAkcXVlcnktaG9sZGVyIHtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJGZlYXR1cmUpO1xuXG4gICAgLy8gUGFyc2UgYSBzaW5nbGUgZmVhdHVyZVxuICAgIEBpZiAoJGxlbmd0aCA9PSAxKSB7XG4gICAgICAvLyBGZWF0dXJlIGlzIGN1cnJlbnRseSBhIGxpc3QsIGdyYWIgdGhlIGFjdHVhbCB2YWx1ZVxuICAgICAgJGZlYXR1cmU6IG50aCgkZmVhdHVyZSwgMSk7XG5cbiAgICAgIC8vIE1lZGlhIFR5cGUgbXVzdCBieSBjb252ZW50aW9uIGJlIHRoZSBmaXJzdCBpdGVtLCBzbyBpdCdzIHNhZmUgdG8gZmxhdCBvdmVycmlkZSAkcXVlcnktcHJpbnQsIHdoaWNoIHJpZ2h0IG5vdyBzaG91bGQgb25seSBiZSB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlXG4gICAgICBAaWYgKGJyZWFrcG9pbnQtaXMtbWVkaWEoJGZlYXR1cmUpKSB7XG4gICAgICAgIEBpZiAoJGZvcmNlLWFsbCA9PSB0cnVlKSBvciAoJGZlYXR1cmUgIT0gJ2FsbCcpIHtcbiAgICAgICAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICRmZWF0dXJlO1xuICAgICAgICAgICRlbXB0eS1tZWRpYTogZmFsc2U7XG5cbiAgICAgICAgICAvLyBTZXQgQ29udGV4dFxuICAgICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1lZGlhLCAkcXVlcnktcHJpbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSBkb3VibGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDIpIHtcbiAgICAgIEBpZiAoYnJlYWtwb2ludC1pcy1yZXNvbHV0aW9uKCRmZWF0dXJlKSAhPSBmYWxzZSkge1xuICAgICAgICAkcXVlcnktcmVzb2x1dGlvbjogJGZlYXR1cmU7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IG51bGw7XG4gICAgICAgIC8vIElmIGl0J3MgYSBzdHJpbmcvbnVtYmVyIHBhaXIsXG4gICAgICAgIC8vIHdlIGNoZWNrIHRvIHNlZSBpZiBvbmUgaXMgYSBzaW5nbGUtc3RyaW5nIHZhbHVlLFxuICAgICAgICAvLyB0aGVuIHdlIHBhcnNlIGl0IGFzIGEgbm9ybWFsIGRvdWJsZVxuICAgICAgICAkYWxwaGE6IG50aCgkZmVhdHVyZSwgMSk7XG4gICAgICAgICRiZXRhOiBudGgoJGZlYXR1cmUsIDIpO1xuICAgICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRhbHBoYSkgb3IgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRiZXRhKSB7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGFscGhhLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGJldGEsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSB0cmlwbGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDMpIHtcbiAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgIH1cblxuICB9XG5cbiAgQGlmICgkcXVlcnktcmVzb2x1dGlvbiAhPSBmYWxzZSkge1xuICAgICRxdWVyeS1wcmludDogYnJlYWtwb2ludC1idWlsZC1yZXNvbHV0aW9uKCRxdWVyeS1wcmludCwgJHF1ZXJ5LXJlc29sdXRpb24sICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgfVxuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGZlYXR1cmUgdGhhdCdzIGJlZW4gZGV0ZWN0ZWQgc28gZmFyIGFuZCBhcHBlbmQgJ2ZhbHNlJyB0byB0aGUgdGhlIHZhbHVlIGxpc3QgdG8gaW5jcmVtZW50IHRoZWlyIGNvdW50ZXJzXG4gIEBlYWNoICRmLCAkdiBpbiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyIHtcbiAgICAkdi1ob2xkZXI6ICR2O1xuICAgICRsZW5ndGg6IGxlbmd0aCgkdi1ob2xkZXIpO1xuICAgIEBpZiBsZW5ndGgoJHYtaG9sZGVyKSA8ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgQGZvciAkaSBmcm9tICRsZW5ndGggdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICAgIEBpZiAkZiA9PSAnbWVkaWEnIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG5cbiAgQHJldHVybiAkcXVlcnktcHJpbnQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1xdWVyeSgkcXVlcnkpIHtcbiAgLy8gUGFyc2UgZmVhdHVyZXMgb3V0IG9mIGFuIGluZGl2aWR1YWwgcXVlcnlcbiAgJGZlYXR1cmUtaG9sZGVyOiAoKTtcbiAgJHF1ZXJ5LWhvbGRlcjogKCk7XG4gICRsZW5ndGg6IGxlbmd0aCgkcXVlcnkpO1xuXG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgIC8vIElmIHdlJ3ZlIGdvdCBhIHN0cmluZy9udW1iZXIsIG51bWJlci9zdHJpbmcsIGNoZWNrIHRvIHNlZSBpZiBpdCdzIGEgdmFsaWQgc3RyaW5nL251bWJlciBwYWlyIG9yIHR3byBzaW5nbGVzXG4gICAgQGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIG9yICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ3N0cmluZycpIHtcblxuICAgICAgJG51bWJlcjogJyc7XG4gICAgICAkdmFsdWU6ICcnO1xuXG4gICAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycge1xuICAgICAgICAkbnVtYmVyOiBudGgoJHF1ZXJ5LCAyKTtcbiAgICAgICAgJHZhbHVlOiBudGgoJHF1ZXJ5LCAxKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcjogbnRoKCRxdWVyeSwgMSk7XG4gICAgICAgICR2YWx1ZTogbnRoKCRxdWVyeSwgMik7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgdmFsdWUgY2FuIGJlIGEgc2luZ2xlIHZhbHVlLCBjaGVjayB0byBzZWUgaWYgdGhlIG51bWJlciBwYXNzZWQgaW4gaXMgYSB2YWxpZCBpbnB1dCBmb3Igc2FpZCBzaW5nbGUgdmFsdWUuIEZvcnR1bmF0ZWx5LCBhbGwgY3VycmVudCBzaW5nbGUtdmFsdWUgb3B0aW9ucyBvbmx5IGFjY2VwdCB1bml0bGVzcyBudW1iZXJzLCBzbyB0aGlzIGNoZWNrIGlzIGVhc3kuXG4gICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCR2YWx1ZSkge1xuICAgICAgICBAaWYgdW5pdGxlc3MoJG51bWJlcikge1xuICAgICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCR2YWx1ZSwgJG51bWJlciwgc3BhY2UpO1xuICAgICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgYSBtZWRpYSB0eXBlLCBzcGxpdCB0aGUgcXVlcnlcbiAgICAgIEBpZiBicmVha3BvaW50LWlzLW1lZGlhKCR2YWx1ZSkge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMSkpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMikpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBJZiBpdCdzIG5vdCBhIHNpbmdsZSBmZWF0dXJlLCB3ZSdyZSBqdXN0IGdvaW5nIHRvIGFzc3VtZSBpdCdzIGEgcHJvcGVyIHN0cmluZy92YWx1ZSBwYWlyLCBhbmQgcm9sbCB3aXRoIGl0LlxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkdmFsdWUsICRudW1iZXIsIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG5cbiAgICB9XG4gICAgLy8gSWYgdGhleSdyZSBib3RoIG51bWJlcnMsIHdlIGFzc3VtZSBpdCdzIGEgZG91YmxlIGFuZCByb2xsIHdpdGggdGhhdFxuICAgIEBlbHNlIGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIHtcbiAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgIH1cbiAgICAvLyBJZiB0aGV5J3JlIGJvdGggc3RyaW5ncyBhbmQgbmVpdGhlciBhcmUgc2luZ2xlcywgd2Ugcm9sbCB3aXRoIHRoYXQuXG4gICAgQGVsc2UgaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnc3RyaW5nJykge1xuICAgICAgQGlmIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDIpKSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGxlbmd0aCA9PSAzIHtcbiAgICAvLyBJZiB3ZSd2ZSBnb3QgdGhyZWUgaXRlbXMgYW5kIG5vbmUgaXMgYSBsaXN0LCB3ZSBjaGVjayB0byBzZWVcbiAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgIT0gJ2xpc3QnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSAhPSAnbGlzdCcgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMykpICE9ICdsaXN0JyB7XG4gICAgICAvLyBJZiBub25lIG9mIHRoZSBpdGVtcyBhcmUgc2luZ2xlIHN0cmluZyB2YWx1ZXMgYW5kIG5vbmUgb2YgdGhlIHZhbHVlcyBhcmUgbWVkaWEgdmFsdWVzLCB3ZSdyZSBnb29kLlxuICAgICAgQGlmIChub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMykpKSBhbmQgICgobm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDMpKSkpIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCRmZWF0dXJlLWhvbGRlciwgbnRoKCRxdWVyeSwgMyksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBsZXQncyBjaGVjayB0byBzZWUgaWYgdGhlIGZpcnN0IGl0ZW0gaXMgYSBtZWRpYSB0eXBlXG4gICAgICBAZWxzZSBpZiBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDEpKSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAxKSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDIpLCBudGgoJHF1ZXJ5LCAzKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgaXRlbSwgb3IgaWYgaXQncyBub3QgYSBzcGVjaWFsIGNhc2UgZG91YmxlIG9yIHRyaXBsZSwgd2UgY2FuIHNpbXBseSByZXR1cm4gdGhlIHF1ZXJ5LlxuICBAcmV0dXJuICRxdWVyeTtcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwic2luZ2xlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgZmVhdHVyZSB0aGF0IGNhbiBzdGFuZCBhbG9uZSwgd2UgbGV0IGl0XG4gIEBpZiAoYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSkge1xuICAgICRwYXJzZWQ6ICRmZWF0dXJlO1xuICAgIC8vIFNldCBDb250ZXh0XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICRmZWF0dXJlKTtcbiAgfVxuICAvLyBJZiBpdCdzIG5vdCBhIHN0YW5kIGFsb25lIGZlYXR1cmUsIHdlIHBhc3MgaXQgb2ZmIHRvIHRoZSBkZWZhdWx0IGhhbmRsZXIuXG4gIEBlbHNlIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpO1xuICB9XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJygnICsgJHBhcnNlZCArICcpJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpIHtcbiAgJGRlZmF1bHQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IGZlYXR1cmUnKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZGVmYXVsdCwgJGZlYXR1cmUpO1xuXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIGFuZCAodHlwZS1vZigkZmVhdHVyZSkgPT0gJ251bWJlcicpIHtcbiAgICBAcmV0dXJuICcjeyRkZWZhdWx0fTogI3ticmVha3BvaW50LXRvLWJhc2UtZW0oJGZlYXR1cmUpfSc7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJyN7JGRlZmF1bHR9OiAjeyRmZWF0dXJlfSc7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHQtcGFpclwiO1xuQGltcG9ydCBcImRvdWJsZS9kb3VibGUtc3RyaW5nXCI7XG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gICRmaXJzdDogbnRoKCRmZWF0dXJlLCAxKTtcbiAgJHNlY29uZDogbnRoKCRmZWF0dXJlLCAyKTtcblxuICAvLyBJZiB3ZSd2ZSBnb3QgdHdvIG51bWJlcnMsIHdlIGtub3cgd2UgbmVlZCB0byB1c2UgdGhlIGRlZmF1bHQgcGFpciBiZWNhdXNlIHRoZXJlIGFyZSBubyBtZWRpYSBxdWVyaWVzIHRoYXQgaGFzIGEgbWVkaWEgZmVhdHVyZSB0aGF0IGlzIGEgbnVtYmVyXG4gIEBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YoJHNlY29uZCkgPT0gJ251bWJlcicge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdC1wYWlyKCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cbiAgLy8gSWYgdGhleSBhcmUgYm90aCBzdHJpbmdzLCB3ZSBzZW5kIGl0IHRocm91Z2ggdGhlIHN0cmluZyBwYXJzZXJcbiAgQGVsc2UgaWYgdHlwZS1vZigkZmlyc3QpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKCRzZWNvbmQpID09ICdzdHJpbmcnIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuICAvLyBJZiBpdCdzIGEgc3RyaW5nL251bWJlciBwYWlyLCB3ZSBwYXJzZSBpdCBhcyBhIG5vcm1hbCBkb3VibGVcbiAgQGVsc2Uge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLWRlZmF1bHQoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxlYWRlciArICRwYXJzZWQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0LXBhaXIoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRkZWZhdWx0OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBwYWlyJyk7XG4gICRtaW46ICcnO1xuICAkbWF4OiAnJztcblxuICAvLyBTb3J0IGludG8gbWluIGFuZCBtYXhcbiAgJG1pbjogbWluKCRmaXJzdCwgJHNlY29uZCk7XG4gICRtYXg6IG1heCgkZmlyc3QsICRzZWNvbmQpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1pbi0jeyRkZWZhdWx0fSwgJG1pbik7XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1heC0jeyRkZWZhdWx0fSwgJG1heCk7XG5cbiAgLy8gTWFrZSB0aGVtIEVNcyBpZiBuZWVkIGJlXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkbWluOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1pbik7XG4gICAgJG1heDogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtYXgpO1xuICB9XG5cbiAgQHJldHVybiAnKG1pbi0jeyRkZWZhdWx0fTogI3skbWlufSkgYW5kIChtYXgtI3skZGVmYXVsdH06ICN7JG1heH0pJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRmZWF0dXJlOiAnJztcbiAgJHZhbHVlOiAnJztcblxuICAvLyBUZXN0IHRvIHNlZSB3aGljaCBpcyB0aGUgZmVhdHVyZSBhbmQgd2hpY2ggaXMgdGhlIHZhbHVlXG4gIEBpZiAoYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJGZpcnN0KSA9PSB0cnVlKSB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2UgaWYgKGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRzZWNvbmQpID09IHRydWUpIHtcbiAgICAkZmVhdHVyZTogJHNlY29uZDtcbiAgICAkdmFsdWU6ICRmaXJzdDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJOZWl0aGVyICN7JGZpcnN0fSBub3IgI3skc2Vjb25kfSBpcyBhIHZhbGlkIG1lZGlhIHF1ZXJ5IG5hbWUuXCI7XG4gIH1cblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKTtcblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknO1xufSIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1kZWZhdWx0KCRmaXJzdCwgJHNlY29uZCkge1xuICAkZmVhdHVyZTogJyc7XG4gICR2YWx1ZTogJyc7XG5cbiAgQGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnc3RyaW5nJyB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRmZWF0dXJlOiAkc2Vjb25kO1xuICAgICR2YWx1ZTogJGZpcnN0O1xuICB9XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSk7XG5cbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICR2YWx1ZTogYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSk7XG4gIH1cblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknXG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRyaXBsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXRyaXBsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuXG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIHNlcGFyYXRlIHRoZSBzdHJpbmcgZmVhdHVyZXMgZnJvbSB0aGUgdmFsdWUgbnVtYmVyc1xuICAkc3RyaW5nOiBudWxsO1xuICAkbnVtYmVyczogbnVsbDtcbiAgQGVhY2ggJHZhbCBpbiAkZmVhdHVyZSB7XG4gICAgQGlmIHR5cGUtb2YoJHZhbCkgPT0gc3RyaW5nIHtcbiAgICAgICRzdHJpbmc6ICR2YWw7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRudW1iZXJzKSA9PSAnbnVsbCcge1xuICAgICAgICAkbnVtYmVyczogJHZhbDtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcnM6IGFwcGVuZCgkbnVtYmVycywgJHZhbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkc3RyaW5nLCBudGgoJG51bWJlcnMsIDEpLCBudGgoJG51bWJlcnMsIDIpKTtcblxuICBAcmV0dXJuICRsZWFkZXIgKyAkcGFyc2VkO1xuXG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkZmVhdHVyZSwgJGZpcnN0LCAkc2Vjb25kKSB7XG5cbiAgLy8gU29ydCBpbnRvIG1pbiBhbmQgbWF4XG4gICRtaW46IG1pbigkZmlyc3QsICRzZWNvbmQpO1xuICAkbWF4OiBtYXgoJGZpcnN0LCAkc2Vjb25kKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtaW4tI3skZmVhdHVyZX0sICRtaW4pO1xuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtYXgtI3skZmVhdHVyZX0sICRtYXgpO1xuXG4gIC8vIE1ha2UgdGhlbSBFTXMgaWYgbmVlZCBiZVxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJG1pbjogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtaW4pO1xuICAgICRtYXg6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWF4KTtcbiAgfVxuXG4gIEByZXR1cm4gJyhtaW4tI3skZmVhdHVyZX06ICN7JG1pbn0pIGFuZCAobWF4LSN7JGZlYXR1cmV9OiAjeyRtYXh9KSc7XG59XG4iLCJAaW1wb3J0IFwicmVzb2x1dGlvbi9yZXNvbHV0aW9uXCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWJ1aWxkLXJlc29sdXRpb24oJHF1ZXJ5LXByaW50LCAkcXVlcnktcmVzb2x1dGlvbiwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIEBpZiBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykgYW5kICRxdWVyeS1yZXNvbHV0aW9uIHtcbiAgICAkcmVzb2x1dGlvbnM6IGJyZWFrcG9pbnQtbWFrZS1yZXNvbHV0aW9ucygkcXVlcnktcmVzb2x1dGlvbik7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCRyZXNvbHV0aW9ucyk7XG4gICAgJHF1ZXJ5LWhvbGRlcjogJyc7XG5cbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgJHF1ZXJ5OiAnI3skcXVlcnktcHJpbnR9ICN7JGxlYWRlcn0je250aCgkcmVzb2x1dGlvbnMsICRpKX0nO1xuICAgICAgQGlmICRpID09IDEge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiAkcXVlcnk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6ICcjeyRxdWVyeS1ob2xkZXJ9LCAjeyRxdWVyeX0nO1xuICAgICAgfVxuICAgIH1cblxuICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gUmV0dXJuIHdpdGggYXR0YWNoZWQgcmVzb2x1dGlvblxuICAgIEByZXR1cm4gJHF1ZXJ5LXByaW50O1xuICB9XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1tYWtlLXJlc29sdXRpb25zKCRyZXNvbHV0aW9uKSB7XG4gICRsZW5ndGg6IGxlbmd0aCgkcmVzb2x1dGlvbik7XG5cbiAgJG91dHB1dDogKCk7XG5cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgJGZlYXR1cmU6ICcnO1xuICAgICR2YWx1ZTogJyc7XG5cbiAgICAvLyBGaW5kIHdoaWNoIGlzIG51bWJlclxuICAgIEBpZiB0eXBlLW9mKG50aCgkcmVzb2x1dGlvbiwgMSkpID09ICdudW1iZXInIHtcbiAgICAgICR2YWx1ZTogbnRoKCRyZXNvbHV0aW9uLCAxKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHZhbHVlOiBudGgoJHJlc29sdXRpb24sIDIpO1xuICAgIH1cblxuICAgIC8vIERldGVybWluZSBtaW4vbWF4L3N0YW5kYXJkXG4gICAgQGlmIGluZGV4KCRyZXNvbHV0aW9uLCAnbWluLXJlc29sdXRpb24nKSB7XG4gICAgICAkZmVhdHVyZTogJ21pbi0nO1xuICAgIH1cbiAgICBAZWxzZSBpZiBpbmRleCgkcmVzb2x1dGlvbiwgJ21heC1yZXNvbHV0aW9uJykge1xuICAgICAgJGZlYXR1cmU6ICdtYXgtJztcbiAgICB9XG5cbiAgICAkc3RhbmRhcmQ6ICcoI3skZmVhdHVyZX1yZXNvbHV0aW9uOiAjeyR2YWx1ZX0pJztcblxuICAgIC8vIElmIHdlJ3JlIG5vdCBkZWFsaW5nIHdpdGggZHBweCxcbiAgICBAaWYgdW5pdCgkdmFsdWUpICE9ICdkcHB4JyB7XG4gICAgICAkYmFzZTogOTZkcGk7XG4gICAgICBAaWYgdW5pdCgkdmFsdWUpID09ICdkcGNtJyB7XG4gICAgICAgICRiYXNlOiAyNDMuODRkcGNtO1xuICAgICAgfVxuICAgICAgLy8gV3JpdGUgb3V0IGZlYXR1cmUgdGVzdHNcbiAgICAgICR3ZWJraXQ6ICcnO1xuICAgICAgJG1vejogJyc7XG4gICAgICAkd2Via2l0OiAnKC13ZWJraXQtI3skZmVhdHVyZX1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAkbW96OiAnKCN7JGZlYXR1cmV9LW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAvLyBBcHBlbmQgdG8gb3V0cHV0XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHN0YW5kYXJkLCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHdlYmtpdCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRtb3osIHNwYWNlKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHdlYmtpdDogJyc7XG4gICAgICAkbW96OiAnJztcbiAgICAgICR3ZWJraXQ6ICcoLXdlYmtpdC0jeyRmZWF0dXJlfWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRtb3o6ICcoI3skZmVhdHVyZX0tbW96LWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRmYWxsYmFjazogJygjeyRmZWF0dXJlfXJlc29sdXRpb246ICN7JHZhbHVlIC8gMWRwcHggKiA5NmRwaX0pJztcbiAgICAgIC8vIEFwcGVuZCB0byBvdXRwdXRcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkc3RhbmRhcmQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkd2Via2l0LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJG1veiwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRmYWxsYmFjaywgc3BhY2UpO1xuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbm8tcXVlcnkoJHF1ZXJ5KSB7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gJ2xpc3QnIHtcbiAgICAka2V5d29yZDogbnRoKCRxdWVyeSwgMSk7XG5cbiAgICBAaWYgdHlwZS1vZigka2V5d29yZCkgPT0gJ3N0cmluZycgYW5kICgka2V5d29yZCA9PSAnbm8tcXVlcnknIG9yICRrZXl3b3JkID09ICdubyBxdWVyeScgb3IgJGtleXdvcmQgPT0gJ2ZhbGxiYWNrJykge1xuICAgICAgQHJldHVybiBudGgoJHF1ZXJ5LCAyKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGVmYXVsdCB0aGUgQnJlYWtwb2ludHMgdmFyaWFibGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnRzOiAoKSAhZGVmYXVsdDtcbiRCUkVBS1BPSU5UUzogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVzcG9uZC10byBBUEkgTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHJlc3BvbmQtdG8oJGNvbnRleHQsICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGlmIGxlbmd0aCgkYnJlYWtwb2ludHMpID4gMCBhbmQgbGVuZ3RoKCRCUkVBS1BPSU5UUykgPT0gMCB7XG4gICAgQHdhcm4gXCJJbiBvcmRlciB0byBhdm9pZCB2YXJpYWJsZSBuYW1lc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gYWRkIGJyZWFrcG9pbnRzIGZvciByZXNwb25kLXRvLiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50czogYWRkLWJyZWFrcG9pbnQoKWAgdG8gYEBpbmNsdWRlIGFkZC1icmVha3BvaW50KClgLiBUaGUgYGFkZC1icmVha3BvaW50KClgIGZ1bmN0aW9uIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLlwiO1xuICAgICRCUkVBS1BPSU5UUzogJGJyZWFrcG9pbnRzICFnbG9iYWw7XG4gICAgJGJyZWFrcG9pbnRzOiAoKSAhZ2xvYmFsO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJEJSRUFLUE9JTlRTKSAhPSAnbWFwJyB7XG4gICAgLy8gSnVzdCBpbiBjYXNlIHNvbWVvbmUgd3JpdGVzIGdpYmJlcmlzaCB0byB0aGUgJGJyZWFrcG9pbnRzIHZhcmlhYmxlLlxuICAgIEB3YXJuIFwiWW91ciBicmVha3BvaW50cyBhcmVuJ3QgYSBtYXAhIGByZXNwb25kLXRvYCBleHBlY3RzIGEgbWFwLiBQbGVhc2UgY2hlY2sgdGhlIHZhbHVlIG9mICRCUkVBS1BPSU5UUyB2YXJpYWJsZS5cIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtYXAtZ2V0KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpLCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkY29udGV4dCkge1xuICAgIEB3YXJuIFwiYCN7JGNvbnRleHR9YCBpc24ndCBhIGRlZmluZWQgYnJlYWtwb2ludCEgUGxlYXNlIGFkZCBpdCB1c2luZyBgJGJyZWFrcG9pbnRzOiBhZGQtYnJlYWtwb2ludChgI3skY29udGV4dH1gLCAkdmFsdWUpO2BcIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJZb3UgaGF2ZW4ndCBjcmVhdGVkIGFueSBicmVha3BvaW50cyB5ZXQhIE1ha2Ugc29tZSBhbHJlYWR5ISBgQGluY2x1ZGUgYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0KWBcIjtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFkZCBCcmVha3BvaW50IHRvIEJyZWFrcG9pbnRzXG4vLyBUT0RPOiBSZW1vdmUgZnVuY3Rpb24gaW4gbmV4dCByZWxlYXNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQsICRvdmVyd3JpdGU6IGZhbHNlKSB7XG4gICRvdXRwdXQ6ICgkbmFtZTogJGJrcHQpO1xuXG4gIEBpZiBsZW5ndGgoJGJyZWFrcG9pbnRzKSA9PSAwIHtcbiAgICBAcmV0dXJuICRvdXRwdXQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBhbmQgJG92ZXJ3cml0ZSAhPSB0cnVlIHtcbiAgICAgIEB3YXJuIFwiWW91IGFscmVhZHkgaGF2ZSBhIGJyZWFrcG9pbnQgbmFtZWQgYCN7JG5hbWV9YCwgcGxlYXNlIGNob29zZSBhbm90aGVyIGJyZWFrcG9pbnQgbmFtZSwgb3IgcGFzcyBpbiBgJG92ZXJ3cml0ZTogdHJ1ZWAgdG8gb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBicmVha3BvaW50LlwiO1xuICAgICAgQHJldHVybiAkYnJlYWtwb2ludHM7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgQHJldHVybiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnRzLCAkb3V0cHV0KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdCwgJG92ZXJ3cml0ZTogZmFsc2UpIHtcbiAgJG91dHB1dDogKCRuYW1lOiAkYmtwdCk7XG5cbiAgQGlmIGxlbmd0aCgkQlJFQUtQT0lOVFMpID09IDAge1xuICAgICRCUkVBS1BPSU5UUzogJG91dHB1dCAhZ2xvYmFsO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkbmFtZSkgYW5kICRvdmVyd3JpdGUgIT0gdHJ1ZSB7XG4gICAgICBAd2FybiBcIllvdSBhbHJlYWR5IGhhdmUgYSBicmVha3BvaW50IG5hbWVkIGAjeyRuYW1lfWAsIHBsZWFzZSBjaG9vc2UgYW5vdGhlciBicmVha3BvaW50IG5hbWUsIG9yIHBhc3MgaW4gYCRvdmVyd3JpdGU6IHRydWVgIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgYnJlYWtwb2ludC5cIjtcbiAgICAgICRCUkVBS1BPSU5UUzogJEJSRUFLUE9JTlRTICFnbG9iYWw7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgJEJSRUFLUE9JTlRTOiBtYXAtbWVyZ2UoJEJSRUFLUE9JTlRTLCAkb3V0cHV0KSAhZ2xvYmFsO1xuICAgIH1cbiAgfVxufVxuXG5AZnVuY3Rpb24gZ2V0LWJyZWFrcG9pbnQoJG5hbWU6IGZhbHNlKSB7XG4gIEBpZiAkbmFtZSA9PSBmYWxzZSB7XG4gICAgQHJldHVybiAkQlJFQUtQT0lOVFM7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkQlJFQUtQT0lOVFMsICRuYW1lKTtcbiAgfVxufVxuIiwiQG1peGluIGxlZ2FjeS1zZXR0aW5ncy13YXJuaW5nIHtcbiAgJGxlZ2FjeVZhcnM6IChcbiAgICAnZGVmYXVsdC1tZWRpYSc6ICdkZWZhdWx0IG1lZGlhJyxcbiAgICAnZGVmYXVsdC1mZWF0dXJlJzogJ2RlZmF1bHQgZmVhdHVyZScsXG4gICAgJ2ZvcmNlLW1lZGlhLWFsbCc6ICdmb3JjZSBhbGwgbWVkaWEgdHlwZScsXG4gICAgJ3RvLWVtcyc6ICd0byBlbXMnLFxuICAgICdyZXNvbHV0aW9ucyc6ICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLFxuICAgICduby1xdWVyaWVzJzogJ25vIHF1ZXJpZXMnLFxuICAgICduby1xdWVyeS1mYWxsYmFja3MnOiAnbm8gcXVlcnkgZmFsbGJhY2tzJyxcbiAgICAnYmFzZS1mb250LXNpemUnOiAnYmFzZSBmb250IHNpemUnLFxuICAgICdsZWdhY3ktc3ludGF4JzogJ2xlZ2FjeSBzeW50YXgnXG4gICk7XG5cbiAgQGVhY2ggJGxlZ2FjeSwgJG5ldyBpbiAkbGVnYWN5VmFycyB7XG4gICAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtJyArICRsZWdhY3kpIHtcbiAgICAgIEB3YXJuIFwiSW4gb3JkZXIgdG8gYXZvaWQgdmFyaWFibGUgbmFtc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gY2hhbmdlIHNldHRpbmdzIGZvciBCcmVha3BvaW50LiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50LSN7JGxlZ2FjeX06IHt7c2V0dGluZ319YCB0byBgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJyN7JG5ld30nLCB7e3NldHRpbmd9fSlgLiBWYXJpYWJsZSBzZXR0aW5ncywgYXMgd2VsbCBhcyB0aGlzIHdhcm5pbmcgd2lsbCBiZSBkZXByZWNhdGVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXCJcbiAgICB9XG4gIH07XG5cbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIEhhbmQgY29ycmVjdCBlYWNoIHNldHRpbmdcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtbWVkaWEnKSBhbmQgJGJyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYSAhPSBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBtZWRpYScsICRicmVha3BvaW50LWRlZmF1bHQtbWVkaWEpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZScpIGFuZCAkYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUgIT0gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgZmVhdHVyZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBmZWF0dXJlJywgJGJyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwnKSBhbmQgJGJyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsICE9IGJyZWFrcG9pbnQtZ2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnLCAkYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LXRvLWVtcycpIGFuZCAkYnJlYWtwb2ludC10by1lbXMgIT0gYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgndG8gZW1zJywgJGJyZWFrcG9pbnQtdG8tZW1zKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1yZXNvbHV0aW9ucycpIGFuZCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyAhPSBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcmllcycpIGFuZCAkYnJlYWtwb2ludC1uby1xdWVyaWVzICE9IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyaWVzJywgJGJyZWFrcG9pbnQtbm8tcXVlcmllcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzJykgYW5kICRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyAhPSBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyeSBmYWxsYmFja3MnLCAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWJhc2UtZm9udC1zaXplJykgYW5kICRicmVha3BvaW50LWJhc2UtZm9udC1zaXplICE9IGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnYmFzZSBmb250IHNpemUnLCAkYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCcpIGFuZCAkYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4ICE9IGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4Jykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdsZWdhY3kgc3ludGF4JywgJGJyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCk7XG4gIH1cbn0iLCJAaW1wb3J0ICdmdW5jdGlvbnMnO1xuQGltcG9ydCAnei1pbmRleCc7XG5AaW1wb3J0ICdtZWRpYS1xdWVyaWVzJztcbkBpbXBvcnQgJ3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd1bmlib2FyZCc7XG5AaW1wb3J0ICdtaXhpbnMnO1xuQGltcG9ydCAnZXh0ZW5kcyc7XG5AaW1wb3J0ICdmbGV4JztcbkBpbXBvcnQgJ2JveCc7XG5AaW1wb3J0ICdmbHVpZC1zaXplJztcbiIsIi8vLyBaLWluZGV4ZXMgbWFwLCBnYXRoZXJpbmcgYWxsIFogbGF5ZXJzIG9mIHRoZSBhcHBsaWNhdGlvblxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEB0eXBlIE1hcFxuLy8vIEBwcm9wIHtTdHJpbmd9IGtleSAtIExheWVy4oCZcyBuYW1lXG4vLy8gQHByb3Age051bWJlcn0gdmFsdWUgLSBaIHZhbHVlIG1hcHBlZCB0byB0aGUga2V5XG4kei1pbmRleGVzOiAoXG4gICdjZ19fcHJvbW90aW9uJzogMjA1LFxuICAnY2dfX3BpZWNlLmRyYWdnaW5nJzogMjA0LFxuICAnY2dfX2JvYXJkLm92ZXJsYXknOiAxMDAsXG4gICdjZ19fcGllY2UuYW5pbSc6IDMsXG4gICdjZ19fc3ZnLmNnLXNoYXBlcyc6IDIsXG4gICdjZ19fc3ZnLmNnLWN1c3RvbS1zdmdzJzogNCxcbiAgJ2NnX19waWVjZSc6IDIsXG4gICdjZ19fcGllY2UuZmFkaW5nJzogMSxcbiAgJ3Bvd2VydGlwJzogMTIwLFxuICAnY29tcGxldGUnOiAxMTIsXG4gICdpbnF1aXJ5JzogMTExLFxuICAnemVuLXRvZ2dsZSc6IDExMCxcbiAgJ21vZGFsJzogMTEwLFxuICAnbXNlbGVjdCc6IDExMCxcbiAgJ3RvcG5hdic6IDExMCxcbiAgJ2Z1bGxzY3JlZW4tbWFzayc6IDEwOSxcbiAgJ2Ryb3Bkb3duJzogMTA4LFxuICAnY29udGV4dC1tZW51JzogMTA3LFxuICAnc2l0ZS1oZWFkZXInOiAxMDYsXG4gICdyZWNvbm5lY3RpbmcnOiAxMDUsXG4gICd0b3VyLXJlbWluZGVyJzogMTA0LFxuICAnbXotbWVudSc6IDQsXG4gICdhYm92ZS1saW5rLW92ZXJsYXknOiAzLFxuICAnZnJpZW5kLWJveCc6IDIsXG4gICdsaW5rLW92ZXJsYXknOiAyLFxuICAnZ2FtZS1ib29rbWFyayc6IDIsXG4gICdzdWJuYXYtc2lkZSc6IDIsXG4gICdkZWZhdWx0JzogMCxcbik7XG5cbi8vLyBHZXQgYSB6LWluZGV4IHZhbHVlIGZyb20gYSBsYXllciBuYW1lXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGxheWVyIC0gTGF5ZXLigJlzIG5hbWVcbi8vLyBAcmV0dXJuIHtOdW1iZXJ9XG4vLy8gQHJlcXVpcmUgJHotaW5kZXhlc1xuQGZ1bmN0aW9uIHooJGxheWVyKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkei1pbmRleGVzLCAkbGF5ZXIpO1xufVxuIiwiLyogV2lkdGhzICovXG5cbiRtcS14eC1zbWFsbDogbWluLXdpZHRoIDUwMHB4O1xuJG1xLXgtc21hbGw6IG1pbi13aWR0aCA2NTBweDtcbiRtcS1zbWFsbDogbWluLXdpZHRoIDgwMHB4O1xuJG1xLW1lZGl1bTogbWluLXdpZHRoIDk4MHB4O1xuJG1xLWxhcmdlOiBtaW4td2lkdGggMTEyMHB4O1xuJG1xLXgtbGFyZ2U6IG1pbi13aWR0aCAxMjYwcHg7XG5cbiRtcS1ub3QteHgtc21hbGw6IG1heC13aWR0aCA0OTlweDtcbiRtcS1ub3QteC1zbWFsbDogbWF4LXdpZHRoIDY0OXB4O1xuJG1xLW5vdC1zbWFsbDogbWF4LXdpZHRoIDc5OXB4O1xuJG1xLW5vdC1tZWRpdW06IG1heC13aWR0aCA5NzlweDtcbiRtcS1ub3QtbGFyZ2U6IG1heC13aWR0aCAxMTE5cHg7XG4kbXEtbm90LXgtbGFyZ2U6IG1heC13aWR0aCAxMjU5cHg7XG5cbi8qIEhlaWdodHMgKi9cblxuJG1xLXgtc2hvcnQ6IG1pbi1oZWlnaHQgNDAwcHg7XG4kbXEtc2hvcnQ6IG1pbi1oZWlnaHQgNTAwcHg7XG4kbXEtdGFsbDogbWluLWhlaWdodCA2MDBweDtcbiRtcS14LXRhbGw6IG1pbi1oZWlnaHQgNzAwcHg7XG5cbiRtcS1ub3QteC1zaG9ydDogbWF4LWhlaWdodCAzOTlweDtcblxuLyogT3JpZW50YXRpb25zICovXG5cbiRtcS1wb3J0cmFpdDogb3JpZW50YXRpb24gcG9ydHJhaXQ7XG4kbXEtbGFuZHNjYXBlOiBvcmllbnRhdGlvbiBsYW5kc2NhcGU7XG5cbi8qIENhcGFiaWxpdGllcyAqL1xuXG4kbXEtaG92ZXIteWVzOiAnaG92ZXI6IGhvdmVyJztcbiRtcS1ob3Zlci1ubzogaG92ZXIgbm9uZTtcblxuLyogQWxpYXNlcyAqL1xuXG4kbXEtbWFpbi1tYXJnaW46ICRtcS1zbWFsbDtcblxuJG1xLXRvcG5hdi12aXNpYmxlOiAkbXEtbWVkaXVtO1xuJG1xLXRvcG5hdi1oaWRkZW46ICRtcS1ub3QtbWVkaXVtO1xuXG4kbXEtc2l0ZS1oZWFkZXItdGFsbDogJG1xLXRhbGw7XG5cbiRtcS1zdWJuYXYtdG9wOiAkbXEtbm90LXNtYWxsO1xuJG1xLXN1Ym5hdi1zaWRlOiAkbXEtc21hbGw7XG5cbiRtcS16b29tLWVuYWJsZWQ6ICRtcS1zbWFsbCAkbXEtc2hvcnQ7XG4iLCIkZGVidWc6IGZhbHNlO1xuXG4kZm9udC1wYXRoOiAnLi4vZm9udCc7XG4kaW1nLXBhdGg6ICcuLi9pbWFnZXMnO1xuXG4kdmlld3BvcnQtbWluLXdpZHRoOiAzMjBweDtcblxuJGJsb2NrLWdhcDogMnZtaW47XG4kYmxvY2stZ2FwLWhhbGY6IDF2bWluO1xuXG4kYmxvY2stZ2FwLWg6IDJ2aDtcbiRibG9jay1nYXAtdzogMnZ3O1xuJGJsb2NrLWdhcC13LWhhbGY6IDF2dztcblxuJGJveC1yYWRpdXMtc2l6ZTogM3B4O1xuXG4kc2l0ZS1oZWFkZXItdGFsbC1oZWlnaHQ6IDYwcHg7XG4kc2l0ZS1oZWFkZXItc2hvcnQtaGVpZ2h0OiA0MHB4O1xuXG4kdHJhbnNpdGlvbi1kdXJhdGlvbjogMTUwbXM7XG5cbiRtYWluLW1heC13aWR0aDogMTMwMHB4ICFkZWZhdWx0O1xuXG4kbWFpbi1tYXJnaW46IHZhcigtLW1haW4tbWFyZ2luKTtcbiRzaXRlLWhlYWRlci1oZWlnaHQ6IHZhcigtLXNpdGUtaGVhZGVyLWhlaWdodCk7XG5cbiRzaXRlLWhlYWRlci1tYXJnaW46IHZhcigtLXNpdGUtaGVhZGVyLW1hcmdpbik7XG5cbiRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHQ6IGNhbGMoI3skc2l0ZS1oZWFkZXItaGVpZ2h0fSArICN7JHNpdGUtaGVhZGVyLW1hcmdpbn0pO1xuIiwiLyogVW5pYm9hcmQ6IGtlZXAgdGhlIHNhbWUgcGFnZSBsYXlvdXQgYWNyb3NzIHBhZ2VzICovXG5cbiRtcS1ib2FyZC1yZXNpemFibGU6ICRtcS1zbWFsbDtcbiRtcS1jb2wxLXVuaWJvYXJkOiAkbXEtbm90LXNtYWxsICRtcS1wb3J0cmFpdDtcbiRtcS1jb2wyLXVuaWJvYXJkOiAkbXEtc21hbGwsICRtcS1sYW5kc2NhcGU7XG4kbXEtY29sMy11bmlib2FyZDogJG1xLXgtbGFyZ2U7XG5cbi8qIHdoZW4gdGhlIHdpZHRoIGlzIGFwcHJvcHJpYXRlIGZvciBjb2wxLCBidXQgbGFuZHNjYXBlIHByZXZlbnRzIGl0ICovXG4kbXEtY29sMi11bmlib2FyZC1zcXVlZXplOiAkbXEtbm90LXNtYWxsICRtcS1sYW5kc2NhcGU7XG5cbiRjb2wzLXVuaWJvYXJkLXNpZGU6IG1pbm1heCgyMzBweCwgMjB2dyk7XG4kY29sMy11bmlib2FyZC10YWJsZTogbWlubWF4KDI0MHB4LCA0MDBweCk7XG4kY29sMy11bmlib2FyZC1jb250cm9sczogM3JlbTtcblxuJGNvbDMtdW5pYm9hcmQtbWluLXdpZHRoOiBjYWxjKDcwdm1pbiAqIHZhcigtLWJvYXJkLXNjYWxlKSk7XG4kY29sMy11bmlib2FyZC1tYXgtd2lkdGg6IGNhbGMoMTAwdmggKiB2YXIoLS1ib2FyZC1zY2FsZSkgLSAjeyRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHR9IC0gI3skY29sMy11bmlib2FyZC1jb250cm9sc30pO1xuJGNvbDMtdW5pYm9hcmQtd2lkdGg6IG1pbm1heCgkY29sMy11bmlib2FyZC1taW4td2lkdGgsICRjb2wzLXVuaWJvYXJkLW1heC13aWR0aCk7XG5cbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtc2NhbGU6IDAuOTtcblxuLy8gem9vbTogODUlXG4kY29sMy11bmlib2FyZC1kZWZhdWx0LW1pbi13aWR0aDogNTAwcHg7XG4kY29sMy11bmlib2FyZC1kZWZhdWx0LW1heC13aWR0aDogY2FsYyhcbiAgMTAwdmggKiAjeyRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtc2NhbGV9IC0gI3skc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0fSAtICN7JGNvbDMtdW5pYm9hcmQtY29udHJvbHN9XG4pO1xuJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC13aWR0aDogbWlubWF4KCN7JGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1taW4td2lkdGh9LCAjeyRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWF4LXdpZHRofSk7XG5cbiRjb2wyLXVuaWJvYXJkLXRhYmxlOiAkY29sMy11bmlib2FyZC10YWJsZTtcbiRjb2wyLXVuaWJvYXJkLWNvbnRyb2xzOiAkY29sMy11bmlib2FyZC1jb250cm9scztcbiRjb2wyLXVuaWJvYXJkLXdpZHRoOiAkY29sMy11bmlib2FyZC13aWR0aDtcbiRjb2wyLXVuaWJvYXJkLWRlZmF1bHQtd2lkdGg6ICRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtd2lkdGg7XG5cbiRjb2wyLXVuaWJvYXJkLXNxdWVlemUtdGFibGU6IG1pbm1heCgyMDBweCwgMjQwcHgpO1xuJGNvbDItdW5pYm9hcmQtc3F1ZWV6ZS13aWR0aDogbWlubWF4KGNhbGMoNTV2bWluKSwgY2FsYygxMDB2aCAtICN7JHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodH0gLSAjeyRibG9jay1nYXB9KSk7XG5cbiRjb2wxLXVuaWJvYXJkLWNvbnRyb2xzOiA1cmVtO1xuIiwiQG1peGluIGJveC1yYWRpdXMge1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplO1xufVxuXG5AbWl4aW4gYm94LXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6ICRib3gtc2hhZG93O1xufVxuXG5AbWl4aW4gYm94LW5lYXQge1xuICBAaW5jbHVkZSBib3gtcmFkaXVzO1xuICBAaW5jbHVkZSBib3gtc2hhZG93O1xufVxuXG5AbWl4aW4gZGVidWctem9vbS1pbnB1dCB7XG4gICN6b29tLWlucHV0IHtcbiAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtem9vbS1lbmFibGVkKSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIGJvdHRvbTogM3B4O1xuICAgICAgcmlnaHQ6IDNweDtcbiAgICAgIHdpZHRoOiAxMHZ3O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHJhbnNpdGlvbigkcHJvcDogYWxsLCAkZHVyOiAkdHJhbnNpdGlvbi1kdXJhdGlvbikge1xuICB0cmFuc2l0aW9uOiAkcHJvcCAkZHVyO1xufVxuXG5AbWl4aW4gaG92ZXJmbG93IHtcbiAgb3ZlcmZsb3cteTogYXV0bztcblxuICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAgICY6bm90KDpob3Zlcikge1xuICAgICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lO1xuXG4gICAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBoaWRlIHtcbiAgZGlzcGxheTogbm9uZTtcblxuICAuYmxpbmQtbW9kZSAmIHtcbiAgICBkaXNwbGF5OiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBlbGxpcHNpcyB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG5AbWl4aW4gY3Jvc3N0YWJsZS1sYXJnZSB7XG4gIC5jcm9zc3RhYmxlX191c2VycyB7XG4gICAgZmxleDogNyAxIGF1dG87XG4gIH1cbn1cblxuQG1peGluIGNyb3NzdGFibGUtc21hbGwge1xuICAuY3Jvc3N0YWJsZV9fdXNlcnMge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiBib2R5LWZpeGVkLXNjcm9sbCB7XG4gIGJvZHkge1xuICAgIC8qIHByZXZlbnRzIHNjcm9sbCBiYXIgZmxpY2tlciB3aGVuIGRyYWdnaW5nIGEgcGllY2Ugb3V0ICovXG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICB9XG59XG4iLCIlYmFzZS1mb250LWZhbGxiYWNrIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnLCBTYW5zLVNlcmlmO1xufVxuXG4lYmFzZS1mb250IHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnLCBTYW5zLVNlcmlmO1xufVxuXG4lcm9ib3RvIHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nLCBTYW5zLVNlcmlmO1xufVxuXG4lcm9ib3RvLWZhdCB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgU2Fucy1TZXJpZjtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuJWNoZXNzLWZvbnQge1xuICBmb250LWZhbWlseTogJ05vdG8gQ2hlc3MnLCAnTm90byBTYW5zJztcbn1cblxuJXNhbiB7XG4gIEBleHRlbmQgJWNoZXNzLWZvbnQ7XG5cbiAgLnBpZWNlLWxldHRlciAmIHtcbiAgICBAZXh0ZW5kICViYXNlLWZvbnQ7XG4gIH1cblxuICBkcmF3IHtcbiAgICBAZXh0ZW5kICVyb2JvdG87XG4gICAgbWFyZ2luLWxlZnQ6IDFjaDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICB9XG59XG5cbi8qIHRleHQgcHJpbnRlZCBkaXJlY3RseSBvbiB0aGUgcGFnZSBiYWNrZ3JvdW5kIGRlc2VydmVzIHNwZWNpYWwgdHJlYXRtZW50ICh0cmFuc3AgdGhlbWUpICovXG4lcGFnZS1mb250IHtcbiAgY29sb3I6ICRjLWZvbnQtcGFnZTtcbn1cblxuJXBhZ2UtdGV4dCB7XG4gIEBleHRlbmQgJXBhZ2UtZm9udCwgJXBhZ2UtdGV4dC1zaGFkb3cgIW9wdGlvbmFsO1xufVxuXG4lcGFnZS1saW5rIHtcbiAgQGV4dGVuZCAlcGFnZS1saW5rLWZvbnQgIW9wdGlvbmFsO1xuXG4gIEBleHRlbmQgJXBhZ2UtdGV4dC1zaGFkb3cgIW9wdGlvbmFsO1xufVxuXG4lbWV0YWwge1xuICBAaW5jbHVkZSBtZXRhbDtcbn1cblxuJW1ldGFsLWhvdmVyIHtcbiAgQGluY2x1ZGUgbWV0YWwtaG92ZXI7XG59XG5cbiVwYWdlLW1ldGFsIHtcbiAgQGluY2x1ZGUgcGFnZS1tZXRhbDtcbn1cblxuJXBhZ2UtbWV0YWwtaG92ZXIge1xuICBAaW5jbHVkZSBwYWdlLW1ldGFsO1xufVxuXG4lbWV0YWwtYmcge1xuICBAaW5jbHVkZSBtZXRhbC1iZztcbn1cblxuJWFjdGl2ZS1pbnNldC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDNweCA0cHggaHNsYSgwLCAwLCAwLCAwLjE1KSBpbnNldDtcbn1cblxuJWFjdGl2ZSB7XG4gIEBleHRlbmQgJWFjdGl2ZS1pbnNldC1zaGFkb3c7XG5cbiAgYmFja2dyb3VuZDogJGMtYWNjZW50O1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1zaGFkb3c6IDAgMXB4IDFweCBibGFjayAhaW1wb3J0YW50O1xufVxuXG4lYWN0aXZlLWhvdmVyIHtcbiAgYmFja2dyb3VuZDogbWl4KHdoaXRlLCAkYy1hY2NlbnQsIDIwJSk7XG59XG5cbiVhY3RpdmUtc29mdCB7XG4gIEBleHRlbmQgJWFjdGl2ZS1pbnNldC1zaGFkb3c7XG5cbiAgYmFja2dyb3VuZDogJGMtc2hhZGU7XG4gIGNvbG9yOiAkYy1mb250LWNsZWFyZXI7XG4gIHRleHQtc2hhZG93OiAxcHggMXB4IDFweCAkYy1mb250LXNoYWRvdyAhaW1wb3J0YW50O1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuJWRyb3Bkb3duLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IC0xcHggNXB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG59XG5cbiVwb3B1cC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDE0cHggMjhweCByZ2JhKDAsIDAsIDAsIDAuMjUpLCAwIDEwcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMjIpO1xufVxuXG4lYnV0dG9uLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDVweCAwIGhzbGEoMCwgMCwgMCUsIDAuMjI1KTtcbn1cblxuJWJ1dHRvbi1yYWlzZWQtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCA0cHggMTBweCAwcHggaHNsYSgwLCAwLCAwLCAwLjIyNSk7XG59XG5cbiVidXR0b24tbm9uZSB7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgY29sb3I6ICRjLWZvbnQ7XG4gIGFsaWduLWl0ZW1zOiBub3JtYWw7XG59XG5cbiVjaGVja2JveCB7XG4gIEBleHRlbmQgJWJveC1yYWRpdXM7XG5cbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICBiYWNrZ3JvdW5kOiAkYy1iZy1wYWdlO1xuICBib3JkZXI6IDFweCBzb2xpZCAkYy1iZy1sb3c7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogMC41ZW07XG5cbiAgJjpjaGVja2VkIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1zZWNvbmRhcnktZGltbWVyO1xuICAgIGJvcmRlci1jb2xvcjogJGMtc2Vjb25kYXJ5LWRpbTtcbiAgfVxufVxuXG4lZm9jdXMtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAwIDEycHggJGMtZm9udC1kaW07XG59XG5cbiV6YWxnb3ZlcmZsb3cge1xuICAvLyBtaXRpZ2F0ZSB6YWxnbyB0ZXh0XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbiVub3dyYXAtaGlkZGVuIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuJW5vd3JhcC1lbGxpcHNpcyB7XG4gIEBleHRlbmQgJWVsbGlwc2lzO1xuXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbiVib3gtcGFkZGluZyB7XG4gIHBhZGRpbmc6IDV2aCB2YXIoLS1ib3gtcGFkZGluZyk7XG59XG5cbiVib3gtcGFkZGluZy1ob3JpeiB7XG4gIHBhZGRpbmc6IDAgdmFyKC0tYm94LXBhZGRpbmcpO1xufVxuXG4lYnJlYWstd29yZCB7XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG59XG5cbiVicmVhay13b3JkLWhhcmQge1xuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG5cbiAgLyogc3VwcG9ydDogZmlyZWZveCAqL1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xufVxuXG4lYnJlYWstbm9wZSB7XG4gIG92ZXJmbG93LXdyYXA6IG5vcm1hbDtcbiAgd29yZC1icmVhazogbm9ybWFsO1xufVxuXG4lZWxsaXBzaXMge1xuICBAaW5jbHVkZSBlbGxpcHNpcztcbn1cblxuJXNxdWFyZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogMDtcbiAgcGFkZGluZy1ib3R0b206IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ldmlkZW8ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDA7XG4gIHBhZGRpbmctYm90dG9tOiA1Ni4yNSU7XG5cbiAgLyogMTYvOSAqL1xuICAvLyBwYWRkaW5nLWJvdHRvbTogNzUlOyAvKiA0LzMgKi9cbiAgd2lkdGg6IDEwMCU7XG5cbiAgPiAqIHtcbiAgICBAZXh0ZW5kICVhYnMtMTAwO1xuXG4gICAgYm9yZGVyOiBub25lO1xuICB9XG59XG5cbiVnYW1lLWVtYmVkIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtbm90LXh4LXNtYWxsKSB7XG4gICAgcGFkZGluZy1ib3R0b206IDE2MCU7XG4gIH1cbn1cblxuJWRhdGEtaWNvbiB7XG4gIGZvbnQtc2l6ZTogMS4yZW07XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGZvbnQtZmFtaWx5OiAnbGljaGVzcyc7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIGNvbnRlbnQ6IGF0dHIoZGF0YS1pY29uKTtcbiAgb3BhY2l0eTogMC45O1xufVxuXG4lZGF0YS1pY29uLXRvcCB7XG4gICY6OmJlZm9yZSB7XG4gICAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wO1xuICB9XG59XG5cbiVmdWxsc2NyZWVuLW1hc2sge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgYmFja2dyb3VuZDogJGMtcGFnZS1tYXNrO1xuICB6LWluZGV4OiB6KCdmdWxsc2NyZWVuLW1hc2snKTtcbn1cblxuJWxpbmstb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB6LWluZGV4OiB6KCdsaW5rLW92ZXJsYXknKTtcbn1cblxuJWFicy0xMDAge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbiVkb3VibGUtdGFwIHtcbiAgLy8gcHJldmVudCBpUGFkIHNhZmFyaSBmcm9tIHpvb21pbmcgaW4gb24gZG91YmxlIHRhcFxuICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcbn1cbiIsIiVmbGV4LXdyYXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xufVxuXG4lZmxleC1jZW50ZXIge1xuICAvKiBleHRlbmRzICVmbGV4LXdyYXAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuJWZsZXgtY2VudGVyLW5vd3JhcCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuJWZsZXgtYmV0d2VlbiB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtY2VudGVyICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuJWZsZXgtYmV0d2Vlbi1ub3dyYXAge1xuICAvKiBleHRlbmRzICVmbGV4LWNlbnRlciAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuJWZsZXgtYmV0d2Vlbi1zdHJldGNoIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbn1cblxuJWZsZXgtYXJvdW5kIHtcbiAgLyogZXh0ZW5kcyAlZmxleC1jZW50ZXIgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG59XG5cbiVmbGV4LWNvbHVtbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogY29sdW1uO1xufVxuIiwiJWJveC1yYWRpdXMge1xuICBAaW5jbHVkZSBib3gtcmFkaXVzO1xufVxuXG4lYm94LXJhZGl1cy1mb3JjZSB7XG4gIEBleHRlbmQgJWJveC1yYWRpdXM7XG5cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAvKiBoZWxwcyB3aXRoIGNsaXBwaW5nIGJhY2tncm91bmQgaW50byBib3JkZXItcmFkaXVzICovXG59XG5cbiVib3gtcmFkaXVzLWxlZnQge1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplIDAgMCAkYm94LXJhZGl1cy1zaXplO1xufVxuXG4lYm94LXJhZGl1cy1yaWdodCB7XG4gIGJvcmRlci1yYWRpdXM6IDAgJGJveC1yYWRpdXMtc2l6ZSAkYm94LXJhZGl1cy1zaXplIDA7XG59XG5cbiVib3gtcmFkaXVzLXRvcCB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemUgJGJveC1yYWRpdXMtc2l6ZSAwIDA7XG59XG5cbiVib3gtcmFkaXVzLWJvdHRvbSB7XG4gIGJvcmRlci1yYWRpdXM6IDAgMCAkYm94LXJhZGl1cy1zaXplICRib3gtcmFkaXVzLXNpemU7XG59XG5cbiVib3gtcmFkaXVzLXRvcC1sZWZ0IHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZSAwIDAgMDtcbn1cblxuJWJveC1yYWRpdXMtdG9wLXJpZ2h0IHtcbiAgYm9yZGVyLXJhZGl1czogMCAkYm94LXJhZGl1cy1zaXplIDAgMDtcbn1cblxuJWJveC1zaGFkb3cge1xuICBAaW5jbHVkZSBib3gtc2hhZG93O1xufVxuXG4lYm94LW5lYXQge1xuICBAZXh0ZW5kICVib3gtc2hhZG93LCAlYm94LXJhZGl1cztcbn1cblxuJWJveC1uZWF0LXRvcCB7XG4gIEBleHRlbmQgJWJveC1zaGFkb3csICVib3gtcmFkaXVzLXRvcDtcbn1cblxuJWJveC1uZWF0LWZvcmNlIHtcbiAgQGV4dGVuZCAlYm94LXNoYWRvdywgJWJveC1yYWRpdXMtZm9yY2U7XG59XG4iLCIkdnAtbWluLXdpZHRoOiAzMjBweCAhZGVmYXVsdDtcbiR2cC1tYXgtd2lkdGg6IDEyMDBweCAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHN0cmlwLXVuaXQoJHZhbHVlKSB7XG4gIEByZXR1cm4gJHZhbHVlIC8gKCR2YWx1ZSAqIDAgKyAxKTtcbn1cblxuQG1peGluIGZsdWlkLXNpemUoJHByb3AsICRtaW4tc2l6ZSwgJG1heC1zaXplLCAkbWluLXZ3OiAkdnAtbWluLXdpZHRoLCAkbWF4LXZ3OiAkdnAtbWF4LXdpZHRoKSB7XG4gICR1MTogdW5pdCgkbWluLXZ3KTtcbiAgJHUyOiB1bml0KCRtYXgtdncpO1xuICAkdTM6IHVuaXQoJG1pbi1zaXplKTtcbiAgJHU0OiB1bml0KCRtYXgtc2l6ZSk7XG5cbiAgQGlmICR1MSA9PSAkdTIgYW5kICR1MSA9PSAkdTMgYW5kICR1MSA9PSAkdTQge1xuICAgICYge1xuICAgICAgI3skcHJvcH06ICRtaW4tc2l6ZTtcblxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4tdncpIHtcbiAgICAgICAgI3skcHJvcH06IGNhbGMoXG4gICAgICAgICAgI3skbWluLXNpemV9ICsgI3tzdHJpcC11bml0KCRtYXgtc2l6ZSAtICRtaW4tc2l6ZSl9ICpcbiAgICAgICAgICAgICgoMTAwdncgLSAjeyRtaW4tdnd9KSAvICN7c3RyaXAtdW5pdCgkbWF4LXZ3IC0gJG1pbi12dyl9KVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1heC12dykge1xuICAgICAgICAjeyRwcm9wfTogJG1heC1zaXplO1xuICAgICAgfVxuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGVycm9yIFwiZmx1aWQtc2l6ZSByZXF1aXJlcyB0aGF0IGFsbCB2YWx1ZXMgaGF2ZSB0aGUgc2FtZSB1bml0XCI7XG4gIH1cbn1cbiIsImNvb3JkcyB7XG4gIC8qIGhhbmRsZSBoaWRkZW4gY29vcmRzICovXG4gIC5jb29yZHMtbm8gJiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC8qIGhhbmRsZSBpbm5lciBjb29yZHMgKi9cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICBAaW5jbHVkZSBmbHVpZC1zaXplKCdmb250LXNpemUnLCA4cHgsIDEycHgpO1xuXG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1zaGFkb3c6IDAgMXB4IDJweCAjMDAwO1xuICBmb250LXdlaWdodDogYm9sZDtcblxuICAmLnJhbmtzIHtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbi1yZXZlcnNlO1xuICAgIHRvcDogMXB4O1xuICAgIHJpZ2h0OiAwO1xuXG4gICAgLy8gYSBuZWdhdGl2ZSB2YWx1ZSBjcmVhdGVzIGVtcHR5IHNwYWNlIG9uIHRoZSByaWdodCBzaWRlIGluIG1vYmlsZSBicm93c2Vyc1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMC44ZW07XG5cbiAgICAmLmJsYWNrIHtcbiAgICAgIGZsZXgtZmxvdzogY29sdW1uO1xuICAgIH1cbiAgfVxuXG4gICYuZmlsZXMge1xuICAgIGJvdHRvbTogMHB4O1xuICAgIGxlZnQ6IDA7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBmbGV4LWZsb3c6IHJvdztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEuNGVtO1xuXG4gICAgJi5ibGFjayB7XG4gICAgICBmbGV4LWZsb3c6IHJvdy1yZXZlcnNlO1xuICAgIH1cblxuICAgIGNvb3JkIHtcbiAgICAgIHBhZGRpbmctbGVmdDogNHB4O1xuICAgIH1cbiAgfVxuXG4gIGNvb3JkIHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgfVxuXG4gIC8qIG5lZ2F0ZSBpbm5lciBjb29yZHMgY29sb3JzICovXG4gIC5pczNkIC5jZy13cmFwIGNvb3JkcyBjb29yZCB7XG4gICAgY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMnB4ICMwMDAgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5pczNkIC5jZy13cmFwIGNvb3Jkcy5maWxlcyB7XG4gICAgYm90dG9tOiBjYWxjKDFweCAtIDIuNSUpO1xuXG4gICAgY29vcmQge1xuICAgICAgcGFkZGluZy1sZWZ0OiAzcHg7XG4gICAgfVxuICB9XG59XG5cbkBpbXBvcnQgJ2Nvb3Jkcy1jb2xvcnMnO1xuXG4vKiBoYW5kbGUgb3V0ZXIgY29vcmRzICovXG5AaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyLXVuaWJvYXJkKSB7XG4gIC5jb29yZHMtb3V0IGNvb3JkcyB7XG4gICAgdGV4dC1zaGFkb3c6IG5vbmU7XG5cbiAgICAmLnJhbmtzIHtcbiAgICAgIHJpZ2h0OiAtMTVweDtcbiAgICAgIHRvcDogMDtcbiAgICAgIHdpZHRoOiAxMnB4O1xuXG4gICAgICBjb29yZCB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg0MiUpO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuZmlsZXMge1xuICAgICAgYm90dG9tOiAtMTVweDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuICB9XG5cbiAgLmNvb3Jkcy1vdXQgY29vcmRzLnJhbmtzLFxuICAuY29vcmRzLW91dCAuaXMyZCBjb29yZHMuZmlsZXMge1xuICAgIGNvb3JkIHtcbiAgICAgIGNvbG9yOiAkYy1mb250LXBhZ2UgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cbiIsIiRjb29yZC1jb2xvci1kZWZhdWx0OiAjZmZmO1xuJGNvb3JkLXNoYWRvdy1kZWZhdWx0OiAwIDFweCAycHggIzAwMDtcblxuY29vcmRzIHtcbiAgdGV4dC1zaGFkb3c6IHZhcigtLWNnLWNzLCAkY29vcmQtc2hhZG93LWRlZmF1bHQpO1xufVxuXG4ub3JpZW50YXRpb24td2hpdGUgLmZpbGVzIGNvb3JkOm50aC1jaGlsZCgybiArIDEpLFxuLm9yaWVudGF0aW9uLXdoaXRlIC5yYW5rcyBjb29yZDpudGgtY2hpbGQoMm4pLFxuLm9yaWVudGF0aW9uLWJsYWNrIC5maWxlcyBjb29yZDpudGgtY2hpbGQoMm4pLFxuLm9yaWVudGF0aW9uLWJsYWNrIC5yYW5rcyBjb29yZDpudGgtY2hpbGQoMm4gKyAxKSB7XG4gIGNvbG9yOiB2YXIoLS1jZy1jY3csICRjb29yZC1jb2xvci1kZWZhdWx0KTtcbn1cblxuLm9yaWVudGF0aW9uLXdoaXRlIC5maWxlcyBjb29yZDpudGgtY2hpbGQoMm4pLFxuLm9yaWVudGF0aW9uLXdoaXRlIC5yYW5rcyBjb29yZDpudGgtY2hpbGQoMm4gKyAxKSxcbi5vcmllbnRhdGlvbi1ibGFjayAuZmlsZXMgY29vcmQ6bnRoLWNoaWxkKDJuICsgMSksXG4ub3JpZW50YXRpb24tYmxhY2sgLnJhbmtzIGNvb3JkOm50aC1jaGlsZCgybikge1xuICBjb2xvcjogdmFyKC0tY2ctY2NiLCAkY29vcmQtY29sb3ItZGVmYXVsdCk7XG59XG4iLCJib2R5IHtcbiAgLS1ib2FyZC1zY2FsZTogMTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS16b29tLWVuYWJsZWQpIHtcbiAgICAvLyAtLXpvb206IDgwOyBkZWZpbmVkIGluIHRoZSBIVE1MLCBsb2FkZWQgZnJvbSBzZXJ2ZXJcbiAgICAtLWJvYXJkLXNjYWxlOiBjYWxjKCh2YXIoLS16b29tKSAvIDEwMCkgKiAwLjcgKyAwLjMpO1xuICB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDEtdW5pYm9hcmQpIHtcbiAgYm9keSB7XG4gICAgLS1jb2wxOiAxO1xuICB9XG5cbiAgLm1haW4tYm9hcmQgY2ctYm9hcmQge1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gIH1cbn1cbiIsImJvZHk6Oi13ZWJraXQtc2Nyb2xsYmFyLFxuYm9keTo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyIHtcbiAgd2lkdGg6IDAuNXJlbTtcbiAgYmFja2dyb3VuZDogJGMtYmctYm94O1xufVxuXG5ib2R5Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gIGJhY2tncm91bmQ6ICRjLXNoYWRlO1xufVxuXG5ib2R5Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlcixcbmJvZHk6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmFjdGl2ZSB7XG4gIGJhY2tncm91bmQ6ICRjLWZvbnQtZGltbWVyO1xufVxuIiwiYm9keS5yZXNpemluZyB7XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG5jZy1yZXNpemUge1xuICAkcmVzaXplLXdpZHRoOiAyMnB4O1xuXG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtYm9hcmQtcmVzaXphYmxlKSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAjezEzcHggLSAkcmVzaXplLXdpZHRofTtcbiAgICBib3R0b206ICN7MTNweCAtICRyZXNpemUtd2lkdGh9O1xuICAgIHdpZHRoOiAkcmVzaXplLXdpZHRoO1xuICAgIGhlaWdodDogJHJlc2l6ZS13aWR0aDtcbiAgICBjdXJzb3I6IG53c2UtcmVzaXplO1xuICAgIHotaW5kZXg6IDEwO1xuXG4gICAgJjo6YmVmb3JlLFxuICAgICY6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICMwMDA7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHdpZHRoOiAxMnB4O1xuICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIHdpZHRoOiA1cHg7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg3cHgsIDhweCkgcm90YXRlKC00NWRlZyk7XG4gICAgfVxuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMXB4LCA2cHgpIHJvdGF0ZSgtNDVkZWcpO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgYmFja2dyb3VuZDogZmFkZS1vdXQoJGMtYWNjZW50LCAwLjUpO1xuICAgIH1cblxuICAgIC5yZXNpemluZyAmIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGJhY2tncm91bmQ6IGZhZGUtb3V0KCRjLXNlY29uZGFyeSwgMC41KTtcbiAgICB9XG4gIH1cbn1cbiIsIiNtb2RhbCB7XG4gICYtb3ZlcmxheSB7XG4gICAgQGV4dGVuZCAlZnVsbHNjcmVlbi1tYXNrLCAlZmxleC1jZW50ZXI7XG5cbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuXG4gICYtd3JhcCB7XG4gICAgQGV4dGVuZCAlYm94LXJhZGl1cywgJXBvcHVwLXNoYWRvdywgJWZsZXgtY29sdW1uO1xuXG4gICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWF4LXdpZHRoOiAxMDB2dztcbiAgICBtYXgtaGVpZ2h0OiA5NnZoO1xuXG4gICAgPiBkaXYge1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICBwYWRkaW5nOiAycmVtO1xuICAgIH1cblxuICAgIC5jbG9zZSB7XG4gICAgICBjb2xvcjogJGMtZm9udDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAyOHB4O1xuICAgICAgd2lkdGg6IDMycHg7XG4gICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB0b3A6IDA7XG4gICAgICByaWdodDogMDtcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG5cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXNtYWxsKSB7XG4gICAgICAgIHRvcDogLTEycHg7XG4gICAgICAgIHJpZ2h0OiAtMTJweDtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtYmctcG9wdXA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuY2xvc2U6aG92ZXIge1xuICAgICAgQGV4dGVuZCAlYm94LXNoYWRvdztcblxuICAgICAgYmFja2dyb3VuZDogJGMtYmFkO1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgfVxuICB9XG59XG4iLCIuY29udGludWUtd2l0aCB7XG4gIEBleHRlbmQgJWZsZXgtY29sdW1uO1xuXG4gID4gKjpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgbWFyZ2luLXRvcDogMWVtO1xuICB9XG59XG4iLCIuY29sb3ItaWNvbiB7XG4gIEBpZiAkdGhlbWUtbGlnaHQge1xuICAgICYud2hpdGU6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAn7oC+JztcbiAgICB9XG5cbiAgICAmLmJsYWNrOjpiZWZvcmUge1xuICAgICAgY29udGVudDogJ+6AvSc7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAmLndoaXRlOjpiZWZvcmUge1xuICAgICAgY29udGVudDogJ+6AvSc7XG4gICAgfVxuXG4gICAgJi5ibGFjazo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICfugL4nO1xuICAgIH1cbiAgfVxuXG4gICYucmFuZG9tOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICfugZ8nO1xuICB9XG59XG4iLCJAaW5jbHVkZSBjcm9zc3RhYmxlLXNtYWxsO1xuXG4uY3Jvc3N0YWJsZSB7XG4gIEBleHRlbmQgJWJveC1uZWF0LWZvcmNlO1xuXG4gIHdpZHRoOiAxMDAlO1xuICBsaW5lLWhlaWdodDogMS45ZW07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcblxuICBmaWxsLFxuICBwb3ZzIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gICAgZmxleDogMSAxIGF1dG87XG4gIH1cblxuICBwb3ZzLFxuICAmX191c2VycyxcbiAgJl9fc2NvcmUsXG4gICZfX21hdGNodXAge1xuICAgIEBleHRlbmQgJWZsZXgtY29sdW1uO1xuXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgLyog4pSA4pSA4pSAIFRhYiBiYXIgKGZ1bGwgd2lkdGggZmlyc3Qgcm93LCByZXN0IHVud3JhcHBlZCBvbiBzZWNvbmQgcm93KSDilIDilIDilIAgKi9cbiAgJl9fdGFicyB7XG4gICAgZmxleDogMCAwIDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcbiAgfVxuXG4gICZfX3RhYiB7XG4gICAgZmxleDogMSAxIDUwJTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMC4yZW0gMC41ZW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGZvbnQtc2l6ZTogMC44NWVtO1xuICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzLCBjb2xvciAwLjE1cztcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLXByaW1hcnksICRjLWJnLWJveCwgMTAlKTtcbiAgICB9XG5cbiAgICAmLmFjdGl2ZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1wcmltYXJ5O1xuICAgICAgY29sb3I6ICRjLXByaW1hcnktb3ZlcjtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbiAgfVxuXG4gIC8qIOKUgOKUgOKUgCBGaWx0ZXJlZCB2aWV3OiBoaWRlIG5vbi1tYXRjaGluZyBwb3ZzIOKUgOKUgOKUgCAqL1xuICAmLS1maWx0ZXJlZCBwb3ZzOm5vdCgubWF0Y2hpbmcpIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cblxuICAmX191c2VycyxcbiAgJl9fc2NvcmUge1xuICAgIEBleHRlbmQgJW1ldGFsO1xuICB9XG5cbiAgJl9fdXNlcnMge1xuICAgIEBleHRlbmQgJWVsbGlwc2lzO1xuXG4gICAgbWF4LXdpZHRoOiA0MHZ3O1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG5cbiAgICBhIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJGJsb2NrLWdhcDtcbiAgICB9XG4gIH1cblxuICAmX19zY29yZSB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG5cbiAgICBzcGFuIHtcbiAgICAgIHBhZGRpbmc6IDAgJGJsb2NrLWdhcDtcbiAgICB9XG4gIH1cblxuICAmX19tYXRjaHVwIHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtcHJpbWFyeSwgJGMtYmctYm94LCAyMCUpO1xuICB9XG5cbiAgcG92cyB7XG4gICAgYSB7XG4gICAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgICBmbGV4OiAwIDAgNTAlO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgQGV4dGVuZCAlbWV0YWw7XG5cbiAgICAgIGEge1xuICAgICAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYS5sb3NzIHtcbiAgICAgIG9wYWNpdHk6IDAuMjtcbiAgICB9XG5cbiAgICAmLmN1cnJlbnQgYSB7XG4gICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtYWNjZW50LCAkYy1iZy1ib3gsIDcwJSk7XG4gICAgICBjb2xvcjogI2ZmZjtcbiAgICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAmLm5ldyB7XG4gICAgICBib3JkZXI6ICRjLWJvcmRlcjtcbiAgICB9XG5cbiAgICBhLmxvc3Mge1xuICAgICAgb3BhY2l0eTogMC4yO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLW5vdC14LXNtYWxsKSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICAmOm50aC1sYXN0LWNoaWxkKC1uICsgMTIpIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuc2VwIHtcbiAgICBAZXh0ZW5kICVib3gtcmFkaXVzLWxlZnQ7XG5cbiAgICBib3JkZXItbGVmdDogJGJvcmRlcjtcbiAgICBtYXJnaW4tbGVmdDogMC4zZW07XG4gIH1cblxuICAud2luIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogJGMtZ29vZDtcbiAgfVxuXG4gIC5sb3NzIHtcbiAgICBjb2xvcjogJGMtYmFkO1xuICB9XG5cbiAgLnVuYXZhaWxhYmxlIHtcbiAgICBtYXJnaW4tdG9wOiA0MHB4O1xuICAgIG9wYWNpdHk6IDAuNztcbiAgfVxufVxuIiwiLmZidCB7XG4gIEBleHRlbmQgJWJ1dHRvbi1ub25lO1xuXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG5cbiAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAgICY6aG92ZXI6bm90KC5kaXNhYmxlZCk6bm90KFtkaXNhYmxlZF0pIHtcbiAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1zZWNvbmRhcnksICRjLWJnLWJveCwgNzUlKTtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgIH1cbiAgfVxuXG4gICYuYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1zZWNvbmRhcnkgIWltcG9ydGFudDtcbiAgICBjb2xvcjogI2ZmZjtcbiAgfVxuXG4gICYuZGlzYWJsZWQsXG4gICZbZGlzYWJsZWRdIHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xuICB9XG59XG4iLCIuY21uLXRvZ2dsZSB7XG4gIEBleHRlbmQgJWRvdWJsZS10YXA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWFyZ2luLWxlZnQ6IC05OTk5OXB4O1xufVxuXG4uY21uLXRvZ2dsZSArIGxhYmVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvdXRsaW5lOiBub25lO1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICBwYWRkaW5nOiAxcHg7XG4gIHdpZHRoOiA0MHB4O1xuICBoZWlnaHQ6IDI0cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRjLWJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogMjRweDtcblxuICAmOjpiZWZvcmUsXG4gICY6OmFmdGVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgY29udGVudDogJyc7XG4gICAgd2lkdGg6IDIycHg7XG4gICAgaGVpZ2h0OiAyMnB4O1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICB9XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBAZXh0ZW5kICVkYXRhLWljb247XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgei1pbmRleDogMTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbGluZS1oZWlnaHQ6IDIycHg7XG4gIH1cblxuICAmOjphZnRlciB7XG4gICAgQGV4dGVuZCAlbWV0YWw7XG5cbiAgICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDIuNXB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgfVxufVxuXG4uY21uLXRvZ2dsZTpub3QoOmNoZWNrZWQpICsgbGFiZWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1iYWQ7XG59XG5cbi5jbW4tdG9nZ2xlLS1zdWJ0bGU6bm90KDpjaGVja2VkKSArIGxhYmVsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGMtZm9udC1kaW1tZXI7XG59XG5cbi5jbW4tdG9nZ2xlOmNoZWNrZWQgKyBsYWJlbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjLWdvb2Q7XG59XG5cbi5jbW4tdG9nZ2xlOmRpc2FibGVkICsgbGFiZWwge1xuICBvcGFjaXR5OiA2MCU7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQgIWltcG9ydGFudDtcbn1cblxuLmNtbi10b2dnbGU6Zm9jdXM6bm90KDpkaXNhYmxlZCkgKyBsYWJlbCB7XG4gIEBleHRlbmQgJWZvY3VzLXNoYWRvdztcbn1cblxuLmNtbi10b2dnbGU6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICArIGxhYmVsIHtcbiAgICBAZXh0ZW5kICVmb2N1cy1zaGFkb3c7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kKTtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICB0cmFuc2l0aW9uOiBtYXJnaW4gJHRyYW5zaXRpb24tZHVyYXRpb24sIGNvbG9yICR0cmFuc2l0aW9uLWR1cmF0aW9uO1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIEBleHRlbmQgJW1ldGFsLWhvdmVyO1xuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihtYXJnaW4pO1xuICAgIH1cbiAgfVxufVxuXG4uY21uLXRvZ2dsZTpub3QoOmNoZWNrZWQpICsgbGFiZWwge1xuICAmOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICfugL8nO1xuICAgIGNvbG9yOiAkYy1iYWQ7XG4gIH1cbn1cblxuLmNtbi10b2dnbGUtLXN1YnRsZTpub3QoOmNoZWNrZWQpICsgbGFiZWwge1xuICAmOjpiZWZvcmUge1xuICAgIGNvbG9yOiAkYy1mb250LWRpbW1lcjtcbiAgfVxufVxuXG4uY21uLXRvZ2dsZTpjaGVja2VkICsgbGFiZWwge1xuICAmOjpiZWZvcmUsXG4gICY6OmFmdGVyIHtcbiAgICBtYXJnaW4tbGVmdDogMTZweDtcbiAgfVxuXG4gICY6OmJlZm9yZSB7XG4gICAgY29udGVudDogJ+6AuCc7XG4gICAgY29sb3I6ICRjLWdvb2Q7XG4gIH1cbn1cbiIsIkBtaXhpbiByYW5nZS10aHVtYiB7XG4gIEBpbmNsdWRlIG1ldGFsO1xuXG4gIGJvcmRlcjogMXB4IHNvbGlkICRjLWZvbnQtZGltbWVyO1xuICBoZWlnaHQ6IDFlbTtcbiAgd2lkdGg6IDEuNWVtO1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuQG1peGluIHJhbmdlLXRyYWNrIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMWVtO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJhY2tncm91bmQ6ICRjLXNoYWRlO1xuICBib3JkZXItcmFkaXVzOiAwLjVlbTtcbn1cblxuaW5wdXQucmFuZ2Uge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogMDtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJjo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2sge1xuICAgIEBpbmNsdWRlIHJhbmdlLXRyYWNrO1xuICB9XG5cbiAgJjo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xuICAgIEBpbmNsdWRlIHJhbmdlLXRodW1iO1xuXG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgJjo6LW1vei1yYW5nZS10cmFjayB7XG4gICAgQGluY2x1ZGUgcmFuZ2UtdHJhY2s7XG4gIH1cblxuICAmOjotbW96LXJhbmdlLXRodW1iIHtcbiAgICBAaW5jbHVkZSByYW5nZS10aHVtYjtcbiAgfVxufVxuIiwiQGltcG9ydCAnZXh0ZW5kJztcblxuJGMtaW5hY2N1cmFjeTogIzU2YjRlOTtcbiRjLW1pc3Rha2U6ICNlNjlmMDA7XG4kYy1ibHVuZGVyOiAjZGY1MzUzO1xuXG4udHZpZXcyIHtcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcblxuICAmLWNvbHVtbiB7XG4gICAgQGV4dGVuZCAlZmxleC13cmFwO1xuICB9XG5cbiAgJi1pbmxpbmUge1xuICAgIHBhZGRpbmc6IDdweCAzcHggN3B4IDdweDtcbiAgfVxuXG4gIG1vdmUge1xuICAgIEBleHRlbmQgJW1vdmU7XG5cbiAgICBAbWVkaWEgKGhvdmVyOiBub25lKSB7XG4gICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICB9XG5cbiAgICAmLmluYWNjdXJhY3kge1xuICAgICAgY29sb3I6ICRjLWluYWNjdXJhY3k7XG4gICAgfVxuICAgICYubWlzdGFrZSB7XG4gICAgICBjb2xvcjogJGMtbWlzdGFrZTtcbiAgICB9XG4gICAgJi5ibHVuZGVyIHtcbiAgICAgIGNvbG9yOiAkYy1ibHVuZGVyO1xuICAgIH1cbiAgfVxuXG4gICYtY29sdW1uIG1vdmUge1xuICAgIGZvbnQtc2l6ZTogMS4wOTJlbTtcbiAgICBwYWRkaW5nOiAwIDJweDtcbiAgfVxuXG4gICYtaW5saW5lIG1vdmUge1xuICAgIHBhZGRpbmc6IDAuMjVlbSAwLjE3ZW07XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgfVxuXG4gIG1vdmUucGFyZW50IHtcbiAgICBjb2xvcjogJGMtcHJpbWFyeTtcbiAgfVxuXG4gIGNvbW1lbnQgYSB7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgfVxuXG4gIG1vdmUuY3VycmVudCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGMtYWNjZW50O1xuICB9XG5cbiAgbW92ZS5hY3RpdmUge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1wcmltYXJ5LCAkYy1iZy1ib3gsIDI1JSk7XG4gICAgY29sb3I6ICRjLWZvbnQtY2xlYXI7XG4gIH1cblxuICAmLWlubGluZSBtb3ZlLmFjdGl2ZSxcbiAgbGluZSBtb3ZlLmFjdGl2ZSB7XG4gICAgQGV4dGVuZCAlYm94LXJhZGl1cztcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtcHJpbWFyeSwgJGMtYmctYm94LCA0MCUpO1xuICAgIGNvbG9yOiAkYy1mb250LWNsZWFyZXI7XG4gICAgb3V0bGluZTogMXB4IHNvbGlkIG1peCgkYy1wcmltYXJ5LCAkYy1iZy1ib3gsIDYwJSk7XG4gIH1cblxuICBtb3ZlLm5vbmdhbWUge1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgfVxuXG4gIG1vdmU6bm90KC5lbXB0eSk6aG92ZXIge1xuICAgICYsXG4gICAgaW5kZXgsXG4gICAgZXZhbCB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1wcmltYXJ5O1xuICAgICAgY29sb3I6ICRjLXByaW1hcnktb3ZlcjtcbiAgICB9XG4gIH1cblxuICAmLWlubGluZSBtb3ZlOmhvdmVyIHtcbiAgICBAZXh0ZW5kICVib3gtcmFkaXVzO1xuICB9XG5cbiAgbW92ZS5lbXB0eSB7XG4gICAgY29sb3I6ICRjLWZvbnQtZGltbWVyO1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgfVxuXG4gIG1vdmUgaW5kZXgge1xuICAgIGZvbnQtc2l6ZTogOTAlO1xuICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgfVxuXG4gIG1vdmUuY29udGV4dC1tZW51IHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1hY2NlbnQ7XG4gICAgY29sb3I6ICRjLWFjY2VudC1vdmVyO1xuXG4gICAgaW5kZXgge1xuICAgICAgY29sb3I6ICRjLWFjY2VudC1vdmVyO1xuICAgIH1cbiAgfVxuXG4gICYtY29sdW1uIG1vdmUgaW5kZXgge1xuICAgIHBhZGRpbmctbGVmdDogNXB4O1xuICB9XG5cbiAgJi1jb2x1bW4gbW92ZSBpbmRleDpmaXJzdC1jaGlsZCB7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICB9XG5cbiAgJi1pbmxpbmUgbW92ZSBpbmRleCB7XG4gICAgcGFkZGluZy1yaWdodDogMC4yZW07XG4gICAgbGluZS1oZWlnaHQ6IDExMS4xMSU7XG4gIH1cblxuICBsaW5lIG1vdmUge1xuICAgIGNvbG9yOiAkYy1mb250O1xuICB9XG5cbiAgJi1jb2x1bW4gPiBtb3ZlIHtcbiAgICBmbGV4OiAwIDAgNDMuNSU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmb250LXNpemU6IDEuMTg1ZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNzVlbTtcbiAgICBwYWRkaW5nOiAwIDAuM2VtIDAgMC41ZW07XG4gIH1cblxuICAmLWNvbHVtbiA+IGluZGV4ICsgbW92ZSB7XG4gICAgYm9yZGVyLXJpZ2h0OiAkYy1ib3JkZXI7XG4gIH1cblxuICBldmFsIHtcbiAgICBAZXh0ZW5kICVyb2JvdG87XG5cbiAgICBmbGV4OiAzIDAgYXV0bztcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBmb250LXNpemU6IDAuOGVtO1xuICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgfVxuXG4gIGdseXBoIHtcbiAgICBAZXh0ZW5kICViYXNlLWZvbnQ7XG5cbiAgICBtYXJnaW4tbGVmdDogMC4wOGVtO1xuICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gIH1cblxuICAubW9mdy1zdGFyIHtcbiAgICBmb250LXNpemU6IDAuNzVlbTtcbiAgICBtYXJnaW4tbGVmdDogMC4xNWVtO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xuXG4gICAgJi0tY29tcGxldGUge1xuICAgICAgY29sb3I6ICM0Y2FmNTA7IC8vIGdyZWVuIOKAlCBjb21wbGV0ZSBub21pbmF0aW9uXG4gICAgfVxuXG4gICAgJi0tZHJhZnQge1xuICAgICAgY29sb3I6ICNlNmI4MDA7IC8vIHllbGxvdyDigJQgZHJhZnQvaW5jb21wbGV0ZSBub21pbmF0aW9uXG4gICAgfVxuICB9XG5cbiAgdGljayB7XG4gICAgQGV4dGVuZCAlcm9ib3RvO1xuXG4gICAgZm9udC1zaXplOiAwLjdlbTtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgbWFyZ2luLWxlZnQ6IDAuM2VtO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIH1cblxuICBzaGFwZXMge1xuICAgIGZvbnQtc2l6ZTogMC43ZW07XG4gICAgbWFyZ2luLWxlZnQ6IDAuNGVtO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIGNvbG9yOiAkYy1nb29kO1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBAZXh0ZW5kICVkYXRhLWljb247XG4gICAgICBjb250ZW50OiAn7oC+JztcbiAgICB9XG4gIH1cblxuICAmLWNvbHVtbiA+IG1vdmUgZ2x5cGgge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGZvbnQtc2l6ZTogMC44MmVtO1xuICB9XG5cbiAgJi1jb2x1bW4gPiBpbmRleCB7XG4gICAgZmxleDogMCAwIDEzJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGJvcmRlci1yaWdodDogJGJvcmRlcjtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgICBsaW5lLWhlaWdodDogMi4wN2VtO1xuICAgIGNvbG9yOiAkYy1mb250LWRpbW1lcjtcbiAgfVxuXG4gID4gaW50ZXJydXB0IHtcbiAgICBmb250LXNpemU6IDk1JTtcbiAgfVxuXG4gICYtY29sdW1uID4gaW50ZXJydXB0IHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGMtYm9yZGVyO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy1ib3JkZXI7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLy8gU2NvdHRpc2ggUHJvZ3Jlc3NpdmUgQ2hlc3M6IG9uZSBzZXJpZXMgcGVyIHJvdyDigJQgaW5kZXggfCBwYXduIHwgY291bnQgfCBtb3Zlc1xuICAmLWNvbHVtbiBkaXYucGdyIHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXG4gICAgPiBpbmRleCB7XG4gICAgICBmbGV4OiAwIDAgMTAlO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkYm9yZGVyO1xuICAgICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG4gICAgICBsaW5lLWhlaWdodDogMi4wN2VtO1xuICAgICAgY29sb3I6ICRjLWZvbnQtZGltbWVyO1xuICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgICB9XG5cbiAgICA+IC5wZ3Itc3ltIHtcbiAgICAgIGZsZXg6IDAgMCAxMCU7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBsaW5lLWhlaWdodDogMi4wN2VtO1xuICAgICAgZm9udC1zaXplOiAxLjFlbTtcbiAgICB9XG5cbiAgICA+IC5wZ3ItY250IHtcbiAgICAgIGZsZXg6IDAgMCAxMiU7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBsaW5lLWhlaWdodDogMi4wN2VtO1xuICAgICAgY29sb3I6ICRjLWZvbnQtZGltbWVyO1xuICAgICAgZm9udC1zaXplOiAwLjg1ZW07XG4gICAgfVxuXG4gICAgPiBtb3ZlIHtcbiAgICAgIGZsZXg6IDE7XG4gICAgICBmb250LXNpemU6IDEuMTg1ZW07XG4gICAgICBsaW5lLWhlaWdodDogMS43NWVtO1xuICAgICAgcGFkZGluZzogMCAwLjNlbSAwIDAuNWVtO1xuICAgICAgLy8gT3ZlcnJpZGUgbm9ybWFsIG1vdmUtbGV2ZWwgaG92ZXIg4oCUIGluZGl2aWR1YWwgc3BhbnMgaGFuZGxlIHRoZWlyIG93biBob3ZlclxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgY29sb3I6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgICAgIH1cblxuICAgICAgc3BhbiB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjM1ZW07XG4gICAgICAgIHBhZGRpbmc6IDAgMnB4O1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZDogJGMtcHJpbWFyeTtcbiAgICAgICAgICBjb2xvcjogJGMtcHJpbWFyeS1vdmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1wcmltYXJ5LCAkYy1iZy1ib3gsIDI1JSk7XG4gICAgICAgICAgY29sb3I6ICRjLWZvbnQtY2xlYXI7XG4gICAgICAgIH1cblxuICAgICAgICAmLmN1cnJlbnQge1xuICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLWFjY2VudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYtY29sdW1uID4gaW50ZXJydXB0ID4gY29tbWVudCB7XG4gICAgQGV4dGVuZCAlYnJlYWstd29yZDtcblxuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6IDNweCA1cHg7XG4gIH1cblxuICAmLWlubGluZSBjb21tZW50IHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogNDUlO1xuICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICBtYXJnaW46IDAgMC4yZW0gMCAwLjFlbTtcbiAgICBmb250LXNpemU6IDAuOWVtO1xuICB9XG5cbiAgY29tbWVudCAuYnkge1xuICAgIEBleHRlbmQgJW5vd3JhcC1lbGxpcHNpcywgJXJvYm90bztcblxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogLTAuM2VtO1xuICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgb3BhY2l0eTogMC44O1xuICAgIG1hcmdpbi1yaWdodDogMC40ZW07XG4gICAgbWF4LXdpZHRoOiA5ZW07XG4gIH1cblxuICAmLWNvbHVtbiBjb21tZW50LndoaXRlIHtcbiAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkO1xuICB9XG5cbiAgJi1jb2x1bW4gY29tbWVudC5ibGFjayB7XG4gICAgYm9yZGVyLXJpZ2h0OiAzcHggc29saWQ7XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICB9XG5cbiAgJi1jb2x1bW4gY29tbWVudC5pbmFjY3VyYWN5IHtcbiAgICBib3JkZXItY29sb3I6ICRjLWluYWNjdXJhY3k7XG4gIH1cblxuICAmLWNvbHVtbiBjb21tZW50Lm1pc3Rha2Uge1xuICAgIGJvcmRlci1jb2xvcjogJGMtbWlzdGFrZTtcbiAgfVxuXG4gICYtY29sdW1uIGNvbW1lbnQuYmx1bmRlciB7XG4gICAgYm9yZGVyLWNvbG9yOiAkYy1ibHVuZGVyO1xuICB9XG5cbiAgJi1jb2x1bW4gY29tbWVudC51bmRlZmluZWQge1xuICAgIGJvcmRlci1jb2xvcjogIzY2NTU4YztcbiAgfVxuXG4gIGxpbmUgY29tbWVudCB7XG4gICAgZm9udC1zaXplOiA5MCU7XG4gIH1cblxuICAmLWNvbHVtbiBsaW5lIGNvbW1lbnQge1xuICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICAgIHBhZGRpbmc6IDAgNXB4IDAgM3B4O1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIH1cblxuICBsaW5lIGNvbW1lbnQgLmJ5IHtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICB9XG5cbiAgbGluZXMge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICBtYXJnaW4tbGVmdDogNnB4O1xuICAgIG1hcmdpbi1ib3R0b206IDAuOGVtO1xuICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgJGMtYm9yZGVyO1xuICB9XG5cbiAgPiBpbnRlcnJ1cHQgPiBsaW5lcyB7XG4gICAgbWFyZ2luLWxlZnQ6IDBweDtcbiAgfVxuXG4gIGxpbmVzLnNpbmdsZSB7XG4gICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gIH1cblxuICBsaW5lczpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgbGluZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZy1sZWZ0OiA3cHg7XG4gIH1cblxuICAmLWNvbHVtbiBsaW5lIHtcbiAgICBtYXJnaW46IDJweCAwO1xuICB9XG5cbiAgbGluZXMgbGluZXMgbW92ZSB7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICB9XG5cbiAgbGluZXMgbGluZXMge1xuICAgIG1hcmdpbi1sZWZ0OiAxcHg7XG4gIH1cblxuICBsaW5lcyBsaW5lczo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnICc7XG4gICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkICRjLWJvcmRlcjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbWFyZ2luLWxlZnQ6IC0xMXB4O1xuICAgIHdpZHRoOiA5cHg7XG4gICAgaGVpZ2h0OiA2cHg7XG4gIH1cblxuICBsaW5lcyBsaW5lOjpiZWZvcmUge1xuICAgIG1hcmdpbi10b3A6IDAuNjVlbTtcbiAgICBtYXJnaW4tbGVmdDogLThweDtcbiAgICBjb250ZW50OiAnICc7XG4gICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkICRjLWJvcmRlcjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDhweDtcbiAgICBoZWlnaHQ6IDZweDtcbiAgfVxuXG4gIGxpbmVzIGxpbmVzOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICBpbmxpbmUge1xuICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgZm9udC1zaXplOiAwLjllbTtcbiAgICBvcGFjaXR5OiAwLjg7XG4gIH1cblxuICBpbmxpbmU6OmJlZm9yZSxcbiAgaW5saW5lOjphZnRlciB7XG4gICAgdmVydGljYWwtYWxpZ246IDAuNGVtO1xuICAgIG9wYWNpdHk6IDAuNztcbiAgICBmb250LXNpemU6IDAuOWVtO1xuICB9XG5cbiAgaW5saW5lOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcoJztcbiAgICBtYXJnaW4tbGVmdDogMnB4O1xuICB9XG5cbiAgaW5saW5lOjphZnRlciB7XG4gICAgY29udGVudDogJyknO1xuICAgIG1hcmdpbi1yaWdodDogMnB4O1xuICB9XG5cbiAgJi1pbmxpbmUgaW5saW5lOjpiZWZvcmUsXG4gICYtaW5saW5lIGlubGluZTo6YWZ0ZXIge1xuICAgIHZlcnRpY2FsLWFsaWduOiAwLjdlbTtcbiAgfVxuXG4gIC5jb25jZWFsIHtcbiAgICBvcGFjaXR5OiAwLjQ7XG4gIH1cblxuICAuaGlkZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuIiwiJW1vdmUge1xuICBAZXh0ZW5kICVzYW4sICVub3dyYXAtaGlkZGVuO1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuIiwiQGltcG9ydCAnY3RybCc7XG5AaW1wb3J0ICdwdic7XG4iLCIuY2V2YWwge1xuICBAZXh0ZW5kICVtZXRhbC1iZztcblxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuXG4gICYuZW5hYmxlZCB7XG4gICAgcGFkZGluZy10b3A6IDJweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG5cbiAgICAuc2hvdy10aHJlYXQge1xuICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB9XG4gIH1cblxuICAuc3dpdGNoIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlcjtcblxuICAgIGZsZXg6IDAgMCA0MHB4O1xuICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICB9XG5cbiAgcGVhcmwge1xuICAgIGZsZXg6IDAgMCA3NXB4O1xuICAgIGxpbmUtaGVpZ2h0OiAzOHB4O1xuICAgIGZvbnQtc2l6ZTogMS42ZW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB9XG5cbiAgaGVscCxcbiAgLmVuZ2luZSB7XG4gICAgQGV4dGVuZCAlbm93cmFwLWhpZGRlbjtcblxuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICBtYXJnaW4tdG9wOiAzcHg7XG4gICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICB9XG5cbiAgLmVuZ2luZSB7XG4gICAgLmNsb3VkIHtcbiAgICAgIEBleHRlbmQgJXJvYm90bywgJWJveC1yYWRpdXM7XG5cbiAgICAgIG1hcmdpbi1sZWZ0OiA0cHg7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1zZWNvbmRhcnktZGltO1xuICAgICAgY29sb3I6ICRjLXNlY29uZGFyeS1vdmVyO1xuICAgICAgcGFkZGluZzogMXB4IDNweDtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICBmb250LXNpemU6IDExcHg7XG4gICAgfVxuXG4gICAgLmluZm8ge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIC5kZWVwZXIge1xuICAgICAgY29sb3I6ICRjLXByaW1hcnk7XG4gICAgICBtYXJnaW4tbGVmdDogNHB4O1xuICAgIH1cblxuICAgIC5kZWVwZXI6OmJlZm9yZSB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogLTJweDtcbiAgICB9XG4gIH1cblxuICAudGVjaG5vbG9neSB7XG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgICAmLmdvb2Qge1xuICAgICAgY29sb3I6ICRjLWdvb2Q7XG4gICAgfVxuICB9XG5cbiAgLmJhciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogM3B4O1xuICAgIHRvcDogMHB4O1xuICB9XG5cbiAgQGtleWZyYW1lcyBiYXItYW5pbSB7XG4gICAgZnJvbSB7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwMDAwcHggMDtcbiAgICB9XG4gIH1cblxuICAuYmFyIHNwYW4ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogM3B4O1xuICAgIHdpZHRoOiAwO1xuICAgIGJhY2tncm91bmQ6ICRjLWdvb2Q7XG4gICAgdHJhbnNpdGlvbjogd2lkdGggMXM7XG5cbiAgICAmLnRocmVhdCB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iYWQ7XG4gICAgfVxuICB9XG5cbiAgJi5jb21wdXRpbmcgLmJhciBzcGFuIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWctdXJsKCdiYXItaGlnaGxpZ2h0LnBuZycpO1xuICAgIGFuaW1hdGlvbjogYmFyLWFuaW0gMTAwMHMgbGluZWFyIGluZmluaXRlO1xuICB9XG5cbiAgLnNob3ctdGhyZWF0IHtcbiAgICBmbGV4OiAwIDk5IGF1dG87XG4gICAgbGluZS1oZWlnaHQ6IDM4cHg7XG4gICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgcGFkZGluZy1yaWdodDogMC41ZW07XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG5cbiAgICAmOmhvdmVyOm5vdCguaGlkZGVuKSxcbiAgICAmLmFjdGl2ZSB7XG4gICAgICBjb2xvcjogJGMtcmVkO1xuICAgIH1cblxuICAgICYuaGlkZGVuIHtcbiAgICAgIG9wYWNpdHk6IDAuMztcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICB9XG4gIH1cbn1cbiIsIi5wdl9ib3gge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgZm9udC1zaXplOiAxM3B4O1xuXG4gIC5wdiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGxpbmUtaGVpZ2h0OiAyZW07XG4gICAgYm9yZGVyLXRvcDogJGJvcmRlcjtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxNHB4O1xuICAgIG1pbi1oZWlnaHQ6IDJlbTtcblxuICAgICYucHYtLW5vd3JhcCB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgLy8gXCJmbGV4XCIgZG9lc24ndCBzdXBwb3J0IGVsbGlwc2lzIHNvIHN3aXRjaCBiYWNrIHRvIFwiYmxvY2tcIlxuICAgICAgZmxleC13cmFwOiBpbml0aWFsO1xuICAgICAgaGVpZ2h0OiAyZW07XG4gICAgICBAZXh0ZW5kICVub3dyYXAtZWxsaXBzaXM7XG4gICAgfVxuXG4gICAgJltkYXRhLXVjaV06aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctYm94LCAyMCUpO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cblxuICAgIHN0cm9uZyB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB3aWR0aDogMzRweDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICBzcGFuIHtcbiAgICAgIEBleHRlbmQgJXNhbjtcblxuICAgICAgbWFyZ2luLWxlZnQ6IDRweDtcbiAgICB9XG5cbiAgICAmW2RhdGEtdWNpXSAucHYtc2FuOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkYy1wcmltYXJ5O1xuICAgIH1cblxuICAgIC5wdi13cmFwLXRvZ2dsZSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICByaWdodDogMDtcbiAgICAgIHBhZGRpbmc6IDAgNHB4O1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtc2Vjb25kYXJ5O1xuICAgICAgICBjb2xvcjogJGMtc2Vjb25kYXJ5LW92ZXI7XG4gICAgICB9XG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAn4payJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnB2LS1ub3dyYXAgLnB2LXdyYXAtdG9nZ2xlIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gICAgfVxuICB9XG5cbiAgLnB2LWJvYXJkIHtcbiAgICBAZXh0ZW5kICVwb3B1cC1zaGFkb3c7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiA4MCU7XG4gICAgbGVmdDogMzRweDtcbiAgICBtYXgtd2lkdGg6IDI0MHB4O1xuICAgIHotaW5kZXg6IDE7XG5cbiAgICAucHYtYm9hcmQtc3F1YXJlIHtcbiAgICAgIEBleHRlbmQgJXNxdWFyZTtcblxuICAgICAgLmNnLXdyYXAge1xuICAgICAgICBAZXh0ZW5kICVhYnMtMTAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwibWFpbiB7XG4gIEBpbmNsdWRlIGZsdWlkLXNpemUoJy0tZ2F1Z2UtZ2FwJywgOHB4LCAxN3B4KTtcbn1cblxuLmV2YWwtZ2F1Z2Uge1xuICB3aWR0aDogdmFyKC0tZ2F1Z2UtZ2FwKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZ3JvdW5kOiBpZigkdGhlbWUtbGlnaHQsICNmZmYsICNhMGEwYTApO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDEtdW5pYm9hcmQpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgJi5yZXZlcnNlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKTtcbiAgfVxuXG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJveC1zaGFkb3c6IDAgMCA1cHggcmdiYSgwLCAwLCAwLCAwLjcpIGluc2V0O1xuICB9XG5cbiAgdGljayB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1ib3R0b206IDJweCByaWRnZSBpZigkdGhlbWUtbGlnaHQsICNlZWUsICNhMGEwYTApO1xuICAgIG9wYWNpdHk6IDAuNDtcbiAgfVxuXG4gIHRpY2suemVybyB7XG4gICAgdG9wOiA2cHg7XG4gICAgb3BhY2l0eTogMTtcbiAgICBib3JkZXItYm90dG9tOiA3cHggc29saWQgZmFkZS1vdXQoJGMtYWNjZW50LCAwLjYpO1xuICAgIG1hcmdpbi10b3A6IC0zcHg7XG4gIH1cblxuICAuYmxhY2sge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogNTAlO1xuICAgIGJhY2tncm91bmQ6IGlmKCR0aGVtZS1saWdodCwgIzg4OCwgIzY2Nik7XG4gICAgdHJhbnNpdGlvbjogaGVpZ2h0IDFzO1xuICB9XG59XG4iLCIuYW5hbHlzZS1jb250cm9scyB7XG4gIEBleHRlbmQgJWRvdWJsZS10YXA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIGZvbnQtc2l6ZTogMS4zcmVtO1xuXG4gIC5mYnQge1xuICAgIEBleHRlbmQgJWJveC1yYWRpdXMtYm90dG9tO1xuXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgLmhpZGRlbiB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB9XG5cbiAgLmp1bXBzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgLmZidCB7XG4gICAgICBmbGV4OiAxIDEgMzAlO1xuXG4gICAgICAmOmZpcnN0LWNoaWxkLFxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgZmxleDogMSAxIDIwJTtcbiAgICAgICAgZm9udC1zaXplOiAwLjdlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIiNwcm9tb3Rpb24tY2hvaWNlIHtcbiAgYmFja2dyb3VuZDogZmFkZS1vdXQoJGMtYmctcGFnZSwgMC4zKTtcbiAgei1pbmRleDogeignY2dfX3Byb21vdGlvbicpO1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IHZhcigtLWNnLXdpZHRoLCAxMDAlKTtcbiAgaGVpZ2h0OiB2YXIoLS1jZy1oZWlnaHQsIDEwMCUpO1xuICByaWdodDogMDtcblxuICBzcXVhcmUge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2IwYjBiMDtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMjVweCAzcHggIzgwODA4MDtcblxuICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG4gIH1cblxuICBwaWVjZSB7XG4gICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgb3BhY2l0eTogMTtcblxuICAgIC8qIGNhbmNlbHMgYmxpbmRmb2xkICovXG4gIH1cblxuICAuaXMyZCAmIHBpZWNlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjgpO1xuICB9XG5cbiAgc3F1YXJlOmhvdmVyIHtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgNDhweCA4cHggJGMtYWNjZW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDAlO1xuICB9XG5cbiAgLmlzMmQgJiBzcXVhcmU6aG92ZXIgcGllY2Uge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxufVxuIiwiLnZhcmlhbnQtcmFjaW5nS2luZ3MgLmNnLXdyYXAge1xuICAmLmNnLXdyYXAgY2ctY29udGFpbmVyOjpiZWZvcmUge1xuICAgIEBleHRlbmQgJXBvcHVwLXNoYWRvdztcblxuICAgIGJhY2tncm91bmQ6IGhzbGEoMCwgMCUsIDkwJSwgMC4yKTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEyLjUlO1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHotaW5kZXg6IDE7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIH1cblxuICAmLm9yaWVudGF0aW9uLXdoaXRlIGNnLWNvbnRhaW5lcjo6YmVmb3JlIHtcbiAgICB0b3A6IDA7XG4gIH1cblxuICAmLm9yaWVudGF0aW9uLWJsYWNrIGNnLWNvbnRhaW5lcjo6YmVmb3JlIHtcbiAgICBib3R0b206IDA7XG4gIH1cbn1cblxuLnZhcmlhbnQta2luZ09mVGhlSGlsbCBjZy1jb250YWluZXI6OmJlZm9yZSB7XG4gIHdpZHRoOiAyNSU7XG4gIGhlaWdodDogMjUlO1xuICBib3gtc2hhZG93OiAwIDAgMTBweCByZ2JhKDAsIDAsIDAsIDAuNyk7XG4gIGJhY2tncm91bmQ6IGhzbGEoMCwgMCUsIDkwJSwgMC4yKTtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAzNy41JTtcbiAgbGVmdDogMzcuNSU7XG4gIHotaW5kZXg6IDE7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuIiwiLmNvbnRleHQtc3RyZWFtZXJzIHtcbiAgbWF4LWhlaWdodDogMjB2aDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbn1cblxuLmNvbnRleHQtc3RyZWFtZXIge1xuICBAZXh0ZW5kICVub3dyYXAtaGlkZGVuLCAlYm94LXJhZGl1cy1ib3R0b20sICVib3gtc2hhZG93LCAlZmxleC1jZW50ZXItbm93cmFwO1xuXG4gIGhlaWdodDogMi4yZW07XG4gIGNvbG9yOiAkYy1zZWNvbmRhcnktb3ZlciAhaW1wb3J0YW50O1xuICBiYWNrZ3JvdW5kOiBtaXgoJGMtc2Vjb25kYXJ5LCAkYy1iZy1wYWdlLCA2MCUpO1xuXG4gIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBmb250LXNpemU6IDEuM2VtO1xuICAgIG1hcmdpbi1sZWZ0OiAwLjRlbTtcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1zZWNvbmRhcnksICRjLWJnLXBhZ2UsIDgwJSk7XG4gIH1cbn1cbiIsIi8qIHNoYXJlZCB3aXRoIGFuYWx5c2lzICovXG4uZ2FtZV9fbWV0YSB7XG4gIEBleHRlbmQgJWJveC1uZWF0LWZvcmNlO1xuXG4gIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgcGFkZGluZzogI3skYmxvY2stZ2FwICogMC43fSAkYmxvY2stZ2FwO1xuXG4gIHNlY3Rpb246bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcbiAgICBtYXJnaW4tYm90dG9tOiAjeyRibG9jay1nYXAgKiAyIC8gM307XG4gICAgcGFkZGluZy1ib3R0b206ICN7JGJsb2NrLWdhcCAqIDIgLyAzfTtcbiAgfVxuXG4gICZfX2luZm9zIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAvKiBmb3IgYm9va21hcmsgKi9cbiAgICAmOjpiZWZvcmUge1xuICAgICAgZm9udC1zaXplOiAzcmVtO1xuICAgICAgbWFyZ2luLXJpZ2h0OiA0JTtcbiAgICB9XG5cbiAgICBwIHtcbiAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICB0aW1lIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5cbiAgLnN0YXR1cyB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgJl9fcGxheWVycyB7XG4gICAgbWFyZ2luLXRvcDogMC4zcmVtO1xuICAgIGZvbnQtc2l6ZTogOTAlO1xuICB9XG5cbiAgLmJvb2ttYXJrIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDA7XG4gICAgei1pbmRleDogeignZ2FtZS1ib29rbWFyaycpO1xuICAgIGNvbG9yOiAkYy1mb250LWRpbTtcblxuICAgIDo6YmVmb3JlIHtcbiAgICAgIGZvbnQtc2l6ZTogMS4zZW07XG4gICAgfVxuXG4gICAgJjpub3QoLmJvb2ttYXJrZWQpIC5vbixcbiAgICAmLmJvb2ttYXJrZWQgLm9mZiB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC51c2VyLXR2IHtcbiAgICBAZXh0ZW5kICVub3dyYXAtZWxsaXBzaXM7XG5cbiAgICBmb250LXNpemU6IDEuMmVtO1xuICB9XG59XG5cbi5nYW1lX190b3VybmFtZW50IHtcbiAgLmNsb2NrIHtcbiAgICBAZXh0ZW5kICVyb2JvdG87XG5cbiAgICBmb250LXNpemU6IDJlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLXRvcDogMC4yZW07XG4gIH1cbn1cblxuQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgLmdhbWVfX21ldGEgLmJvb2ttYXJrIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLmdhbWVfX21ldGE6aG92ZXIgLmJvb2ttYXJrIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuIiwiQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9iYXNlL3Njcm9sbGJhcic7XG5cbkBpbXBvcnQgJ3RhYic7XG5AaW1wb3J0ICdtZW1iZXJzJztcbkBpbXBvcnQgJ2Rpc2N1c3Npb24nO1xuQGltcG9ydCAncGFsYW50aXInO1xuXG4ubWNoYXQge1xuICBAZXh0ZW5kICVib3gtbmVhdC1mb3JjZSwgJWZsZXgtY29sdW1uO1xuXG4gIGdyaWQtYXJlYTogY2hhdDtcbiAganVzdGlmeS1jb250ZW50OiBzdHJldGNoO1xuXG4gICZfX2NvbnRlbnQge1xuICAgIEBleHRlbmQgJWZsZXgtY29sdW1uO1xuXG4gICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAmLm5vdGUgdGV4dGFyZWEge1xuICAgICAgZm9udC1zaXplOiAwLjllbTtcbiAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgbGluZS1oZWlnaHQ6IDEuN2VtO1xuICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgIHJlc2l6ZTogbm9uZTtcblxuICAgICAgLy8gUHJldmVudCBTYWZhcmkgaU9TIGF1dG8tem9vbSB3aGVuIGZvY3VzZWQgKHRyaWdnZXJlZCB3aGVuIGZvbnQtc2l6ZSA8IDE2cHgpXG4gICAgICBAbWVkaWEgKGhvdmVyOiBub25lKSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBtaW4taGVpZ2h0OiAxNWVtO1xufVxuIiwiLm1jaGF0IHtcbiAgJl9fdGFicyB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuXG4gICZfX3RhYiB7XG4gICAgQGV4dGVuZCAlcm9ib3RvLCAlbm93cmFwLWhpZGRlbiwgJWJveC1yYWRpdXMtdG9wO1xuXG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBhZGRpbmc6IDAuNGVtIDEwcHg7XG5cbiAgICAvLyBiYWNrZ3JvdW5kOiAkYy1zaGFkZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgY29sb3I6ICRjLWZvbnQtcGFnZTtcblxuICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1hY2NlbnQsICRjLWJnLWJveCwgMTUlKTtcbiAgICB9XG5cbiAgICAmLWFjdGl2ZSB7XG4gICAgICBjb2xvcjogJGMtZm9udDtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIGlucHV0IHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgIEBleHRlbmQgJWNoZWNrYm94O1xuICAgIH1cblxuICAgICYtYWN0aXZlIGlucHV0IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIHNwYW4ge1xuICAgICAgQGV4dGVuZCAlbm93cmFwLWVsbGlwc2lzO1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgJi1vcHRpb25hbCAubWNoYXRfX3RhYi5kaXNjdXNzaW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG59XG4iLCIuY2hhdF9fbWVtYmVycyB7XG4gIEBleHRlbmQgJXBhZ2UtdGV4dDtcblxuICBmb250LXNpemU6IDAuOWVtO1xuXG4gIC8vIG1pbi1oZWlnaHQ6IDVlbTtcbiAgLy8gbWF4LWhlaWdodDogOWVtO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgJl9faW5uZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIH1cblxuICAmX19udW1iZXIge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyLW5vd3JhcDtcbiAgICBtYXJnaW4tcmlnaHQ6IDFjaDtcbiAgICAmOjpiZWZvcmUge1xuICAgICAgZm9udC1zaXplOiAxZW07XG4gICAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgICBtYXJnaW4tcmlnaHQ6IDAuMmNoO1xuICAgIH1cbiAgfVxufVxuIiwiLm1jaGF0IHtcbiAgJl9fbWVzc2FnZXMge1xuICAgIEBleHRlbmQgJWJyZWFrLXdvcmQ7XG5cbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICBtYXgtaGVpZ2h0OiA1MHZoO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMy11bmlib2FyZCkge1xuICAgICAgbWF4LWhlaWdodDogbm9uZTtcbiAgICB9XG5cbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICBjdXJzb3I6IGluaXRpYWw7XG4gICAgZm9udC1zaXplOiAwLjllbTtcblxuICAgIGxpIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHBhZGRpbmc6IDAuNWVtIDVweCAwLjVlbSAxMHB4O1xuICAgICAgbGluZS1oZWlnaHQ6IDEuMmVtO1xuICAgICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAgICAgdXNlci1zZWxlY3Q6IHRleHQ7XG5cbiAgICAgICYubWUge1xuICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkICRjLXNlY29uZGFyeS1kaW07XG4gICAgICAgIHBhZGRpbmctbGVmdDogN3B4O1xuICAgICAgfVxuXG4gICAgICAmLmhvc3Qge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjLXNlY29uZGFyeS1kaW0sIDAuNCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmRlbGV0ZWQge1xuICAgICAgb3BhY2l0eTogMC41O1xuICAgIH1cblxuICAgIC5zeXN0ZW0ge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICBmb250LXNpemU6IDAuOWVtO1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmFubm91bmNlbWVudCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGZvbnQtc2l6ZTogMS4xZW07XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cblxuICAgIC5jb2xvcixcbiAgICAudXNlci1saW5rIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICAgIGxldHRlci1zcGFjaW5nOiAtMXB4O1xuICAgICAgcGFkZGluZy1yaWdodDogMC40ZW07XG4gICAgICBtYXgtd2lkdGg6IDExMHB4O1xuICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICAgIH1cblxuICAgIGxpbmUucGF0cm9uIHtcbiAgICAgIGZvbnQtc2l6ZTogMS4xZW07XG4gICAgICB3aWR0aDogMS4yZW07XG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgY29sb3I6ICRjLWJyYWc7XG4gICAgfVxuXG4gICAgLnV0aXRsZSB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDNweDtcbiAgICB9XG5cbiAgICBhOm5vdCgudXNlci1saW5rKSB7XG4gICAgICBAZXh0ZW5kICVyb2JvdG87XG4gICAgfVxuXG4gICAgaSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA1cHg7XG4gICAgICByaWdodDogMDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIG1hcmdpbi1yaWdodDogM3B4O1xuICAgICAgcGFkZGluZzogMXB4IDVweDtcbiAgICAgIG9wYWNpdHk6IDAuNztcbiAgICAgIGNvbG9yOiAkYy1hY2NlbnQ7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxpOmhvdmVyIGkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB0ZXh0LXNoYWRvdzogMCAwIDJweCAkYy1iZy1ib3gsIDAgMCA1cHggJGMtYmctYm94LCAwIDAgMTBweCAkYy1iZy1ib3g7XG4gICAgfVxuXG4gICAgbGkubWUgaSB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgJl9fc2F5IHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBib3JkZXI6IDA7XG4gICAgYm9yZGVyLXRvcDogJGJvcmRlcjtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIHBhZGRpbmc6IDNweCAyMHB4IDNweCA0cHg7XG5cbiAgICAvLyBQcmV2ZW50IFNhZmFyaSBpT1MgYXV0by16b29tIHdoZW4gaW5wdXQgaXMgZm9jdXNlZCAodHJpZ2dlcmVkIHdoZW4gZm9udC1zaXplIDwgMTZweClcbiAgICBAbWVkaWEgKGhvdmVyOiBub25lKSB7XG4gICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgfVxuXG4gICAgJi53aGlzcGVyIHtcbiAgICAgIGNvbG9yOiAkYy1nb29kO1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgfVxuICB9XG59XG4iLCJAa2V5ZnJhbWVzIHBhbGFudGlyLWdsb3dpbmcge1xuICA0MCUge1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gIH1cblxuICA1MCUge1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1zZWNvbmRhcnksICRjLWJnLWJveCwgMzAlKTtcbiAgfVxuXG4gIDYwJSB7XG4gICAgYmFja2dyb3VuZDogbWl4KCRjLXByaW1hcnksICRjLWJnLWJveCwgMzAlKTtcbiAgfVxuXG4gIDcwJSB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgfVxufVxuXG4ucGFsYW50aXIge1xuICBmbGV4OiAwIDEgYXV0bztcbiAgYW5pbWF0aW9uOiBwYWxhbnRpci1nbG93aW5nIDEuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gIGJvcmRlci1yYWRpdXM6IDAgM3B4IDAgMDtcblxuICAmLXNsb3Qge1xuICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgICBvcGFjaXR5OiAwLjY7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5cbiAgJi1vZmYge1xuICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgfVxuXG4gICYtb24ge1xuICAgIGJhY2tncm91bmQ6ICRjLWdvb2Q7XG4gICAgY29sb3I6ICRjLWdvb2Qtb3ZlcjtcbiAgICBhbmltYXRpb246IG5vbmU7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJhZCAhaW1wb3J0YW50O1xuICAgICAgY29sb3I6ICRjLWJhZC1vdmVyICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgJjo6YWZ0ZXIge1xuICAgIHRvcDogMXB4O1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG59XG4iLCIvKiBhbmFseXNlIGEgZ2FtZSByZXBsYXkgKi9cbkBpbXBvcnQgJ2FuYWx5c2UuYmFzZSc7XG5AaW1wb3J0ICdyZXRybyc7XG5AaW1wb3J0ICdhY3BsJztcbkBpbXBvcnQgJ3JvdW5kLXVuZGVyYm9hcmQnO1xuQGltcG9ydCAncGdyLWFuYWx5c2lzJztcbiIsIkBpbXBvcnQgJ3ZhcmlhYmxlcyc7XG5cbiVib3JkZXItYm90dG9tLWFjdGl2ZSB7XG4gIGJvcmRlci1ib3R0b206ICRib3JkZXI7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCAkYy1zZWNvbmRhcnk7XG4gIH1cbn1cblxuQGltcG9ydCAnbGF5b3V0JztcbkBpbXBvcnQgJ3Rvb2xzJztcbkBpbXBvcnQgJ2FjdGlvbi1tZW51JztcbkBpbXBvcnQgJ2V4cGxvcmVyL2V4cGxvcmVyJztcbkBpbXBvcnQgJ3RyYWluaW5nJztcbkBpbXBvcnQgJ3ByYWN0aWNlJztcbkBpbXBvcnQgJ2ZvcmsnO1xuQGltcG9ydCAnc2lkZSc7XG5AaW1wb3J0ICdjb250ZXh0LW1lbnUnO1xuQGltcG9ydCAncGxheWVyLWNsb2NrJztcbkBpbXBvcnQgJ21vZncnO1xuXG4vLyBAaW1wb3J0ICdzaWRlLWNsb2NrJztcbiIsIiRtcS1jb2wxOiAkbXEtY29sMS11bmlib2FyZDtcbiRtcS1jb2wyOiAkbXEtY29sMi11bmlib2FyZDtcbiRtcS1jb2wzOiAkbXEtY29sMy11bmlib2FyZDtcblxuJG1ldGEtaGVpZ2h0OiB2YXIoLS1tZXRhLWhlaWdodCk7XG4kY2hhdC1oZWlnaHQ6IHZhcigtLWNoYXQtaGVpZ2h0KTtcbiIsImJvZHkge1xuICAvKiBwcmV2ZW50cyBzY3JvbGwgYmFyIGZsaWNrZXIgb24gcGFnZSBoZWlnaHQgY2hhbmdlcyAqL1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG59XG5cbiNtYWluLXdyYXAge1xuICAtLW1haW4tbWF4LXdpZHRoOiBjYWxjKDEwMHZoIC0gI3skc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0fSAtICN7JGNvbDEtdW5pYm9hcmQtY29udHJvbHN9KTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gICAgLS1tYWluLW1heC13aWR0aDogYXV0bztcbiAgfVxufVxuXG4uYW5hbHlzZSB7XG4gIGdyaWQtYXJlYTogbWFpbjtcbiAgZGlzcGxheTogZ3JpZDtcblxuICAmX19zaWRlIHtcbiAgICBncmlkLWFyZWE6IHNpZGU7XG4gICAganVzdGlmeS1jb250ZW50OiBzdGFydDtcbiAgICBtYXJnaW46ICRibG9jay1nYXA7XG4gIH1cblxuICAmX19ib2FyZCB7XG4gICAgZ3JpZC1hcmVhOiBib2FyZDtcbiAgfVxuXG4gIC5yZWxheS10b3VyIHtcbiAgICBncmlkLXJvdy1zdGFydDogYm9hcmQ7XG4gICAgZ3JpZC1yb3ctZW5kOiB0b29scztcbiAgICBncmlkLWNvbHVtbjogYm9hcmQ7XG4gIH1cblxuICAmX190b29scyB7XG4gICAgZ3JpZC1hcmVhOiB0b29scztcbiAgfVxuXG4gICZfX2NvbnRyb2xzIHtcbiAgICBncmlkLWFyZWE6IGNvbnRyb2xzO1xuICB9XG5cbiAgJl9fdW5kZXJib2FyZCB7XG4gICAgZ3JpZC1hcmVhOiB1bmRlcjtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDEtdW5pYm9hcmQpIHtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47IC8vIGhlbHBzIHRydW5jYXRpbmcgbG9uZyBzdHVkeSBuYW1lc1xuICAgIH1cbiAgfVxuXG4gICZfX2FjcGwge1xuICAgIGdyaWQtYXJlYTogYWNwbDtcbiAgfVxuXG4gIC5jaGF0X19tZW1iZXJzIHtcbiAgICBncmlkLWFyZWE6IHVjaGF0O1xuICB9XG5cbiAgLmV2YWwtZ2F1Z2Uge1xuICAgIGdyaWQtYXJlYTogZ2F1Z2U7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC0tbWV0YS1oZWlnaHQ6IGF1dG87XG4gIC0tY2hhdC1oZWlnaHQ6IGZpdC1jb250ZW50KDApO1xuICAmLS13aWtpIHtcbiAgICAtLWNoYXQtaGVpZ2h0OiAwO1xuICB9XG5cbiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvIGF1dG8gbWlubWF4KDIwZW0sIDMwdmgpO1xuICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgICdib2FyZCdcbiAgICAnY29udHJvbHMnXG4gICAgJ3Rvb2xzJ1xuICAgICdzaWRlJ1xuICAgICdhY3BsJ1xuICAgICd1bmRlcidcbiAgICAnY2hhdCdcbiAgICAndWNoYXQnO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6ICRjb2wyLXVuaWJvYXJkLXdpZHRoIHZhcigtLWdhdWdlLWdhcCkgJGNvbDItdW5pYm9hcmQtdGFibGU7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBmaXQtY29udGVudCgwKTtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgICAgJ2JvYXJkICAgICAgZ2F1Z2UgdG9vbHMnXG4gICAgICAndW5kZXIgICAgICAuICAgICBjb250cm9scydcbiAgICAgICd1bmRlciAgICAgIC4gICAgIGFjcGwnXG4gICAgICAndW5kZXIgICAgICAuICAgICBzaWRlJ1xuICAgICAgJ2NoYXQgICAgICAgLiAgICAgc2lkZSdcbiAgICAgICd1Y2hhdCAgICAgIC4gICAgIHNpZGUnO1xuICAgIGdyaWQtcm93LWdhcDogMDtcblxuICAgICZfX3NpZGUsXG4gICAgLmNoYXRfX21lbWJlcnMsXG4gICAgLm1jaGF0IHtcbiAgICAgIG1hcmdpbjogJGJsb2NrLWdhcCAwIDAgMDtcbiAgICB9XG5cbiAgICAmX191bmRlcmJvYXJkIHtcbiAgICAgIG1hcmdpbi10b3A6IDIzcHg7XG4gICAgfVxuXG4gICAgLmV2YWwtZ2F1Z2Uge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgLnJlbGF5LXRvdXIge1xuICAgICAgZ3JpZC1yb3ctZW5kOiB1bmRlcjtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyLXVuaWJvYXJkLXNxdWVlemUpIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6ICRjb2wyLXVuaWJvYXJkLXNxdWVlemUtd2lkdGggdmFyKC0tZ2F1Z2UtZ2FwKSAkY29sMi11bmlib2FyZC1zcXVlZXplLXRhYmxlO1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMykge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogJGNvbDMtdW5pYm9hcmQtc2lkZSAkYmxvY2stZ2FwICRjb2wzLXVuaWJvYXJkLXdpZHRoIHZhcigtLWdhdWdlLWdhcCkgJGNvbDMtdW5pYm9hcmQtdGFibGU7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAkbWV0YS1oZWlnaHQgJGNoYXQtaGVpZ2h0IDIuNWVtIDFmcjtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgICAgJ3NpZGUgICAgLiBib2FyZCBnYXVnZSB0b29scydcbiAgICAgICdjaGF0ICAgIC4gYm9hcmQgZ2F1Z2UgdG9vbHMnXG4gICAgICAndWNoYXQgICAuIHVuZGVyIC4gICAgIGNvbnRyb2xzJ1xuICAgICAgJ3VjaGF0ICAgLiB1bmRlciAuICAgICBhY3BsJztcblxuICAgICZfX3NpZGUge1xuICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICB9XG5cbiAgICAubWNoYXQge1xuICAgICAgbWluLWhlaWdodDogMTBlbTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBjcm9zc3RhYmxlLWxhcmdlO1xuICB9XG59XG4iLCIuYW5hbHlzZSB7XG4gICZfX3Rvb2xzIHtcbiAgICBAZXh0ZW5kICVib3gtbmVhdC1mb3JjZSwgJWZsZXgtY29sdW1uO1xuXG4gICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuXG4gICAgLmNldmFsIHtcbiAgICAgIGZsZXg6IDAgMCAzOHB4O1xuICAgIH1cblxuICAgIC5zdWItYm94IHtcbiAgICAgIEBleHRlbmQgJWJvcmRlci1ib3R0b20tYWN0aXZlO1xuXG4gICAgICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAgICAgLnRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjllbTtcbiAgICAgICAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctYm94LCA0MCUpO1xuICAgICAgICBwYWRkaW5nOiAwIDdweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuY29tcC1vZmZfX2hpbnQge1xuICAgICAgQGV4dGVuZCAlbWV0YWwtYmc7XG5cbiAgICAgIG9wYWNpdHk6IDAuODtcbiAgICAgIHBhZGRpbmc6IDAuM2VtIDFlbTtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgYnV0dG9uIHtcbiAgICAgICAgQGV4dGVuZCAlYnV0dG9uLW5vbmU7XG5cbiAgICAgICAgbWFyZ2luLWxlZnQ6IDFlbTtcbiAgICAgICAgY29sb3I6ICRjLWxpbms7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgY29sb3I6ICRjLWxpbmstaG92ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmX19tb3ZlcyB7XG4gICAgZmxleDogMiAxIDA7XG5cbiAgICAvLyAwIHNpemUgZm9yY2VzIHZlcnRpY2FsIHNjcm9sbGJhclxuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuXG4gICAgLy8gZWxzZSBhIHNjcm9sbGJhciBhcHBlYXJzIHNvbWV0aW1lc1xuICAgIGJvcmRlci10b3A6ICRib3JkZXI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLyogcmVxdWlyZWQgc28gbGluZTo6YmVmb3JlIHNjcm9sbHMgYWxvbmcgdGhlIG1vdmVzISAqL1xuICAgIC5yZXN1bHQsXG4gICAgLnN0YXR1cyB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAucmVzdWx0IHtcbiAgICAgIGJvcmRlci10b3A6ICRib3JkZXI7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgICBwYWRkaW5nOiA1cHggMCAzcHggMDtcbiAgICB9XG5cbiAgICAuc3RhdHVzIHtcbiAgICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgcGFkZGluZy1ib3R0b206IDdweDtcbiAgICB9XG4gIH1cblxuICAmX19jb250cm9scyB7XG4gICAgaGVpZ2h0OiAkY29sMy11bmlib2FyZC1jb250cm9scztcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcblxuICAgIGRpdiB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICB9XG5cbiAgICAuanVtcHMge1xuICAgICAgZmxleDogMyAxIGF1dG87XG4gICAgfVxuXG4gICAgLmZidCB7XG4gICAgICBAZXh0ZW5kICVwYWdlLXRleHQ7XG5cbiAgICAgIGZsZXg6IDAgMCAyLjVyZW07XG4gICAgICB0cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDBzO1xuICAgIH1cblxuICAgIC5hY3RpdmUge1xuICAgICAgbWFyZ2luLXRvcDogLTNweDtcbiAgICAgIHBhZGRpbmctdG9wOiAzcHg7XG4gICAgfVxuXG4gICAgOjpiZWZvcmUge1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxKSB7XG4gICAgICBoZWlnaHQ6ICRjb2wxLXVuaWJvYXJkLWNvbnRyb2xzO1xuXG4gICAgICAuZmJ0IHtcbiAgICAgICAgZmxleDogMCAwIDMuNXJlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi5hY3Rpb24tbWVudSB7XG4gIEBleHRlbmQgJWJvcmRlci1ib3R0b20tYWN0aXZlO1xuXG4gIGZsZXg6IDEgMSAwO1xuXG4gIC8vIDAgc2l6ZSBmb3JjZXMgdmVydGljYWwgc2Nyb2xsYmFyXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogY29sdW1uO1xuICBvdmVyZmxvdzogYXV0bztcbiAgcGFkZGluZzogJGJsb2NrLWdhcDtcblxuICBoMiB7XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBtYXJnaW46ICRibG9jay1nYXAgMCAzcHggMDtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBwYWRkaW5nOiAwIDEwcHg7XG5cbiAgICAmOmJlZm9yZSxcbiAgICAmOmFmdGVyIHtcbiAgICAgIGJvcmRlci10b3A6ICRib3JkZXI7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB0b3A6IDAuNWVtO1xuICAgICAgd2lkdGg6IDQ1JTtcbiAgICB9XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICByaWdodDogOHB4O1xuICAgIH1cblxuICAgICY6YWZ0ZXIge1xuICAgICAgbGVmdDogOHB4O1xuICAgIH1cbiAgfVxuXG4gICZfX3Rvb2xzIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IHdyYXA7XG5cbiAgICA+ICoge1xuICAgICAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG5cbiAgICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgaGVpZ2h0OiA3NXB4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmJ1dHRvbiB7XG4gICAgICBjb2xvcjogJGMtZm9udDtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcblxuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogMmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMWVtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmF1dG9wbGF5IHtcbiAgICBAZXh0ZW5kICVmbGV4LXdyYXA7XG5cbiAgICBhIHtcbiAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgICBmbGV4OiAxIDEgYXV0bztcbiAgICAgIHBhZGRpbmc6IDdweCAwO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbiAgfVxuXG4gIGZvcm0uZGVsZXRlIHtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBtYXJnaW4tdG9wOiA2cHg7XG5cbiAgICAuYnV0dG9uOjpiZWZvcmUge1xuICAgICAgZm9udC1zaXplOiAxLjJlbTtcbiAgICB9XG4gIH1cblxuICAuc2V0dGluZyB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgbWFyZ2luLXRvcDogJGJsb2NrLWdhcDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgbGFiZWwge1xuICAgICAgZmxleDogNCAxIGF1dG87XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIGlucHV0W3R5cGU9J3JhbmdlJ10ge1xuICAgICAgZmxleDogMSA0IGF1dG87XG4gICAgICBwYWRkaW5nOiAwIDAgMCAxZW07XG4gICAgICBoZWlnaHQ6IDEuNmVtO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBtYXJnaW46IDAgMWNoO1xuXG4gICAgICAmW21pbj0nMCddIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAucmFuZ2VfdmFsdWUge1xuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDEpIHtcbiAgICAuYWJzZXQtaW5saW5lIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLy8gZm9yY2UgaW5saW5lIG9uIG1vYmlsZVxuICB9XG59XG4iLCJAaW1wb3J0ICcuL2NvbmZpZyc7XG5cbi5leHBsb3Jlci1ib3gge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZsZXg6IDMgMSAwcHg7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICB0cmFuc2l0aW9uLWRlbGF5OiAwLjNzO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIGZvbnQtc2l6ZTogMC45ZW07XG5cbiAgJi5yZWR1Y2VkIHtcbiAgICBmbGV4OiAwLjMgMyAwcHg7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGZsZXg6IDEgMiAwcHg7XG4gICAgfVxuICB9XG5cbiAgLm92ZXJsYXkge1xuICAgIEBleHRlbmQgJWxpbmstb3ZlcmxheTtcblxuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAmLmxvYWRpbmcgLm92ZXJsYXkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgdGJvZHkge1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG4gIH1cblxuICAmLmxvYWRpbmcgdGJvZHkge1xuICAgIG9wYWNpdHk6IDAuNDtcbiAgfVxuXG4gIC50aXRsZSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB1c2VyLXNlbGVjdDogdGV4dDtcbiAgfVxuICAuZXhwbG9yZXItdGl0bGUge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyLW5vd3JhcDtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICBsaW5lLWhlaWdodDogMS45ZW07XG4gICAgcGFkZGluZzogMDtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtc2Vjb25kYXJ5LCAkYy1iZy1ib3gsIDMwJSk7XG4gICAgLmRkbG9hZGVyIHtcbiAgICAgIHBhZGRpbmctbGVmdDogN3B4O1xuICAgIH1cbiAgICAuYWN0aXZlIHtcbiAgICAgIEBleHRlbmQgJWZsZXgtY2VudGVyLW5vd3JhcDtcbiAgICAgIHBhZGRpbmc6IDAgN3B4O1xuICAgICAgY29sb3I6ICRjLWZvbnQtY2xlYXI7XG4gICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtc2Vjb25kYXJ5LCAkYy1iZy1ib3gsIDQwJSk7XG4gICAgICBzdHJvbmcge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuNWNoO1xuICAgICAgfVxuICAgICAgJi5wbGF5ZXIge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB9XG4gICAgfVxuICAgIC5sb25nIHtcbiAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4xY2g7XG4gICAgfVxuICAgIGJ1dHRvbiB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBwYWRkaW5nOiAwIDAuNWNoO1xuICAgICAgbWFyZ2luLWxlZnQ6IDFweDtcbiAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogJGMtZm9udC1jbGVhcjtcbiAgICAgICAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctYm94LCA1MCUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5lbXB0eSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbjtcbiAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICAubWVzc2FnZSB7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuICB9XG5cbiAgdHIge1xuICAgICY6bnRoLWNoaWxkKGV2ZW4pIHtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctYm94LCAyMCUpO1xuICAgIH1cbiAgfVxuXG4gIHRkIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgcGFkZGluZy1sZWZ0OiA3cHg7XG4gIH1cblxuICAubW92ZXMge1xuICAgIHRoIHtcbiAgICAgIEBleHRlbmQgJXJvYm90bztcbiAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuOGVtO1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctYm94LCA0MCUpO1xuICAgICAgcGFkZGluZy1sZWZ0OiA3cHg7XG4gICAgfVxuICAgIHRkOmZpcnN0LWNoaWxkIHtcbiAgICAgIEBleHRlbmQgJXNhbjtcblxuICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDdweDtcbiAgICB9XG5cbiAgICB0ZDpudGgtY2hpbGQoMikge1xuICAgICAgZm9udC1zaXplOiAwLjc1ZW07XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG5cbiAgICB0ZDpsYXN0LWNoaWxkIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgcGFkZGluZy1yaWdodDogN3B4O1xuICAgIH1cblxuICAgIHRib2R5IHRyLnN1bSB7XG4gICAgICAvKiBzdW0gcm93ICovXG4gICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtcHJpbWFyeSwgJGMtYmctYm94LCAyNSUpO1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG5cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEteC1zaG9ydCkge1xuICAgICAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRkIHtcbiAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5iYXIgc3BhbiB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgICBib3JkZXI6IDAgc29saWQgZmFkZS1vdXQoJGMtZm9udCwgMC44Myk7XG4gICAgYm9yZGVyLXdpZHRoOiAxcHggMDtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gICAgbGluZS1oZWlnaHQ6IDE0cHg7XG4gICAgZm9udC1zaXplOiAwLjllbTtcbiAgICB0cmFuc2l0aW9uOiB3aWR0aCAxcztcbiAgfVxuXG4gIC53aGl0ZSB7XG4gICAgYmFja2dyb3VuZDogaWYoJHRoZW1lLWxpZ2h0LCAjZmZmLCAjY2NjKTtcbiAgICBib3gtc2hhZG93OiAwIC01cHggN3B4IHJnYmEoMCwgMCwgMCwgaWYoJHRoZW1lLWxpZ2h0LCAwLjEsIDAuMjUpKSBpbnNldDtcblxuICAgIEBpZiAkdGhlbWUtZGFyayB7XG4gICAgICBjb2xvcjogIzIyMjtcbiAgICB9XG4gIH1cblxuICAuZHJhd3MsXG4gIC5ibGFjayB7XG4gICAgY29sb3I6IGlmKCR0aGVtZS1saWdodCwgI2ZmZiwgI2RkZCk7XG4gICAgYm94LXNoYWRvdzogMCA1cHggN3B4IHJnYmEoMjU1LCAyNTUsIDI1NSwgaWYoJHRoZW1lLWxpZ2h0LCAwLjIsIDAuMSkpIGluc2V0O1xuICB9XG5cbiAgLmRyYXdzIHtcbiAgICBiYWNrZ3JvdW5kOiBpZigkdGhlbWUtbGlnaHQsICNhMGEwYTAsICM2NjYpO1xuICB9XG5cbiAgLmJsYWNrIHtcbiAgICBiYWNrZ3JvdW5kOiBpZigkdGhlbWUtbGlnaHQsICM1NTUsICMzMzMpO1xuICAgIGNvbG9yOiAjZGRkO1xuICB9XG5cbiAgLmJhciBzcGFuOmZpcnN0LWNoaWxkIHtcbiAgICBAZXh0ZW5kICVib3gtcmFkaXVzLWxlZnQ7XG5cbiAgICBib3JkZXItbGVmdC13aWR0aDogMXB4O1xuICB9XG5cbiAgLmJhciBzcGFuOmxhc3QtY2hpbGQge1xuICAgIEBleHRlbmQgJWJveC1yYWRpdXMtcmlnaHQ7XG5cbiAgICBib3JkZXItcmlnaHQtd2lkdGg6IDFweDtcbiAgfVxuXG4gIC5nYW1lcyB7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICB0ZCB7XG4gICAgICBwYWRkaW5nOiA1cHggMCA1cHggN3B4O1xuICAgICAgbWF4LXdpZHRoOiAxMTBweDtcbiAgICAgICY6bnRoLWNoaWxkKDIpIHtcbiAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgICAgfVxuXG4gICAgICBzcGFuIHtcbiAgICAgICAgQGV4dGVuZCAlZWxsaXBzaXM7XG5cbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmVzdWx0IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgcGFkZGluZzogM3B4IDVweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgfVxuICB9XG5cbiAgLmdhbWVfbWVudSB7XG4gICAgYmFja2dyb3VuZDogJGMtc2Vjb25kYXJ5O1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICBwYWRkaW5nOiAwO1xuXG4gICAgLmdhbWVfdGl0bGUge1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgY29sb3I6ICRjLXNlY29uZGFyeS1vdmVyO1xuICAgICAgbWFyZ2luOiAzcHggMCAxcHggMDtcbiAgICB9XG5cbiAgICAubWVudSB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblxuICAgICAgYSB7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBwYWRkaW5nOiA0cHggOHB4O1xuICAgICAgfVxuXG4gICAgICBhOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC50YWJsZWJhc2Uge1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgdGQ6Zmlyc3QtY2hpbGQge1xuICAgICAgQGV4dGVuZCAlc2FuO1xuXG4gICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICBsaW5lLWhlaWdodDogMzBweDtcbiAgICAgIHBhZGRpbmctbGVmdDogN3B4O1xuICAgIH1cblxuICAgIHRkOmxhc3QtY2hpbGQge1xuICAgICAgcGFkZGluZy1yaWdodDogN3B4O1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuXG4gICAgcmVzdWx0IHtcbiAgICAgIHBhZGRpbmc6IDNweCA1cHg7XG4gICAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgICAgZm9udC1zaXplOiAwLjllbTtcbiAgICB9XG4gIH1cblxuICAudG9jb25mIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IDEuMmVtO1xuICAgIHdpZHRoOiAxLjVlbTtcbiAgICBsaW5lLWhlaWdodDogMS41ZW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG9wYWNpdHk6IDAuODtcblxuICAgICY6aG92ZXIge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1cblxuICAubWVzc2FnZSB7XG4gICAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG4gICAgZmxleDogMSAxIGF1dG87XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgfVxuXG4gICYucmVkdWNlZCAubWVzc2FnZSB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICB9XG5cbiAgLm1lc3NhZ2Ugc3Ryb25nIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBtYXJnaW46IDFlbSAwO1xuICB9XG5cbiAgJjpub3QoLnJlZHVjZWQpIC5tZXNzYWdlIGgzLFxuICAmLnJlZHVjZWQ6aG92ZXIgLm1lc3NhZ2UgaDMge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB9XG5cbiAgLm1lc3NhZ2UgcCB7XG4gICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICBwYWRkaW5nOiAwIDhweDtcbiAgICBtYXJnaW46IDAgMCA4cHggMDtcbiAgfVxuXG4gICYucmVkdWNlZCAubWVzc2FnZSBwLFxuICAmLnJlZHVjZWQgLm1lc3NhZ2UgYnV0dG9uIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgJi5yZWR1Y2VkOmhvdmVyIC5tZXNzYWdlIHAsXG4gICYucmVkdWNlZDpob3ZlciAubWVzc2FnZSBidXR0b24ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgLm1lc3NhZ2UgYnV0dG9uIHtcbiAgICBtYXJnaW46IDAgMzBweDtcbiAgfVxufVxuIiwiLmV4cGxvcmVyX19jb25maWcge1xuICBzZWN0aW9uLFxuICAudG9nZ2xlIHtcbiAgICBtYXJnaW46IDAuNGVtICRibG9jay1nYXAgMCAkYmxvY2stZ2FwO1xuICB9XG5cbiAgc2VjdGlvbi5zYXZlIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMTVweCAwIDEwcHggMDtcbiAgfVxuXG4gIGxhYmVsIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBsaW5lLWhlaWdodDogMmVtO1xuICB9XG5cbiAgLmNob2ljZXMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICBidXR0b24ge1xuICAgICAgQGV4dGVuZCAlbWV0YWw7XG4gICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICBwYWRkaW5nOiA1cHggMDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAgICAgYm9yZGVyOiAkYm9yZGVyO1xuICAgICAgYm9yZGVyLXdpZHRoOiAxcHggMCAxcHggMXB4O1xuICAgICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG5cbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBAZXh0ZW5kICVib3gtcmFkaXVzLWxlZnQ7XG4gICAgICB9XG5cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIEBleHRlbmQgJWJveC1yYWRpdXMtcmlnaHQ7XG5cbiAgICAgICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7XG4gICAgICB9XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBAZXh0ZW5kICVtZXRhbC1ob3ZlcjtcbiAgICAgIH1cblxuICAgICAgJlthcmlhLXByZXNzZWQ9J3RydWUnXSxcbiAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtc2Vjb25kYXJ5O1xuICAgICAgICBjb2xvcjogJGMtc2Vjb25kYXJ5LW92ZXI7XG4gICAgICAgIHRleHQtc2hhZG93OiAxcHggMCAwIHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICB9XG4gICAgICAmW2FyaWEtcHJlc3NlZD0ndHJ1ZSddIHtcbiAgICAgICAgYm94LXNoYWRvdzogMCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSBpbnNldDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubmFtZSB7XG4gICAgPiBkaXYge1xuICAgICAgQGV4dGVuZCAlZmxleC1jZW50ZXI7XG4gICAgfVxuICAgIC5wbGF5ZXItbmFtZSB7XG4gICAgICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplICFpbXBvcnRhbnQ7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDFlbTtcbiAgICAgIHBhZGRpbmctbGVmdDogMWVtO1xuICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xuICAgICAgJi5hY3RpdmU6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtc2Vjb25kYXJ5LCB3aGl0ZSwgODApO1xuICAgICAgfVxuICAgIH1cbiAgICAuY29sb3Ige1xuICAgICAgbWFyZ2luLWxlZnQ6IDFjaDtcbiAgICB9XG4gIH1cblxuICAudG9nZ2xlIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBsaW5lLWhlaWdodDogMmVtO1xuICB9XG5cbiAgLmRhdGUge1xuICAgIGxhYmVsIHtcbiAgICAgIEBleHRlbmQgJWZsZXgtYmV0d2Vlbi1ub3dyYXA7XG4gICAgfVxuICAgIGlucHV0IHtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICBwYWRkaW5nOiAwLjFlbSAwLjVlbTtcbiAgICAgICY6aW52YWxpZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1lcnJvciwgJGMtYmctYm94LCAzMCUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICZfX3BsYXllcl9fY2hvaWNlIHtcbiAgICBtYXgtd2lkdGg6IDcwY2ggIWltcG9ydGFudDtcblxuICAgID4gZGl2IHtcbiAgICAgIC8vIGZvciB1c2VyIGNvbXBsZXRlXG4gICAgICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5pbnB1dC13cmFwcGVyIHtcbiAgICAgIC8vIGZvciB1c2VyIGNvbXBsZXRlXG4gICAgICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gICAgICBwYWRkaW5nLXRvcDogMmVtO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMmVtO1xuICAgIH1cbiAgICAucHJldmlvdXMge1xuICAgICAgQGV4dGVuZCAlZmxleC13cmFwO1xuICAgICAgLmJ1dHRvbiB7XG4gICAgICAgIG1hcmdpbjogMC4zZW0gMC4yZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLnRyYWluaW5nLWJveCB7XG4gIEBleHRlbmQgJWZsZXgtY29sdW1uO1xuXG4gIGZsZXg6IDEuNSAxIDBweDtcblxuICAuZmVlZGJhY2sge1xuICAgIGZsZXg6IDEgMSAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAuZmluZCxcbiAgICAuZmFpbCB7XG4gICAgICBwYWRkaW5nLXRvcDogNXB4O1xuICAgICAgcGFkZGluZy1ib3R0b206IDhweDtcbiAgICB9XG4gIH1cblxuICAucHJvZ3Jlc3Mge1xuICAgIG1hcmdpbi10b3A6IDVweDtcbiAgICBvcGFjaXR5OiAwLjg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiA0cHg7XG4gICAgYmFja2dyb3VuZDogJGMtc2hhZGU7XG4gIH1cblxuICAucHJvZ3Jlc3MgZGl2IHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1nb29kO1xuICAgIGhlaWdodDogNHB4O1xuICAgIHRyYW5zaXRpb246IHdpZHRoIDAuNXM7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLnBsYXllciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICB9XG5cbiAgLm5vLXNxdWFyZSB7XG4gICAgd2lkdGg6IDY0cHg7XG4gICAgaGVpZ2h0OiA2NHB4O1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgfVxuXG4gIC5pczNkICYgZGl2Lm5vLXNxdWFyZSB7XG4gICAgaGVpZ2h0OiA4MnB4O1xuICB9XG5cbiAgcGllY2Uge1xuICAgIHBvc2l0aW9uOiBpbmhlcml0O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuaWNvbiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDY0cHg7XG4gICAgaGVpZ2h0OiA2NHB4O1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICBmb250LXNpemU6IDUwcHg7XG4gICAgZm9udC1zaXplOiA2NHB4O1xuICAgIGxpbmUtaGVpZ2h0OiA2NHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuXG4gIC5pbnN0cnVjdGlvbiA+ICoge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgLmluc3RydWN0aW9uID4gc3Ryb25nIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gIH1cblxuICAuY2hvaWNlcyB7XG4gICAgbGluZS1oZWlnaHQ6IDEuNmVtO1xuICAgIG1hcmdpbjogNXB4IDAgLTVweCAwO1xuICB9XG5cbiAgLmNob2ljZXMgYSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cbiIsIi5wcmFjdGljZS1ib3gge1xuICBmbGV4OiAwIDAgMTM1cHg7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuXG4gIC5jb21tZW50IHtcbiAgICBmbGV4OiAwIDAgMzBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICAgIGJvcmRlci10b3A6ICRib3JkZXI7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBsaW5lLWhlaWdodDogMzBweDtcbiAgfVxuXG4gIC5wcm9ncmVzcyBkaXYge1xuICAgIGJhY2tncm91bmQ6ICRjLXNoYWRlO1xuICB9XG5cbiAgJi5nb29kTW92ZSAucHJvZ3Jlc3MgZGl2IHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1nb29kO1xuICAgIGNvbG9yOiAjZmZmO1xuICB9XG5cbiAgJi5pbmFjY3VyYWN5IC50aXRsZSxcbiAgJi5pbmFjY3VyYWN5IC5wcm9ncmVzcyBkaXYge1xuICAgIGJhY2tncm91bmQ6ICRjLWJyYWc7XG4gICAgY29sb3I6ICNmZmY7XG4gIH1cblxuICAmLm1pc3Rha2UgLnRpdGxlLFxuICAmLmJsdW5kZXIgLnRpdGxlLFxuICAmLm1pc3Rha2UgLnByb2dyZXNzIGRpdixcbiAgJi5ibHVuZGVyIC5wcm9ncmVzcyBkaXYge1xuICAgIGJhY2tncm91bmQ6ICRjLWJhZDtcbiAgICBjb2xvcjogI2ZmZjtcbiAgfVxuXG4gIC5jb21tZW50IC53YWl0IHtcbiAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gIH1cblxuICAudmVyZGljdCB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH1cblxuICAudmVyZGljdDo6YmVmb3JlIHtcbiAgICB3aWR0aDogMzBweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgbWFyZ2luLXJpZ2h0OiA3cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMS40ZW07XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgfVxuXG4gICYuZ29vZE1vdmUgLnZlcmRpY3Qge1xuICAgIGNvbG9yOiAkYy1nb29kO1xuICB9XG5cbiAgJi5nb29kTW92ZSAudmVyZGljdDo6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1nb29kO1xuICAgIGNvbnRlbnQ6ICfinJMnO1xuICAgIGZvbnQtc2l6ZTogMS43ZW07XG4gIH1cblxuICAmLmluYWNjdXJhY3kgLnZlcmRpY3Qge1xuICAgIGNvbG9yOiAkYy1icmFnO1xuICB9XG5cbiAgJi5pbmFjY3VyYWN5IC52ZXJkaWN0OjpiZWZvcmUge1xuICAgIGJhY2tncm91bmQ6ICRjLWJyYWc7XG4gICAgY29udGVudDogJz8nO1xuICB9XG5cbiAgJi5taXN0YWtlIC52ZXJkaWN0LFxuICAmLmJsdW5kZXIgLnZlcmRpY3Qge1xuICAgIGNvbG9yOiAkYy1iYWQ7XG4gIH1cblxuICAmLm1pc3Rha2UgLnZlcmRpY3Q6OmJlZm9yZSxcbiAgJi5ibHVuZGVyIC52ZXJkaWN0OjpiZWZvcmUge1xuICAgIGJhY2tncm91bmQ6ICRjLWJhZDtcbiAgICBjb250ZW50OiAn4pyXJztcbiAgfVxuXG4gIC5jb21tZW50IG1vdmUge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgIGNvbG9yOiAkYy1saW5rO1xuICAgIHRyYW5zaXRpb246IDAuM3M7XG4gIH1cbn1cbiIsIiRjLWZvcms6ICRjLXByaW1hcnk7XG5cbi5hbmFseXNlX19mb3JrIHtcbiAgQGV4dGVuZCAlZmxleC1jZW50ZXI7XG5cbiAgZmxleDogMCAwIGF1dG87XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMSkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICBtb3ZlIHtcbiAgICBAZXh0ZW5kICVzYW4sICVmbGV4LWNlbnRlcjtcblxuICAgIGJhY2tncm91bmQ6IG1peCgkYy1mb3JrLCAkYy1iZy1ib3gsIDI1JSk7XG4gICAgY29sb3I6ICRjLWZvbnQtY2xlYXI7XG4gICAgZmxleDogMCAwIDUwJTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgcGFkZGluZzogMC4yZW0gMWVtO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy1iZy1ib3g7XG5cbiAgICAmOm50aC1jaGlsZChvZGQpIHtcbiAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICRjLWJnLWJveDtcbiAgICB9XG4gIH1cblxuICBtb3ZlOmhvdmVyLFxuICAmOm5vdCg6aG92ZXIpIG1vdmUuc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1mb3JrLCAkYy1iZy1ib3gsIDEwMCUpO1xuICAgIGNvbG9yOiAjZmZmO1xuICB9XG5cbiAgZ2x5cGgge1xuICAgIEBleHRlbmQgJWJhc2UtZm9udDtcblxuICAgIG1hcmdpbi1sZWZ0OiAycHg7XG4gIH1cblxuICBldmFsIHtcbiAgICBAZXh0ZW5kICVyb2JvdG87XG5cbiAgICBmbGV4OiAzIDAgYXV0bztcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBmb250LXNpemU6IDAuOWVtO1xuICB9XG59XG4iLCIuYW5hbHlzZSB7XG4gICZfX3NpZGUge1xuICAgIGFsaWduLXNlbGY6IHN0YXJ0O1xuXG4gICAgLmJhY2stdG8tZ2FtZSB7XG4gICAgICBtYXJnaW4tdG9wOiAyZW07XG5cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDMpIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMTB2aDtcbiAgICAgIH1cblxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICAuYnV0dG9uIHtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICB9XG4gICAgfVxuICAgIC5hbmFseXNlX193aWtpIHtcbiAgICAgIG1hcmdpbi10b3A6IDJ2aDtcbiAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMykge1xuICAgICAgICBmbGV4OiAxIDEgMDtcbiAgICAgICAgcGFkZGluZzogMC41ZW0gMWVtIDAgMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgJi0td2lraSAuYW5hbHlzZV9fc2lkZSB7XG4gICAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG4gICAgYWxpZ24tc2VsZjogYXV0bztcbiAgfVxuICAmX193aWtpIHtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIHAge1xuICAgICAgdGV4dC1hbGlnbjoganVzdGlmeTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgfVxuICAgIGgxLFxuICAgIGgyIHtcbiAgICAgIEBpbmNsdWRlIGZsdWlkLXNpemUoJ2ZvbnQtc2l6ZScsIDE3cHgsIDIzcHgpO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgICB9XG4gICAgaDMge1xuICAgICAgZm9udC1zaXplOiAxLjJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMC43cmVtO1xuICAgIH1cbiAgfVxufVxuIiwiI2FuYWx5c2UtY20ge1xuICBAZXh0ZW5kICVib3gtcmFkaXVzLCAlcG9wdXAtc2hhZG93O1xuXG4gIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBkaXNwbGF5OiBub25lO1xuICB6LWluZGV4OiB6KCdjb250ZXh0LW1lbnUnKTtcbiAgY3Vyc29yOiBkZWZhdWx0O1xuICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAmLnZpc2libGUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgLnRpdGxlIHtcbiAgICBAZXh0ZW5kICVzYW4sICVtZXRhbDtcblxuICAgIHBhZGRpbmc6IDAuNGVtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDEuMmVtO1xuICAgIGJvcmRlci1ib3R0b206ICRib3JkZXI7XG4gICAgbWFyZ2luOiAwO1xuICB9XG5cbiAgYSB7XG4gICAgQGV4dGVuZCAlZmxleC1jZW50ZXItbm93cmFwO1xuXG4gICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgcGFkZGluZzogMC41ZW0gMC42ZW0gMC41ZW0gMC4zZW07XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgd2lkdGg6IDJlbTtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1hY2NlbnQsICRjLWJnLWJveCwgMTAlKTtcbiAgICB9XG4gIH1cbn1cbiIsIkBpbXBvcnQgJy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L21hdGVyaWFsJztcblxuJGNsb2NrLWhlaWdodDogMjBweDtcblxuLmFuYWx5c2VfX3BsYXllcl9zdHJpcCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG5cbiAgJi50b3Age1xuICAgIHRvcDogI3stJGNsb2NrLWhlaWdodH07XG5cbiAgICAuaXMzZCAmIHtcbiAgICAgIHRvcDogI3stJGNsb2NrLWhlaWdodCAtIDM1cHh9O1xuICAgIH1cbiAgfVxuXG4gICYuYm90dG9tIHtcbiAgICB0b3A6IHZhcigtLWNnLWhlaWdodCwgMTAwJSk7XG4gICAgei1pbmRleDogMTsgLy8gb3ZlciB0aGUgYm9hcmQgY29vcmRzXG5cbiAgICAuaXMzZCAmIHtcbiAgICAgIHRvcDogY2FsYyh2YXIoLS1jZy1oZWlnaHQsIDEwMCUpICsgMTVweCk7XG4gICAgfVxuICB9XG5cbiAgLyogV2hlcmUgdG8gcHV0IHRoZW0gaW4gY29sMSBsYXlvdXQ/IEl0IG1vdmVzIHRoZSBlbnRpcmUgYm9hcmQgYW5kIGNvbnRyb2xzIGRvd24gZm9yIGxpdHRsZSBiZW5lZml0ICovXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDEpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi5hbmFseXNlX19jbG9jayB7XG4gIEBleHRlbmQgJW1ldGFsLCAlYm94LXNoYWRvdztcblxuICBwYWRkaW5nOiAwIDAuNWVtO1xuICBtYXJnaW4tbGVmdDogMTJweDtcbiAgaGVpZ2h0OiAkY2xvY2staGVpZ2h0O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICYudG9wIHtcbiAgICBAZXh0ZW5kICVib3gtcmFkaXVzLXRvcDtcblxuICAgIC5pczNkICYge1xuICAgICAgQGV4dGVuZCAlYm94LXJhZGl1cztcbiAgICB9XG4gIH1cblxuICAmLmJvdHRvbSB7XG4gICAgQGV4dGVuZCAlYm94LXJhZGl1cy1ib3R0b207XG4gIH1cblxuICAmLmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZDogbWl4KCRjLXByaW1hcnksICRjLWJnLWJveCwgMzAlKTtcbiAgfVxuXG4gIHRlbnRocyB7XG4gICAgZm9udC1zaXplOiA4MCU7XG4gIH1cbn1cblxuLm1hdGVyaWFsIHtcbiAgcGFkZGluZy1yaWdodDogMXB4O1xuXG4gIG1waWVjZSB7XG4gICAgd2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1xuXG4gICAgJi5wYXduIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAtMTBweDtcbiAgICB9XG4gIH1cbiAgc2NvcmUge1xuICAgIG1hcmdpbi10b3A6IC0ycHg7XG4gIH1cbn1cblxuLm1hdGVyaWFsLXRvcCB7XG4gIG1hcmdpbi10b3A6IC0xcHg7XG59XG5cbi5tYXRlcmlhbC1ib3R0b20ge1xuICBtYXJnaW4tdG9wOiAxcHg7XG59XG4iLCIubWF0ZXJpYWwge1xuICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgZGl2IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gIH1cblxuICBtcGllY2Uge1xuICAgIG1hcmdpbi1sZWZ0OiAtMTBweDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAgICYucGF3biB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vcGllY2UvbW9uby9QLnN2Zyk7XG4gICAgfVxuXG4gICAgJi5iaXNob3Age1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL3BpZWNlL21vbm8vQi5zdmcpO1xuICAgIH1cblxuICAgICYua25pZ2h0IHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9waWVjZS9tb25vL04uc3ZnKTtcbiAgICB9XG5cbiAgICAmLnJvb2sge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL3BpZWNlL21vbm8vUi5zdmcpO1xuICAgIH1cblxuICAgICYucXVlZW4ge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL3BpZWNlL21vbm8vUS5zdmcpO1xuICAgIH1cblxuICAgICYua2luZyB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vcGllY2UvbW9uby9LLnN2Zyk7XG4gICAgfVxuXG4gICAgQGlmICR0aGVtZSA9PSAndHJhbnNwJyB7XG4gICAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4zKSBkcm9wLXNoYWRvdygwIDFweCAxcHggIzAwMCk7XG4gICAgfVxuICB9XG5cbiAgc2NvcmUge1xuICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcbiAgfVxufVxuIiwiLy8gTW92ZSBvZiB0aGUgV2VlayBub21pbmF0aW9uIG92ZXJsYXlcbi8vIFJlbmRlcmVkIGFzIHBvc2l0aW9uOmFic29sdXRlIGluc2lkZSA8Ym9keT4sIHBvc2l0aW9uZWQganVzdCBiZWxvdyB0aGUgYm9hcmQuXG4vLyBTY3JvbGxzIHdpdGggdGhlIG1haW4gcGFnZSBzY3JvbGxiYXIg4oCUIG5vIGludGVybmFsIHNjcm9sbGJhciBuZWVkZWQuXG4vLyB6LWluZGV4IDEwMDEga2VlcHMgaXQgYWJvdmUgdGhlIHNwaW5uaW5nIGNvaGVuY29pbiBnaWYgKHotaW5kZXggOTk5KS5cblxuLm1vZnctbm9tLW92ZXJsYXkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7IC8vIHNldCBieSBKUzsgc2Nyb2xscyB3aXRoIHBhZ2VcbiAgei1pbmRleDogMTAwMTtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgYm9yZGVyLXRvcDogM3B4IHNvbGlkICRjLWFjY2VudDtcbiAgYm94LXNoYWRvdzogMCA0cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMTgpO1xuXG4gIC8vIOKUgOKUgCBIZWFkZXIg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICZfX2hlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDAuNTVyZW0gMXJlbTtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcbiAgICBnYXA6IDAuNXJlbTtcblxuICAgIC5tb2Z3LXNhbiB7XG4gICAgICBAZXh0ZW5kICVjaGVzcy1mb250O1xuICAgICAgY29sb3I6ICRjLWFjY2VudDtcbiAgICB9XG4gIH1cblxuICAmX19jbG9zZSB7XG4gICAgQGV4dGVuZCAlYnV0dG9uLW5vbmU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwYWRkaW5nOiAwIDAuMnJlbTtcbiAgICAmOmhvdmVyIHsgY29sb3I6ICRjLWZvbnQ7IH1cbiAgfVxuXG4gIC8vIOKUgOKUgCBCb2R5IChubyBzY3JvbGwg4oCUIHBhZ2UgaGFuZGxlcyBpdCkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICZfX2JvZHkge1xuICAgIC8vIHBsYWluIGJsb2NrOyBjb250ZW50IGV4cGFuZHMgbmF0dXJhbGx5XG4gIH1cblxuICAvLyDilIDilIAgU2VjdGlvbnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICZfX3NlY3Rpb24ge1xuICAgIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xuICAgIGJvcmRlci1ib3R0b206ICRib3JkZXI7XG4gIH1cblxuICAvLyDilIDilIAgQWN0aW9ucyBiYXIg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICZfX2FjdGlvbnMge1xuICAgIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiAwLjVyZW07XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBib3JkZXItdG9wOiAkYm9yZGVyO1xuICB9XG5cbiAgLy8g4pSA4pSAIExhYmVscyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgJl9fbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgbWFyZ2luLWJvdHRvbTogMC4zcmVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgfVxuXG4gICZfX29wdGlvbmFsIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGxldHRlci1zcGFjaW5nOiAwO1xuICB9XG5cbiAgLy8g4pSA4pSAIFRhZyBncmlkIChmbGF0IGNoZWNrYm94ZXMpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAmX190YWctZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgxNjBweCwgMWZyKSk7XG4gICAgZ2FwOiAwLjJyZW0gMC41cmVtO1xuICB9XG5cbiAgJl9fdGFnLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDAuM3JlbTtcbiAgICBmb250LXNpemU6IDAuODhyZW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHBhZGRpbmc6IDAuMTJyZW0gMDtcbiAgICBjb2xvcjogJGMtZm9udDtcbiAgICAmOmhvdmVyIHsgY29sb3I6ICRjLWFjY2VudDsgfVxuICAgICY6Zmlyc3QtY2hpbGQgeyBmb250LXdlaWdodDogYm9sZDsgfVxuICB9XG5cbiAgJl9fdGFnLWNiIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYWNjZW50LWNvbG9yOiAkYy1hY2NlbnQ7XG4gICAgd2lkdGg6IDE1cHg7XG4gICAgaGVpZ2h0OiAxNXB4O1xuICB9XG5cbiAgLy8g4pSA4pSAIENvbnRpbnVhdGlvbiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgJl9fY29udC1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAwLjNyZW07XG4gICAgbWluLWhlaWdodDogMS44cmVtO1xuICB9XG5cbiAgJl9fY29udC1jaGlwIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMC4ycmVtO1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1hY2NlbnQsICRjLWJnLWJveCwgMTQlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCBtaXgoJGMtYWNjZW50LCAkYy1ib3JkZXIsIDQwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIHBhZGRpbmc6IDAuMTJyZW0gMC4zcmVtO1xuICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcblxuICAgIC5tb2Z3LWNvbnQtc2FuIHsgQGV4dGVuZCAlY2hlc3MtZm9udDsgfVxuICB9XG5cbiAgJl9fY29udC1yZW1vdmUge1xuICAgIEBleHRlbmQgJWJ1dHRvbi1ub25lO1xuICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHBhZGRpbmc6IDAgMC4xcmVtO1xuICAgICY6aG92ZXIgeyBjb2xvcjogJGMtYmFkOyB9XG4gIH1cblxuICAmX19jb250LWFycm93IHsgY29sb3I6ICRjLWZvbnQtZGltOyBmb250LXNpemU6IDAuNzVyZW07IH1cblxuICAmX19jb250LWhpbnQge1xuICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIG1hcmdpbi1sZWZ0OiAwLjJyZW07XG4gIH1cblxuICAmX19jb250LWVtcHR5IHtcbiAgICBmb250LXNpemU6IDAuODJyZW07XG4gICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgfVxuXG4gIC8vIOKUgOKUgCBOb3RlIHRleHRhcmVhIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAmX19ub3RlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHBhZGRpbmc6IDAuMzVyZW0gMC41cmVtO1xuICAgIGJhY2tncm91bmQ6ICRjLWJnLWlucHV0O1xuICAgIGJvcmRlcjogJGJvcmRlcjtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgZm9udC1zaXplOiAwLjg4cmVtO1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgJjpmb2N1cyB7IG91dGxpbmU6IG5vbmU7IGJvcmRlci1jb2xvcjogJGMtYWNjZW50OyB9XG4gIH1cblxuICAvLyDilIDilIAgQnV0dG9ucyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgJl9fYnRuIHtcbiAgICBAZXh0ZW5kICVidXR0b24tbm9uZTtcbiAgICBwYWRkaW5nOiAwLjM4cmVtIDAuODVyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjEycywgb3BhY2l0eSAwLjEycztcbiAgICAmOmRpc2FibGVkIHsgb3BhY2l0eTogMC41OyBjdXJzb3I6IG5vdC1hbGxvd2VkOyB9XG5cbiAgICAmLS1jYW5jZWwge1xuICAgICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgJGMtYm9yZGVyO1xuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHsgYmFja2dyb3VuZDogJGMtYmctemVicmE7IH1cbiAgICB9XG5cbiAgICAmLS1kcmFmdCB7XG4gICAgICBjb2xvcjogI2MwOGEwZjtcbiAgICAgIGJvcmRlcjogMnB4IHNvbGlkICNjMDhhMGY7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICY6aG92ZXI6bm90KDpkaXNhYmxlZCkgeyBiYWNrZ3JvdW5kOiBtaXgoI2MwOGEwZiwgJGMtYmctYm94LCAxMiUpOyB9XG4gICAgfVxuXG4gICAgJi0tc3VibWl0IHtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWFjY2VudDtcbiAgICAgIGNvbG9yOiAkYy1hY2NlbnQtb3ZlcjtcbiAgICAgIGJvcmRlcjogMnB4IHNvbGlkICRjLWFjY2VudDtcbiAgICAgICY6aG92ZXI6bm90KDpkaXNhYmxlZCkgeyBmaWx0ZXI6IGJyaWdodG5lc3MoMS4xKTsgfVxuICAgIH1cbiAgfVxufVxuIiwiLnJldHJvLWJveCB7XG4gIC50aXRsZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIH1cblxuICAucGxheWVyLmNlbnRlciB7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cblxuICAmOm5vdCguZmluZCkgLnBsYXllciB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG5cbiAgLndpbiAuaWNvbjpub3QoLm9mZikge1xuICAgIGNvbG9yOiAjNzU5OTAwO1xuICB9XG5cbiAgLmZhaWwgLmljb246bm90KC5vZmYpIHtcbiAgICBjb2xvcjogI2RjMzIyZjtcbiAgfVxuXG4gIC5pbnN0cnVjdGlvbiBnbHlwaCB7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBvcGFjaXR5OiAwLjc7XG4gIH1cblxuICAuaGFsZiB7XG4gICAgZmxleDogMSAxIDUwJTtcbiAgfVxuXG4gIC5jb250aW51ZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmb250LXNpemU6IDEuM2VtO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoNTYsIDE0NywgMjMyLCAwLjgpO1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBwYWRkaW5nOiAwIDEwcHg7XG4gIH1cblxuICAuY29udGludWU6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoNTYsIDE0NywgMjMyLCAxKTtcbiAgfVxuXG4gIC5jb250aW51ZSBpOjpiZWZvcmUge1xuICAgIGZvbnQtc2l6ZTogMi41ZW07XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICB9XG59XG4iLCIuYWR2aWNlLXN1bW1hcnkge1xuICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICBjb2xvcjogJGMtZm9udC1wYWdlO1xuICBmb250LXNpemU6IDAuOWVtO1xuICBsaW5lLWhlaWdodDogMS4xNWVtO1xuICBtYXJnaW4tdG9wOiAxZW07XG5cbiAgJl9fc2lkZSA+IGRpdiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBpLFxuICAgIHN0cm9uZyB7XG4gICAgICBmbGV4OiAwIDEgNGNoO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbiAgICAmLnN5bWJvbCB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6ICRjLWxpbms7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmNvbG9yLWljb246OmJlZm9yZSB7XG4gICAgdmVydGljYWwtYWxpZ246IHRleHQtYm90dG9tO1xuICB9XG5cbiAgLmJ1dHRvbiB7XG4gICAgbWFyZ2luOiAwLjZlbSAwO1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMSkge1xuICAgIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZy1ib3R0b206ICRibG9jay1nYXA7XG4gICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcbiAgICBtYXJnaW46IDA7XG5cbiAgICAmX19zaWRlIHtcbiAgICAgIGZsZXg6IDAgMCBjYWxjKDUwJSAtICN7JGJsb2NrLWdhcH0pO1xuICAgICAgbWFyZ2luLWxlZnQ6ICRibG9jay1nYXA7XG4gICAgfVxuXG4gICAgPiBhIHtcbiAgICAgIG9yZGVyOiAxO1xuICAgIH1cbiAgfVxufVxuIiwiJGNvbDEtcGFuZWwtaGVpZ2h0OiAzMHZoO1xuJGNvbDItcGFuZWwtaGVpZ2h0OiAyNDBweDtcblxuLmNvbXAtb2ZmIC5jb21wdXRlci1hbmFseXNpcyB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLmFuYWx5c2VfX3VuZGVyYm9hcmQge1xuICAmX19tZW51IHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBib3JkZXItdG9wOiAycHggc29saWQgJGMtYm9yZGVyO1xuXG4gICAgPiBzcGFuIHtcbiAgICAgIEBleHRlbmQgJXJvYm90bywgJWJveC1yYWRpdXMtYm90dG9tO1xuXG4gICAgICBmbGV4OiAxIDEgMDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgICBwYWRkaW5nOiAwLjRlbSAwLjFlbTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihjb2xvciwgMC4yNXMpO1xuXG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBiYWNrZ3JvdW5kOiBmYWRlLW91dCgkYy1hY2NlbnQsIDAuNCk7XG4gICAgICAgIGhlaWdodDogMnB4O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHdpZHRoOiA5NiU7XG4gICAgICAgIGxlZnQ6IDIlO1xuICAgICAgICB0b3A6IC0ycHg7XG5cbiAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwsIDAuMjVzKTtcblxuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDApO1xuICAgICAgfVxuXG4gICAgICAmLmFjdGl2ZSxcbiAgICAgICY6aG92ZXI6OmFmdGVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgIH1cblxuICAgICAgJi5hY3RpdmUge1xuICAgICAgICBjb2xvcjogJGMtYWNjZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIC5hbmFseXNlLWh1bnRlciAmIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgJl9fcGFuZWxzIHtcbiAgICAtLXBhbmVsLWhlaWdodDogI3skY29sMS1wYW5lbC1oZWlnaHR9O1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgICAgLS1wYW5lbC1oZWlnaHQ6ICN7JGNvbDItcGFuZWwtaGVpZ2h0fTtcbiAgICB9XG5cbiAgICA+IGRpdiB7XG4gICAgICBoZWlnaHQ6IHZhcigtLXBhbmVsLWhlaWdodCk7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICAgJi5hY3RpdmUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuY3Jvc3N0YWJsZSB0YWJsZSB7XG4gICAgICBtYXJnaW4tdG9wOiA2MHB4O1xuICAgIH1cblxuICAgIC5hbmFseXNlLWh1bnRlciAmID4gZGl2IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxuXG4gIC5jb21wdXRlci1hbmFseXNpcyxcbiAgLmN0YWJsZSB7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmLmFjdGl2ZSB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cbiAgfVxuXG4gIC5mdXR1cmUtZ2FtZS1hbmFseXNpcyB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgLmZlbi1wZ24ge1xuICAgIG92ZXJmbG93LXg6IHZpc2libGU7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBmb250LXNpemU6IDAuOWVtO1xuXG4gICAgPiBkaXYge1xuICAgICAgQGV4dGVuZCAlZmxleC1jZW50ZXItbm93cmFwO1xuXG4gICAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgfVxuXG4gICAgLnBnbiB7XG4gICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xuICAgIH1cblxuICAgIHN0cm9uZyB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDFlbTtcbiAgICB9XG5cbiAgICAucGduLW9wdGlvbnMge1xuICAgICAgZGl2IHtcbiAgICAgICAgQGV4dGVuZCAlZmxleC13cmFwO1xuICAgICAgfVxuXG4gICAgICBhIHtcbiAgICAgICAgZmxleDogMCAwIDUwJTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNmVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICZfX2ZlbiB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyOiAwO1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgcGFkZGluZzogMC4zZW07XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcbiAgfVxuXG4gIC5wdXotbWF0Y2hlcyB7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICB9XG5cbiAgLnJvdW5kIHtcbiAgICAmX19wdXp6bGUtbWF0Y2hlcyB7XG4gICAgICAmX19saXN0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIH1cbiAgICB9XG4gICAgJl9fcHV6emxlLW1hdGNoLWNvbnRhaW5lciB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgfVxuICAgICZfX3B1enpsZS1tYXRjaCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHdpZHRoOiAyMDBweDtcbiAgICAgIGhlaWdodDogMjAwcHg7XG5cbiAgICAgICZfX2JvYXJkLS1zdWNjZXNzOjpiZWZvcmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgY29udGVudDogXCIgXCI7XG4gICAgICAgIGJhY2tncm91bmQ6IHVybCgnL2Fzc2V0cy9pbWFnZXMvQ29pbkZsaXAuZ2lmJykgbm8tcmVwZWF0IDAgMDtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAzMHB4IDMwcHg7XG4gICAgICAgIHdpZHRoOiAzMHB4O1xuICAgICAgICBoZWlnaHQ6IDMwcHg7XG4gICAgICAgIHJpZ2h0OiAtMnB4O1xuICAgICAgICB0b3A6IC0zM3B4O1xuICAgICAgICB6LWluZGV4OiA5OTk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbiNhY3BsLWNoYXJ0LFxuI21vdmV0aW1lcy1jaGFydCB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IHZhcigtLXBhbmVsLWhlaWdodCk7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICB0byBib3R0b20sXG4gICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAwJSxcbiAgICByZ2JhKDI1NSwgMjU1LCAyNTUsIDApIDIwJSxcbiAgICByZ2JhKDEyOCwgMTI4LCAxMjgsIDAuMikgNTAlLFxuICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkgODAlLFxuICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkgMTAwJVxuICApO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4jYWNwbC1jaGFydC1sb2FkZXIge1xuICBmb250LXNpemU6IDAuOWVtO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogOTFweDtcbiAgbGVmdDogLTFweDtcbiAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICBwYWRkaW5nOiA3cHggMTBweCA3cHggMDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGJveC1zaGFkb3c6IDJweCAzcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgZGlzcGxheTogZmxleDtcbiAgYm9yZGVyOiAkYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAwIDk5cHggOTlweCAwO1xuXG4gIHNwYW4ge1xuICAgIEBleHRlbmQgJW5vd3JhcC1oaWRkZW47XG5cbiAgICBtYXJnaW4tbGVmdDogN3B4O1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNpdGlvbjogMC41cztcbiAgICB3aWR0aDogMTAwcHg7XG4gICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAuYW5hbHlzZV9fdW5kZXJib2FyZDpob3ZlciAmIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgd2lkdGg6IDA7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgfVxuXG4gIC5zcGlubmVyIHtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICB9XG59XG5cbi8vIE1vdmUgdGltZSBzdGF0cyAmIENQTC1ieS1zcGVlZCB0YWJsZVxuI21vdmUtdGltZXMtc3RhdHMge1xuICBwYWRkaW5nOiA4cHggMTBweDtcbiAgZm9udC1zaXplOiAwLjg1ZW07XG59XG5cbi5tb3Zlcy1zdGF0cy1zZWN0aW9uIHtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcblxuICBoMyB7XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBtYXJnaW46IDAgMCA0cHggMDtcbiAgICBjb2xvcjogJGMtZm9udC1jbGVhcjtcbiAgfVxufVxuXG4ubW92ZXMtc3RhdHMtdGFibGUge1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcblxuICB0aCwgdGQge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAycHggNnB4O1xuICB9XG5cbiAgdGgge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICB9XG5cbiAgdHIgdGQ6Zmlyc3QtY2hpbGQge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICB9XG59XG4iLCIvLyBQcm9ncmVzc2l2ZSBjaGVzcyBnYW1lIHJldmlldyBwYWdlXG4ucGdyLWFuYWx5c2lzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiAxZW07XG4gIHBhZGRpbmc6IDFlbTtcbiAgbWF4LXdpZHRoOiAxMTAwcHg7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblxuICAmX19ib2FyZC13cmFwIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB3aWR0aDogNTAwcHg7XG4gICAgbWF4LXdpZHRoOiA2MHZ3O1xuXG4gICAgLmNnLXdyYXAge1xuICAgICAgd2lkdGg6IDUwMHB4O1xuICAgICAgbWF4LXdpZHRoOiA2MHZ3O1xuICAgICAgcGFkZGluZy1ib3R0b206IDEwMCU7IC8vIG1ha2UgaXQgc3F1YXJlIHZpYSBwYWRkaW5nIHRyaWNrXG4gICAgfVxuICB9XG5cbiAgJl9fcGFuZWwge1xuICAgIGZsZXg6IDEgMSAwO1xuICAgIG1pbi13aWR0aDogMjIwcHg7XG4gICAgbWF4LXdpZHRoOiAzNDBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAwLjZlbTtcbiAgfVxuXG4gICZfX2hlYWRlciB7XG4gICAgaDEge1xuICAgICAgZm9udC1zaXplOiAxLjNlbTtcbiAgICAgIG1hcmdpbjogMCAwIDAuMmVtO1xuICAgIH1cbiAgfVxuXG4gICZfX3BsYXllcnMge1xuICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDAuNGVtO1xuICB9XG5cbiAgJl9fbW92ZXMge1xuICAgIGZsZXg6IDE7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBtYXgtaGVpZ2h0OiA0MHZoO1xuICAgIGJvcmRlcjogJGJvcmRlcjtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgcGFkZGluZzogMC40ZW07XG4gICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICB9XG5cbiAgJl9fbmF2IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogMC4zZW07XG5cbiAgICBidXR0b24ge1xuICAgICAgZmxleDogMTtcbiAgICAgIHBhZGRpbmc6IDAuNGVtO1xuICAgICAgZm9udC1zaXplOiAxLjFlbTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJnLWxvdztcbiAgICAgIGJvcmRlcjogJGJvcmRlcjtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICAgIGNvbG9yOiAkYy1mb250O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtYmctemVicmEyO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBDb2xvciBpbmRpY2F0b3IgZG90cyBuZXh0IHRvIHBsYXllciBuYW1lc1xuLnBnci1jb2xvci1zd2F0Y2gge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAxMHB4O1xuICBoZWlnaHQ6IDEwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYm9yZGVyOiAxcHggc29saWQgJGMtZm9udC1kaW07XG5cbiAgJi0td2hpdGUgeyBiYWNrZ3JvdW5kOiAjZmZmOyB9XG4gICYtLWJsYWNrIHsgYmFja2dyb3VuZDogIzMzMzsgfVxufVxuXG4ucGdyLXZzIHsgY29sb3I6ICRjLWZvbnQtZGltbWVyOyB9XG5cbi8vIE1vdmUgbGlzdCByb3dzXG4ucGdyLXBhaXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XG4gIGdhcDogMC4xNWVtO1xuICBwYWRkaW5nOiAwLjFlbSAwO1xuXG4gICY6bnRoLWNoaWxkKGV2ZW4pIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgfVxufVxuXG4ucGdyLW51bSB7XG4gIGZvbnQtc2l6ZTogMC44ZW07XG4gIGNvbG9yOiAkYy1mb250LWRpbW1lcjtcbiAgbWluLXdpZHRoOiAxLjhlbTtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4ucGdyLW1vdmUge1xuICBmbGV4OiAxO1xuICBwYWRkaW5nOiAwLjE1ZW0gMC4zZW07XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xuICBmb250LXNpemU6IDAuOTVlbTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTI7XG4gIH1cblxuICAmLmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZDogJGMtYWNjZW50O1xuICAgIGNvbG9yOiAkYy1hY2NlbnQtb3ZlcjtcbiAgfVxuXG4gICYubWlzc2VkLW1hdGUge1xuICAgIGNvbG9yOiAkYy1iYWQ7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIH1cblxuICAmLm1hdGUtb3BlbiB7XG4gICAgYmFja2dyb3VuZDogbWl4KCRjLWJhZCwgJGMtYmctYm94LCAyNSUpO1xuICAgIGNvbG9yOiAkYy1iYWQ7XG4gIH1cblxuICAmLS1lbXB0eSB7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xuXG4gICAgJjpob3ZlciB7IGJhY2tncm91bmQ6IG5vbmU7IH1cbiAgfVxufVxuXG4ucGdyLWJhZGdlIHtcbiAgZm9udC1zaXplOiAwLjc1ZW07XG4gIG1hcmdpbi1sZWZ0OiAwLjI1ZW07XG4gIGNvbG9yOiAkYy1iYWQ7XG59XG5cbi5wZ3ItZW1wdHkge1xuICBwYWRkaW5nOiAxZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY29sb3I6ICRjLWZvbnQtZGltO1xufVxuXG4vLyBNaXNzZWQgbWF0ZSBhbm5vdGF0aW9uIGFyZWFcbiNwZ3ItbWF0ZS1pbmZvIHtcbiAgLnBnci1tYXRlLWhlYWRlciB7XG4gICAgcGFkZGluZzogMC41ZW0gMC42ZW07XG4gICAgYmFja2dyb3VuZDogbWl4KCRjLWJhZCwgJGMtYmctYm94LCAxMiUpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIG1peCgkYy1iYWQsICRjLWJnLWJveCwgMzAlKTtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgZm9udC1zaXplOiAwLjg4ZW07XG4gICAgY29sb3I6ICRjLWJhZDtcbiAgfVxufVxuXG4vLyBNYXRlIGxpbmUgbW92ZXNcbiNwZ3ItbWF0ZWxpbmUge1xuICAucGdyLWxpbmUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGdhcDogMC4zZW07XG4gICAgcGFkZGluZzogMC40ZW0gMC4yZW07XG4gIH1cblxuICAucGdyLWxpbmUtbW92ZSB7XG4gICAgcGFkZGluZzogMC4xNWVtIDAuNGVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgICBmb250LXNpemU6IDAuOTJlbTtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy1sb3c7XG4gICAgYm9yZGVyOiAkYm9yZGVyO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTI7XG4gICAgfVxuXG4gICAgJi5hY3RpdmUge1xuICAgICAgYmFja2dyb3VuZDogJGMtZ29vZDtcbiAgICAgIGNvbG9yOiAkYy1nb29kLW92ZXI7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG4gIC5wZ3ItbGluZS1uYXYge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDAuNGVtO1xuICAgIHBhZGRpbmc6IDAuM2VtIDA7XG5cbiAgICBidXR0b24ge1xuICAgICAgcGFkZGluZzogMC4yZW0gMC42ZW07XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy1sb3c7XG4gICAgICBib3JkZXI6ICRib3JkZXI7XG4gICAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgICBmb250LXNpemU6IDEuMWVtO1xuICAgICAgY29sb3I6ICRjLWZvbnQ7XG5cbiAgICAgICY6aG92ZXIgeyBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTI7IH1cblxuICAgICAgJi5wZ3ItY2xvc2UtbWF0ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44ZW07XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnBnci1saW5lLXBvcyB7XG4gICAgICBmb250LXNpemU6IDAuOGVtO1xuICAgICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgIH1cbiAgfVxufVxuXG4ucGdyLWFuYWx5c2lzX19kZWJ1ZyB7XG4gIG1hcmdpbi10b3A6IDJlbTtcbiAgcGFkZGluZzogMWVtO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgJGMtYm9yZGVyO1xuXG4gIGgzIHtcbiAgICBtYXJnaW46IDAgMCAwLjNlbTtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgfVxuXG4gIC5wZ3ItZGVidWctaGludCB7XG4gICAgZm9udC1zaXplOiAwLjg1ZW07XG4gICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgIG1hcmdpbjogMCAwIDAuNWVtO1xuICB9XG5cbiAgLnBnci1kZWJ1Zy10ZXh0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xuICAgIGZvbnQtc2l6ZTogMC44NWVtO1xuICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICAgIGNvbG9yOiAkYy1mb250O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLWJvcmRlcjtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgcGFkZGluZzogMC41ZW07XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgICB3aGl0ZS1zcGFjZTogcHJlO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBRUVBLFlBQVk7QUFrQlosNkRBQTZEO0FBYzdELG1CQUFtQjtBQU1uQixrQ0FBa0M7QUFFbEMsc0JBQXNCO0FBTXRCLG9DQUFvQztBQUVwQyxvQkFBb0I7QUFNcEIsaUNBQWlDO0FBRWpDLGdCQUFnQjtBQUloQiwrQkFBK0I7QUFFL0IsZ0JBQWdCO0FBS2hCLCtCQUErQjtBQUUvQixpQkFBaUI7QUFJakIsa0JBQWtCO0FBSWxCLGNBQWM7QUFJZCxnQkFBZ0I7QUFJaEIsaUJBQWlCO0FBSWpCLCtCQUErQjtBQThCL0IsYUFBYTtBQU1iLGFBQWE7QUQ1R2IsNkRBQTZEO0FBYzdELG1CQUFtQjtBQUtuQixzQkFBc0I7QUFLdEIsZ0JBQWdCO0FBR2hCLGlCQUFpQjtBQUdqQixpQkFBaUI7QUFJakIsa0JBQWtCO0FBSWxCLGNBQWM7QUt6RGQsd0NBQXdDO0FzQkF4QyxZQUFZO0FBZ0JaLGFBQWE7QUFTYixrQkFBa0I7QUFLbEIsa0JBQWtCO0FBS2xCLGFBQWE7QUVuQ2Isc0RBQXNEO0FBT3RELHVFQUF1RTtBRWlCckUsQUFwQkYsYUFvQmUsQ2dCbEJmLE9BQU8sQ0FXTCxJQUFJLEVBWE4sT0FBTyxDaEJrQkwsYUFBYSxDZ0JQYixJQUFJLEVoQk9KLGFBQWEsQ29CeEJmLE9BQU8sQ0FLTCxHQUFHLENBMkJELElBQUksRUFoQ1IsT0FBTyxDQUtMLEdBQUcsQ3BCbUJILGFBQWEsQ29CUVgsSUFBSSxFcEJSTixhQUFhLENzQ3RCZixhQUFhLENBeUdYLE1BQU0sQ0FRSixFQUFFLEFBQUEsWUFBWSxFQWpIbEIsYUFBYSxDQXlHWCxNQUFNLEN0Q25GTixhQUFhLENzQzJGWCxFQUFFLEFBQUEsWUFBWSxFdEMzRmhCLGFB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 */
