/* Colors */
/* even rows in list or tables, subtle shade of $c-bg-high */
/* Primary: blue */
/* text over primary background */
/* Secondary: green */
/* text over secondary background */
/* Accent: orange */
/* text over accent background */
/* Brag: gold */
/* text over brag background */
/* Error: red */
/* text over brag background */
/* Good: green */
/* Warn: orange */
/* Bad: red */
/* Fancy: pink */
/* text over brag background */
/* Borders */
/* Shadows */
/* Custom */
/* Common imports for all CSS modules */
/* Widths */
/* Heights */
/* Orientations */
/* Capabilities */
/* Aliases */
/* Uniboard: keep the same page layout accross pages */
/* when the width is appropriate for col1, but landscape prevents it */
/* atm only chrome supports min-content, max-content */
.slist thead, .mchat__tab, .mchat__messages a:not(.user-link), .tour__main__header .time, .tour__standing td.rank, .tour__actor-info .stats td:last-child, .tour__actor-info .sublist th {
  font-family: 'Roboto';
}

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

.slist thead, .tour__controls, .tour__actor-info .stats h2 {
  background: linear-gradient(to bottom, whitesmoke 0%, #ededed 100%);
  text-shadow: 0 1px 0 white;
}

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

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

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

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

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

.mchat__tab span, .tour__standing .player .name, .tour__player-info .pairings td:nth-child(2) {
  white-space: nowrap;
}

.mchat__messages, .tour__meta .description {
  overflow-wrap: break-word;
  word-break: break-word;
}

.mchat__tab span, .tour__standing .player .name, .tour__player-info .pairings td:nth-child(2), .podium > div, .tour__duels strong {
  overflow: hidden;
  text-overflow: ellipsis;
}

.tour__controls .pager {
  /* extends %flex-wrap */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
}

.context-streamer, .tour__meta section[data-icon], .tour__featured .mini-game__player, .tour__main__header {
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
}

.tour__featured .mini-game__user .user-link, .tour__controls, .tour__duels line {
  /* extends %flex-center */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
  justify-content: space-between;
}

.mchat, .mchat__content, .tour__side, .tour__featured, .tour__main__header .clock-created, .tour__ur-playing, .tour__duels a, .tour__actor-info .stats {
  display: flex;
  flex-flow: column;
}

.mchat__tab input, .mchat, .tour__meta, .tour__actor-info, .tour__stats, .tour__meta .tour__prize, .tour__duels .rank {
  border-radius: 3px;
}

.mchat, .tour__meta, .tour__actor-info {
  overflow: hidden;
  /* helps with clipping background into border-radius */
}

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

.context-streamer {
  border-radius: 0 0 3px 3px;
}

.tour__stats, .mchat, .tour__meta, .tour__actor-info, .context-streamer, .tour__controls {
  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);
}

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

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

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

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

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

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

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

.slist {
  width: 100%;
  border-bottom: 1px solid #d9d9d9;
}

.slist thead th {
  border-top: 1px solid #d9d9d9;
  border-bottom: 1px solid #d9d9d9;
  padding: .5rem .8rem;
}

.slist thead th.large {
  font-size: 1.2rem;
}

.slist td {
  padding: 1rem;
}

.slist td .label {
  font-family: monospace;
  font-size: .8rem;
}

.slist tbody tr:nth-child(even) {
  background: #f7f6f5;
}

.slist td:first-child,
.slist th:first-child {
  padding-left: 1.5rem;
}

.slist-pad td:first-child,
.slist-pad th:first-child {
  padding-left: var(--box-padding);
}

.slist-pad td:last-child,
.slist-pad th:last-child {
  padding-right: var(--box-padding);
}

.slist-invert tbody tr:nth-child(odd) {
  background: #f7f6f5;
}

.slist-invert tbody tr:nth-child(even) {
  background: none;
}

.pull-quote {
  margin: 0 auto;
}

.pull-quote p {
  color: #4d4d4d;
  position: relative;
  margin: 0 .7em;
  padding: 1em 0;
  border: 1px solid #d9d9d9;
  border-width: 1px 0;
  font-style: italic;
  font-size: 1.1rem;
}

.pull-quote p:after {
  content: '';
  position: absolute;
  bottom: -9px;
  left: 42px;
  width: 15px;
  height: 15px;
  background: white;
  border-left: 2px solid #d9d9d9;
  border-bottom: 1px solid #d9d9d9;
  transform: skew(45deg) rotate(-45deg);
}

.pull-quote.long p {
  font-size: 1rem;
}

.pull-quote footer {
  margin: 10px;
  line-height: 20px;
  text-align: right;
}

.pull-quote footer:before {
  content: '\2014\2009';
}

.fire-trophy {
  text-shadow: 0 .008em .127em #fefcc9, .055em -.066em .2em #feec85, -.111em -.127em .272em #ffae34, .111em -.272em .411em #ec760c, -.111em -.456em .416em #cd4606, 0 -.533em .577em #973716, .055em -.55em .533em #451b0e;
}

@keyframes fire-trophy {
  0% {
    text-shadow: 0 .008em .127em #fefcc9, .055em -.066em .2em #feec85, -.111em -.127em .272em #ffae34, .111em -.272em .411em #ec760c, -.111em -.456em .416em #cd4606, 0 -.533em .577em #973716, .055em -.55em .533em #451b0e;
  }
  100% {
    text-shadow: 0 0 .111em #fefcc9, .055em -.055em .166em #fefcc9, -.111em -.111em .222em #feec85, .122em -.233em .333em #ffae34, -.122em -.322em .277em #ec760c, 0 -.456em .444em #cd4606, .055em -.5em .444em #973716;
  }
}

.fire-trophy {
  color: #4d4d4d;
  font-size: 90px;
  display: block;
}

.fire-trophy:hover {
  animation: fire-trophy 1.5s ease-in-out infinite alternate;
}

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

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

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

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

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

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

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

.podium-wrap {
  position: relative;
  padding-bottom: 20px;
}

.podium-wrap #confetti {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  opacity: 1;
  transition: opacity 25s;
}

.podium-wrap #confetti.faded {
  opacity: 0;
}

.podium > div {
  display: inline-block;
  text-align: center;
}

.podium .first {
  width: 44%;
  font-size: 1.6em;
}

.podium .second {
  font-size: 1.3em;
  width: 29%;
}

.podium .third {
  font-size: 1.2em;
  width: 27%;
}

.podium .trophy {
  margin: 0 auto .5em auto;
  background: center / contain no-repeat;
}

.podium .first .trophy {
  height: 9em;
  width: 9em;
  background-image: url("../images/trophy/lichess-massive.svg");
}

.podium .second .trophy {
  height: 9em;
  width: 7em;
  background-image: url("../images/trophy/lichess-silver-1.svg");
}

.podium .third .trophy {
  height: 7em;
  width: 7em;
  background-image: url("../images/trophy/lichess-bronze-2.svg");
}

@media (max-width: 499px) {
  .podium .trophy {
    display: none;
  }
}

.podium .user-link {
  font-weight: bold;
  letter-spacing: -1px;
}

.podium .stats {
  margin: .5em auto 0 auto;
  font-size: .7em;
}

.podium .stats th {
  letter-spacing: -1px;
  text-align: left;
}

.podium .stats td {
  font-weight: bold;
  padding-left: 5px;
  text-align: right;
}

.podium .third .stats {
  font-size: .8em;
}

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

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

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

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

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

.mchat__tab:hover {
  background: #f5dbdd;
}

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

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

.mchat__tab-active input {
  display: block;
}

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

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

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

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

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

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

.mchat__messages .deleted {
  opacity: 0.5;
}

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

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

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

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

.mchat__messages i:hover {
  opacity: 1;
}

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

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

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

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

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

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

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

.palantir-off {
  animation: none;
}

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

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

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

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

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

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

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

.tour {
  display: grid;
  grid-template-areas: 'main' 'side' 'uchat' 'table';
  grid-gap: 2vmin;
}

.tour__side {
  grid-area: side;
}

.tour__table, .tour__stats, .tour__player {
  grid-area: table;
}

.tour__main {
  grid-area: main;
}

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

@media (min-width: 800px) {
  .tour {
    grid-template-columns: minmax(500px, calc(100vh * 0.9 - calc(var(--site-header-height) + var(--site-header-margin)) - 3rem)) minmax(240px, 400px);
    grid-template-rows: calc(100vh - calc(var(--site-header-height) + var(--site-header-margin)) - 2vmin - 3rem) min-content;
    grid-template-areas: 'main  side' 'main  uchat' 'table table';
  }
  .tour__table {
    display: flex;
  }
  .tour__table > * {
    flex: 0 0 50%;
  }
  .tour .mchat__messages {
    max-height: inherit;
  }
}

@media (min-width: 1260px) {
  .tour {
    grid-template-columns: minmax(230px, 20vw) minmax(500px, calc(100vh * 0.9 - calc(var(--site-header-height) + var(--site-header-margin)) - 3rem)) minmax(240px, 400px);
    grid-template-rows: calc(100vh - calc(var(--site-header-height) + var(--site-header-margin)) - 2vmin - 3rem) auto;
    grid-template-areas: 'side  main table' 'uchat main table';
  }
  .tour__table {
    flex-flow: column;
  }
  .tour__table > * {
    flex: inherit;
  }
}

.tour__side .mchat {
  flex: 1 1 7em;
  margin-top: 2vmin;
}

@media (min-width: 800px) {
  .tour__side .mchat {
    min-height: inherit;
  }
}

.tour__meta {
  background: white;
  padding: 1.2vmin 2vmin;
}

.tour__meta section {
  margin-bottom: 2vmin;
}

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

.tour__meta section p {
  margin: 0;
}

.tour__meta section time {
  opacity: 1;
}

.tour__meta section .defender::before {
  font-size: 1.6em;
  vertical-align: -.26em;
  margin: 0 .15em 0 -.15em;
}

.tour__meta section.conditions::before {
  opacity: 0.7;
}

.tour__meta section.conditions.accepted {
  color: #629924;
}

.tour__meta section.conditions.refused {
  color: #cc3333;
}

.tour__meta .description {
  max-height: 20vh;
  overflow-y: auto;
}

.tour__meta .tour__prize {
  padding: 1em;
  background: #f8e8f9;
  margin-bottom: 1em;
  font-size: .9em;
}

.chat__members {
  overflow: visible;
  /* fixes invisible spectators on firefox, col2 */
}

@media (max-width: 799px) and (orientation: portrait) {
  .chat__members {
    margin: 0 2vmin;
  }
}

.tour__featured .mini-game__player i {
  flex: 0 0 auto;
}

.tour__featured .mini-game__player i::before {
  color: #bd111f;
  margin-right: 5px;
}

.tour__featured .mini-game__user {
  display: flex;
}

.tour__featured .mini-game__user strong {
  text-align: center;
  margin-right: 1ch;
}

.tour__featured .mini-game__user .user-link {
  flex: 1 1 100%;
  margin-right: 1em;
}

.tour__main__header {
  position: relative;
  min-height: 7em;
  padding: 0 3vmin;
}

.tour__main__header h1 {
  font-size: 2.2rem;
  flex: 9 1 auto;
  margin: 0;
  overflow: hidden;
}

.tour__main__header h1 a {
  /* GM wikipedia */
  color: #74383d;
}

.tour__main__header h1 a:hover {
  color: #bd111f;
}

.tour__main__header img {
  flex: 0 0 60px;
  display: block;
  width: 60px;
  height: 60px;
  padding: 6px;
}

.tour__main__header .img {
  margin-right: 1rem;
}

.tour__main__header i::before {
  font-size: 2.2rem;
}

.tour-shed .tour__main__header h1 {
  letter-spacing: 2px;
}

.tour-shed-weekly .tour__main__header i::before {
  font-size: 35px;
}

.tour-shed-monthly .tour__main__header i::before,
.tour-shed-weekend .tour__main__header i::before {
  font-size: 40px;
}

.tour-shed-yearly .tour__main__header i::before {
  font-size: 45px;
}

.tour-shed-weekend .tour__main__header h1,
.tour-shed-yearly .tour__main__header h1 {
  letter-spacing: 3px;
}

.tour__main__header .clock {
  flex: 0 0 auto;
  font-weight: bold;
  color: #787878;
}

.tour__main__header .clock-created {
  text-align: right;
}

.tour-sched .tour__main__header h1,
.tour-sched .tour__main__header .img {
  color: #d59020;
}

.tour__main-finished .tour__main__header h1 {
  text-align: center;
}

.tour-sched-marathon .tour__main-finished .tour__main__header h1 {
  padding-left: 0;
}

.tour__main__header .time {
  font-size: 1.5em;
  margin-left: .2em;
}

.tour__main__header .shy {
  line-height: 20px;
  font-size: .9em;
  font-weight: bold;
  text-transform: uppercase;
  opacity: 0.6;
  white-space: nowrap;
}

.tour-sched-marathon .tour__main__header h1 {
  color: #4166a0 !important;
  padding-left: 90px;
  letter-spacing: 2px;
}

.tour-sched-marathon .tour__main__header .fire-trophy {
  position: absolute;
  top: 0;
  left: 10px;
  width: 70px;
  height: 80px;
  opacity: 0.7;
  transition: 1s;
  font-family: "lichess";
  filter: hue-rotate(190deg);
}

.tour-sched-marathon .tour__main__header .fire-trophy:hover {
  opacity: 1;
}

.tour-sched-shield .tour__main__header h1 {
  padding-left: 90px;
  letter-spacing: 2px;
}

.tour-sched-shield .tour__main__header h1 .shield-trophy {
  position: absolute;
  top: -8px;
  left: 12px;
  display: block;
  width: 67px;
  height: 80px;
  background: url(../images/trophy/shield-gold.png) no-repeat;
  background-size: contain;
  font-family: "lichess";
  font-size: 40px;
  line-height: 80px;
  text-align: center;
  color: #333 !important;
  text-shadow: 0 0 6px #fff;
}

.tour__notice {
  color: #fff;
  background: #629924;
  text-align: center;
  padding: .5em 0;
  opacity: 0.8;
}

.tour__notice.closed {
  background: #bd111f;
}

.tour__ur-playing {
  text-align: center;
  font-size: 1.5em;
  position: relative;
}

.tour__ur-playing::before, .tour__ur-playing::after {
  content: 'U';
  font-size: 2rem;
  position: absolute;
  top: 30px;
}

.tour__ur-playing::before {
  left: 30px;
}

.tour__ur-playing::after {
  right: 30px;
}

.tour__controls {
  padding: 0 0px;
  position: relative;
}

.tour__controls .fbt {
  padding: .6em .8em;
  text-transform: uppercase;
  line-height: 1.3;
}

@media (min-width: 500px) {
  .tour__controls .fbt {
    padding: .6em 1em;
  }
}

@keyframes tour-delay {
  0% {
    width: 0%;
  }
  100% {
    width: 100%;
  }
}

.tour__controls .delay {
  background: rgba(117, 153, 0, 0.5);
  width: 0%;
}

.tour__controls .delay button {
  opacity: 0.7;
  color: #787878;
  mix-blend-mode: luminosity;
}

.tour__controls .highlight {
  position: absolute;
  right: 5px;
  top: -3px;
  padding: 8px 20px;
  border-radius: 8px;
  color: #FFF;
  text-decoration: none;
  background: #82BF56;
  border-bottom: 5px solid #759900;
  text-shadow: 0 -1px #759900;
  transition: all 0.1s;
  transform: translate(0px, 0px);
}

.tour__controls .highlight:hover {
  filter: brightness(1.06);
}

.tour__controls .highlight:active {
  transform: translate(0px, 5px);
  border-bottom-width: 1px;
  text-shadow: 0 0 #759900;
  filter: brightness(1);
}

.tour__controls .spinner {
  margin: 0;
  width: 1.5em;
  height: 1.5em;
  margin-right: .7em;
}

.tour__controls .pager {
  user-select: none;
}

.tour__controls .pager .page {
  margin: 0 3px;
  white-space: nowrap;
}

.tour__controls .pager input {
  border: none;
  background: rgba(98, 153, 36, 0.2);
}

.tour__controls .pager .search,
.tour__controls .pager input,
.tour__controls .pager .twitter-typeahead {
  height: 100%;
}

.tour__controls .search .tt-menu .spinner {
  float: none;
  margin: 10px auto;
}

.tour__standing {
  border: none;
}

.tour__standing .player {
  padding-left: 0px;
  padding-right: 0px;
}

.tour__standing .player .name {
  display: inline-block;
  vertical-align: middle;
  padding-right: 5px;
  max-width: 140px;
}

.tour__standing .user-link.long {
  letter-spacing: -0.7px;
}

.tour__standing .user-link .rating {
  font-style: italic;
  font-size: .8em;
}

.tour__standing tr.long .user-link .rating {
  display: block;
  padding-left: 0px;
}

.tour__standing tr {
  transition: all 150ms;
  user-select: none;
}

.tour__standing .loading tbody {
  opacity: 0.6;
  transition: opacity 0.3s;
}

.tour__standing:not(.created):not(.loading) tbody tr:hover {
  background: #ebb8bc;
  cursor: pointer;
}

.tour__standing tr.me td:first-child {
  background: linear-gradient(to right, #91b766 0px, #91b766 5px, rgba(0, 0, 0, 0) 5px, rgba(0, 0, 0, 0) 100%);
}

.tour__standing tr.active td:last-child {
  background: linear-gradient(to left, #d15862 0px, #d15862 5px, rgba(0, 0, 0, 0) 5px, rgba(0, 0, 0, 0) 100%);
}

.tour__standing td.rank {
  padding: 1em .5em 1em 10px;
  width: 1px;
  /* helps keeping it as small as possible */
}

.tour__standing td.rank i {
  opacity: .4;
  font-size: .8em;
}

.tour__standing .sheet {
  text-align: right;
  padding-right: 0;
  padding-left: 0;
  letter-spacing: .1em;
}

.tour__standing .sheet > * {
  display: inline-block;
}

.tour__standing .sheet score {
  opacity: 0.7;
}

.tour__standing tr.long .sheet {
  font-size: .9rem;
  letter-spacing: .06em;
}

.tour__standing tr.xlong .sheet {
  font-size: .85rem;
  letter-spacing: .04em;
}

.tour__standing double {
  color: #d59020;
  /* font-weight: bold; */
}

.tour__standing streak {
  color: #629924;
  /* font-weight: bold; */
}

.tour__standing .total {
  text-align: right;
  font-weight: bold;
  padding-right: 2vmin;
}

.tour__stats {
  background: white;
  padding: 1.7em 0;
  align-self: flex-start;
}

.tour__stats h2 {
  font-size: 1.5em;
  margin-bottom: 1em;
  text-align: center;
}

.tour__stats table {
  margin: auto;
}

.tour__stats td {
  font-weight: bold;
  padding-left: 1em;
  text-align: right;
  line-height: 2em;
}

.tour__duels {
  margin: 2vmin 0 0 0;
}

@media (min-width: 800px) {
  .tour__duels {
    margin: 0 0 0 2vmin;
  }
}

@media (min-width: 1260px) {
  .tour__duels {
    margin: 2vmin 0 0 0;
  }
}

.tour__duels h2 {
  font-size: 1.5em;
  margin-bottom: .2em;
  text-transform: uppercase;
  letter-spacing: 2px;
}

.tour__duels a {
  color: #4d4d4d;
  padding: .5em .7em;
  white-space: nowrap;
  line-height: 1.9em;
  border-top: 1px solid #e6e6e6;
  transition: all 150ms;
}

.tour__duels a:hover {
  background: #f2cfd2;
}

.tour__duels strong {
  font-size: 1.2em;
  color: #787878;
  display: block;
  max-width: 60%;
}

.tour__duels .rank {
  padding: .1em .5em;
  background: #f7f6f5;
}

.tour__duels .b .utitle,
.tour__duels .b .rank {
  margin-right: .3em;
}

.tour__duels .a .utitle,
.tour__duels .a .rank {
  margin-left: .3em;
}

.tour__actor-info {
  background: white;
  position: relative;
  align-self: flex-start;
}

.tour__actor-info .spinner {
  margin: 5em auto;
}

.tour__actor-info .close {
  position: absolute;
  top: 4px;
  right: 5px;
  opacity: .6;
  transition: all 150ms;
  color: #cc3333;
}

.tour__actor-info .close:hover {
  opacity: 1;
}

.tour__actor-info .stats {
  justify-content: center;
}

.tour__actor-info .stats h2 {
  font-size: 1.4em;
  padding: .6rem 1rem;
  border-bottom: 1px solid #d9d9d9;
}

.tour__actor-info .stats table {
  margin: 1em auto;
}

.tour__actor-info .stats td {
  font-weight: bold;
  padding-left: 10px;
  text-align: right;
  line-height: 1.8em;
}

.tour__actor-info .sublist {
  width: 100%;
}

.tour__actor-info .sublist tr {
  cursor: pointer;
  transition: background-color 150ms;
}

.tour__actor-info .sublist tr:nth-child(odd) {
  background: #f7f6f5;
}

.tour__actor-info .sublist tr:hover {
  background: #f8e7e9;
}

.tour__actor-info .sublist th, .tour__actor-info .sublist td {
  padding: .3em;
}

.tour__actor-info .sublist th {
  padding-left: 7px;
}

.tour__player-info .pairings {
  width: 100%;
}

.tour__player-info .pairings tr {
  cursor: pointer;
  transition: background-color 150ms;
}

.tour__player-info .pairings tr:nth-child(odd) {
  background: #f7f6f5;
}

.tour__player-info .pairings tr:hover {
  background: #f8e7e9;
}

.tour__player-info .pairings th, .tour__player-info .pairings td {
  padding: .3em;
}

.tour__player-info .pairings th {
  border-left: 3px solid transparent;
  transition: all 150ms;
}

.tour__player-info .pairings tr:hover th {
  border-color: #4d4d4d;
}

.tour__player-info .pairings tr.win:hover th {
  border-color: #629924;
}

.tour__player-info .pairings tr.loss:hover th {
  border-color: #cc3333;
}

.tour__player-info .pairings td:nth-child(2) {
  max-width: 200px;
}

.tour__player-info .pairings td:last-child {
  font-weight: bold;
  opacity: .8;
}

.tour__player-info .pairings tr.win td:last-child {
  color: #629924;
  opacity: 1;
}

.tour__player-info .pairings tr.loss td:last-child {
  color: #cc3333;
  opacity: 1;
}

.tour__player-info .color-icon {
  opacity: .6;
}

.tour__team-info .players {
  width: 100%;
}

.tour__team-info .players tr {
  cursor: pointer;
  transition: background-color 150ms;
}

.tour__team-info .players tr:nth-child(odd) {
  background: #f7f6f5;
}

.tour__team-info .players tr:hover {
  background: #f8e7e9;
}

.tour__team-info .players th, .tour__team-info .players td {
  padding: .3em 1em;
}

.tour__team-info .players td:last-child {
  text-align: right;
}

.tour__team-info .players .rating {
  font-style: italic;
  font-size: .8em;
}

.tour__team-info .players .leader::before {
  color: #d59020;
  margin-right: .15em;
}

.tour .pull-quote {
  margin-top: 30px;
  width: 300px;
}

.tour .box.created {
  padding-bottom: 2em;
  /* as quote margin */
}

.tour__faq {
  padding: 4em var(--box-padding);
  display: none;
}

@media (min-width: 800px) {
  .tour__faq {
    display: block;
  }
}

.tour__faq h2 {
  margin: 1.5em 0 .5em 0;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91cm5hbWVudC9jc3MvYnVpbGQvdG91cm5hbWVudC5zaG93LmxpZ2h0LmNzcyIsInNvdXJjZXMiOlsidG91cm5hbWVudC9jc3MvYnVpbGQvdG91cm5hbWVudC5zaG93LmxpZ2h0LnNjc3MiLCJjb21tb24vY3NzL3RoZW1lL19saWdodC5zY3NzIiwiY29tbW9uL2Nzcy90aGVtZS9fZGVmYXVsdC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fZnVuY3Rpb25zLnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9idWlsZC9fdG91cm5hbWVudC5zaG93LnNjc3MiLCJjb21tb24vY3NzL19wbHVnaW4uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvX2JyZWFrcG9pbnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fY29udGV4dC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19oZWxwZXJzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3BhcnNlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19xdWVyeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3NpbmdsZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvc2luZ2xlL19kZWZhdWx0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fZG91YmxlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQtcGFpci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kb3VibGUtc3RyaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL190cmlwbGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3RyaXBsZS9fZGVmYXVsdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3Jlc29sdXRpb24vX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbm8tcXVlcnkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fcmVzcG9uZC10by5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19sZWdhY3ktc2V0dGluZ3Muc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2FsbC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fei1pbmRleC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWVkaWEtcXVlcmllcy5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fdmFyaWFibGVzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L191bmlib2FyZC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWl4aW5zLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19leHRlbmRzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19mbGV4LnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19ib3guc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2ZsdWlkLXNpemUuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19mYnQuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19iYXItZ2xpZGVyLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fc2xpc3Quc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19xdW90ZS5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2ZpcmUtdHJvcGh5LnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fY29sb3ItaWNvbi5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2NvbnRleHQtc3RyZWFtZXIuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19wb2RpdW0uc2NzcyIsImNoYXQvY3NzL19jaGF0LnNjc3MiLCJjb21tb24vY3NzL2Jhc2UvX3Njcm9sbGJhci5zY3NzIiwiY2hhdC9jc3MvX3RhYi5zY3NzIiwiY2hhdC9jc3MvX21lbWJlcnMuc2NzcyIsImNoYXQvY3NzL19kaXNjdXNzaW9uLnNjc3MiLCJjaGF0L2Nzcy9fcGFsYW50aXIuc2NzcyIsInRvdXJuYW1lbnQvY3NzL19zaG93LnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9fbGF5b3V0LnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9fc2lkZS5zY3NzIiwidG91cm5hbWVudC9jc3MvX2ZlYXR1cmVkLnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9fYXBwLWhlYWRlci5zY3NzIiwidG91cm5hbWVudC9jc3MvX2FwcC1ub3RpY2Uuc2NzcyIsInRvdXJuYW1lbnQvY3NzL19hcHAtY29udHJvbC5zY3NzIiwidG91cm5hbWVudC9jc3MvX2FwcC1zdGFuZGluZy5zY3NzIiwidG91cm5hbWVudC9jc3MvX3N0YXRzLnNjc3MiLCJ0b3VybmFtZW50L2Nzcy9fZHVlbC5zY3NzIiwidG91cm5hbWVudC9jc3MvX2FjdG9yLWluZm8uc2NzcyIsInRvdXJuYW1lbnQvY3NzL19wbGF5ZXItaW5mby5zY3NzIiwidG91cm5hbWVudC9jc3MvX3RlYW0taW5mby5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL3RoZW1lL2xpZ2h0XCI7XG5AaW1wb3J0IFwidG91cm5hbWVudC5zaG93XCI7XG4iLCJAaW1wb3J0IFwiZGVmYXVsdFwiO1xuXG4kdGhlbWU6IFwibGlnaHRcIjtcbiR0aGVtZS1saWdodDogdHJ1ZTtcbiR0aGVtZS1kYXJrOiBmYWxzZTtcblxuJGMtYmctcGFnZTogaHNsKDAsIDAlLCAxMDAlKTtcbiRjLWJnLXBhZ2UtaW1nOiB1cmwoLi4vaW1hZ2VzL21vc2Nvdy1jaGVzc19wYXR0ZXJuX2xpZ2h0X2FuZ2xlZC0wMS5wbmcpO1xuJGMtYmctcGFnZS1iczogMTAlO1xuXG5AbWl4aW4gbWV0YWwtYmcge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woMCwgMCwgOTYpIDAlLCBoc2woMCwgMCwgOTMpIDEwMCUpO1xufVxuXG5AbWl4aW4gbWV0YWwge1xuICBAaW5jbHVkZSBtZXRhbC1iZztcblxuICB0ZXh0LXNoYWRvdzogJHRleHQtc2hhZG93O1xufVxuXG5AbWl4aW4gbWV0YWwtaG92ZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woMCwgMCwgOTgpIDAlLCBoc2woMCwgMCwgOTUpIDEwMCUpO1xuICB0ZXh0LXNoYWRvdzogJHRleHQtc2hhZG93O1xufVxuXG5AbWl4aW4gcGFnZS1tZXRhbCB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIG1peCgkYy1saW5rLCBoc2woMCwgMCUsIDEwMCUpLCAyMCUpIDAlLCBtaXgoJGMtbGluaywgaHNsKDAsIDAlLCA5NCUpLCAyMCUpIDEwMCUpO1xuICB0ZXh0LXNoYWRvdzogJHRleHQtc2hhZG93O1xufVxuXG5AbWl4aW4gcGFnZS1tZXRhbC1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIG1peCgkYy1saW5rLCAjZmZmLCAyNSUpIDAlLCBtaXgoJGMtbGluaywgYy1saWdodCgkYy1iZy1wYWdlLCA5MCUpLCAyNSUpIDEwMCUpO1xuICB0ZXh0LXNoYWRvdzogJHRleHQtc2hhZG93O1xufVxuXG5AbWl4aW4gdGhlbWUtc3R5bGUge31cbiIsIkBpbXBvcnQgXCIuLi9hYnN0cmFjdC9mdW5jdGlvbnNcIjtcblxuLyogQ29sb3JzICovXG5cbkBmdW5jdGlvbiBjLWRpbW1lcigkY29sb3IsICR3ZWlnaHQ6IDE3JSkge1xuICBAcmV0dXJuIG1peCgjZmZmLCAkY29sb3IsICR3ZWlnaHQpO1xufVxuXG5AZnVuY3Rpb24gYy1jbGVhcmVyKCRjb2xvciwgJHdlaWdodDogMTclKSB7XG4gIEByZXR1cm4gbWl4KCMwMDAsICRjb2xvciwgJHdlaWdodCk7XG59XG5cbiRjLXNpdGUtaHVlOiAzNztcblxuJGMtYmctcGFnZTogaHNsKCRjLXNpdGUtaHVlLCAxMCUsIDkyJSk7XG5cbiRjLWJnLXBhZ2UtaW1nOiBub25lO1xuJGMtYmctcGFnZS1iczogYXV0bztcblxuLy8gaHNsKDIxMCwgMTclLCA5NSUpXG4kYy1iZy1oaWdoOiBoc2woMCwgMCUsIDEwMCUpO1xuJGMtYmctbG93OiBoc2woMCwgMCUsIDg5JSk7XG5cbi8qIGV2ZW4gcm93cyBpbiBsaXN0IG9yIHRhYmxlcywgc3VidGxlIHNoYWRlIG9mICRjLWJnLWhpZ2ggKi9cbiRjLWJnLXplYnJhOiBoc2woJGMtc2l0ZS1odWUsIDEyJSwgOTYuNSUpO1xuJGMtYmctemVicmEyOiBoc2woJGMtc2l0ZS1odWUsIDEyJSwgOTIlKTtcblxuJGMtYm9keS1ncmFkaWVudDogaHNsKCRjLXNpdGUtaHVlLCAxMiUsIDg0JSk7XG5cbiRjLWZvbnQ6IGhzbCgwLCAwJSwgMzAlKTtcbiRjLWZvbnQtZGltOiBjLWxpZ2h0KCRjLWZvbnQsIDQ3JSk7XG4kYy1mb250LWRpbW1lcjogYy1saWdodCgkYy1mb250LCA3MCUpO1xuJGMtZm9udC1jbGVhcjogYy1saWdodCgkYy1mb250LCAxMiUpO1xuJGMtZm9udC1jbGVhcmVyOiBjLWxpZ2h0KCRjLWZvbnQsIDAlKTtcbiRjLXNoYWRlOiBjLWRpbW1lcigkYy1mb250LCA4MCUpO1xuJGMtZm9udC1wYWdlOiBjLWxpZ2h0KCRjLWZvbnQsIDM3JSk7XG5cbi8qIFByaW1hcnk6IGJsdWUgKi9cbiRjLXByaW1hcnk6ICNiZDExMWY7XG4kYy1wcmltYXJ5LWRpbTogYy1kaW1tZXIoJGMtcHJpbWFyeSk7XG4kYy1wcmltYXJ5LWNsZWFyOiBjLWNsZWFyZXIoJGMtcHJpbWFyeSk7XG4kYy1wcmltYXJ5LW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBwcmltYXJ5IGJhY2tncm91bmQgKi9cblxuLyogU2Vjb25kYXJ5OiBncmVlbiAqL1xuJGMtc2Vjb25kYXJ5OiBoc2woODgsIDYyJSwgMzclKTtcbiRjLXNlY29uZGFyeS1kaW06IGMtZGltbWVyKCRjLXNlY29uZGFyeSk7XG4kYy1zZWNvbmRhcnktZGltbWVyOiBjLWRpbW1lcigkYy1zZWNvbmRhcnksIDQwJSk7XG4kYy1zZWNvbmRhcnktb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIHNlY29uZGFyeSBiYWNrZ3JvdW5kICovXG5cbi8qIEFjY2VudDogb3JhbmdlICovXG4kYy1hY2NlbnQ6ICNiZDExMWY7XG4kYy1hY2NlbnQtZGltOiBjLWRpbW1lcigkYy1hY2NlbnQpO1xuJGMtYWNjZW50LWNsZWFyOiBjLWNsZWFyZXIoJGMtYWNjZW50KTtcbiRjLWFjY2VudC1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgYWNjZW50IGJhY2tncm91bmQgKi9cblxuLyogQnJhZzogZ29sZCAqL1xuJGMtYnJhZzogaHNsKDM3LCA3NCUsIDQ4JSk7XG4kYy1icmFnLW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBicmFnIGJhY2tncm91bmQgKi9cblxuLyogRXJyb3I6IHJlZCAqL1xuJGMtcmVkOiBoc2woMCwgNjAlLCA1MCUpO1xuJGMtZXJyb3I6ICRjLXJlZDtcbiRjLWVycm9yLW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBicmFnIGJhY2tncm91bmQgKi9cblxuLyogR29vZDogZ3JlZW4gKi9cbiRjLWdvb2Q6ICRjLXNlY29uZGFyeTtcbiRjLWdvb2Qtb3ZlcjogJGMtc2Vjb25kYXJ5LW92ZXI7XG5cbi8qIFdhcm46IG9yYW5nZSAqL1xuJGMtd2FybjogJGMtYnJhZztcbiRjLXdhcm4tb3ZlcjogJGMtYnJhZy1vdmVyO1xuXG4vKiBCYWQ6IHJlZCAqL1xuJGMtYmFkOiAkYy1lcnJvcjtcbiRjLWJhZC1vdmVyOiAkYy1lcnJvci1vdmVyO1xuXG4vKiBGYW5jeTogcGluayAqL1xuJGMtZmFuY3k6IGhzbCgyOTQsIDYxJSwgNjIlKTtcbiRjLWZhbmN5LW92ZXI6IHdoaXRlO1xuXG4vKiB0ZXh0IG92ZXIgYnJhZyBiYWNrZ3JvdW5kICovXG5cbiRjLWxpbms6ICRjLXByaW1hcnk7XG4kYy1saW5rLWRpbTogJGMtcHJpbWFyeS1kaW07XG4kYy1saW5rLWNsZWFyOiAkYy1wcmltYXJ5LWNsZWFyO1xuJGMtbGluay1ob3ZlcjogYy1jbGVhcmVyKHNhdHVyYXRlKCRjLXByaW1hcnksIDEwMCUpLCAzNSUpO1xuJGMtbGluay1vdmVyOiAkYy1wcmltYXJ5LW92ZXI7XG5cbiRjLWJnLWJveDogJGMtYmctaGlnaDtcbiRjLWJnLWJveC1vcGFxdWU6ICRjLWJnLWJveDtcbiRjLWJnLWlucHV0OiBjLWxpZ2h0KCRjLWJnLXBhZ2UsIDk4JSk7XG5cbiRjLWJvcmRlcjogaHNsKDAsIDAlLCA4NSUpO1xuJGMtYm9yZGVyLXBhZ2U6IGhzbCgwLCAwJSwgODAlKTtcblxuJGMtcGFnZS1tYXNrOiBoc2xhKDAsIDAsIDAlLCAwLjYpO1xuXG4kYy1iZy1wb3B1cDogJGMtYmctaGlnaDtcbiRjLXBvcHVwOiAkYy1mb250O1xuXG4kYy1iZy1oZWFkZXItZHJvcGRvd246ICRjLWJnLXBvcHVwO1xuJGMtaGVhZGVyLWRyb3Bkb3duOiAkYy1wb3B1cDtcblxuJGMtZm9udC1zaGFkb3c6IHdoaXRlO1xuJHRleHQtc2hhZG93OiAwIDFweCAwICRjLWZvbnQtc2hhZG93O1xuXG4kYy1ib3Q6ICRjLWZhbmN5O1xuXG4kYy1wYWdlLWlucHV0OiAkYy1iZy1sb3c7XG5cbi8qIEJvcmRlcnMgKi9cblxuJGJvcmRlci13aWR0aDogMXB4O1xuJGJvcmRlci1zdHlsZTogc29saWQ7XG4kYm9yZGVyOiAkYm9yZGVyLXdpZHRoICRib3JkZXItc3R5bGUgJGMtYm9yZGVyO1xuXG4vKiBTaGFkb3dzICovXG5cbiRib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7XG5cbi8vICRib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsMCwwLC4xNTcpO1xuXG4vKiBDdXN0b20gKi9cbiR3YXJuaW5nLWljb24tY29sb3I6IGhzbCg0NCwgMTAwJSwgNDYlKTtcbiIsIkBmdW5jdGlvbiBjLWxpZ2h0KCRjb2xvciwgJHZhbHVlKSB7XG4gIEByZXR1cm4gY2hhbmdlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJHZhbHVlKTtcbn1cblxuQGZ1bmN0aW9uIGltZy11cmwoJHBhdGgpIHtcbiAgQHJldHVybiB1cmwoXCIjeyRpbWctcGF0aH0vI3skcGF0aH1cIik7XG59XG4iLCJAaW1wb3J0IFwiLi4vLi4vLi4vY29tbW9uL2Nzcy9wbHVnaW5cIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9mYnRcIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9iYXItZ2xpZGVyXCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvc2xpc3RcIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9xdW90ZVwiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2ZpcmUtdHJvcGh5XCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvY29sb3ItaWNvblwiO1xuQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2NvbnRleHQtc3RyZWFtZXJcIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9wb2RpdW1cIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9jaGF0L2Nzcy9jaGF0XCI7XG5AaW1wb3J0IFwiLi4vc2hvd1wiO1xuIiwiLyogQ29tbW9uIGltcG9ydHMgZm9yIGFsbCBDU1MgbW9kdWxlcyAqL1xuXG5AaW1wb3J0IFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50XCI7XG5cbkBpbXBvcnQgXCJhYnN0cmFjdC9hbGxcIjtcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGVmYXVsdCBWYXJpYWJsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJEJyZWFrcG9pbnQtU2V0dGluZ3M6IChcbiAgJ2RlZmF1bHQgbWVkaWEnOiBhbGwsXG4gICdkZWZhdWx0IGZlYXR1cmUnOiBtaW4td2lkdGgsXG4gICdkZWZhdWx0IHBhaXInOiB3aWR0aCxcblxuICAnZm9yY2UgYWxsIG1lZGlhIHR5cGUnOiBmYWxzZSxcbiAgJ3RvIGVtcyc6IGZhbHNlLFxuICAndHJhbnNmb3JtIHJlc29sdXRpb25zJzogdHJ1ZSxcblxuICAnbm8gcXVlcmllcyc6IGZhbHNlLFxuICAnbm8gcXVlcnkgZmFsbGJhY2tzJzogZmFsc2UsXG5cbiAgJ2Jhc2UgZm9udCBzaXplJzogMTZweCxcblxuICAnbGVnYWN5IHN5bnRheCc6IGZhbHNlXG4pO1xuXG4kYnJlYWtwb2ludDogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwiYnJlYWtwb2ludC9zZXR0aW5nc1wiO1xuQGltcG9ydCAnYnJlYWtwb2ludC9jb250ZXh0JztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvaGVscGVycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L3BhcnNlcnMnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9uby1xdWVyeSc7XG5cbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcmVzcG9uZC10byc7XG5cbkBpbXBvcnQgXCJicmVha3BvaW50L2xlZ2FjeS1zZXR0aW5nc1wiO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgbGVnYWN5LXNldHRpbmdzLXdhcm5pbmc7XG5cbiAgLy8gUmVzZXQgY29udGV4dHNcbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG5cbiAgJGJyZWFrcG9pbnQ6IGJyZWFrcG9pbnQoJHF1ZXJ5LCBmYWxzZSk7XG5cbiAgJHF1ZXJ5LXN0cmluZzogbWFwLWdldCgkYnJlYWtwb2ludCwgJ3F1ZXJ5Jyk7XG4gICRxdWVyeS1mYWxsYmFjazogbWFwLWdldCgkYnJlYWtwb2ludCwgJ2ZhbGxiYWNrJyk7XG5cbiAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLWdldCgkYnJlYWtwb2ludCwgJ2NvbnRleHQgaG9sZGVyJykgIWdsb2JhbDtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogbWFwLWdldCgkYnJlYWtwb2ludCwgJ3F1ZXJ5IGNvdW50JykgIWdsb2JhbDtcblxuICAvLyBBbGxvdyBmb3IgYW4gYXMtbmVlZGVkIG92ZXJyaWRlIG9yIHVzYWdlIG9mIG5vIHF1ZXJ5IGZhbGxiYWNrLlxuICBAaWYgJG5vLXF1ZXJ5ICE9IGZhbHNlIHtcbiAgICAkcXVlcnktZmFsbGJhY2s6ICRuby1xdWVyeTtcbiAgfVxuXG4gIEBpZiAkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2Uge1xuICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCduby1xdWVyeScsICRxdWVyeS1mYWxsYmFjayk7XG4gIH1cblxuICAvLyBQcmludCBPdXQgUXVlcnkgU3RyaW5nXG4gIEBpZiBub3QgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSB7XG4gICAgQG1lZGlhICN7JHF1ZXJ5LXN0cmluZ30ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSAhPSBmYWxzZSBvciBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpID09IHRydWUge1xuXG4gICAgJHR5cGU6IHR5cGUtb2YoYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpKTtcbiAgICAkcHJpbnQ6IGZhbHNlO1xuXG4gICAgQGlmICgkdHlwZSA9PSAnYm9vbCcpIHtcbiAgICAgICRwcmludDogdHJ1ZTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKCR0eXBlID09ICdzdHJpbmcnKSB7XG4gICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgICAgICRwcmludDogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgKCR0eXBlID09ICdsaXN0Jykge1xuICAgICAgQGVhY2ggJHdyYXBwZXIgaW4gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayA9PSAkd3JhcHBlciB7XG4gICAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gV3JpdGUgRmFsbGJhY2tcbiAgICBAaWYgKCRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSkgYW5kICgkcHJpbnQgPT0gdHJ1ZSkge1xuICAgICAgJHR5cGUtZmFsbGJhY2s6IHR5cGUtb2YoJHF1ZXJ5LWZhbGxiYWNrKTtcblxuICAgICAgQGlmICgkdHlwZS1mYWxsYmFjayAhPSAnYm9vbCcpIHtcbiAgICAgICAgI3skcXVlcnktZmFsbGJhY2t9ICYge1xuICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cygpO1xufVxuXG5cbkBtaXhpbiBtcSgkcXVlcnksICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEhhcyBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWhhcygkc2V0dGluZykge1xuICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnQsICRzZXR0aW5nKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2V0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWdldCgkc2V0dGluZykge1xuICBAaWYgYnJlYWtwb2ludC1oYXMoJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJGJyZWFrcG9pbnQsICRzZXR0aW5nKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRCcmVha3BvaW50LVNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGlmIChzdHItaW5kZXgoJHNldHRpbmcsICctJykgb3Igc3RyLWluZGV4KCRzZXR0aW5nLCAnXycpKSBhbmQgc3RyLWluZGV4KCRzZXR0aW5nLCAnICcpID09IG51bGwge1xuICAgIEB3YXJuIFwiV29yZHMgaW4gQnJlYWtwb2ludCBzZXR0aW5ncyBzaG91bGQgYmUgc2VwYXJhdGVkIGJ5IHNwYWNlcywgbm90IGRhc2hlcyBvciB1bmRlcnNjb3Jlcy4gUGxlYXNlIHJlcGxhY2UgZGFzaGVzIGFuZCB1bmRlcnNjb3JlcyBiZXR3ZWVuIHdvcmRzIHdpdGggc3BhY2VzLiBTZXR0aW5ncyB3aWxsIG5vdCB3b3JrIGFzIGV4cGVjdGVkIHVudGlsIGNoYW5nZWQuXCI7XG4gIH1cbiAgJGJyZWFrcG9pbnQ6IG1hcC1tZXJnZSgkYnJlYWtwb2ludCwgKCRzZXR0aW5nOiAkdmFsdWUpKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRicmVha3BvaW50LWNoYW5nZTogYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gYmtwdC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cbkBtaXhpbiBia3B0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlbW92ZSBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICBAaWYgbGVuZ3RoKCRzZXR0aW5ncykgPT0gMSB7XG4gICAgJHNldHRpbmdzOiBudGgoJHNldHRpbmdzLCAxKTtcbiAgfVxuXG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJGJyZWFrcG9pbnQ6IG1hcC1yZW1vdmUoJGJyZWFrcG9pbnQsICRzZXR0aW5nKSAhZ2xvYmFsO1xuICB9XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gICRicmVha3BvaW50LXJlc2V0OiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncyk7XG59XG5cbkBtaXhpbiBia3B0LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICAkYnJlYWtwb2ludC1yZXNldDogYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MpO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBCcmVha3BvaW50IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKTtcbiRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBIYXMgQ29udGV4dFxuLy8gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB5b3UgYXJlIGluc2lkZSBhIEJyZWFrcG9pbnQgcXVlcnlcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaGFzLWNvbnRleHQoKSB7XG4gIEBpZiBsZW5ndGgoJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCkge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgR2V0IENvbnRleHRcbi8vICRmZWF0dXJlOiBJbnB1dCBmZWF0dXJlIHRvIGdldCBpdCdzIGN1cnJlbnQgTVEgY29udGV4dC4gUmV0dXJucyBmYWxzZSBpZiBubyBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWdldC1jb250ZXh0KCRmZWF0dXJlKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSkge1xuICAgICRnZXQ6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICAgIC8vIFNwZWNpYWwgaGFuZGxpbmcgb2Ygbm8tcXVlcnkgZnJvbSBnZXQgc2lkZSBzbyAvZmFsc2UvIHByZXBlbmRzIGFyZW4ndCByZXR1cm5lZFxuICAgIEBpZiAkZmVhdHVyZSA9PSAnbm8tcXVlcnknIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRnZXQpID09ICdsaXN0JyBhbmQgbGVuZ3RoKCRnZXQpID4gMSBhbmQgbnRoKCRnZXQsIDEpID09IGZhbHNlIHtcbiAgICAgICAgJGdldDogbnRoKCRnZXQsIGxlbmd0aCgkZ2V0KSk7XG4gICAgICB9XG4gICAgfVxuICAgIEByZXR1cm4gJGdldDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIGJyZWFrcG9pbnQtaGFzLWNvbnRleHQoKSBhbmQgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICBAcmV0dXJuIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBmdW5jdGlvbiB0byBzZXQgY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpIHtcbiAgQGlmICR2YWx1ZSA9PSAnbW9ub2Nocm9tZScge1xuICAgICRmZWF0dXJlOiAnbW9ub2Nocm9tZSc7XG4gIH1cblxuICAkY3VycmVudDogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gIEBpZiAkY3VycmVudCBhbmQgbGVuZ3RoKCRjdXJyZW50KSA9PSAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICBAd2FybiBcIllvdSBoYXZlIGFscmVhZHkgcXVlcmllZCBhZ2FpbnN0IGAjeyRmZWF0dXJlfWAuIFVuZXhwZWN0ZWQgdGhpbmdzIG1heSBoYXBwZW4gaWYgeW91IHF1ZXJ5IGFnYWluc3QgdGhlIHNhbWUgZmVhdHVyZSBtb3JlIHRoYW4gb25jZSBpbiB0aGUgc2FtZSBgYW5kYCBxdWVyeS4gQnJlYWtwb2ludCBpcyBvdmVyd3JpdGluZyB0aGUgY3VycmVudCBjb250ZXh0IHdpdGggYCN7JHZhbHVlfWBcIjtcbiAgfVxuXG4gIEBpZiBub3QgbWFwLWhhcy1rZXkoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpIHtcbiAgICAkdi1ob2xkZXI6ICgpO1xuICAgIEBmb3IgJGkgZnJvbSAxIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCAkdmFsdWUpO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGZlYXR1cmU6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cbiAgQGVsc2Uge1xuICAgICR2LWhvbGRlcjogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCR2LWhvbGRlcik7XG4gICAgQGZvciAkaSBmcm9tICRsZW5ndGggdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCAtIDEge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCAkdmFsdWUpO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGZlYXR1cmU6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cblxuICBAcmV0dXJuIHRydWU7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBmdW5jdGlvbiB0byByZXNldCBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMge1xuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb252ZXJ0cyB0aGUgaW5wdXQgdmFsdWUgdG8gQmFzZSBFTXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkdmFsdWUpIHtcbiAgJHZhbHVlLXVuaXQ6IHVuaXQoJHZhbHVlKTtcblxuICAvLyBXaWxsIGNvbnZlcnQgcmVsYXRpdmUgRU1zIGludG8gcm9vdCBFTXMuXG4gIEBpZiBicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSBhbmQgdHlwZS1vZihicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSkgPT0gJ251bWJlcicgYW5kICR2YWx1ZS11bml0ID09ICdlbScge1xuICAgICRiYXNlLXVuaXQ6IHVuaXQoYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpO1xuXG4gICAgQGlmICRiYXNlLXVuaXQgPT0gJ3B4JyBvciAkYmFzZS11bml0ID09ICclJyBvciAkYmFzZS11bml0ID09ICdlbScgb3IgJGJhc2UtdW5pdCA9PSAncHQnIHtcbiAgICAgIEByZXR1cm4gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSkgLyBiYXNlLWNvbnZlcnNpb24oYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpICogMWVtO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAnI3ticmVha3BvaW50LWdldChcXCdiYXNlIGZvbnQgc2l6ZVxcJyl9IGlzIG5vdCBzZXQgaW4gdmFsaWQgdW5pdHMgZm9yIGZvbnQgc2l6ZSEnO1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSk7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGJhc2UtY29udmVyc2lvbigkdmFsdWUpIHtcbiAgJHVuaXQ6IHVuaXQoJHZhbHVlKTtcblxuICBAaWYgJHVuaXQgPT0gJ3B4JyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxNnB4ICogMWVtO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICclJyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxMDAlICogMWVtO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICdlbScge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICdwdCcge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTJwdCAqIDFlbTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4vLyAgICBAd2FybiAnRXZlcnl0aGluZyBpcyB0ZXJyaWJsZSEgV2hhdCBoYXZlIHlvdSBkb25lPyEnO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBoYXZlIGEgbWluL21heCBwYWlyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LW1pbi1tYXgtZmVhdHVyZXM6ICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3ItaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWFzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWhlaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLXdpZHRoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbm9jaHJvbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluLW1heCgkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1taW4tbWF4LWZlYXR1cmVzIHtcbiAgICBAaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gaGF2ZSBhIHN0cmluZyB2YWx1ZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1zdHJpbmctZmVhdHVyZXM6ICAnb3JpZW50YXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjYW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1hc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2x1bWlub3NpdHknO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtc3RyaW5nLWZlYXR1cmVzIHtcbiAgICBAaWYgYnJlYWtwb2ludC1taW4tbWF4KCRpdGVtKSB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21pbi0jeyRpdGVtfScgb3IgJGZlYXR1cmUgPT0gJ21heC0jeyRpdGVtfScge1xuICAgICAgICBAcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgaXMgYSBtZWRpYSB0eXBlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LW1lZGlhLXR5cGVzOiAgJ2FsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdicmFpbGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VtYm9zc2VkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhbmRoZWxkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2plY3Rpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NyZWVuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NwZWVjaCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICd0dHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAndHYnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pcy1tZWRpYSgkZmVhdHVyZSkge1xuICBAZWFjaCAkbWVkaWEgaW4gJGJyZWFrcG9pbnQtbWVkaWEtdHlwZXMge1xuICAgIEBpZiAoJGZlYXR1cmUgPT0gJG1lZGlhKSBvciAoJGZlYXR1cmUgPT0gJ25vdCAjeyRtZWRpYX0nKSBvciAoJGZlYXR1cmUgPT0gJ29ubHkgI3skbWVkaWF9Jykge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBzdGFuZCBhbG9uZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nLWZlYXR1cmVzOiAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yLWluZGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdncmlkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb25vY2hyb21lJztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nLWZlYXR1cmVzIHtcbiAgICBAaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pcy1yZXNvbHV0aW9uKCRmZWF0dXJlKSB7XG4gICRyZXNvbHV0aW9uczogJ2RldmljZS1waXhlbC1yYXRpbycsICdkcHInO1xuXG4gIEBpZiBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykge1xuICAgICRyZXNvbHV0aW9uczogYXBwZW5kKCRyZXNvbHV0aW9ucywgJ3Jlc29sdXRpb24nKTtcbiAgfVxuXG4gIEBlYWNoICRyZXNvIGluICRyZXNvbHV0aW9ucyB7XG4gICAgQGlmIGluZGV4KCRmZWF0dXJlLCAkcmVzbykgb3IgaW5kZXgoJGZlYXR1cmUsICdtaW4tI3skcmVzb30nKSBvciBpbmRleCgkZmVhdHVyZSwgJ21heC0jeyRyZXNvfScpIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGFyc2VyIFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwicGFyc2Vycy9xdWVyeVwiO1xuQGltcG9ydCBcInBhcnNlcnMvc2luZ2xlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy9kb3VibGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3RyaXBsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvcmVzb2x1dGlvblwiO1xuXG4kTWVtby1FeGlzdHM6IGZ1bmN0aW9uLWV4aXN0cyhtZW1vLWdldCkgYW5kIGZ1bmN0aW9uLWV4aXN0cyhtZW1vLXNldCk7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBGdW5jdGlvblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludCgkcXVlcnksICRjb250ZXh0cy4uLikge1xuICAkcnVuOiB0cnVlO1xuICAkcmV0dXJuOiAoKTtcblxuICAvLyBHcmFiIHRoZSBNZW1vIE91dHB1dCBpZiBNZW1vaXphdGlvbiBjYW4gYmUgYSB0aGluZ1xuICBAaWYgJE1lbW8tRXhpc3RzIHtcbiAgICAkcmV0dXJuOiBtZW1vLWdldChicmVha3BvaW50LCBicmVha3BvaW50ICRxdWVyeSAkY29udGV4dHMpO1xuXG4gICAgQGlmICRyZXR1cm4gIT0gbnVsbCB7XG4gICAgICAkcnVuOiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBAaWYgbm90ICRNZW1vLUV4aXN0cyBvciAkcnVuIHtcbiAgICAvLyBJbnRlcm5hbCBWYXJpYWJsZXNcbiAgICAkcXVlcnktc3RyaW5nOiAnJztcbiAgICAkcXVlcnktZmFsbGJhY2s6IGZhbHNlO1xuICAgICRyZXR1cm46ICgpO1xuXG4gICAgLy8gUmVzZXJ2ZSBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkaG9sZGVyLWNvbnRleHQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI7XG4gICAgJGhvbGRlci1xdWVyeS1jb3VudDogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDtcblxuICAgIC8vIFJlc2V0IEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xuXG5cbiAgICAvLyBUZXN0IHRvIHNlZSBpZiBpdCdzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3RcbiAgICAkb3ItbGlzdDogaWYobGlzdC1zZXBhcmF0b3IoJHF1ZXJ5KSA9PSAnY29tbWEnLCB0cnVlLCBmYWxzZSk7XG5cblxuICAgIEBpZiAoJG9yLWxpc3QgPT0gZmFsc2UgYW5kIGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4JykgPT0gZmFsc2UpIHtcbiAgICAgICRxdWVyeS1zdHJpbmc6IGJyZWFrcG9pbnQtcGFyc2UoJHF1ZXJ5KTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGxlbmd0aDogbGVuZ3RoKCRxdWVyeSk7XG5cbiAgICAgICRsYXN0OiBudGgoJHF1ZXJ5LCAkbGVuZ3RoKTtcbiAgICAgICRxdWVyeS1mYWxsYmFjazogYnJlYWtwb2ludC1uby1xdWVyeSgkbGFzdCk7XG5cbiAgICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSB7XG4gICAgICAgICRsZW5ndGg6ICRsZW5ndGggLSAxO1xuICAgICAgfVxuXG4gICAgICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4JykgPT0gdHJ1ZSkge1xuICAgICAgICAkbXE6ICgpO1xuXG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAgICAgJG1xOiBhcHBlbmQoJG1xLCBudGgoJHF1ZXJ5LCAkaSksIGNvbW1hKTtcbiAgICAgICAgfVxuXG4gICAgICAgICRxdWVyeS1zdHJpbmc6IGJyZWFrcG9pbnQtcGFyc2UoJG1xKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHF1ZXJ5LXN0cmluZzogJyc7XG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAgICAgJHF1ZXJ5LXN0cmluZzogJHF1ZXJ5LXN0cmluZyArIGlmKCRpID09IDEsICcnLCAnLCAnKSArIGJyZWFrcG9pbnQtcGFyc2UobnRoKCRxdWVyeSwgJGkpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRyZXR1cm46ICgncXVlcnknOiAkcXVlcnktc3RyaW5nLFxuICAgICAgICAnZmFsbGJhY2snOiAkcXVlcnktZmFsbGJhY2ssXG4gICAgICAgICdjb250ZXh0IGhvbGRlcic6ICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsXG4gICAgICAgICdxdWVyeSBjb3VudCc6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnRcbiAgICApO1xuICAgIEBpZiBsZW5ndGgoJGNvbnRleHRzKSA+IDAgYW5kIG50aCgkY29udGV4dHMsIDEpICE9IGZhbHNlIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2Uge1xuICAgICAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgnbm8tcXVlcnknLCAkcXVlcnktZmFsbGJhY2spO1xuICAgICAgfVxuICAgICAgJGNvbnRleHQtbWFwOiAoKTtcbiAgICAgIEBlYWNoICRjb250ZXh0IGluICRjb250ZXh0cyB7XG4gICAgICAgICRjb250ZXh0LW1hcDogbWFwLW1lcmdlKCRjb250ZXh0LW1hcCwgKCRjb250ZXh0OiBicmVha3BvaW50LWdldC1jb250ZXh0KCRjb250ZXh0KSkpO1xuICAgICAgfVxuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sIChjb250ZXh0OiAkY29udGV4dC1tYXApKTtcbiAgICB9XG5cbiAgICAvLyBSZXNldCBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcblxuICAgIEBpZiAkTWVtby1FeGlzdHMge1xuICAgICAgJGhvbGRlcjogbWVtby1zZXQoYnJlYWtwb2ludCwgYnJlYWtwb2ludCAkcXVlcnkgJGNvbnRleHRzLCAkcmV0dXJuKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2VuZXJhbCBCcmVha3BvaW50IFBhcnNlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZSgkcXVlcnkpIHtcbiAgLy8gSW5jcmVhc2UgbnVtYmVyIG9mICdhbmQnIHF1ZXJpZXNcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCArIDEgIWdsb2JhbDtcblxuICAvLyBTZXQgdXAgTWVkaWEgVHlwZVxuICAkcXVlcnktcHJpbnQ6ICcnO1xuXG4gICRmb3JjZS1hbGw6ICgoYnJlYWtwb2ludC1nZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJykgPT0gdHJ1ZSkgYW5kIChicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpID09ICdhbGwnKSk7XG4gICRlbXB0eS1tZWRpYTogdHJ1ZTtcbiAgQGlmICgkZm9yY2UtYWxsID09IHRydWUpIG9yIChicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpICE9ICdhbGwnKSB7XG4gICAgLy8gRm9yY2UgdGhlIHByaW50IG9mIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGUgaWYgKGZvcmNlIGFsbCBpcyB0cnVlIGFuZCBkZWZhdWx0IG1lZGlhIHR5cGUgaXMgYWxsKSBvciAoZGVmYXVsdCBtZWRpYSB0eXBlIGlzIG5vdCBhbGwpXG4gICAgJHF1ZXJ5LXByaW50OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpO1xuICAgICRlbXB0eS1tZWRpYTogZmFsc2U7XG4gIH1cblxuXG4gICRxdWVyeS1yZXNvbHV0aW9uOiBmYWxzZTtcblxuICAkcXVlcnktaG9sZGVyOiBicmVha3BvaW50LXBhcnNlLXF1ZXJ5KCRxdWVyeSk7XG5cblxuXG4gIC8vIExvb3Agb3ZlciBlYWNoIHBhcnNlZCBvdXQgcXVlcnkgYW5kIHdyaXRlIGl0IHRvICRxdWVyeS1wcmludFxuICAkZmlyc3Q6IHRydWU7XG5cbiAgQGVhY2ggJGZlYXR1cmUgaW4gJHF1ZXJ5LWhvbGRlciB7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCRmZWF0dXJlKTtcblxuICAgIC8vIFBhcnNlIGEgc2luZ2xlIGZlYXR1cmVcbiAgICBAaWYgKCRsZW5ndGggPT0gMSkge1xuICAgICAgLy8gRmVhdHVyZSBpcyBjdXJyZW50bHkgYSBsaXN0LCBncmFiIHRoZSBhY3R1YWwgdmFsdWVcbiAgICAgICRmZWF0dXJlOiBudGgoJGZlYXR1cmUsIDEpO1xuXG4gICAgICAvLyBNZWRpYSBUeXBlIG11c3QgYnkgY29udmVudGlvbiBiZSB0aGUgZmlyc3QgaXRlbSwgc28gaXQncyBzYWZlIHRvIGZsYXQgb3ZlcnJpZGUgJHF1ZXJ5LXByaW50LCB3aGljaCByaWdodCBub3cgc2hvdWxkIG9ubHkgYmUgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZVxuICAgICAgQGlmIChicmVha3BvaW50LWlzLW1lZGlhKCRmZWF0dXJlKSkge1xuICAgICAgICBAaWYgKCRmb3JjZS1hbGwgPT0gdHJ1ZSkgb3IgKCRmZWF0dXJlICE9ICdhbGwnKSB7XG4gICAgICAgICAgLy8gRm9yY2UgdGhlIHByaW50IG9mIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGUgaWYgKGZvcmNlIGFsbCBpcyB0cnVlIGFuZCBkZWZhdWx0IG1lZGlhIHR5cGUgaXMgYWxsKSBvciAoZGVmYXVsdCBtZWRpYSB0eXBlIGlzIG5vdCBhbGwpXG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAkZmVhdHVyZTtcbiAgICAgICAgICAkZW1wdHktbWVkaWE6IGZhbHNlO1xuXG4gICAgICAgICAgLy8gU2V0IENvbnRleHRcbiAgICAgICAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtZWRpYSwgJHF1ZXJ5LXByaW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFBhcnNlIGEgZG91YmxlIGZlYXR1cmVcbiAgICBAZWxzZSBpZiAoJGxlbmd0aCA9PSAyKSB7XG4gICAgICBAaWYgKGJyZWFrcG9pbnQtaXMtcmVzb2x1dGlvbigkZmVhdHVyZSkgIT0gZmFsc2UpIHtcbiAgICAgICAgJHF1ZXJ5LXJlc29sdXRpb246ICRmZWF0dXJlO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcGFyc2VkOiBudWxsO1xuICAgICAgICAvLyBJZiBpdCdzIGEgc3RyaW5nL251bWJlciBwYWlyLFxuICAgICAgICAvLyB3ZSBjaGVjayB0byBzZWUgaWYgb25lIGlzIGEgc2luZ2xlLXN0cmluZyB2YWx1ZSxcbiAgICAgICAgLy8gdGhlbiB3ZSBwYXJzZSBpdCBhcyBhIG5vcm1hbCBkb3VibGVcbiAgICAgICAgJGFscGhhOiBudGgoJGZlYXR1cmUsIDEpO1xuICAgICAgICAkYmV0YTogbnRoKCRmZWF0dXJlLCAyKTtcbiAgICAgICAgQGlmIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkYWxwaGEpIG9yIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkYmV0YSkge1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRhbHBoYSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRiZXRhLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFBhcnNlIGEgdHJpcGxlIGZlYXR1cmVcbiAgICBAZWxzZSBpZiAoJGxlbmd0aCA9PSAzKSB7XG4gICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXRyaXBsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICB9XG5cbiAgfVxuXG4gIEBpZiAoJHF1ZXJ5LXJlc29sdXRpb24gIT0gZmFsc2UpIHtcbiAgICAkcXVlcnktcHJpbnQ6IGJyZWFrcG9pbnQtYnVpbGQtcmVzb2x1dGlvbigkcXVlcnktcHJpbnQsICRxdWVyeS1yZXNvbHV0aW9uLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gIH1cblxuICAvLyBMb29wIHRocm91Z2ggZWFjaCBmZWF0dXJlIHRoYXQncyBiZWVuIGRldGVjdGVkIHNvIGZhciBhbmQgYXBwZW5kICdmYWxzZScgdG8gdGhlIHRoZSB2YWx1ZSBsaXN0IHRvIGluY3JlbWVudCB0aGVpciBjb3VudGVyc1xuICBAZWFjaCAkZiwgJHYgaW4gJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciB7XG4gICAgJHYtaG9sZGVyOiAkdjtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHYtaG9sZGVyKTtcbiAgICBAaWYgbGVuZ3RoKCR2LWhvbGRlcikgPCAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgIEBmb3IgJGkgZnJvbSAkbGVuZ3RoIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgICBAaWYgJGYgPT0gJ21lZGlhJyB7XG4gICAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZjogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gJHF1ZXJ5LXByaW50O1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtcXVlcnkoJHF1ZXJ5KSB7XG4gIC8vIFBhcnNlIGZlYXR1cmVzIG91dCBvZiBhbiBpbmRpdmlkdWFsIHF1ZXJ5XG4gICRmZWF0dXJlLWhvbGRlcjogKCk7XG4gICRxdWVyeS1ob2xkZXI6ICgpO1xuICAkbGVuZ3RoOiBsZW5ndGgoJHF1ZXJ5KTtcblxuICBAaWYgJGxlbmd0aCA9PSAyIHtcbiAgICAvLyBJZiB3ZSd2ZSBnb3QgYSBzdHJpbmcvbnVtYmVyLCBudW1iZXIvc3RyaW5nLCBjaGVjayB0byBzZWUgaWYgaXQncyBhIHZhbGlkIHN0cmluZy9udW1iZXIgcGFpciBvciB0d28gc2luZ2xlc1xuICAgIEBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdudW1iZXInKSBvciAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdzdHJpbmcnKSB7XG5cbiAgICAgICRudW1iZXI6ICcnO1xuICAgICAgJHZhbHVlOiAnJztcblxuICAgICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIHtcbiAgICAgICAgJG51bWJlcjogbnRoKCRxdWVyeSwgMik7XG4gICAgICAgICR2YWx1ZTogbnRoKCRxdWVyeSwgMSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRudW1iZXI6IG50aCgkcXVlcnksIDEpO1xuICAgICAgICAkdmFsdWU6IG50aCgkcXVlcnksIDIpO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgc3RyaW5nIHZhbHVlIGNhbiBiZSBhIHNpbmdsZSB2YWx1ZSwgY2hlY2sgdG8gc2VlIGlmIHRoZSBudW1iZXIgcGFzc2VkIGluIGlzIGEgdmFsaWQgaW5wdXQgZm9yIHNhaWQgc2luZ2xlIHZhbHVlLiBGb3J0dW5hdGVseSwgYWxsIGN1cnJlbnQgc2luZ2xlLXZhbHVlIG9wdGlvbnMgb25seSBhY2NlcHQgdW5pdGxlc3MgbnVtYmVycywgc28gdGhpcyBjaGVjayBpcyBlYXN5LlxuICAgICAgQGlmIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkdmFsdWUpIHtcbiAgICAgICAgQGlmIHVuaXRsZXNzKCRudW1iZXIpIHtcbiAgICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkdmFsdWUsICRudW1iZXIsIHNwYWNlKTtcbiAgICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIGEgbWVkaWEgdHlwZSwgc3BsaXQgdGhlIHF1ZXJ5XG4gICAgICBAaWYgYnJlYWtwb2ludC1pcy1tZWRpYSgkdmFsdWUpIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDEpKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDIpKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgICAgLy8gSWYgaXQncyBub3QgYSBzaW5nbGUgZmVhdHVyZSwgd2UncmUganVzdCBnb2luZyB0byBhc3N1bWUgaXQncyBhIHByb3BlciBzdHJpbmcvdmFsdWUgcGFpciwgYW5kIHJvbGwgd2l0aCBpdC5cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJHZhbHVlLCAkbnVtYmVyLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuXG4gICAgfVxuICAgIC8vIElmIHRoZXkncmUgYm90aCBudW1iZXJzLCB3ZSBhc3N1bWUgaXQncyBhIGRvdWJsZSBhbmQgcm9sbCB3aXRoIHRoYXRcbiAgICBAZWxzZSBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdudW1iZXInKSB7XG4gICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICB9XG4gICAgLy8gSWYgdGhleSdyZSBib3RoIHN0cmluZ3MgYW5kIG5laXRoZXIgYXJlIHNpbmdsZXMsIHdlIHJvbGwgd2l0aCB0aGF0LlxuICAgIEBlbHNlIGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAyKSkge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRsZW5ndGggPT0gMyB7XG4gICAgLy8gSWYgd2UndmUgZ290IHRocmVlIGl0ZW1zIGFuZCBub25lIGlzIGEgbGlzdCwgd2UgY2hlY2sgdG8gc2VlXG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpICE9ICdsaXN0JyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgIT0gJ2xpc3QnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDMpKSAhPSAnbGlzdCcge1xuICAgICAgLy8gSWYgbm9uZSBvZiB0aGUgaXRlbXMgYXJlIHNpbmdsZSBzdHJpbmcgdmFsdWVzIGFuZCBub25lIG9mIHRoZSB2YWx1ZXMgYXJlIG1lZGlhIHZhbHVlcywgd2UncmUgZ29vZC5cbiAgICAgIEBpZiAobm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMikpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDMpKSkgYW5kICAoKG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMikpIGFuZCBub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAzKSkpKSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkZmVhdHVyZS1ob2xkZXIsIG50aCgkcXVlcnksIDMpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgICAgLy8gbGV0J3MgY2hlY2sgdG8gc2VlIGlmIHRoZSBmaXJzdCBpdGVtIGlzIGEgbWVkaWEgdHlwZVxuICAgICAgQGVsc2UgaWYgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAxKSkge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMSkpO1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAyKSwgbnRoKCRxdWVyeSwgMyksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlcik7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBJZiBpdCdzIGEgc2luZ2xlIGl0ZW0sIG9yIGlmIGl0J3Mgbm90IGEgc3BlY2lhbCBjYXNlIGRvdWJsZSBvciB0cmlwbGUsIHdlIGNhbiBzaW1wbHkgcmV0dXJuIHRoZSBxdWVyeS5cbiAgQHJldHVybiAkcXVlcnk7XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInNpbmdsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAvLyBJZiBpdCdzIGEgc2luZ2xlIGZlYXR1cmUgdGhhdCBjYW4gc3RhbmQgYWxvbmUsIHdlIGxldCBpdFxuICBAaWYgKGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkZmVhdHVyZSkpIHtcbiAgICAkcGFyc2VkOiAkZmVhdHVyZTtcbiAgICAvLyBTZXQgQ29udGV4dFxuICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkZmVhdHVyZSk7XG4gIH1cbiAgLy8gSWYgaXQncyBub3QgYSBzdGFuZCBhbG9uZSBmZWF0dXJlLCB3ZSBwYXNzIGl0IG9mZiB0byB0aGUgZGVmYXVsdCBoYW5kbGVyLlxuICBAZWxzZSB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0KCRmZWF0dXJlKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxlYWRlciArICcoJyArICRwYXJzZWQgKyAnKSc7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0KCRmZWF0dXJlKSB7XG4gICRkZWZhdWx0OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBmZWF0dXJlJyk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGRlZmF1bHQsICRmZWF0dXJlKTtcblxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSBhbmQgKHR5cGUtb2YoJGZlYXR1cmUpID09ICdudW1iZXInKSB7XG4gICAgQHJldHVybiAnI3skZGVmYXVsdH06ICN7YnJlYWtwb2ludC10by1iYXNlLWVtKCRmZWF0dXJlKX0nO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICcjeyRkZWZhdWx0fTogI3skZmVhdHVyZX0nO1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcImRvdWJsZS9kZWZhdWx0LXBhaXJcIjtcbkBpbXBvcnQgXCJkb3VibGUvZG91YmxlLXN0cmluZ1wiO1xuQGltcG9ydCBcImRvdWJsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAkZmlyc3Q6IG50aCgkZmVhdHVyZSwgMSk7XG4gICRzZWNvbmQ6IG50aCgkZmVhdHVyZSwgMik7XG5cbiAgLy8gSWYgd2UndmUgZ290IHR3byBudW1iZXJzLCB3ZSBrbm93IHdlIG5lZWQgdG8gdXNlIHRoZSBkZWZhdWx0IHBhaXIgYmVjYXVzZSB0aGVyZSBhcmUgbm8gbWVkaWEgcXVlcmllcyB0aGF0IGhhcyBhIG1lZGlhIGZlYXR1cmUgdGhhdCBpcyBhIG51bWJlclxuICBAaWYgdHlwZS1vZigkZmlyc3QpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKCRzZWNvbmQpID09ICdudW1iZXInIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQtcGFpcigkZmlyc3QsICRzZWNvbmQpO1xuICB9XG4gIC8vIElmIHRoZXkgYXJlIGJvdGggc3RyaW5ncywgd2Ugc2VuZCBpdCB0aHJvdWdoIHRoZSBzdHJpbmcgcGFyc2VyXG4gIEBlbHNlIGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZigkc2Vjb25kKSA9PSAnc3RyaW5nJyB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtc3RyaW5nKCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cbiAgLy8gSWYgaXQncyBhIHN0cmluZy9udW1iZXIgcGFpciwgd2UgcGFyc2UgaXQgYXMgYSBub3JtYWwgZG91YmxlXG4gIEBlbHNlIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1kZWZhdWx0KCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cblxuICBAcmV0dXJuICRsZWFkZXIgKyAkcGFyc2VkO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdC1wYWlyKCRmaXJzdCwgJHNlY29uZCkge1xuICAkZGVmYXVsdDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgcGFpcicpO1xuICAkbWluOiAnJztcbiAgJG1heDogJyc7XG5cbiAgLy8gU29ydCBpbnRvIG1pbiBhbmQgbWF4XG4gICRtaW46IG1pbigkZmlyc3QsICRzZWNvbmQpO1xuICAkbWF4OiBtYXgoJGZpcnN0LCAkc2Vjb25kKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtaW4tI3skZGVmYXVsdH0sICRtaW4pO1xuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtYXgtI3skZGVmYXVsdH0sICRtYXgpO1xuXG4gIC8vIE1ha2UgdGhlbSBFTXMgaWYgbmVlZCBiZVxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJG1pbjogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtaW4pO1xuICAgICRtYXg6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWF4KTtcbiAgfVxuXG4gIEByZXR1cm4gJyhtaW4tI3skZGVmYXVsdH06ICN7JG1pbn0pIGFuZCAobWF4LSN7JGRlZmF1bHR9OiAjeyRtYXh9KSc7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtc3RyaW5nKCRmaXJzdCwgJHNlY29uZCkge1xuICAkZmVhdHVyZTogJyc7XG4gICR2YWx1ZTogJyc7XG5cbiAgLy8gVGVzdCB0byBzZWUgd2hpY2ggaXMgdGhlIGZlYXR1cmUgYW5kIHdoaWNoIGlzIHRoZSB2YWx1ZVxuICBAaWYgKGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRmaXJzdCkgPT0gdHJ1ZSkge1xuICAgICRmZWF0dXJlOiAkZmlyc3Q7XG4gICAgJHZhbHVlOiAkc2Vjb25kO1xuICB9XG4gIEBlbHNlIGlmIChicmVha3BvaW50LXN0cmluZy12YWx1ZSgkc2Vjb25kKSA9PSB0cnVlKSB7XG4gICAgJGZlYXR1cmU6ICRzZWNvbmQ7XG4gICAgJHZhbHVlOiAkZmlyc3Q7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiTmVpdGhlciAjeyRmaXJzdH0gbm9yICN7JHNlY29uZH0gaXMgYSB2YWxpZCBtZWRpYSBxdWVyeSBuYW1lLlwiO1xuICB9XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSk7XG5cbiAgQHJldHVybiAnKCN7JGZlYXR1cmV9OiAjeyR2YWx1ZX0pJztcbn0iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtZGVmYXVsdCgkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGZlYXR1cmU6ICcnO1xuICAkdmFsdWU6ICcnO1xuXG4gIEBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ3N0cmluZycge1xuICAgICRmZWF0dXJlOiAkZmlyc3Q7XG4gICAgJHZhbHVlOiAkc2Vjb25kO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkZmVhdHVyZTogJHNlY29uZDtcbiAgICAkdmFsdWU6ICRmaXJzdDtcbiAgfVxuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpO1xuXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkdmFsdWU6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkdmFsdWUpO1xuICB9XG5cbiAgQHJldHVybiAnKCN7JGZlYXR1cmV9OiAjeyR2YWx1ZX0pJ1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0cmlwbGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS10cmlwbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcblxuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAvLyBzZXBhcmF0ZSB0aGUgc3RyaW5nIGZlYXR1cmVzIGZyb20gdGhlIHZhbHVlIG51bWJlcnNcbiAgJHN0cmluZzogbnVsbDtcbiAgJG51bWJlcnM6IG51bGw7XG4gIEBlYWNoICR2YWwgaW4gJGZlYXR1cmUge1xuICAgIEBpZiB0eXBlLW9mKCR2YWwpID09IHN0cmluZyB7XG4gICAgICAkc3RyaW5nOiAkdmFsO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgdHlwZS1vZigkbnVtYmVycykgPT0gJ251bGwnIHtcbiAgICAgICAgJG51bWJlcnM6ICR2YWw7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRudW1iZXJzOiBhcHBlbmQoJG51bWJlcnMsICR2YWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlLWRlZmF1bHQoJHN0cmluZywgbnRoKCRudW1iZXJzLCAxKSwgbnRoKCRudW1iZXJzLCAyKSk7XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJHBhcnNlZDtcblxufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlLWRlZmF1bHQoJGZlYXR1cmUsICRmaXJzdCwgJHNlY29uZCkge1xuXG4gIC8vIFNvcnQgaW50byBtaW4gYW5kIG1heFxuICAkbWluOiBtaW4oJGZpcnN0LCAkc2Vjb25kKTtcbiAgJG1heDogbWF4KCRmaXJzdCwgJHNlY29uZCk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWluLSN7JGZlYXR1cmV9LCAkbWluKTtcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWF4LSN7JGZlYXR1cmV9LCAkbWF4KTtcblxuICAvLyBNYWtlIHRoZW0gRU1zIGlmIG5lZWQgYmVcbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICRtaW46IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWluKTtcbiAgICAkbWF4OiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1heCk7XG4gIH1cblxuICBAcmV0dXJuICcobWluLSN7JGZlYXR1cmV9OiAjeyRtaW59KSBhbmQgKG1heC0jeyRmZWF0dXJlfTogI3skbWF4fSknO1xufVxuIiwiQGltcG9ydCBcInJlc29sdXRpb24vcmVzb2x1dGlvblwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1idWlsZC1yZXNvbHV0aW9uKCRxdWVyeS1wcmludCwgJHF1ZXJ5LXJlc29sdXRpb24sICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIGFuZCAkcXVlcnktcmVzb2x1dGlvbiB7XG4gICAgJHJlc29sdXRpb25zOiBicmVha3BvaW50LW1ha2UtcmVzb2x1dGlvbnMoJHF1ZXJ5LXJlc29sdXRpb24pO1xuICAgICRsZW5ndGg6IGxlbmd0aCgkcmVzb2x1dGlvbnMpO1xuICAgICRxdWVyeS1ob2xkZXI6ICcnO1xuXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICRxdWVyeTogJyN7JHF1ZXJ5LXByaW50fSAjeyRsZWFkZXJ9I3tudGgoJHJlc29sdXRpb25zLCAkaSl9JztcbiAgICAgIEBpZiAkaSA9PSAxIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogJHF1ZXJ5O1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiAnI3skcXVlcnktaG9sZGVyfSwgI3skcXVlcnl9JztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIFJldHVybiB3aXRoIGF0dGFjaGVkIHJlc29sdXRpb25cbiAgICBAcmV0dXJuICRxdWVyeS1wcmludDtcbiAgfVxufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWFrZS1yZXNvbHV0aW9ucygkcmVzb2x1dGlvbikge1xuICAkbGVuZ3RoOiBsZW5ndGgoJHJlc29sdXRpb24pO1xuXG4gICRvdXRwdXQ6ICgpO1xuXG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgICRmZWF0dXJlOiAnJztcbiAgICAkdmFsdWU6ICcnO1xuXG4gICAgLy8gRmluZCB3aGljaCBpcyBudW1iZXJcbiAgICBAaWYgdHlwZS1vZihudGgoJHJlc29sdXRpb24sIDEpKSA9PSAnbnVtYmVyJyB7XG4gICAgICAkdmFsdWU6IG50aCgkcmVzb2x1dGlvbiwgMSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICR2YWx1ZTogbnRoKCRyZXNvbHV0aW9uLCAyKTtcbiAgICB9XG5cbiAgICAvLyBEZXRlcm1pbmUgbWluL21heC9zdGFuZGFyZFxuICAgIEBpZiBpbmRleCgkcmVzb2x1dGlvbiwgJ21pbi1yZXNvbHV0aW9uJykge1xuICAgICAgJGZlYXR1cmU6ICdtaW4tJztcbiAgICB9XG4gICAgQGVsc2UgaWYgaW5kZXgoJHJlc29sdXRpb24sICdtYXgtcmVzb2x1dGlvbicpIHtcbiAgICAgICRmZWF0dXJlOiAnbWF4LSc7XG4gICAgfVxuXG4gICAgJHN0YW5kYXJkOiAnKCN7JGZlYXR1cmV9cmVzb2x1dGlvbjogI3skdmFsdWV9KSc7XG5cbiAgICAvLyBJZiB3ZSdyZSBub3QgZGVhbGluZyB3aXRoIGRwcHgsXG4gICAgQGlmIHVuaXQoJHZhbHVlKSAhPSAnZHBweCcge1xuICAgICAgJGJhc2U6IDk2ZHBpO1xuICAgICAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnZHBjbScge1xuICAgICAgICAkYmFzZTogMjQzLjg0ZHBjbTtcbiAgICAgIH1cbiAgICAgIC8vIFdyaXRlIG91dCBmZWF0dXJlIHRlc3RzXG4gICAgICAkd2Via2l0OiAnJztcbiAgICAgICRtb3o6ICcnO1xuICAgICAgJHdlYmtpdDogJygtd2Via2l0LSN7JGZlYXR1cmV9ZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvICRiYXNlfSknO1xuICAgICAgJG1vejogJygjeyRmZWF0dXJlfS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvICRiYXNlfSknO1xuICAgICAgLy8gQXBwZW5kIHRvIG91dHB1dFxuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRzdGFuZGFyZCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICR3ZWJraXQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkbW96LCBzcGFjZSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICR3ZWJraXQ6ICcnO1xuICAgICAgJG1vejogJyc7XG4gICAgICAkd2Via2l0OiAnKC13ZWJraXQtI3skZmVhdHVyZX1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gMWRwcHh9KSc7XG4gICAgICAkbW96OiAnKCN7JGZlYXR1cmV9LW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gMWRwcHh9KSc7XG4gICAgICAkZmFsbGJhY2s6ICcoI3skZmVhdHVyZX1yZXNvbHV0aW9uOiAjeyR2YWx1ZSAvIDFkcHB4ICogOTZkcGl9KSc7XG4gICAgICAvLyBBcHBlbmQgdG8gb3V0cHV0XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHN0YW5kYXJkLCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHdlYmtpdCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRtb3osIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkZmFsbGJhY2ssIHNwYWNlKTtcbiAgICB9XG5cbiAgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LW5vLXF1ZXJ5KCRxdWVyeSkge1xuICBAaWYgdHlwZS1vZigkcXVlcnkpID09ICdsaXN0JyB7XG4gICAgJGtleXdvcmQ6IG50aCgkcXVlcnksIDEpO1xuXG4gICAgQGlmIHR5cGUtb2YoJGtleXdvcmQpID09ICdzdHJpbmcnIGFuZCAoJGtleXdvcmQgPT0gJ25vLXF1ZXJ5JyBvciAka2V5d29yZCA9PSAnbm8gcXVlcnknIG9yICRrZXl3b3JkID09ICdmYWxsYmFjaycpIHtcbiAgICAgIEByZXR1cm4gbnRoKCRxdWVyeSwgMik7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERlZmF1bHQgdGhlIEJyZWFrcG9pbnRzIHZhcmlhYmxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50czogKCkgIWRlZmF1bHQ7XG4kQlJFQUtQT0lOVFM6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlc3BvbmQtdG8gQVBJIE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiByZXNwb25kLXRvKCRjb250ZXh0LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpZiBsZW5ndGgoJGJyZWFrcG9pbnRzKSA+IDAgYW5kIGxlbmd0aCgkQlJFQUtQT0lOVFMpID09IDAge1xuICAgIEB3YXJuIFwiSW4gb3JkZXIgdG8gYXZvaWQgdmFyaWFibGUgbmFtZXNwYWNlIGNvbGxpc2lvbnMsIHdlIGhhdmUgdXBkYXRlZCB0aGUgd2F5IHRvIGFkZCBicmVha3BvaW50cyBmb3IgcmVzcG9uZC10by4gUGxlYXNlIGNoYW5nZSBhbGwgaW5zdGFuY2VzIG9mIGAkYnJlYWtwb2ludHM6IGFkZC1icmVha3BvaW50KClgIHRvIGBAaW5jbHVkZSBhZGQtYnJlYWtwb2ludCgpYC4gVGhlIGBhZGQtYnJlYWtwb2ludCgpYCBmdW5jdGlvbiB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS5cIjtcbiAgICAkQlJFQUtQT0lOVFM6ICRicmVha3BvaW50cyAhZ2xvYmFsO1xuICAgICRicmVha3BvaW50czogKCkgIWdsb2JhbDtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRCUkVBS1BPSU5UUykgIT0gJ21hcCcge1xuICAgIC8vIEp1c3QgaW4gY2FzZSBzb21lb25lIHdyaXRlcyBnaWJiZXJpc2ggdG8gdGhlICRicmVha3BvaW50cyB2YXJpYWJsZS5cbiAgICBAd2FybiBcIllvdXIgYnJlYWtwb2ludHMgYXJlbid0IGEgbWFwISBgcmVzcG9uZC10b2AgZXhwZWN0cyBhIG1hcC4gUGxlYXNlIGNoZWNrIHRoZSB2YWx1ZSBvZiAkQlJFQUtQT0lOVFMgdmFyaWFibGUuXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkY29udGV4dCkge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWFwLWdldCgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpIHtcbiAgICBAd2FybiBcImAjeyRjb250ZXh0fWAgaXNuJ3QgYSBkZWZpbmVkIGJyZWFrcG9pbnQhIFBsZWFzZSBhZGQgaXQgdXNpbmcgYCRicmVha3BvaW50czogYWRkLWJyZWFrcG9pbnQoYCN7JGNvbnRleHR9YCwgJHZhbHVlKTtgXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiWW91IGhhdmVuJ3QgY3JlYXRlZCBhbnkgYnJlYWtwb2ludHMgeWV0ISBNYWtlIHNvbWUgYWxyZWFkeSEgYEBpbmNsdWRlIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdClgXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBZGQgQnJlYWtwb2ludCB0byBCcmVha3BvaW50c1xuLy8gVE9ETzogUmVtb3ZlIGZ1bmN0aW9uIGluIG5leHQgcmVsZWFzZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0LCAkb3ZlcndyaXRlOiBmYWxzZSkge1xuICAkb3V0cHV0OiAoJG5hbWU6ICRia3B0KTtcblxuICBAaWYgbGVuZ3RoKCRicmVha3BvaW50cykgPT0gMCB7XG4gICAgQHJldHVybiAkb3V0cHV0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkgYW5kICRvdmVyd3JpdGUgIT0gdHJ1ZSB7XG4gICAgICBAd2FybiBcIllvdSBhbHJlYWR5IGhhdmUgYSBicmVha3BvaW50IG5hbWVkIGAjeyRuYW1lfWAsIHBsZWFzZSBjaG9vc2UgYW5vdGhlciBicmVha3BvaW50IG5hbWUsIG9yIHBhc3MgaW4gYCRvdmVyd3JpdGU6IHRydWVgIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgYnJlYWtwb2ludC5cIjtcbiAgICAgIEByZXR1cm4gJGJyZWFrcG9pbnRzO1xuICAgIH1cbiAgICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkgb3IgJG92ZXJ3cml0ZSA9PSB0cnVlIHtcbiAgICAgIEByZXR1cm4gbWFwLW1lcmdlKCRicmVha3BvaW50cywgJG91dHB1dCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQsICRvdmVyd3JpdGU6IGZhbHNlKSB7XG4gICRvdXRwdXQ6ICgkbmFtZTogJGJrcHQpO1xuXG4gIEBpZiBsZW5ndGgoJEJSRUFLUE9JTlRTKSA9PSAwIHtcbiAgICAkQlJFQUtQT0lOVFM6ICRvdXRwdXQgIWdsb2JhbDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJG5hbWUpIGFuZCAkb3ZlcndyaXRlICE9IHRydWUge1xuICAgICAgQHdhcm4gXCJZb3UgYWxyZWFkeSBoYXZlIGEgYnJlYWtwb2ludCBuYW1lZCBgI3skbmFtZX1gLCBwbGVhc2UgY2hvb3NlIGFub3RoZXIgYnJlYWtwb2ludCBuYW1lLCBvciBwYXNzIGluIGAkb3ZlcndyaXRlOiB0cnVlYCB0byBvdmVyd3JpdGUgdGhlIHByZXZpb3VzIGJyZWFrcG9pbnQuXCI7XG4gICAgICAkQlJFQUtQT0lOVFM6ICRCUkVBS1BPSU5UUyAhZ2xvYmFsO1xuICAgIH1cbiAgICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkbmFtZSkgb3IgJG92ZXJ3cml0ZSA9PSB0cnVlIHtcbiAgICAgICRCUkVBS1BPSU5UUzogbWFwLW1lcmdlKCRCUkVBS1BPSU5UUywgJG91dHB1dCkgIWdsb2JhbDtcbiAgICB9XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGdldC1icmVha3BvaW50KCRuYW1lOiBmYWxzZSkge1xuICBAaWYgJG5hbWUgPT0gZmFsc2Uge1xuICAgIEByZXR1cm4gJEJSRUFLUE9JTlRTO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEJSRUFLUE9JTlRTLCAkbmFtZSk7XG4gIH1cbn1cbiIsIkBtaXhpbiBsZWdhY3ktc2V0dGluZ3Mtd2FybmluZyB7XG4gICRsZWdhY3lWYXJzOiAoXG4gICAgJ2RlZmF1bHQtbWVkaWEnOiAnZGVmYXVsdCBtZWRpYScsXG4gICAgJ2RlZmF1bHQtZmVhdHVyZSc6ICdkZWZhdWx0IGZlYXR1cmUnLFxuICAgICdmb3JjZS1tZWRpYS1hbGwnOiAnZm9yY2UgYWxsIG1lZGlhIHR5cGUnLFxuICAgICd0by1lbXMnOiAndG8gZW1zJyxcbiAgICAncmVzb2x1dGlvbnMnOiAndHJhbnNmb3JtIHJlc29sdXRpb25zJyxcbiAgICAnbm8tcXVlcmllcyc6ICdubyBxdWVyaWVzJyxcbiAgICAnbm8tcXVlcnktZmFsbGJhY2tzJzogJ25vIHF1ZXJ5IGZhbGxiYWNrcycsXG4gICAgJ2Jhc2UtZm9udC1zaXplJzogJ2Jhc2UgZm9udCBzaXplJyxcbiAgICAnbGVnYWN5LXN5bnRheCc6ICdsZWdhY3kgc3ludGF4J1xuICApO1xuXG4gIEBlYWNoICRsZWdhY3ksICRuZXcgaW4gJGxlZ2FjeVZhcnMge1xuICAgIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LScgKyAkbGVnYWN5KSB7XG4gICAgICBAd2FybiBcIkluIG9yZGVyIHRvIGF2b2lkIHZhcmlhYmxlIG5hbXNwYWNlIGNvbGxpc2lvbnMsIHdlIGhhdmUgdXBkYXRlZCB0aGUgd2F5IHRvIGNoYW5nZSBzZXR0aW5ncyBmb3IgQnJlYWtwb2ludC4gUGxlYXNlIGNoYW5nZSBhbGwgaW5zdGFuY2VzIG9mIGAkYnJlYWtwb2ludC0jeyRsZWdhY3l9OiB7e3NldHRpbmd9fWAgdG8gYEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCcjeyRuZXd9Jywge3tzZXR0aW5nfX0pYC4gVmFyaWFibGUgc2V0dGluZ3MsIGFzIHdlbGwgYXMgdGhpcyB3YXJuaW5nIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLlwiXG4gICAgfVxuICB9O1xuXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBIYW5kIGNvcnJlY3QgZWFjaCBzZXR0aW5nXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhJykgYW5kICRicmVha3BvaW50LWRlZmF1bHQtbWVkaWEgIT0gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2RlZmF1bHQgbWVkaWEnLCAkYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUnKSBhbmQgJGJyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlICE9IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IGZlYXR1cmUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2RlZmF1bHQgZmVhdHVyZScsICRicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsJykgYW5kICRicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCAhPSBicmVha3BvaW50LWdldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJywgJGJyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC10by1lbXMnKSBhbmQgJGJyZWFrcG9pbnQtdG8tZW1zICE9IGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ3RvIGVtcycsICRicmVha3BvaW50LXRvLWVtcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtcmVzb2x1dGlvbnMnKSBhbmQgJGJyZWFrcG9pbnQtcmVzb2x1dGlvbnMgIT0gYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJywgJGJyZWFrcG9pbnQtcmVzb2x1dGlvbnMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LW5vLXF1ZXJpZXMnKSBhbmQgJGJyZWFrcG9pbnQtbm8tcXVlcmllcyAhPSBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbm8gcXVlcmllcycsICRicmVha3BvaW50LW5vLXF1ZXJpZXMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcycpIGFuZCAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MgIT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbm8gcXVlcnkgZmFsbGJhY2tzJywgJGJyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZScpIGFuZCAkYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZSAhPSBicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2Jhc2UgZm9udCBzaXplJywgJGJyZWFrcG9pbnQtYmFzZS1mb250LXNpemUpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWxlZ2FjeS1zeW50YXgnKSBhbmQgJGJyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCAhPSBicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbGVnYWN5IHN5bnRheCcsICRicmVha3BvaW50LWxlZ2FjeS1zeW50YXgpO1xuICB9XG59IiwiQGltcG9ydCBcImZ1bmN0aW9uc1wiO1xuQGltcG9ydCBcInotaW5kZXhcIjtcbkBpbXBvcnQgXCJtZWRpYS1xdWVyaWVzXCI7XG5AaW1wb3J0IFwidmFyaWFibGVzXCI7XG5AaW1wb3J0IFwidW5pYm9hcmRcIjtcbkBpbXBvcnQgXCJtaXhpbnNcIjtcbkBpbXBvcnQgXCJleHRlbmRzXCI7XG5AaW1wb3J0IFwiZmxleFwiO1xuQGltcG9ydCBcImJveFwiO1xuQGltcG9ydCBcImZsdWlkLXNpemVcIjtcbiIsIi8vLyBaLWluZGV4ZXMgbWFwLCBnYXRoZXJpbmcgYWxsIFogbGF5ZXJzIG9mIHRoZSBhcHBsaWNhdGlvblxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEB0eXBlIE1hcFxuLy8vIEBwcm9wIHtTdHJpbmd9IGtleSAtIExheWVy4oCZcyBuYW1lXG4vLy8gQHByb3Age051bWJlcn0gdmFsdWUgLSBaIHZhbHVlIG1hcHBlZCB0byB0aGUga2V5XG4kei1pbmRleGVzOiAoXCJjZ19fcHJvbW90aW9uXCI6IDIwNSwgXCJjZ19fcGllY2UuZHJhZ2dpbmdcIjogMjA0LCBcImNnX19waWVjZS5hbmltXCI6IDMsIFwiY2dfX3N2Z1wiOiAyLCBcImNnX19waWVjZVwiOiAyLCBcImNnX19waWVjZS5mYWRpbmdcIjogMSwgXCJwb3dlcnRpcFwiOiAxMjAsIFwiaW5xdWlyeVwiOiAxMTEsIFwiemVuLXRvZ2dsZVwiOiAxMTAsIFwibW9kYWxcIjogMTEwLCBcIm1zZWxlY3RcIjogMTEwLCBcInRvcG5hdlwiOiAxMTAsIFwiZnVsbHNjcmVlbi1tYXNrXCI6IDEwOSwgXCJkcm9wZG93blwiOiAxMDgsIFwiY29udGV4dC1tZW51XCI6IDEwNywgXCJzaXRlLWhlYWRlclwiOiAxMDYsIFwicmVjb25uZWN0aW5nXCI6IDEwNSwgXCJ0b3VyLXJlbWluZGVyXCI6IDEwNCwgXCJuYWctY2lyY2xlXCI6IDEwMywgXCJtei1tZW51XCI6IDQsIFwiYWJvdmUtbGluay1vdmVybGF5XCI6IDMsIFwiZnJpZW5kLWJveFwiOiAyLCBcImxpbmstb3ZlcmxheVwiOiAyLCBcImdhbWUtYm9va21hcmtcIjogMiwgXCJzdWJuYXYtc2lkZVwiOiAyLCBcImRlZmF1bHRcIjogMCk7XG5cbi8vLyBHZXQgYSB6LWluZGV4IHZhbHVlIGZyb20gYSBsYXllciBuYW1lXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGxheWVyIC0gTGF5ZXLigJlzIG5hbWVcbi8vLyBAcmV0dXJuIHtOdW1iZXJ9XG4vLy8gQHJlcXVpcmUgJHotaW5kZXhlc1xuQGZ1bmN0aW9uIHooJGxheWVyKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkei1pbmRleGVzLCAkbGF5ZXIpO1xufVxuIiwiLyogV2lkdGhzICovXG5cbiRtcS14eC1zbWFsbDogbWluLXdpZHRoIDUwMHB4O1xuJG1xLXgtc21hbGw6IG1pbi13aWR0aCA2NTBweDtcbiRtcS1zbWFsbDogbWluLXdpZHRoIDgwMHB4O1xuJG1xLW1lZGl1bTogbWluLXdpZHRoIDk4MHB4O1xuJG1xLWxhcmdlOiBtaW4td2lkdGggMTEyMHB4O1xuJG1xLXgtbGFyZ2U6IG1pbi13aWR0aCAxMjYwcHg7XG5cbiRtcS1ub3QteHgtc21hbGw6IG1heC13aWR0aCA0OTlweDtcbiRtcS1ub3QteC1zbWFsbDogbWF4LXdpZHRoIDY0OXB4O1xuJG1xLW5vdC1zbWFsbDogbWF4LXdpZHRoIDc5OXB4O1xuJG1xLW5vdC1tZWRpdW06IG1heC13aWR0aCA5NzlweDtcbiRtcS1ub3QteC1sYXJnZTogbWF4LXdpZHRoIDEyNTlweDtcblxuLyogSGVpZ2h0cyAqL1xuXG4kbXEteC1zaG9ydDogbWluLWhlaWdodCA0MDBweDtcbiRtcS1zaG9ydDogbWluLWhlaWdodCA1MDBweDtcbiRtcS10YWxsOiBtaW4taGVpZ2h0IDYwMHB4O1xuJG1xLXgtdGFsbDogbWluLWhlaWdodCA3MDBweDtcblxuJG1xLW5vdC14LXNob3J0OiBtYXgtaGVpZ2h0IDM5OXB4O1xuXG4vKiBPcmllbnRhdGlvbnMgKi9cblxuJG1xLXBvcnRyYWl0OiBvcmllbnRhdGlvbiBwb3J0cmFpdDtcbiRtcS1sYW5kc2NhcGU6IG9yaWVudGF0aW9uIGxhbmRzY2FwZTtcblxuLyogQ2FwYWJpbGl0aWVzICovXG5cbiRtcS1ob3Zlci15ZXM6IFwiaG92ZXI6IGhvdmVyXCI7XG4kbXEtaG92ZXItbm86IGhvdmVyIG5vbmU7XG5cbi8qIEFsaWFzZXMgKi9cblxuJG1xLW1haW4tbWFyZ2luOiAkbXEtc21hbGw7XG5cbiRtcS10b3BuYXYtdmlzaWJsZTogJG1xLW1lZGl1bTtcbiRtcS10b3BuYXYtaGlkZGVuOiAkbXEtbm90LW1lZGl1bTtcblxuJG1xLXNpdGUtaGVhZGVyLXRhbGw6ICRtcS10YWxsO1xuXG4kbXEtc3VibmF2LXRvcDogJG1xLW5vdC1zbWFsbDtcbiRtcS1zdWJuYXYtc2lkZTogJG1xLXNtYWxsO1xuXG4kbXEtem9vbS1lbmFibGVkOiAkbXEtc21hbGwgJG1xLXNob3J0O1xuIiwiJGRlYnVnOiBmYWxzZTtcblxuJGZvbnQtcGF0aDogXCIuLi9mb250XCI7XG4kaW1nLXBhdGg6IFwiLi4vaW1hZ2VzXCI7XG5cbiR2aWV3cG9ydC1taW4td2lkdGg6IDMyMHB4O1xuXG4kYmxvY2stZ2FwOiAydm1pbjtcbiRibG9jay1nYXAtaGFsZjogMXZtaW47XG5cbiRibG9jay1nYXAtaDogMnZoO1xuJGJsb2NrLWdhcC13OiAydnc7XG4kYmxvY2stZ2FwLXctaGFsZjogMXZ3O1xuXG4kYm94LXJhZGl1cy1zaXplOiAzcHg7XG5cbiRzaXRlLWhlYWRlci10YWxsLWhlaWdodDogNjBweDtcbiRzaXRlLWhlYWRlci1zaG9ydC1oZWlnaHQ6IDQwcHg7XG5cbiR0cmFuc2l0aW9uLWR1cmF0aW9uOiAxNTBtcztcblxuJG1haW4tbWF4LXdpZHRoOiAxMzAwcHggIWRlZmF1bHQ7XG5cbiRtYWluLW1hcmdpbjogdmFyKC0tbWFpbi1tYXJnaW4pO1xuJHNpdGUtaGVhZGVyLWhlaWdodDogdmFyKC0tc2l0ZS1oZWFkZXItaGVpZ2h0KTtcblxuJHNpdGUtaGVhZGVyLW1hcmdpbjogdmFyKC0tc2l0ZS1oZWFkZXItbWFyZ2luKTtcblxuJHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodDogY2FsYygjeyRzaXRlLWhlYWRlci1oZWlnaHR9ICsgI3skc2l0ZS1oZWFkZXItbWFyZ2lufSk7XG4iLCIvKiBVbmlib2FyZDoga2VlcCB0aGUgc2FtZSBwYWdlIGxheW91dCBhY2Nyb3NzIHBhZ2VzICovXG5cbiRtcS1ib2FyZC1yZXNpemFibGU6ICRtcS1zbWFsbDtcbiRtcS1jb2wxLXVuaWJvYXJkOiAkbXEtbm90LXNtYWxsICRtcS1wb3J0cmFpdDtcbiRtcS1jb2wyLXVuaWJvYXJkOiAkbXEtc21hbGwsICRtcS1sYW5kc2NhcGU7XG4kbXEtY29sMy11bmlib2FyZDogJG1xLXgtbGFyZ2U7XG5cbi8qIHdoZW4gdGhlIHdpZHRoIGlzIGFwcHJvcHJpYXRlIGZvciBjb2wxLCBidXQgbGFuZHNjYXBlIHByZXZlbnRzIGl0ICovXG4kbXEtY29sMi11bmlib2FyZC1zcXVlZXplOiAkbXEtbm90LXNtYWxsICRtcS1sYW5kc2NhcGU7XG5cbiRjb2wzLXVuaWJvYXJkLXNpZGU6IG1pbm1heCgyMzBweCwgMjB2dyk7XG4kY29sMy11bmlib2FyZC10YWJsZTogbWlubWF4KDI0MHB4LCA0MDBweCk7XG4kY29sMy11bmlib2FyZC1jb250cm9sczogM3JlbTtcblxuJGNvbDMtdW5pYm9hcmQtbWluLXdpZHRoOiBjYWxjKDcwdm1pbiAqIHZhcigtLWJvYXJkLXNjYWxlKSk7XG4kY29sMy11bmlib2FyZC1tYXgtd2lkdGg6IGNhbGMoMTAwdmggKiB2YXIoLS1ib2FyZC1zY2FsZSkgLSAjeyRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHR9IC0gI3skY29sMy11bmlib2FyZC1jb250cm9sc30pO1xuJGNvbDMtdW5pYm9hcmQtd2lkdGg6IG1pbm1heCgkY29sMy11bmlib2FyZC1taW4td2lkdGgsICRjb2wzLXVuaWJvYXJkLW1heC13aWR0aCk7XG5cbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtc2NhbGU6IDAuOTtcblxuLy8gem9vbTogODUlXG4kY29sMy11bmlib2FyZC1kZWZhdWx0LW1pbi13aWR0aDogNTAwcHg7XG4kY29sMy11bmlib2FyZC1kZWZhdWx0LW1heC13aWR0aDogY2FsYygxMDB2aCAqICN7JGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1zY2FsZX0gLSAjeyRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHR9IC0gI3skY29sMy11bmlib2FyZC1jb250cm9sc30pO1xuJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC13aWR0aDogbWlubWF4KCN7JGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1taW4td2lkdGh9LCAjeyRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWF4LXdpZHRofSk7XG5cbiRjb2wyLXVuaWJvYXJkLXRhYmxlOiAkY29sMy11bmlib2FyZC10YWJsZTtcbiRjb2wyLXVuaWJvYXJkLWNvbnRyb2xzOiAkY29sMy11bmlib2FyZC1jb250cm9scztcbiRjb2wyLXVuaWJvYXJkLXdpZHRoOiAkY29sMy11bmlib2FyZC13aWR0aDtcbiRjb2wyLXVuaWJvYXJkLWRlZmF1bHQtd2lkdGg6ICRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtd2lkdGg7XG5cbiRjb2wyLXVuaWJvYXJkLXNxdWVlemUtdGFibGU6IG1pbm1heCgyMDBweCwgMjQwcHgpO1xuJGNvbDItdW5pYm9hcmQtc3F1ZWV6ZS13aWR0aDogbWlubWF4KGNhbGMoNTV2bWluKSwgY2FsYygxMDB2aCAtICN7JHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodH0gLSAjeyRibG9jay1nYXB9KSk7XG5cbiRjb2wxLXVuaWJvYXJkLWNvbnRyb2xzOiAkY29sMi11bmlib2FyZC1jb250cm9scztcbiIsIkBtaXhpbiBib3gtcmFkaXVzIHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZTtcbn1cblxuQG1peGluIGJveC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAkYm94LXNoYWRvdztcbn1cblxuQG1peGluIGJveC1uZWF0IHtcbiAgQGluY2x1ZGUgYm94LXJhZGl1cztcbiAgQGluY2x1ZGUgYm94LXNoYWRvdztcbn1cblxuQG1peGluIGRlYnVnLXpvb20taW5wdXQge1xuICAjem9vbS1pbnB1dCB7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXpvb20tZW5hYmxlZCkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBib3R0b206IDNweDtcbiAgICAgIHJpZ2h0OiAzcHg7XG4gICAgICB3aWR0aDogMTB2dztcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRyYW5zaXRpb24oJHByb3A6IGFsbCwgJGR1cjogJHRyYW5zaXRpb24tZHVyYXRpb24pIHtcbiAgdHJhbnNpdGlvbjogJHByb3AgJGR1cjtcbn1cblxuQG1peGluIGhvdmVyZmxvdyB7XG4gIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaGlkZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgLmJsaW5kLW1vZGUgJiB7XG4gICAgZGlzcGxheTogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gZWxsaXBzaXMge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuQG1peGluIGNyb3NzdGFibGUtbGFyZ2Uge1xuICAuY3Jvc3N0YWJsZV9fdXNlcnMge1xuICAgIGZsZXg6IDcgMSBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiBjcm9zc3RhYmxlLXNtYWxsIHtcbiAgLmNyb3NzdGFibGVfX3VzZXJzIHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgfVxufVxuXG4vKiBhdG0gb25seSBjaHJvbWUgc3VwcG9ydHMgbWluLWNvbnRlbnQsIG1heC1jb250ZW50ICovXG5AbWl4aW4gcHJvcGVyLWdyaWQge1xuICBAc3VwcG9ydHMgKGhlaWdodDogbWF4LWNvbnRlbnQpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gYm9keS1maXhlZC1zY3JvbGwge1xuICBib2R5IHtcbiAgICAvKiBwcmV2ZW50cyBzY3JvbGwgYmFyIGZsaWNrZXIgd2hlbiBkcmFnZ2luZyBhIHBpZWNlIG91dCAqL1xuICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgfVxufVxuIiwiJWJhc2UtZm9udC1mYWxsYmFjayB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJywgU2Fucy1TZXJpZjtcbn1cblxuJWJhc2UtZm9udCB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJztcbn1cblxuJXJvYm90byB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcbn1cblxuJXJvYm90by1mYXQge1xuICBmb250LWZhbWlseTogJ1JvYm90byc7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbiVjaGVzcy1mb250IHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIENoZXNzJywgJ05vdG8gU2Fucyc7XG59XG5cbiVzYW4ge1xuICBAZXh0ZW5kICVjaGVzcy1mb250O1xuXG4gIC5waWVjZS1sZXR0ZXIgJiB7XG4gICAgQGV4dGVuZCAlYmFzZS1mb250O1xuICB9XG59XG5cbi8qIHRleHQgcHJpbnRlZCBkaXJlY3RseSBvbiB0aGUgcGFnZSBiYWNrZ3JvdW5kIGRlc2VydmVzIHNwZWNpYWwgdHJlYXRtZW50ICh0cmFuc3AgdGhlbWUpICovXG4lcGFnZS1mb250IHtcbiAgY29sb3I6ICRjLWZvbnQtcGFnZTtcbn1cblxuJXBhZ2UtdGV4dCB7XG4gIEBleHRlbmQgJXBhZ2UtZm9udCwgJXBhZ2UtdGV4dC1zaGFkb3cgIW9wdGlvbmFsO1xufVxuXG4lcGFnZS1saW5rIHtcbiAgQGV4dGVuZCAlcGFnZS1saW5rLWZvbnQgIW9wdGlvbmFsO1xuXG4gIEBleHRlbmQgJXBhZ2UtdGV4dC1zaGFkb3cgIW9wdGlvbmFsO1xufVxuXG4lbWV0YWwge1xuICBAaW5jbHVkZSBtZXRhbDtcbn1cblxuJW1ldGFsLWhvdmVyIHtcbiAgQGluY2x1ZGUgbWV0YWwtaG92ZXI7XG59XG5cbiVwYWdlLW1ldGFsIHtcbiAgQGluY2x1ZGUgcGFnZS1tZXRhbDtcbn1cblxuJXBhZ2UtbWV0YWwtaG92ZXIge1xuICBAaW5jbHVkZSBwYWdlLW1ldGFsO1xufVxuXG4lbWV0YWwtYmcge1xuICBAaW5jbHVkZSBtZXRhbC1iZztcbn1cblxuJWFjdGl2ZS1pbnNldC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDNweCA0cHggaHNsYSgwLCAwLCAwLCAwLjE1KSBpbnNldDtcbn1cblxuJWFjdGl2ZSB7XG4gIEBleHRlbmQgJWFjdGl2ZS1pbnNldC1zaGFkb3c7XG5cbiAgYmFja2dyb3VuZDogI2JkMTExZjtcbiAgY29sb3I6ICNmZmY7XG4gIHRleHQtc2hhZG93OiAxcHggMXB4IDFweCB3aGl0ZSAhaW1wb3J0YW50O1xufVxuXG4jdHJhaW5lciBncm91cC5yYWRpbyBpbnB1dDpjaGVja2VkICsgbGFiZWx7XG4gIGJhY2tncm91bmQ6ICMwNDU2YmM7XG59XG5cbiVhY3RpdmUtaG92ZXIge1xuICBiYWNrZ3JvdW5kOiBtaXgod2hpdGUsICRjLWFjY2VudCwgMjAlKTtcbn1cblxuJWFjdGl2ZS1zb2Z0IHtcbiAgQGV4dGVuZCAlYWN0aXZlLWluc2V0LXNoYWRvdztcblxuICBiYWNrZ3JvdW5kOiAjMDQ1NmJjO1xuICBjb2xvcjogI2ZmZmZmZjtcbiAgdGV4dC1zaGFkb3c6IDFweCAxcHggMXB4ICRjLWZvbnQtc2hhZG93ICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4lZHJvcGRvd24tc2hhZG93IHtcbiAgYm94LXNoYWRvdzogLTFweCA1cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbn1cblxuJXBvcHVwLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgMTRweCAyOHB4IHJnYmEoMCwgMCwgMCwgMC4yNSksIDAgMTBweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4yMik7XG59XG5cbiVidXR0b24tc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAycHggNXB4IDAgaHNsYSgwLCAwLCAwJSwgMC4yMjUpO1xufVxuXG4lYnV0dG9uLXJhaXNlZC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDRweCAxMHB4IDBweCBoc2xhKDAsIDAsIDAsIDAuMjI1KTtcbn1cblxuJWJ1dHRvbi1ub25lIHtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBjb2xvcjogJGMtZm9udDtcbn1cblxuJWNoZWNrYm94IHtcbiAgQGV4dGVuZCAlYm94LXJhZGl1cztcblxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIGJhY2tncm91bmQ6ICRjLWJnLXBhZ2U7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRjLWJnLWxvdztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAuNWVtO1xuXG4gICY6Y2hlY2tlZCB7XG4gICAgYmFja2dyb3VuZDogIzA0NTZiYztcbiAgICBib3JkZXItY29sb3I6ICMwNDU2YmM7XG4gIH1cbn1cblxuJWZvY3VzLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgMCAxMnB4ICRjLWZvbnQtZGltO1xufVxuXG4lbm93cmFwLWhpZGRlbiB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbiVub3dyYXAtZWxsaXBzaXMge1xuICBAZXh0ZW5kICVlbGxpcHNpcztcblxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4lYm94LXBhZGRpbmcge1xuICBwYWRkaW5nOiA1dmggdmFyKC0tYm94LXBhZGRpbmcpO1xufVxuXG4lYm94LXBhZGRpbmctaG9yaXoge1xuICBwYWRkaW5nOiAwIHZhcigtLWJveC1wYWRkaW5nKTtcbn1cblxuJWJyZWFrLXdvcmQge1xuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xufVxuXG4lYnJlYWstd29yZC1oYXJkIHtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgd29yZC1icmVhazogYnJlYWstYWxsO1xuXG4gIC8qIHN1cHBvcnQ6IGZpcmVmb3ggKi9cbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbn1cblxuJWJyZWFrLW5vcGUge1xuICBvdmVyZmxvdy13cmFwOiBub3JtYWw7XG4gIHdvcmQtYnJlYWs6IG5vcm1hbDtcbn1cblxuJWVsbGlwc2lzIHtcbiAgQGluY2x1ZGUgZWxsaXBzaXM7XG59XG5cbiVzcXVhcmUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDA7XG4gIHBhZGRpbmctYm90dG9tOiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbn1cblxuJXZpZGVvIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAwO1xuICBwYWRkaW5nLWJvdHRvbTogNTYuMjUlO1xuXG4gIC8qIDE2LzkgKi9cbiAgLy8gcGFkZGluZy1ib3R0b206IDc1JTsgLyogNC8zICovXG4gIHdpZHRoOiAxMDAlO1xuXG4gID4gKiB7XG4gICAgQGV4dGVuZCAlYWJzLTEwMDtcblxuICAgIGJvcmRlcjogbm9uZTtcbiAgfVxufVxuXG4lZGF0YS1pY29uIHtcbiAgZm9udC1zaXplOiAxLjJlbTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgZm9udC1mYW1pbHk6ICdsaWNoZXNzJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgc3BlYWs6IG5vbmU7XG4gIGNvbnRlbnQ6IGF0dHIoZGF0YS1pY29uKTtcbiAgb3BhY2l0eTogMC45O1xufVxuXG4lZGF0YS1pY29uLXRvcCB7XG4gICY6OmJlZm9yZSB7XG4gICAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wO1xuICB9XG59XG5cbiVmdWxsc2NyZWVuLW1hc2sge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgYmFja2dyb3VuZDogJGMtcGFnZS1tYXNrO1xuICB6LWluZGV4OiB6KFwiZnVsbHNjcmVlbi1tYXNrXCIpO1xufVxuXG4lbGluay1vdmVybGF5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHotaW5kZXg6IHooXCJsaW5rLW92ZXJsYXlcIik7XG59XG5cbiVhYnMtMTAwIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuIiwiJWZsZXgtd3JhcCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG59XG5cbiVmbGV4LWNlbnRlciB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtd3JhcCAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4lZmxleC1jZW50ZXItbm93cmFwIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4lZmxleC1iZXR3ZWVuIHtcbiAgLyogZXh0ZW5kcyAlZmxleC1jZW50ZXIgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4lZmxleC1iZXR3ZWVuLW5vd3JhcCB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtY2VudGVyICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4lZmxleC1iZXR3ZWVuLXN0cmV0Y2gge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xufVxuXG4lZmxleC1hcm91bmQge1xuICAvKiBleHRlbmRzICVmbGV4LWNlbnRlciAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbn1cblxuJWZsZXgtY29sdW1uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiBjb2x1bW47XG59XG4iLCIlYm94LXJhZGl1cyB7XG4gIEBpbmNsdWRlIGJveC1yYWRpdXM7XG59XG5cbiVib3gtcmFkaXVzLWZvcmNlIHtcbiAgQGV4dGVuZCAlYm94LXJhZGl1cztcblxuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIC8qIGhlbHBzIHdpdGggY2xpcHBpbmcgYmFja2dyb3VuZCBpbnRvIGJvcmRlci1yYWRpdXMgKi9cbn1cblxuJWJveC1yYWRpdXMtbGVmdCB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemUgMCAwICRib3gtcmFkaXVzLXNpemU7XG59XG5cbiVib3gtcmFkaXVzLXJpZ2h0IHtcbiAgYm9yZGVyLXJhZGl1czogMCAkYm94LXJhZGl1cy1zaXplICRib3gtcmFkaXVzLXNpemUgMDtcbn1cblxuJWJveC1yYWRpdXMtdG9wIHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZSAkYm94LXJhZGl1cy1zaXplIDAgMDtcbn1cblxuJWJveC1yYWRpdXMtYm90dG9tIHtcbiAgYm9yZGVyLXJhZGl1czogMCAwICRib3gtcmFkaXVzLXNpemUgJGJveC1yYWRpdXMtc2l6ZTtcbn1cblxuJWJveC1yYWRpdXMtdG9wLWxlZnQge1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplIDAgMCAwO1xufVxuXG4lYm94LXJhZGl1cy10b3AtcmlnaHQge1xuICBib3JkZXItcmFkaXVzOiAwICRib3gtcmFkaXVzLXNpemUgMCAwO1xufVxuXG4lYm94LXNoYWRvdyB7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3c7XG59XG5cbiVib3gtbmVhdCB7XG4gIEBleHRlbmQgJWJveC1zaGFkb3csICVib3gtcmFkaXVzO1xufVxuXG4lYm94LW5lYXQtdG9wIHtcbiAgQGV4dGVuZCAlYm94LXNoYWRvdywgJWJveC1yYWRpdXMtdG9wO1xufVxuXG4lYm94LW5lYXQtZm9yY2Uge1xuICBAZXh0ZW5kICVib3gtc2hhZG93LCAlYm94LXJhZGl1cy1mb3JjZTtcbn1cbiIsIiR2cC1taW4td2lkdGg6IDMyMHB4ICFkZWZhdWx0O1xuJHZwLW1heC13aWR0aDogMTIwMHB4ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc3RyaXAtdW5pdCgkdmFsdWUpIHtcbiAgQHJldHVybiAkdmFsdWUgLyAoJHZhbHVlICogMCArIDEpO1xufVxuXG5AbWl4aW4gZmx1aWQtc2l6ZSgkcHJvcCwgJG1pbi1zaXplLCAkbWF4LXNpemUsICRtaW4tdnc6ICR2cC1taW4td2lkdGgsICRtYXgtdnc6ICR2cC1tYXgtd2lkdGgpIHtcbiAgJHUxOiB1bml0KCRtaW4tdncpO1xuICAkdTI6IHVuaXQoJG1heC12dyk7XG4gICR1MzogdW5pdCgkbWluLXNpemUpO1xuICAkdTQ6IHVuaXQoJG1heC1zaXplKTtcblxuICBAaWYgJHUxID09ICR1MiBhbmQgJHUxID09ICR1MyBhbmQgJHUxID09ICR1NCB7XG4gICAgJiB7XG4gICAgICAjeyRwcm9wfTogJG1pbi1zaXplO1xuXG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbi12dykge1xuICAgICAgICAjeyRwcm9wfTogY2FsYygjeyRtaW4tc2l6ZX0gKyAje3N0cmlwLXVuaXQoJG1heC1zaXplIC0gJG1pbi1zaXplKX0gKiAoKDEwMHZ3IC0gI3skbWluLXZ3fSkgLyAje3N0cmlwLXVuaXQoJG1heC12dyAtICRtaW4tdncpfSkpO1xuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1heC12dykge1xuICAgICAgICAjeyRwcm9wfTogJG1heC1zaXplO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGVycm9yIFwiZmx1aWQtc2l6ZSByZXF1aXJlcyB0aGF0IGFsbCB2YWx1ZXMgaGF2ZSB0aGUgc2FtZSB1bml0XCI7XG4gIH1cbn1cbiIsIi5mYnQge1xuICBAZXh0ZW5kICVidXR0b24tbm9uZTtcblxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBsaW5lLWhlaWdodDogMS41O1xuXG4gIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgICAmOmhvdmVyOm5vdCguZGlzYWJsZWQpOm5vdChbZGlzYWJsZWRdKSB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZWQxYzI0O1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgfVxuICB9XG5cbiAgJi5hY3RpdmUge1xuICAgIGJhY2tncm91bmQ6ICNiZDExMWYgIWltcG9ydGFudDtcbiAgICBjb2xvcjogI2ZmZjtcbiAgfVxuXG4gICYuZGlzYWJsZWQsXG4gICZbZGlzYWJsZWRdIHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xuICB9XG59XG4iLCJAa2V5ZnJhbWVzIGJhci1nbGlkZXItYW5pbSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEzMDBweCk7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjEwMHB4KTtcbiAgfVxufVxuXG4uYmFyLWdsaWRlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAmOjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogNzBweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKSk7XG4gICAgYW5pbWF0aW9uOiBiYXItZ2xpZGVyLWFuaW0gM3MgbGluZWFyIGluZmluaXRlO1xuICB9XG59XG4iLCIuc2xpc3Qge1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcblxuICB0aGVhZCB7XG4gICAgQGV4dGVuZCAlbWV0YWwsICVyb2JvdG87XG5cbiAgICB0aCB7XG4gICAgICBib3JkZXItdG9wOiAkYm9yZGVyO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcbiAgICAgIHBhZGRpbmc6IC41cmVtIC44cmVtO1xuICAgIH1cblxuICAgIHRoLmxhcmdlIHtcbiAgICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xuICAgIH1cbiAgfVxuXG4gIHRkIHtcbiAgICBwYWRkaW5nOiAxcmVtO1xuXG4gICAgLmxhYmVsIHtcbiAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG4gICAgICBmb250LXNpemU6IC44cmVtO1xuICAgIH1cbiAgfVxuXG4gIHRib2R5IHRyOm50aC1jaGlsZChldmVuKSB7XG4gICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG4gIH1cblxuICB0ZDpmaXJzdC1jaGlsZCxcbiAgdGg6Zmlyc3QtY2hpbGQge1xuICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xuICB9XG5cbiAgJi1wYWQge1xuICAgIHRkOmZpcnN0LWNoaWxkLFxuICAgIHRoOmZpcnN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmctbGVmdDogdmFyKC0tYm94LXBhZGRpbmcpO1xuICAgIH1cblxuICAgIHRkOmxhc3QtY2hpbGQsXG4gICAgdGg6bGFzdC1jaGlsZCB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1ib3gtcGFkZGluZyk7XG4gICAgfVxuICB9XG5cbiAgJi1pbnZlcnQge1xuICAgIHRib2R5IHRyOm50aC1jaGlsZChvZGQpIHtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICAgIH1cblxuICAgIHRib2R5IHRyOm50aC1jaGlsZChldmVuKSB7XG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIH1cbiAgfVxufVxuIiwiLnB1bGwtcXVvdGUge1xuICBtYXJnaW46IDAgYXV0bztcblxuICBwIHtcbiAgICBjb2xvcjogJGMtZm9udDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWFyZ2luOiAwIC43ZW07XG4gICAgcGFkZGluZzogMWVtIDA7XG4gICAgYm9yZGVyOiAkYm9yZGVyO1xuICAgIGJvcmRlci13aWR0aDogMXB4IDA7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuXG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGJvdHRvbTogLTlweDtcbiAgICAgIGxlZnQ6IDQycHg7XG4gICAgICB3aWR0aDogMTVweDtcbiAgICAgIGhlaWdodDogMTVweDtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgJGMtYm9yZGVyO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLWJvcmRlcjtcbiAgICAgIHRyYW5zZm9ybTogc2tldyg0NWRlZykgcm90YXRlKC00NWRlZyk7XG4gICAgfVxuICB9XG5cbiAgJi5sb25nIHAge1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgfVxuXG4gIGZvb3RlciB7XG4gICAgbWFyZ2luOiAxMHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuXG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogJ1xcMjAxNFxcMjAwOSc7XG4gICAgfVxuICB9XG59XG4iLCIlZmlyZS10cm9waHktc2hhZG93IHtcbiAgdGV4dC1zaGFkb3c6IDAgLjAwOGVtIC4xMjdlbSAjZmVmY2M5LCAuMDU1ZW0gLS4wNjZlbSAuMmVtICNmZWVjODUsIC0uMTExZW0gLS4xMjdlbSAuMjcyZW0gI2ZmYWUzNCwgLjExMWVtIC0uMjcyZW0gLjQxMWVtICNlYzc2MGMsIC0uMTExZW0gLS40NTZlbSAuNDE2ZW0gI2NkNDYwNiwgMCAtLjUzM2VtIC41NzdlbSAjOTczNzE2LCAuMDU1ZW0gLS41NWVtIC41MzNlbSAjNDUxYjBlO1xufVxuXG5Aa2V5ZnJhbWVzIGZpcmUtdHJvcGh5IHtcbiAgMCUge1xuICAgIHRleHQtc2hhZG93OiAwIC4wMDhlbSAuMTI3ZW0gI2ZlZmNjOSwgLjA1NWVtIC0uMDY2ZW0gLjJlbSAjZmVlYzg1LCAtLjExMWVtIC0uMTI3ZW0gLjI3MmVtICNmZmFlMzQsIC4xMTFlbSAtLjI3MmVtIC40MTFlbSAjZWM3NjBjLCAtLjExMWVtIC0uNDU2ZW0gLjQxNmVtICNjZDQ2MDYsIDAgLS41MzNlbSAuNTc3ZW0gIzk3MzcxNiwgLjA1NWVtIC0uNTVlbSAuNTMzZW0gIzQ1MWIwZTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRleHQtc2hhZG93OiAwIDAgLjExMWVtICNmZWZjYzksIC4wNTVlbSAtLjA1NWVtIC4xNjZlbSAjZmVmY2M5LCAtLjExMWVtIC0uMTExZW0gLjIyMmVtICNmZWVjODUsIC4xMjJlbSAtLjIzM2VtIC4zMzNlbSAjZmZhZTM0LCAtLjEyMmVtIC0uMzIyZW0gLjI3N2VtICNlYzc2MGMsIDAgLS40NTZlbSAuNDQ0ZW0gI2NkNDYwNiwgLjA1NWVtIC0uNWVtIC40NDRlbSAjOTczNzE2O1xuICB9XG59XG5cbi5maXJlLXRyb3BoeSB7XG4gIEBleHRlbmQgJWZpcmUtdHJvcGh5LXNoYWRvdztcblxuICBjb2xvcjogJGMtZm9udDtcbiAgZm9udC1zaXplOiA5MHB4O1xuICBkaXNwbGF5OiBibG9jaztcblxuICAmOmhvdmVyIHtcbiAgICBhbmltYXRpb246IGZpcmUtdHJvcGh5IDEuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGUgYWx0ZXJuYXRlO1xuICB9XG59XG4iLCIuY29sb3ItaWNvbiB7XG4gIEBpZiAkdGhlbWUtbGlnaHQge1xuICAgICYud2hpdGU6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIktcIjtcbiAgICB9XG5cbiAgICAmLmJsYWNrOjpiZWZvcmUge1xuICAgICAgY29udGVudDogXCJKXCI7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAmLndoaXRlOjpiZWZvcmUge1xuICAgICAgY29udGVudDogXCJKXCI7XG4gICAgfVxuXG4gICAgJi5ibGFjazo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6IFwiS1wiO1xuICAgIH1cbiAgfVxuXG4gICYucmFuZG9tOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwibFwiO1xuICB9XG59XG4iLCIuY29udGV4dC1zdHJlYW1lcnMge1xuICBtYXgtaGVpZ2h0OiAyMHZoO1xuICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG4uY29udGV4dC1zdHJlYW1lciB7XG4gIEBleHRlbmQgJW5vd3JhcC1oaWRkZW4sICVib3gtcmFkaXVzLWJvdHRvbSwgJWJveC1zaGFkb3csICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgaGVpZ2h0OiAyLjJlbTtcbiAgY29sb3I6ICRjLXNlY29uZGFyeS1vdmVyICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQ6IG1peCgkYy1zZWNvbmRhcnksICRjLWJnLXBhZ2UsIDYwJSk7XG5cbiAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAmOjpiZWZvcmUge1xuICAgIGZvbnQtc2l6ZTogMS4zZW07XG4gICAgbWFyZ2luLWxlZnQ6IC40ZW07XG4gIH1cblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtc2Vjb25kYXJ5LCAkYy1iZy1wYWdlLCA4MCUpO1xuICB9XG59XG4iLCIucG9kaXVtLXdyYXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmctYm90dG9tOiAyMHB4O1xuXG4gICNjb25mZXR0aSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDI1cztcblxuICAgICYuZmFkZWQge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cbn1cblxuLnBvZGl1bSB7XG4gID4gZGl2IHtcbiAgICBAZXh0ZW5kICVlbGxpcHNpcztcblxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cblxuICAuZmlyc3Qge1xuICAgIHdpZHRoOiA0NCU7XG4gICAgZm9udC1zaXplOiAxLjZlbTtcbiAgfVxuXG4gIC5zZWNvbmQge1xuICAgIGZvbnQtc2l6ZTogMS4zZW07XG4gICAgd2lkdGg6IDI5JTtcbiAgfVxuXG4gIC50aGlyZCB7XG4gICAgZm9udC1zaXplOiAxLjJlbTtcbiAgICB3aWR0aDogMjclO1xuICB9XG5cbiAgLnRyb3BoeSB7XG4gICAgbWFyZ2luOiAwIGF1dG8gLjVlbSBhdXRvO1xuICAgIGJhY2tncm91bmQ6IGNlbnRlciAvIGNvbnRhaW4gbm8tcmVwZWF0O1xuICB9XG5cbiAgLmZpcnN0IC50cm9waHkge1xuICAgIGhlaWdodDogOWVtO1xuICAgIHdpZHRoOiA5ZW07XG4gICAgYmFja2dyb3VuZC1pbWFnZTogaW1nLXVybChcInRyb3BoeS9saWNoZXNzLW1hc3NpdmUuc3ZnXCIpO1xuICB9XG5cbiAgLnNlY29uZCAudHJvcGh5IHtcbiAgICBoZWlnaHQ6IDllbTtcbiAgICB3aWR0aDogN2VtO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGltZy11cmwoXCJ0cm9waHkvbGljaGVzcy1zaWx2ZXItMS5zdmdcIik7XG4gIH1cblxuICAudGhpcmQgLnRyb3BoeSB7XG4gICAgaGVpZ2h0OiA3ZW07XG4gICAgd2lkdGg6IDdlbTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWctdXJsKFwidHJvcGh5L2xpY2hlc3MtYnJvbnplLTIuc3ZnXCIpO1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtbm90LXh4LXNtYWxsKSB7XG4gICAgLnRyb3BoeSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG5cbiAgLnVzZXItbGluayB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0xcHg7XG4gIH1cblxuICAuc3RhdHMge1xuICAgIG1hcmdpbjogLjVlbSBhdXRvIDAgYXV0bztcbiAgICBmb250LXNpemU6IC43ZW07XG5cbiAgICB0aCB7XG4gICAgICBsZXR0ZXItc3BhY2luZzogLTFweDtcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgfVxuXG4gICAgdGQge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDVweDtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC50aGlyZCAuc3RhdHMge1xuICAgIGZvbnQtc2l6ZTogLjhlbTtcbiAgfVxufVxuIiwiQGltcG9ydCBcIi4uLy4uLy4uL2NvbW1vbi9jc3MvYmFzZS9zY3JvbGxiYXJcIjtcblxuQGltcG9ydCBcInRhYlwiO1xuQGltcG9ydCBcIm1lbWJlcnNcIjtcbkBpbXBvcnQgXCJkaXNjdXNzaW9uXCI7XG5AaW1wb3J0IFwicGFsYW50aXJcIjtcblxuLm1jaGF0IHtcbiAgQGV4dGVuZCAlYm94LW5lYXQtZm9yY2UsICVmbGV4LWNvbHVtbjtcblxuICBncmlkLWFyZWE6IGNoYXQ7XG4gIGp1c3RpZnktY29udGVudDogc3RyZXRjaDtcblxuICAmX19jb250ZW50IHtcbiAgICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgJi5ub3RlIHRleHRhcmVhIHtcbiAgICAgIGZvbnQtc2l6ZTogLjllbTtcbiAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgbGluZS1oZWlnaHQ6IDEuN2VtO1xuICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgIHJlc2l6ZTogbm9uZTtcbiAgICB9XG4gIH1cblxuICBtaW4taGVpZ2h0OiAxNWVtO1xufVxuIiwiYm9keSA6Oi13ZWJraXQtc2Nyb2xsYmFyLFxuYm9keSA6Oi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lciB7XG4gIHdpZHRoOiAuNXJlbTtcbiAgYmFja2dyb3VuZDogJGMtYmctYm94O1xufVxuXG5ib2R5IDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICBiYWNrZ3JvdW5kOiAkYy1zaGFkZTtcbn1cblxuYm9keSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyLFxuYm9keSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmFjdGl2ZSB7XG4gIGJhY2tncm91bmQ6ICRjLWZvbnQtZGltbWVyO1xufVxuIiwiLm1jaGF0IHtcbiAgJl9fdGFicyB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuXG4gICZfX3RhYiB7XG4gICAgQGV4dGVuZCAlcm9ib3RvLCAlbm93cmFwLWhpZGRlbiwgJWJveC1yYWRpdXMtdG9wO1xuXG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBhZGRpbmc6IC40ZW0gMTBweDtcblxuICAgIC8vIGJhY2tncm91bmQ6ICRjLXNoYWRlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBjb2xvcjogJGMtZm9udC1wYWdlO1xuXG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLWFjY2VudCwgJGMtYmctYm94LCAxNSUpO1xuICAgIH1cblxuICAgICYtYWN0aXZlIHtcbiAgICAgIGNvbG9yOiAkYy1mb250O1xuICAgICAgYmFja2dyb3VuZDogJGMtYmctYm94ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgaW5wdXQge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgZGlzcGxheTogbm9uZTtcblxuICAgICAgQGV4dGVuZCAlY2hlY2tib3g7XG4gICAgfVxuXG4gICAgJi1hY3RpdmUgaW5wdXQge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgc3BhbiB7XG4gICAgICBAZXh0ZW5kICVub3dyYXAtZWxsaXBzaXM7XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIGJvcmRlci1yaWdodDogbm9uZTtcbiAgICB9XG4gIH1cblxuICAmLW9wdGlvbmFsIC5tY2hhdF9fdGFiLmRpc2N1c3Npb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cbn1cbiIsIi5jaGF0X19tZW1iZXJzIHtcbiAgQGV4dGVuZCAlcGFnZS10ZXh0O1xuXG4gIGZvbnQtc2l6ZTogLjllbTtcblxuICAvLyBtaW4taGVpZ2h0OiA1ZW07XG4gIC8vIG1heC1oZWlnaHQ6IDllbTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuIiwiLm1jaGF0IHtcbiAgJl9fbWVzc2FnZXMge1xuICAgIEBleHRlbmQgJWJyZWFrLXdvcmQ7XG5cbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICBtYXgtaGVpZ2h0OiA1MHZoO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMy11bmlib2FyZCkge1xuICAgICAgbWF4LWhlaWdodDogbm9uZTtcbiAgICB9XG5cblxuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgIGN1cnNvcjogaW5pdGlhbDtcbiAgICBmb250LXNpemU6IC45ZW07XG5cbiAgICBsaSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBwYWRkaW5nOiAuNWVtIDAgLjVlbSAxMHB4O1xuICAgICAgbGluZS1oZWlnaHQ6IDEuMmVtO1xuICAgICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAgICAgdXNlci1zZWxlY3Q6IHRleHQ7XG4gICAgfVxuXG4gICAgLmRlbGV0ZWQge1xuICAgICAgb3BhY2l0eTogMC41O1xuICAgIH1cblxuICAgIC5zeXN0ZW0ge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICBmb250LXNpemU6IC45ZW07XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuY29sb3IsXG4gICAgLnVzZXItbGluayB7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgICBsZXR0ZXItc3BhY2luZzogLTFweDtcbiAgICAgIG1hcmdpbi1yaWdodDogLjRlbTtcbiAgICB9XG5cbiAgICAudXRpdGxlIHtcbiAgICAgIG1hcmdpbi1yaWdodDogM3B4O1xuICAgIH1cblxuICAgIGE6bm90KC51c2VyLWxpbmspIHtcbiAgICAgIEBleHRlbmQgJXJvYm90bztcbiAgICB9XG5cbiAgICBpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDVweDtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAzcHg7XG4gICAgICBwYWRkaW5nOiA0cHggNXB4O1xuICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgY29sb3I6ICRjLWFjY2VudDtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGk6aG92ZXIgaSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHRleHQtc2hhZG93OiAwIDAgMnB4ICRjLWJnLWJveCwgMCAwIDVweCAkYy1iZy1ib3gsIDAgMCAxMHB4ICRjLWJnLWJveDtcbiAgICB9XG4gIH1cblxuICAmX19zYXkge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIGJvcmRlcjogMDtcbiAgICBib3JkZXItdG9wOiAkYm9yZGVyO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgcGFkZGluZzogM3B4IDIwcHggM3B4IDRweDtcblxuICAgICYud2hpc3BlciB7XG4gICAgICBjb2xvcjogJGMtZ29vZDtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIH1cbiAgfVxufVxuIiwiQGtleWZyYW1lcyBwYWxhbnRpci1nbG93aW5nIHtcbiAgNDAlIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICB9XG5cbiAgNTAlIHtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtc2Vjb25kYXJ5LCAkYy1iZy1ib3gsIDMwJSk7XG4gIH1cblxuICA2MCUge1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1wcmltYXJ5LCAkYy1iZy1ib3gsIDMwJSk7XG4gIH1cblxuICA3MCUge1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gIH1cbn1cblxuLnBhbGFudGlyIHtcbiAgZmxleDogMCAxIGF1dG87XG4gIGFuaW1hdGlvbjogcGFsYW50aXItZ2xvd2luZyAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICBib3JkZXItcmFkaXVzOiAwIDNweCAwIDA7XG5cbiAgJi1zbG90IHtcbiAgICBhbmltYXRpb246IG5vbmU7XG4gICAgb3BhY2l0eTogLjY7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5cbiAgJi1vZmYge1xuICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgfVxuXG4gICYtb24ge1xuICAgIGJhY2tncm91bmQ6ICRjLWdvb2Q7XG4gICAgY29sb3I6ICRjLWdvb2Qtb3ZlcjtcbiAgICBhbmltYXRpb246IG5vbmU7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJhZCAhaW1wb3J0YW50O1xuICAgICAgY29sb3I6ICRjLWJhZC1vdmVyICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgJjo6YWZ0ZXIge1xuICAgIHRvcDogMXB4O1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG59XG4iLCIkbXEtY29sMTogJG1xLWNvbDEtdW5pYm9hcmQ7XG4kbXEtY29sMjogJG1xLXNtYWxsO1xuJG1xLWNvbDM6ICRtcS1jb2wzLXVuaWJvYXJkO1xuXG5AaW1wb3J0IFwibGF5b3V0XCI7XG5AaW1wb3J0IFwic2lkZVwiO1xuQGltcG9ydCBcImZlYXR1cmVkXCI7XG5AaW1wb3J0IFwiYXBwLWhlYWRlclwiO1xuQGltcG9ydCBcImFwcC1ub3RpY2VcIjtcbkBpbXBvcnQgXCJhcHAtY29udHJvbFwiO1xuQGltcG9ydCBcImFwcC1zdGFuZGluZ1wiO1xuQGltcG9ydCBcInN0YXRzXCI7XG5AaW1wb3J0IFwiZHVlbFwiO1xuQGltcG9ydCBcImFjdG9yLWluZm9cIjtcbkBpbXBvcnQgXCJwbGF5ZXItaW5mb1wiO1xuQGltcG9ydCBcInRlYW0taW5mb1wiO1xuXG4udG91ciB7XG4gIC5wdWxsLXF1b3RlIHtcbiAgICBtYXJnaW4tdG9wOiAzMHB4O1xuICAgIHdpZHRoOiAzMDBweDtcbiAgfVxuXG4gIC5ib3guY3JlYXRlZCB7XG4gICAgcGFkZGluZy1ib3R0b206IDJlbTtcblxuICAgIC8qIGFzIHF1b3RlIG1hcmdpbiAqL1xuICB9XG59XG5cbi50b3VyX19mYXEge1xuICBwYWRkaW5nOiA0ZW0gdmFyKC0tYm94LXBhZGRpbmcpO1xuICBkaXNwbGF5OiBub25lO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG5cbiAgaDIge1xuICAgIG1hcmdpbjogMS41ZW0gMCAuNWVtIDA7XG4gIH1cbn1cbiIsIkBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgI21haW4td3JhcCB7XG4gICAgLS1tYWluLW1heC13aWR0aDogYXV0bztcbiAgfVxufVxuXG5cbiRjaGF0LW9wdGltYWwtc2l6ZTogY2FsYygxMDB2aCAtICN7JHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodH0gLSAjeyRibG9jay1nYXB9IC0gM3JlbSk7XG5cbi50b3VyIHtcbiAgZGlzcGxheTogZ3JpZDtcblxuICAmX19zaWRlIHtcbiAgICBncmlkLWFyZWE6IHNpZGU7XG4gIH1cblxuICAmX190YWJsZSwgJl9fc3RhdHMsICZfX3BsYXllciB7XG4gICAgZ3JpZC1hcmVhOiB0YWJsZTtcbiAgfVxuXG4gICZfX21haW4ge1xuICAgIGdyaWQtYXJlYTogbWFpbjtcbiAgfVxuXG4gIC5jaGF0X19tZW1iZXJzIHtcbiAgICBncmlkLWFyZWE6IHVjaGF0O1xuICB9XG5cbiAgZ3JpZC10ZW1wbGF0ZS1hcmVhczogJ21haW4nICdzaWRlJyAndWNoYXQnICd0YWJsZSc7XG4gIGdyaWQtZ2FwOiAkYmxvY2stZ2FwO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6ICRjb2wyLXVuaWJvYXJkLWRlZmF1bHQtd2lkdGggJGNvbDItdW5pYm9hcmQtdGFibGU7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAkY2hhdC1vcHRpbWFsLXNpemUgbWluLWNvbnRlbnQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczogJ21haW4gIHNpZGUnICdtYWluICB1Y2hhdCcgJ3RhYmxlIHRhYmxlJztcblxuICAgICZfX3RhYmxlIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICAgID4gKiB7XG4gICAgICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1jaGF0X19tZXNzYWdlcyB7XG4gICAgICBtYXgtaGVpZ2h0OiBpbmhlcml0O1xuICAgIH1cbiAgfVxuXG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMykge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogJGNvbDMtdW5pYm9hcmQtc2lkZSAkY29sMy11bmlib2FyZC1kZWZhdWx0LXdpZHRoICRjb2wzLXVuaWJvYXJkLXRhYmxlO1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogJGNoYXQtb3B0aW1hbC1zaXplIGF1dG87XG4gICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczogJ3NpZGUgIG1haW4gdGFibGUnICd1Y2hhdCBtYWluIHRhYmxlJztcblxuICAgICZfX3RhYmxlIHtcbiAgICAgIGZsZXgtZmxvdzogY29sdW1uO1xuXG4gICAgICA+ICoge1xuICAgICAgICBmbGV4OiBpbmhlcml0O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLnRvdXJfX3NpZGUge1xuICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAubWNoYXQge1xuICAgIGZsZXg6IDEgMSA3ZW07XG4gICAgbWFyZ2luLXRvcDogJGJsb2NrLWdhcDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICAgIG1pbi1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgfVxuICB9XG59XG5cbi50b3VyX19tZXRhIHtcbiAgQGV4dGVuZCAlYm94LW5lYXQtZm9yY2U7XG5cbiAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICBwYWRkaW5nOiAjeyRibG9jay1nYXAgKiAwLjZ9ICRibG9jay1nYXA7XG5cbiAgc2VjdGlvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJsb2NrLWdhcDtcblxuICAgICZbZGF0YS1pY29uXSB7XG4gICAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG4gICAgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGZvbnQtc2l6ZTogM3JlbTtcbiAgICAgIG1hcmdpbi1yaWdodDogNCU7XG4gICAgfVxuXG4gICAgcCB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgLnNldHVwIHtcbiAgICAgIEBleHRlbmQgJW5vd3JhcC1oaWRkZW47XG4gICAgfVxuXG4gICAgdGltZSB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgIC5kZWZlbmRlcjo6YmVmb3JlIHtcbiAgICAgIGZvbnQtc2l6ZTogMS42ZW07XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogLS4yNmVtO1xuICAgICAgbWFyZ2luOiAwIC4xNWVtIDAgLS4xNWVtO1xuICAgIH1cblxuICAgICYuY29uZGl0aW9ucyB7XG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgICB9XG5cbiAgICAgICYuYWNjZXB0ZWQge1xuICAgICAgICBjb2xvcjogJGMtZ29vZDtcbiAgICAgIH1cblxuICAgICAgJi5yZWZ1c2VkIHtcbiAgICAgICAgY29sb3I6ICRjLWJhZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuZGVzY3JpcHRpb24ge1xuICAgIEBleHRlbmQgJWJyZWFrLXdvcmQ7XG5cbiAgICBtYXgtaGVpZ2h0OiAyMHZoO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gIH1cblxuICAudG91cl9fcHJpemUge1xuICAgIEBleHRlbmQgJWJveC1yYWRpdXM7XG5cbiAgICBwYWRkaW5nOiAxZW07XG4gICAgYmFja2dyb3VuZDogbWl4KCRjLWZhbmN5LCAkYy1iZy1ib3gsIDE1JSk7XG4gICAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICAgIGZvbnQtc2l6ZTogLjllbTtcbiAgfVxufVxuXG4uY2hhdF9fbWVtYmVycyB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuXG4gIC8qIGZpeGVzIGludmlzaWJsZSBzcGVjdGF0b3JzIG9uIGZpcmVmb3gsIGNvbDIgKi9cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMSkge1xuICAgIG1hcmdpbjogMCAkYmxvY2stZ2FwO1xuICB9XG59XG4iLCIudG91cl9fZmVhdHVyZWQge1xuICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAubWluaS1nYW1lX19wbGF5ZXIge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyLW5vd3JhcDtcblxuICAgICYgaSB7XG4gICAgICBmbGV4OiAwIDAgYXV0bztcblxuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgY29sb3I6ICRjLWFjY2VudDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1pbmktZ2FtZV9fdXNlciB7XG4gICAgZGlzcGxheTogZmxleDtcblxuICAgIHN0cm9uZyB7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDFjaDtcbiAgICB9XG5cbiAgICAudXNlci1saW5rIHtcbiAgICAgIEBleHRlbmQgJWZsZXgtYmV0d2VlbjtcblxuICAgICAgZmxleDogMSAxIDEwMCU7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDFlbTtcbiAgICB9XG4gIH1cbn1cbiIsIi50b3VyX19tYWluX19oZWFkZXIge1xuICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtaW4taGVpZ2h0OiA3ZW07XG4gIHBhZGRpbmc6IDAgI3skYmxvY2stZ2FwICogMS41fTtcblxuICBoMSB7XG4gICAgZm9udC1zaXplOiAyLjJyZW07XG4gICAgZmxleDogOSAxIGF1dG87XG4gICAgbWFyZ2luOiAwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICBhIHtcbiAgICAgIC8qIEdNIHdpa2lwZWRpYSAqL1xuICAgICAgY29sb3I6IG1peCgkYy1saW5rLCAkYy1mb250LCAzNSUpO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6ICRjLWxpbms7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaW1nIHtcbiAgICBmbGV4OiAwIDAgNjBweDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogNjBweDtcbiAgICBoZWlnaHQ6IDYwcHg7XG4gICAgcGFkZGluZzogNnB4O1xuICB9XG5cbiAgLmltZyB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xuICB9XG5cbiAgaTo6YmVmb3JlIHtcbiAgICBmb250LXNpemU6IDIuMnJlbTtcbiAgfVxuXG4gIC50b3VyLXNoZWQgJiBoMSB7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDJweDtcbiAgfVxuXG4gIC50b3VyLXNoZWQtd2Vla2x5ICYgaTo6YmVmb3JlIHtcbiAgICBmb250LXNpemU6IDM1cHg7XG4gIH1cblxuICAudG91ci1zaGVkLW1vbnRobHkgJiBpOjpiZWZvcmUsXG4gIC50b3VyLXNoZWQtd2Vla2VuZCAmIGk6OmJlZm9yZSB7XG4gICAgZm9udC1zaXplOiA0MHB4O1xuICB9XG5cbiAgLnRvdXItc2hlZC15ZWFybHkgJiBpOjpiZWZvcmUge1xuICAgIGZvbnQtc2l6ZTogNDVweDtcbiAgfVxuXG4gIC50b3VyLXNoZWQtd2Vla2VuZCAmIGgxLFxuICAudG91ci1zaGVkLXllYXJseSAmIGgxIHtcbiAgICBsZXR0ZXItc3BhY2luZzogM3B4O1xuICB9XG5cbiAgLmNsb2NrIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG5cbiAgICAmLWNyZWF0ZWQge1xuICAgICAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG5cbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC50b3VyLXNjaGVkICYgaDEsXG4gIC50b3VyLXNjaGVkICYgLmltZyB7XG4gICAgY29sb3I6ICRjLWJyYWc7XG4gIH1cblxuICAudG91cl9fbWFpbi1maW5pc2hlZCAmIGgxIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAudG91ci1zY2hlZC1tYXJhdGhvbiAmIHtcbiAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICB9XG4gIH1cblxuICAudGltZSB7XG4gICAgQGV4dGVuZCAlcm9ib3RvO1xuXG4gICAgZm9udC1zaXplOiAxLjVlbTtcbiAgICBtYXJnaW4tbGVmdDogLjJlbTtcbiAgfVxuXG4gIC5zaHkge1xuICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICAgIGZvbnQtc2l6ZTogLjllbTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIG9wYWNpdHk6IDAuNjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB9XG5cbiAgLnRvdXItc2NoZWQtbWFyYXRob24gJiBoMSB7XG4gICAgY29sb3I6ICM0MTY2YTAgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nLWxlZnQ6IDkwcHg7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDJweDtcbiAgfVxuXG4gIC50b3VyLXNjaGVkLW1hcmF0aG9uICYgLmZpcmUtdHJvcGh5IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDEwcHg7XG4gICAgd2lkdGg6IDcwcHg7XG4gICAgaGVpZ2h0OiA4MHB4O1xuICAgIG9wYWNpdHk6IDAuNztcbiAgICB0cmFuc2l0aW9uOiAxcztcbiAgICBmb250LWZhbWlseTogXCJsaWNoZXNzXCI7XG4gICAgZmlsdGVyOiBodWUtcm90YXRlKDE5MGRlZyk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5cbiAgLnRvdXItc2NoZWQtc2hpZWxkICYge1xuICAgIGgxIHtcbiAgICAgIHBhZGRpbmctbGVmdDogOTBweDtcbiAgICAgIGxldHRlci1zcGFjaW5nOiAycHg7XG5cbiAgICAgIC5zaGllbGQtdHJvcGh5IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IC04cHg7XG4gICAgICAgIGxlZnQ6IDEycHg7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogNjdweDtcbiAgICAgICAgaGVpZ2h0OiA4MHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL3Ryb3BoeS9zaGllbGQtZ29sZC5wbmcpIG5vLXJlcGVhdDtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICAgICAgICBmb250LWZhbWlseTogXCJsaWNoZXNzXCI7XG4gICAgICAgIGZvbnQtc2l6ZTogNDBweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDgwcHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgY29sb3I6ICMzMzMgIWltcG9ydGFudDtcbiAgICAgICAgdGV4dC1zaGFkb3c6IDAgMCA2cHggI2ZmZjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi50b3VyX19ub3RpY2Uge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZDogJGMtZ29vZDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiAuNWVtIDA7XG4gIG9wYWNpdHk6IDAuODtcblxuICAmLmNsb3NlZCB7XG4gICAgYmFja2dyb3VuZDogJGMtcHJpbWFyeTtcbiAgfVxufVxuXG4udG91cl9fdXItcGxheWluZyB7XG4gIEBleHRlbmQgJWZsZXgtY29sdW1uO1xuXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC1zaXplOiAxLjVlbTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICY6OmJlZm9yZSxcbiAgJjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICdVJztcbiAgICBmb250LXNpemU6IDJyZW07XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMzBweDtcbiAgfVxuXG4gICY6OmJlZm9yZSB7XG4gICAgbGVmdDogMzBweDtcbiAgfVxuXG4gICY6OmFmdGVyIHtcbiAgICByaWdodDogMzBweDtcbiAgfVxufVxuIiwiLnRvdXJfX2NvbnRyb2xzIHtcbiAgQGV4dGVuZCAlbWV0YWwsICVmbGV4LWJldHdlZW4sICVib3gtc2hhZG93O1xuXG4gIHBhZGRpbmc6IDAgMHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLmZidCB7XG4gICAgcGFkZGluZzogLjZlbSAuOGVtO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEteHgtc21hbGwpIHtcbiAgICAgIHBhZGRpbmc6IC42ZW0gMWVtO1xuICAgIH1cblxuXG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsaW5lLWhlaWdodDogMS4zO1xuICB9XG5cbiAgQGtleWZyYW1lcyB0b3VyLWRlbGF5IHtcbiAgICAwJSB7XG4gICAgICB3aWR0aDogMCU7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cblxuICAuZGVsYXkge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTE3LCAxNTMsIDAsIDAuNSk7XG4gICAgd2lkdGg6IDAlO1xuXG4gICAgYnV0dG9uIHtcbiAgICAgIG9wYWNpdHk6IDAuNztcbiAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICAgIG1peC1ibGVuZC1tb2RlOiBsdW1pbm9zaXR5O1xuICAgIH1cbiAgfVxuXG4gIC5oaWdobGlnaHQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogNXB4O1xuICAgIHRvcDogLTNweDtcbiAgICBwYWRkaW5nOiA4cHggMjBweDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgY29sb3I6ICNGRkY7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJhY2tncm91bmQ6ICM4MkJGNTY7XG4gICAgYm9yZGVyLWJvdHRvbTogNXB4IHNvbGlkICM3NTk5MDA7XG4gICAgdGV4dC1zaGFkb3c6IDAgLTFweCAjNzU5OTAwO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjFzO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDBweCwgMHB4KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgZmlsdGVyOiBicmlnaHRuZXNzKDEuMDYpO1xuICAgIH1cblxuICAgICY6YWN0aXZlIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDBweCwgNXB4KTtcbiAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDFweDtcbiAgICAgIHRleHQtc2hhZG93OiAwIDAgIzc1OTkwMDtcbiAgICAgIGZpbHRlcjogYnJpZ2h0bmVzcygxKTtcbiAgICB9XG4gIH1cblxuICAuc3Bpbm5lciB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHdpZHRoOiAxLjVlbTtcbiAgICBoZWlnaHQ6IDEuNWVtO1xuICAgIG1hcmdpbi1yaWdodDogLjdlbTtcbiAgfVxuXG4gIC5wYWdlciB7XG4gICAgQGV4dGVuZCAlZmxleC1jZW50ZXI7XG5cbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAgIC5wYWdlIHtcbiAgICAgIG1hcmdpbjogMCAzcHg7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIGlucHV0IHtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIGJhY2tncm91bmQ6IGZhZGUtb3V0KCRjLXNlY29uZGFyeSwgMC44KTtcbiAgICB9XG5cbiAgICAuc2VhcmNoLFxuICAgIGlucHV0LFxuICAgIC50d2l0dGVyLXR5cGVhaGVhZCB7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuICB9XG5cbiAgLnNlYXJjaCAudHQtbWVudSAuc3Bpbm5lciB7XG4gICAgZmxvYXQ6IG5vbmU7XG4gICAgbWFyZ2luOiAxMHB4IGF1dG87XG4gIH1cbn1cbiIsIi50b3VyX19zdGFuZGluZyB7XG4gIGJvcmRlcjogbm9uZTtcblxuICAucGxheWVyIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDBweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwcHg7XG5cbiAgICAubmFtZSB7XG4gICAgICBAZXh0ZW5kICVub3dyYXAtZWxsaXBzaXM7XG5cbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7XG4gICAgICBtYXgtd2lkdGg6IDE0MHB4O1xuICAgIH1cbiAgfVxuXG4gIC51c2VyLWxpbmsubG9uZyB7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjdweDtcbiAgfVxuXG4gIC51c2VyLWxpbmsgLnJhdGluZyB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGZvbnQtc2l6ZTogLjhlbTtcbiAgfVxuXG4gIHRyLmxvbmcgLnVzZXItbGluayAucmF0aW5nIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nLWxlZnQ6IDBweDtcbiAgfVxuXG4gIHRyIHtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIH1cblxuICAubG9hZGluZyB0Ym9keSB7XG4gICAgb3BhY2l0eTogMC42O1xuXG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbihvcGFjaXR5LCAwLjNzKTtcbiAgfVxuXG4gICY6bm90KC5jcmVhdGVkKTpub3QoLmxvYWRpbmcpIHRib2R5IHRyOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtcHJpbWFyeSwgJGMtYmctYm94LCAzMCUpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gIHRyLm1lIHRkOmZpcnN0LWNoaWxkIHtcbiAgICAkYy1tZS1ib3JkZXI6IG1peCgkYy1zZWNvbmRhcnksICRjLWJnLWJveCwgNzAlKTtcblxuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJGMtbWUtYm9yZGVyIDBweCwgJGMtbWUtYm9yZGVyIDVweCwgcmdiYSgwLCAwLCAwLCAwKSA1cHgsIHJnYmEoMCwgMCwgMCwgMCkgMTAwJSk7XG4gIH1cblxuICB0ci5hY3RpdmUgdGQ6bGFzdC1jaGlsZCB7XG4gICAgJGMtYWN0aXZlLWJvcmRlcjogbWl4KCRjLXByaW1hcnksICRjLWJnLWJveCwgNzAlKTtcblxuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCAkYy1hY3RpdmUtYm9yZGVyIDBweCwgJGMtYWN0aXZlLWJvcmRlciA1cHgsIHJnYmEoMCwgMCwgMCwgMCkgNXB4LCByZ2JhKDAsIDAsIDAsIDApIDEwMCUpO1xuICB9XG5cbiAgdGQucmFuayB7XG4gICAgQGV4dGVuZCAlcm9ib3RvO1xuXG4gICAgcGFkZGluZzogMWVtIC41ZW0gMWVtIDEwcHg7XG4gICAgd2lkdGg6IDFweDtcblxuICAgIC8qIGhlbHBzIGtlZXBpbmcgaXQgYXMgc21hbGwgYXMgcG9zc2libGUgKi9cbiAgICBpIHtcbiAgICAgIG9wYWNpdHk6IC40O1xuICAgICAgZm9udC1zaXplOiAuOGVtO1xuICAgIH1cbiAgfVxuXG4gIC5zaGVldCB7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC4xZW07XG5cbiAgICAmID4gKiB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuXG4gICAgc2NvcmUge1xuICAgICAgb3BhY2l0eTogMC43O1xuICAgIH1cbiAgfVxuXG4gIHRyLmxvbmcgLnNoZWV0IHtcbiAgICBmb250LXNpemU6IC45cmVtO1xuICAgIGxldHRlci1zcGFjaW5nOiAuMDZlbTtcbiAgfVxuXG4gIHRyLnhsb25nIC5zaGVldCB7XG4gICAgZm9udC1zaXplOiAuODVyZW07XG4gICAgbGV0dGVyLXNwYWNpbmc6IC4wNGVtO1xuICB9XG5cbiAgZG91YmxlIHtcbiAgICBjb2xvcjogJGMtYnJhZztcblxuICAgIC8qIGZvbnQtd2VpZ2h0OiBib2xkOyAqL1xuICB9XG5cbiAgc3RyZWFrIHtcbiAgICBjb2xvcjogJGMtc2Vjb25kYXJ5O1xuXG4gICAgLyogZm9udC13ZWlnaHQ6IGJvbGQ7ICovXG4gIH1cblxuICAudG90YWwge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRibG9jay1nYXA7XG4gIH1cbn1cbiIsIi50b3VyX19zdGF0cyB7XG4gIEBleHRlbmQgJWJveC1uZWF0O1xuXG4gIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgcGFkZGluZzogMS43ZW0gMDtcbiAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcblxuICBoMiB7XG4gICAgZm9udC1zaXplOiAxLjVlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgdGFibGUge1xuICAgIG1hcmdpbjogYXV0bztcbiAgfVxuXG4gIHRkIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBwYWRkaW5nLWxlZnQ6IDFlbTtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBsaW5lLWhlaWdodDogMmVtO1xuICB9XG59XG4iLCIudG91cl9fZHVlbHMge1xuICBtYXJnaW46ICRibG9jay1nYXAgMCAwIDA7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgIG1hcmdpbjogMCAwIDAgJGJsb2NrLWdhcDtcbiAgfVxuXG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMykge1xuICAgIG1hcmdpbjogJGJsb2NrLWdhcCAwIDAgMDtcbiAgfVxuXG5cbiAgaDIge1xuICAgIGZvbnQtc2l6ZTogMS41ZW07XG4gICAgbWFyZ2luLWJvdHRvbTogLjJlbTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAycHg7XG4gIH1cblxuICBhIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAgIGNvbG9yOiAkYy1mb250O1xuICAgIHBhZGRpbmc6IC41ZW0gLjdlbTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjllbTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgbWl4KCRjLWJnLXBhZ2UsICRjLWJvcmRlci1wYWdlLCA1MCUpO1xuXG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLWxpbmssICRjLWJnLXBhZ2UsIDIwJSk7XG4gICAgfVxuICB9XG5cbiAgbGluZSB7XG4gICAgQGV4dGVuZCAlZmxleC1iZXR3ZWVuO1xuICB9XG5cbiAgc3Ryb25nIHtcbiAgICBAZXh0ZW5kICVlbGxpcHNpcztcblxuICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1heC13aWR0aDogNjAlO1xuICB9XG5cbiAgLnJhbmsge1xuICAgIEBleHRlbmQgJWJveC1yYWRpdXM7XG5cbiAgICBwYWRkaW5nOiAuMWVtIC41ZW07XG4gICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG4gIH1cblxuICAuYiAudXRpdGxlLFxuICAuYiAucmFuayB7XG4gICAgbWFyZ2luLXJpZ2h0OiAuM2VtO1xuICB9XG5cbiAgLmEgLnV0aXRsZSxcbiAgLmEgLnJhbmsge1xuICAgIG1hcmdpbi1sZWZ0OiAuM2VtO1xuICB9XG59XG4iLCIudG91cl9fYWN0b3ItaW5mbyB7XG4gIEBleHRlbmQgJWJveC1uZWF0LWZvcmNlO1xuXG4gIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuXG4gIC5zcGlubmVyIHtcbiAgICBtYXJnaW46IDVlbSBhdXRvO1xuICB9XG5cbiAgLmNsb3NlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA0cHg7XG4gICAgcmlnaHQ6IDVweDtcbiAgICBvcGFjaXR5OiAuNjtcblxuICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgICBjb2xvcjogJGMtcmVkO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuXG4gIC5zdGF0cyB7XG4gICAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG5cbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgIGgyIHtcbiAgICAgIEBleHRlbmQgJW1ldGFsO1xuXG4gICAgICBmb250LXNpemU6IDEuNGVtO1xuICAgICAgcGFkZGluZzogLjZyZW0gMXJlbTtcbiAgICAgIGJvcmRlci1ib3R0b206ICRib3JkZXI7XG4gICAgfVxuXG4gICAgdGFibGUge1xuICAgICAgbWFyZ2luOiAxZW0gYXV0bztcbiAgICB9XG5cbiAgICB0ZCB7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIHBhZGRpbmctbGVmdDogMTBweDtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgbGluZS1oZWlnaHQ6IDEuOGVtO1xuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBAZXh0ZW5kICVyb2JvdG87XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnN1Ymxpc3Qge1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgdHIge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGJhY2tncm91bmQtY29sb3IpO1xuXG4gICAgICAmOm50aC1jaGlsZChvZGQpIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG4gICAgICB9XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtbGluaywgJGMtYmctYm94LCAxMCUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoLCB0ZCB7XG4gICAgICBwYWRkaW5nOiAuM2VtO1xuICAgIH1cblxuICAgIHRoIHtcbiAgICAgIEBleHRlbmQgJXJvYm90bztcblxuICAgICAgcGFkZGluZy1sZWZ0OiA3cHg7XG4gICAgfVxuICB9XG59XG4iLCIudG91cl9fcGxheWVyLWluZm8ge1xuICAucGFpcmluZ3Mge1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgdHIge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGJhY2tncm91bmQtY29sb3IpO1xuXG4gICAgICAmOm50aC1jaGlsZChvZGQpIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG4gICAgICB9XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtbGluaywgJGMtYmctYm94LCAxMCUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoLCB0ZCB7XG4gICAgICBwYWRkaW5nOiAuM2VtO1xuICAgIH1cblxuICAgIHRoIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG4gICAgfVxuXG4gICAgdHI6aG92ZXIgdGgge1xuICAgICAgYm9yZGVyLWNvbG9yOiAkYy1mb250O1xuICAgIH1cblxuICAgIHRyLndpbjpob3ZlciB0aCB7XG4gICAgICBib3JkZXItY29sb3I6ICRjLWdvb2Q7XG4gICAgfVxuXG4gICAgdHIubG9zczpob3ZlciB0aCB7XG4gICAgICBib3JkZXItY29sb3I6ICRjLWJhZDtcbiAgICB9XG5cbiAgICB0ZDpudGgtY2hpbGQoMikge1xuICAgICAgQGV4dGVuZCAlbm93cmFwLWVsbGlwc2lzO1xuXG4gICAgICBtYXgtd2lkdGg6IDIwMHB4O1xuICAgIH1cblxuICAgIHRkOmxhc3QtY2hpbGQge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBvcGFjaXR5OiAuODtcbiAgICB9XG5cbiAgICB0ci53aW4gdGQ6bGFzdC1jaGlsZCB7XG4gICAgICBjb2xvcjogJGMtZ29vZDtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuXG4gICAgdHIubG9zcyB0ZDpsYXN0LWNoaWxkIHtcbiAgICAgIGNvbG9yOiAkYy1iYWQ7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuXG4gIC5jb2xvci1pY29uIHtcbiAgICBvcGFjaXR5OiAuNjtcbiAgfVxufVxuIiwiLnRvdXJfX3RlYW0taW5mbyB7XG4gIC5wbGF5ZXJzIHtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIHRyIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kLWNvbG9yKTtcblxuICAgICAgJjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICAgICAgfVxuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogbWl4KCRjLWxpbmssICRjLWJnLWJveCwgMTAlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aCwgdGQge1xuICAgICAgcGFkZGluZzogLjNlbSAxZW07XG4gICAgfVxuXG4gICAgdGQ6bGFzdC1jaGlsZCB7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG5cbiAgICAucmF0aW5nIHtcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIGZvbnQtc2l6ZTogLjhlbTtcbiAgICB9XG5cbiAgICAubGVhZGVyIHtcbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGNvbG9yOiAkYy1icmFnO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IC4xNWVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBRUVBLFlBQVk7QUFxQlosNkRBQTZEO0FBYzdELG1CQUFtQjtBQU1uQixrQ0FBa0M7QUFFbEMsc0JBQXNCO0FBTXRCLG9DQUFvQztBQUVwQyxvQkFBb0I7QUFNcEIsaUNBQWlDO0FBRWpDLGdCQUFnQjtBQUloQiwrQkFBK0I7QUFFL0IsZ0JBQWdCO0FBS2hCLCtCQUErQjtBQUUvQixpQkFBaUI7QUFJakIsa0JBQWtCO0FBSWxCLGNBQWM7QUFJZCxpQkFBaUI7QUFJakIsK0JBQStCO0FBOEIvQixhQUFhO0FBTWIsYUFBYTtBQU1iLFlBQVk7QUdwSVosd0NBQXdDO0FzQkF4QyxZQUFZO0FBZVosYUFBYTtBQVNiLGtCQUFrQjtBQUtsQixrQkFBa0I7QUFLbEIsYUFBYTtBRWxDYix1REFBdUQ7QUFPdkQsdUVBQXVFO0FDNkR2RSx1REFBdUQ7QU9wRXZELEFOUUEsTU1STSxDQUlKLEtBQUssRVFFSixXQUFLLEVFTEwsZ0JBQVUsQ0FrRFQsQ0FBQyxBQUFBLElBQUssQ0FBQSxVQUFVLEdNbkRwQixtQkFBbUIsQ0FzRmpCLEtBQUssRUd0RlAsZUFBZSxDQTREYixFQUFFLEFBQUEsS0FBSyxFRzVEVCxpQkFBaUIsQ0EwQmYsTUFBTSxDQWlCSixFQUFFLEFBTUMsV0FBVyxFQWpEbEIsaUJBQWlCLENBdURmLFFBQVEsQ0FxQk4sRUFBRSxDNUJwRUU7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 */
