/*!*************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./data/www/templates/asgard/ispace.cz/sass/overflow-menu.scss ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************/
/**
 * Retrieves the next smaller breakpoint from the given breakpoint.
 *
 * @param {String} $breakpoint - The breakpoint for which to find the next smaller breakpoint.
 * @return {String|null} - The next smaller breakpoint, or null if no smaller breakpoint is available.
 */
/**
 * Retrieves the next larger breakpoint from the $grid-breakpoints map.
 *
 * @function get-bigger-breakpoint
 * @param {String} $breakpoint - The current breakpoint to find the next larger one for.
 * @return {String | null} - The next larger breakpoint or null if the current breakpoint is the largest or not found.
 */
/**
 * Reset iSpace custom form input styles to be able to design special inputs more easily
 */
/**
 * Styles to hide the scrollbar but still allow scrolling
 */
.overflow-menu {
  --overflow-background-color: rgb(255, 255, 255, 1);
  max-width: 100%;
}
.grey-bg-100 .overflow-menu {
  --overflow-background-color: #f3f3f3;
}
.overflow-menu__items {
  /* stylelint-disable-next-line length-zero-no-unit */
  --scrollbar-height: 0px;
  --mask-width: 20px;
  --overflow-background-color: var(--overflow-background-color);
  --mask-image-content: linear-gradient(to right, transparent 5px, #000 var(--mask-width), #000 calc(100% - var(--mask-width)), transparent calc(100% - 5px));
  --mask-size-content: 100% calc(100% - var(--scrollbar-height));
  --mask-image-scrollbar: linear-gradient(#000, #000);
  --mask-size-scrollbar: 100% var(--scrollbar-height);
  display: flex;
  gap: 0.8rem;
  white-space: nowrap;
  -webkit-overflow-scrolling: touch;
  font-size: 14px;
  line-height: 1.2;
  font-variation-settings: "wght" 600;
  scrollbar-color: transparent;
  scrollbar-width: none;
  overflow: auto;
  mask-image: var(--mask-image-content), var(--mask-image-scrollbar);
  mask-size: var(--mask-size-content), var(--mask-size-scrollbar);
  mask-position: 0 0, 100% 0;
  mask-repeat: no-repeat, no-repeat;
  background-color: var(--overflow-background-color);
  margin-inline: calc(var(--bs-gutter-x) * -0.5);
  padding-inline: calc(var(--bs-gutter-x) * 0.5);
}
.overflow-menu__items::-webkit-scrollbar {
  height: 0;
}
.overflow-menu__items::-webkit-scrollbar-thumb {
  background-color: transparent;
  border: none;
  border-radius: 0;
}
.overflow-menu__items::-webkit-scrollbar-track {
  background-color: none;
  border: none;
}
@media (min-width: 992px) {
  .overflow-menu__items {
    font-size: 1.4rem;
  }
}
.overflow-menu__item-element {
  display: inline-block;
  text-decoration: none;
  padding: 0.5rem 1rem;
  border-radius: 8px;
  background-color: rgba(0, 141, 210, 0);
  color: inherit;
  font-variation-settings: inherit;
  transition: background-color ease-out 0.15s, color ease-out 0.15s;
  border: 1px solid transparent;
}
.overflow-menu__item-element:hover, .overflow-menu__item-element:focus, .overflow-menu__item-element:active, .overflow-menu__item-element--active, .overflow-menu__item-element.is-active {
  font-variation-settings: "wght" 600;
  background-color: #e6f2f8;
  border-color: #c4d6df;
}
@media (min-width: 992px) {
  .overflow-menu__item-element:hover, .overflow-menu__item-element:focus, .overflow-menu__item-element:active, .overflow-menu__item-element--active, .overflow-menu__item-element.is-active {
    background-color: #d6eaf4;
  }
}
.overflow-menu__item-element:hover:where(:not(.overflow-menu__item-element--active), :not(.overflow-menu__item-element.is-active)), .overflow-menu__item-element:active:where(:not(.overflow-menu__item-element--active), :not(.overflow-menu__item-element.is-active)) {
  color: #007dba;
}
.overflow-menu__item-element--active, .overflow-menu__item-element.is-active {
  pointer-events: none;
  cursor: default;
}
@media (min-width: 992px) {
  .overflow-menu__item-element {
    padding: 1.1rem 2rem;
    border-width: 0;
  }
}
/*!******************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[3]!./data/www/templates/asgard/ispace.cz/sass/offers.scss ***!
  \******************************************************************************************************************************************************************************************************************************************************************************/
/**
 * Retrieves the next smaller breakpoint from the given breakpoint.
 *
 * @param {String} $breakpoint - The breakpoint for which to find the next smaller breakpoint.
 * @return {String|null} - The next smaller breakpoint, or null if no smaller breakpoint is available.
 */
/**
 * Retrieves the next larger breakpoint from the $grid-breakpoints map.
 *
 * @function get-bigger-breakpoint
 * @param {String} $breakpoint - The current breakpoint to find the next larger one for.
 * @return {String | null} - The next larger breakpoint or null if the current breakpoint is the largest or not found.
 */
/**
 * Reset iSpace custom form input styles to be able to design special inputs more easily
 */
/**
 * Styles to hide the scrollbar but still allow scrolling
 */
.time-limited-offers__title {
  margin-block-end: 1rem;
  font-size: 2rem;
  font-weight: normal;
  font-variation-settings: "wght" 600;
}
.time-limited-offers__offer-details {
  align-self: center;
  display: flex;
  text-align: center;
  line-height: 40px;
  background-color: #007dba;
  color: #fff;
  border-radius: 8px 8px 0 0;
  flex-direction: column;
}
.time-limited-offers__offer-details * {
  word-break: normal;
}
.time-limited-offers__offer-details > * {
  padding-inline: 2rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
.time-limited-offers__offer-details > *:where(:first-child) {
  padding-block: 2rem 1rem;
}
.time-limited-offers__offer-details > *:where(:last-child) {
  padding-block: 1rem 2rem;
  border-block-start: 2px dashed;
}
.time-limited-offers__offer-details > *:where(:first-child:last-child) {
  border: none;
  padding-block: 2rem;
}
.time-limited-offers__offer-details *:where(:not(.time-limited-offers__offer-time-remaining-heading)) {
  display: inline-block;
}
@media (min-width: 992px) {
  .time-limited-offers__offer-details *:where(:not(.time-limited-offers__offer-time-remaining-heading)) {
    display: flex;
    font-size: 34px;
    font-weight: normal;
    font-variation-settings: "wght" 900;
  }
}
.time-limited-offers__offer-time-remaining-heading {
  font-size: 14px;
  font-weight: normal;
  font-variation-settings: "wght" 500;
  font-variant: tabular-nums;
}
@media (min-width: 992px) {
  .time-limited-offers__offer-time-remaining-heading {
    font-size: 28px;
    font-variation-settings: "wght" 700;
  }
}
.time-limited-offers__offer-time-remaining-value {
  font-variant: tabular-nums;
}
.time-limited-offers--xl-wide .time-limited-offers__offer-details *:where(:not(.time-limited-offers__offer-time-remaining-heading)) {
  display: flex;
  font-size: 34px;
  font-weight: normal;
  font-variation-settings: "wght" 900;
}
.time-limited-offers--xl-wide .time-limited-offers__offer-time-remaining-heading {
  font-size: 28px;
  font-variation-settings: "wght" 700;
}
@media (min-width: 1200px) {
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper {
    display: grid;
    grid-template-columns: 1fr 1.2fr;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card {
    --thumbnail-width: 200px;
    --flag-font-size: 1.2rem;
    background-color: #fff;
    box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.07);
    border-radius: 8px;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__inner {
    padding: 3rem;
    gap: 1rem;
  }
}
@media (min-width: 1200px) and (min-width: 1366px) {
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card {
    --thumbnail-width: 280px;
    --flag-font-size: 1.6rem;
  }
}
@media (min-width: 1200px) and (min-width: 1200px) {
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__inner {
    display: grid;
    grid-template-columns: var(--thumbnail-width) 1fr auto;
    grid-auto-rows: auto;
    min-height: 24rem;
    align-items: center;
    padding: 3rem 4rem 3rem 0;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__inner::before {
    content: "";
    grid-row: 1;
    grid-column: 1/-1;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__primary, .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__secondary {
    display: contents;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__secondary-inner {
    display: contents;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__thumbnail {
    position: absolute;
    width: var(--thumbnail-width);
    height: 100%;
    left: 0;
    top: 0;
    padding: 30px;
    grid-area: auto;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__thumbnail img {
    max-width: 240px;
    max-height: 240px;
    inset: 0;
    margin: auto;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__variants {
    grid-column: 1;
    grid-row: 6;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__heading {
    grid-column: 2/-1;
    grid-row: 2;
    font-size: 2.2rem;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__perex {
    grid-column: 2/-1;
    grid-row: 3;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__parameters {
    grid-column: 2/-1;
    grid-row: 4;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__availability {
    grid-column: 2/-1;
    grid-row: 5;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__price {
    grid-column: 2;
    grid-row: 6;
    margin: 0;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__price .card-price {
    justify-content: start;
    gap: 0 1.6rem;
    text-align: left;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__price .card-price__full {
    font-size: 2.2rem;
    color: #000;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__price .card-price__discount, .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__price .card-price__saving {
    font-size: 1.6rem;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__flags {
    position: absolute;
    top: -10px;
    right: -13px;
    left: auto;
    place-self: start end;
    gap: 0.3rem;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__flags [class*=__item] {
    border-radius: 8px;
    padding: 0.22em 0.63em;
    text-align: center;
    font-size: var(--flag-font-size);
    line-height: 1.2;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__flags [class*=__item] [class*=__text] {
    font-weight: normal;
    font-variation-settings: "wght" 400;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__add {
    grid-column: 3;
    grid-row: 6;
    padding: 0;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-wrapper .product-card__add-link {
    min-width: 205px;
  }
}
@media (min-width: 1200px) {
  .time-limited-offers--xl-wide .time-limited-offers__offer-details {
    flex-direction: row;
    line-height: 50px;
    background-color: transparent;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-details > * {
    background-color: #007dba;
    color: #fff;
    padding-block: clamp(2rem, 3vw, 4.75rem);
    gap: 0.5rem;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-details > *:where(:last-child) {
    border-block-start: 0;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-details *:where(:not(.time-limited-offers__offer-time-remaining-heading)) {
    font-size: 44px;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-percentage-saving {
    --inverted-border-gradient: #0000 98%, #000;
    --inverted-border-radius: 8px;
    --inverted-border-radius-tl: 0px;
    --inverted-border-radius-tr: 8px;
    --inverted-border-radius-br: 8px;
    --inverted-border-radius-bl: 0px;
    mask: radial-gradient(var(--inverted-border-radius-tl) at 0 0, var(--inverted-border-gradient)) 0 0, radial-gradient(var(--inverted-border-radius-tr) at 100% 0, var(--inverted-border-gradient)) 100% 0, radial-gradient(var(--inverted-border-radius-bl) at 0 100%, var(--inverted-border-gradient)) 0 100%, radial-gradient(var(--inverted-border-radius-br) at 100% 100%, var(--inverted-border-gradient)) 100% 100%;
    mask-repeat: no-repeat;
    mask-size: 51% 51%;
    border-radius: 8px 0 0 8px;
    flex: 1 1 auto;
  }
  @supports (background: -webkit-named-image(i)) {
    .time-limited-offers--xl-wide .time-limited-offers__offer-percentage-saving {
      mask: none;
    }
  }
  @supports (offset-path: shape(from top left, curve to 50% 50% with 25% 100%)) {
    .time-limited-offers--xl-wide .time-limited-offers__offer-percentage-saving {
      mask: none;
      clip-path: shape(from 0 var(--inverted-border-radius-tl), arc by var(--inverted-border-radius-tl) calc(var(--inverted-border-radius-tl) * -1) of var(--inverted-border-radius-tl), line to calc(100% - var(--inverted-border-radius-tr)) 0, arc by var(--inverted-border-radius-tr) var(--inverted-border-radius-tr) of var(--inverted-border-radius-tr), line to 100% calc(100% - var(--inverted-border-radius-br)), arc by calc(var(--inverted-border-radius-br) * -1) var(--inverted-border-radius-br) of var(--inverted-border-radius-br), line to var(--inverted-border-radius-bl) 100%, arc by calc(var(--inverted-border-radius-bl) * -1) calc(var(--inverted-border-radius-bl) * -1) of var(--inverted-border-radius-bl), line to 0 var(--inverted-border-radius-tl));
    }
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-time-remaining {
    flex: 1.2 1 auto;
    border-radius: 8px 0 0 8px;
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-time-remaining:where(:not(:first-child)) {
    --inverted-border-gradient: #0000 98%, #000;
    --inverted-border-radius: 8px;
    --inverted-border-radius-tl: 8px;
    --inverted-border-radius-tr: 0px;
    --inverted-border-radius-br: 0px;
    --inverted-border-radius-bl: 8px;
    mask: radial-gradient(var(--inverted-border-radius-tl) at 0 0, var(--inverted-border-gradient)) 0 0, radial-gradient(var(--inverted-border-radius-tr) at 100% 0, var(--inverted-border-gradient)) 100% 0, radial-gradient(var(--inverted-border-radius-bl) at 0 100%, var(--inverted-border-gradient)) 0 100%, radial-gradient(var(--inverted-border-radius-br) at 100% 100%, var(--inverted-border-gradient)) 100% 100%;
    mask-repeat: no-repeat;
    mask-size: 51% 51%;
    border-radius: 0;
    border-inline-start: 2px dashed;
  }
  @supports (background: -webkit-named-image(i)) {
    .time-limited-offers--xl-wide .time-limited-offers__offer-time-remaining:where(:not(:first-child)) {
      mask: none;
    }
  }
  @supports (offset-path: shape(from top left, curve to 50% 50% with 25% 100%)) {
    .time-limited-offers--xl-wide .time-limited-offers__offer-time-remaining:where(:not(:first-child)) {
      mask: none;
      clip-path: shape(from 0 var(--inverted-border-radius-tl), arc by var(--inverted-border-radius-tl) calc(var(--inverted-border-radius-tl) * -1) of var(--inverted-border-radius-tl), line to calc(100% - var(--inverted-border-radius-tr)) 0, arc by var(--inverted-border-radius-tr) var(--inverted-border-radius-tr) of var(--inverted-border-radius-tr), line to 100% calc(100% - var(--inverted-border-radius-br)), arc by calc(var(--inverted-border-radius-br) * -1) var(--inverted-border-radius-br) of var(--inverted-border-radius-br), line to var(--inverted-border-radius-bl) 100%, arc by calc(var(--inverted-border-radius-bl) * -1) calc(var(--inverted-border-radius-bl) * -1) of var(--inverted-border-radius-bl), line to 0 var(--inverted-border-radius-tl));
    }
  }
  .time-limited-offers--xl-wide .time-limited-offers__offer-time-remaining-heading {
    font-size: 36px;
  }
}
@media (max-width: 991.98px) {
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .time-limited-offers__offer-time-remaining {
    padding: 0;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .time-limited-offers__offer-time-remaining-heading:first-child:not(:only-child)::after {
    content: ":";
  }
}
.time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__flags {
  left: auto;
  right: 10px;
  top: calc(var(--thumbnail-padding) - 20px);
}
@media (max-width: 991.98px) {
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__flags {
    display: none;
  }
}
.time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__flags [class*=__item] {
  border-radius: 4px;
}
.time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card .card-price {
  text-align: center;
  margin: 0;
  margin-block: 0 !important;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0 0.3rem;
  justify-content: flex-start;
}
@media (max-width: 991.98px) {
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card {
    background-color: #fff;
    box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.1);
    border-radius: 0 0 8px 8px;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__perex {
    display: none;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__flags {
    left: auto;
    right: 0;
    top: calc(var(--thumbnail-padding) - 10px);
    place-self: start;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__flags [class*=__item] {
    border-radius: 8px;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__flags [class*=__text] {
    font-variation-settings: "wght" 500;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__inner {
    display: grid;
    grid-template-columns: 70px 1fr 38px;
    grid-template-rows: min-content min-content;
    padding: 20px 0 20px 10px;
    gap: 10px 20px;
    align-items: center;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__availability {
    display: none;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__primary, .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__secondary, .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__secondary-inner {
    display: contents;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__thumbnail {
    /* stylelint-disable-next-line length-zero-no-unit */
    --thumbnail-padding: 0px;
    grid-row: 1/span 2;
    grid-column: 1;
    height: 70px;
    margin-bottom: 0;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__heading {
    grid-row: 1;
    grid-column: 2;
    font-size: 1.2rem;
    margin-block: auto 0;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__price {
    grid-row: 2;
    grid-column: 2;
    margin-block: 0 auto;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card .card-price {
    justify-content: flex-start;
    gap: 10px 0.5rem;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card .card-price__full {
    font-size: 1.2rem;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card .card-price__discount, .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card .card-price__saving {
    font-size: 1.1rem;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card .card-price__saving {
    line-height: 1;
    background-color: rgba(24, 128, 56, 0.1);
    padding: 4px 6px;
    border-radius: 4px;
    text-transform: lowercase;
  }
  .time-limited-offers:where(:not(.time-limited-offers--xl-wide)) .product-card__add {
    display: none;
  }
}
.category__sidebar .time-limited-offers__slider .embla__viewport {
  overflow: visible;
}
.category__sidebar .time-limited-offers__slider .embla__container {
  gap: 60px;
}
.time-limited-offers__slider .embla__buttons {
  position: relative;
  max-width: max-content;
  margin: 2rem auto 0;
  bottom: initial;
  right: initial;
  box-shadow: 0 4px 20px 0 rgba(0, 0, 0, 0.06);
}
.time-limited-offers__slider .embla__button {
  display: block;
}
.time-limited-offers .card-price__voucher {
  display: none;
}
.container:has(> .time-limited-offers) {
  overflow-x: clip;
}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLmlzcGFjZS5jei5hc2dhcmQudGVtcGxhdGUuYTExMjIxMTgyMmY2YTZiYTIzNjYuY3NzIiwibWFwcGluZ3MiOiI7OztBQUdBOzs7OztFQUFBO0FBaUJBOzs7Ozs7RUFBQTtBQytQQTs7RUFBQTtBQStIQTs7RUFBQTtBQzVZQTtFQUNJO0VBRUE7QUFhSjtBQVhJO0VBQ0k7QUFhUjtBQVZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLDBCQUNJO0VBRUo7RUFDQTtFQUNBO0VBQ0E7QUFTUjtBQU5RO0VBQ0k7QUFRWjtBQUxRO0VBQ0k7RUFDQTtFQUNBO0FBT1o7QUFKUTtFQUNJO0VBQ0E7QUFNWjtBQ0RJO0VEaERBO0lBK0NRO0VBTVY7QUFDRjtBQUZRO0VBQ0k7RUFDQTtFQUNBO0VBQ0Esa0JFMkRZO0VGMURaO0VBQ0E7RUFDQTtFQUNBLGlFQUNJO0VBRUo7QUFFWjtBQUFZO0VBS0k7RUFDQTtFQUNBO0FBRmhCO0FDdEJJO0VEaUJRO0lBVVE7RUFEbEI7QUFDRjtBQUlZO0VBRUk7QUFIaEI7QUFNWTtFQUVJO0VBQ0E7QUFMaEI7QUNsQ0k7RURJSTtJQXVDUTtJQUNBO0VBTGQ7QUFDRixDOzs7O0FGcEdBOzs7OztFQUFBO0FBaUJBOzs7Ozs7RUFBQTtBQytQQTs7RUFBQTtBQStIQTs7RUFBQTtBSTVZSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FBY1I7QUFWUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFZWjtBQVZZO0VBQ0k7QUFZaEI7QUFUWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFXaEI7QUFUZ0I7RUFDSTtBQVdwQjtBQVJnQjtFQUNJO0VBQ0E7QUFVcEI7QUFQZ0I7RUFDSTtFQUNBO0FBU3BCO0FBTFk7RUFDSTtBQU9oQjtBRktJO0VFYlE7SUFJUTtJQUNBO0lBQ0E7SUFDQTtFQVFsQjtBQUNGO0FBSFk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBQUtoQjtBRlRJO0VFQVE7SUFPUTtJQUNBO0VBTWxCO0FBQ0Y7QUFIWTtFQUNJO0FBS2hCO0FBSW9CO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUFGeEI7QUFPb0I7RUFDSTtFQUNBO0FBTHhCO0FGNUJJO0VFMENnQjtJQUdJO0lBQ0E7RUFidEI7RUpuRUU7SUFDSTtJQUNBO0lBRUE7SUFDQTtJQUNBLGtCRytGZ0I7RUMzQnRCO0VKbEVNO0lBQ0k7SUFDQTtFSW9FVjtBQUNGO0FGN0NJO0VGbENBO0lBZVk7SUFDQTtFSW9FZDtBQUNGO0FGbkRJO0VGYlE7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RUltRWQ7RUpqRWM7SUFDSTtJQUNBO0lBQ0E7RUltRWxCO0VKL0RVO0lBRUk7RUlnRWQ7RUo1RGM7SUFDSTtFSThEbEI7RUoxRFU7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFSTREZDtFSjFEYztJQUNJO0lBQ0E7SUFDQTtJQUNBO0VJNERsQjtFSnhEVTtJQUNJO0lBQ0E7RUkwRGQ7RUp2RFU7SUFDSTtJQUNBO0lBQ0E7RUl5RGQ7RUp0RFU7SUFDSTtJQUNBO0VJd0RkO0VKckRVO0lBQ0k7SUFDQTtFSXVEZDtFSnBEVTtJQUNJO0lBQ0E7RUlzRGQ7RUpuRFU7SUFDSTtJQUNBO0lBQ0E7RUlxRGQ7RUpuRGM7SUFDSTtJQUNBO0lBQ0E7RUlxRGxCO0VKbkRrQjtJQUNJO0lBQ0E7RUlxRHRCO0VKbERrQjtJQUVJO0VJbUR0QjtFSjlDVTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFSWdEZDtFSjlDYztJQUNJLGtCR3BCSTtJSHFCSjtJQUNBO0lBQ0E7SUFDQTtFSWdEbEI7RUo5Q2tCO0lBQ0k7SUFDQTtFSWdEdEI7RUozQ1U7SUFDSTtJQUNBO0lBQ0E7RUk2Q2Q7RUozQ2M7SUFDSTtFSTZDbEI7QUFDRjtBRnhKSTtFRWlEZ0I7SUFDSTtJQUNBO0lBQ0E7RUEwR3RCO0VBeEdzQjtJQUNJO0lBQ0E7SUFDQTtJQUNBO0VBMEcxQjtFQXhHMEI7SUFDSTtFQTBHOUI7RUF0R3NCO0lBQ0k7RUF3RzFCO0VBcEdrQjtJSndEaEI7SUFDQTtJQWlDQTtJQUNBO0lBQ0E7SUFDQTtJQUVBLHdaQUNJO0lBSUo7SUFDQTtJSWxHb0I7SUFDQTtFQTZHdEI7RUpSRTtJSXpHZ0I7TUowR1o7SUlXSjtFQUNGO0VKTkU7SUloSGdCO01KaUhaO01BQ0E7SUlTSjtFQUNGO0VBckhrQjtJQUNJO0lBQ0E7RUF1SHRCO0VBckhzQjtJSjZDcEI7SUFDQTtJQWlDQTtJQUNBO0lBQ0E7SUFDQTtJQUVBLHdaQUNJO0lBSUo7SUFDQTtJSXZGd0I7SUFDQTtFQThIMUI7RUpwQ0U7SUk5Rm9CO01KK0ZoQjtJSXVDSjtFQUNGO0VKbENFO0lJckdvQjtNSnNHaEI7TUFDQTtJSXFDSjtFQUNGO0VBdElzQjtJQUNJO0VBd0kxQjtBQUNGO0FGck5JO0VFd0ZnQjtJQUNJO0VBZ0l0QjtFQTVIOEI7SUFDSTtFQThIbEM7QUFDRjtBQXJIWTtFQUNJO0VBQ0E7RUFDQTtBQXVIaEI7QUZsT0k7RUV3R1E7SUFNUTtFQXdIbEI7QUFDRjtBQXRIZ0I7RUFDSTtBQXdIcEI7QUFwSFk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBc0hoQjtBRnBQSTtFRW1JUTtJQUNJO0lBQ0E7SUFDQTtFQW9IZDtFQWxIYztJQUNJO0VBb0hsQjtFQWpIYztJQUNJO0lBQ0E7SUFDQTtJQUNBO0VBbUhsQjtFQWpIa0I7SUFDSSxrQkQ3RkE7RUNnTnRCO0VBaEhrQjtJQUNJO0VBa0h0QjtFQTlHYztJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFQWdIbEI7RUE3R2M7SUFDSTtFQStHbEI7RUE1R2M7SUFHSTtFQTRHbEI7RUF6R2M7SUFDSTtJQUNBO0lBRUE7SUFDQTtJQUNBO0lBQ0E7RUEwR2xCO0VBdkdjO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7RUF5R2xCO0VBdEdjO0lBQ0k7SUFDQTtJQUNBO0VBd0dsQjtFQXJHYztJQUNJO0lBQ0E7RUF1R2xCO0VBckdrQjtJQUNJO0VBdUd0QjtFQXBHa0I7SUFFSTtFQXFHdEI7RUFsR2tCO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFQW9HdEI7RUFoR2M7SUFDSTtFQWtHbEI7QUFDRjtBQTFGZ0I7RUFDSTtBQTRGcEI7QUF6RmdCO0VBQ0k7QUEyRnBCO0FBdkZZO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBeUZoQjtBQXRGWTtFQUNJO0FBd0ZoQjtBQW5GSTtFQUNJO0FBcUZSO0FBaEZRO0VBQ0k7QUFrRlosQyIsInNvdXJjZXMiOlsid2VicGFjazovL3Nob3Bpby8uL2RhdGEvd3d3L3RlbXBsYXRlcy9hc2dhcmQvaXNwYWNlLmN6L3Nhc3MvYXBwL2Fic3RyYWN0cy9fZm5zLnNjc3MiLCJ3ZWJwYWNrOi8vc2hvcGlvLy4vZGF0YS93d3cvdGVtcGxhdGVzL2FzZ2FyZC9pc3BhY2UuY3ovc2Fzcy9hcHAvYWJzdHJhY3RzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly9zaG9waW8vLi9kYXRhL3d3dy90ZW1wbGF0ZXMvYXNnYXJkL2lzcGFjZS5jei9zYXNzL292ZXJmbG93LW1lbnUuc2NzcyIsIndlYnBhY2s6Ly9zaG9waW8vLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19icmVha3BvaW50cy5zY3NzIiwid2VicGFjazovL3Nob3Bpby8uL2RhdGEvd3d3L3RlbXBsYXRlcy9hc2dhcmQvaXNwYWNlLmN6L3Nhc3MvX3RoZW1lLXZhcmlhYmxlcy5zY3NzIiwid2VicGFjazovL3Nob3Bpby8uL2RhdGEvd3d3L3RlbXBsYXRlcy9hc2dhcmQvaXNwYWNlLmN6L3Nhc3Mvb2ZmZXJzLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczpsaXN0JztcblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIG5leHQgc21hbGxlciBicmVha3BvaW50IGZyb20gdGhlIGdpdmVuIGJyZWFrcG9pbnQuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IC0gVGhlIGJyZWFrcG9pbnQgZm9yIHdoaWNoIHRvIGZpbmQgdGhlIG5leHQgc21hbGxlciBicmVha3BvaW50LlxuICogQHJldHVybiB7U3RyaW5nfG51bGx9IC0gVGhlIG5leHQgc21hbGxlciBicmVha3BvaW50LCBvciBudWxsIGlmIG5vIHNtYWxsZXIgYnJlYWtwb2ludCBpcyBhdmFpbGFibGUuXG4gKi9cbkBmdW5jdGlvbiBnZXQtc21hbGxlci1icmVha3BvaW50KCRicmVha3BvaW50KSB7XG4gICAgJGtleXM6IG1hcC5rZXlzKCRncmlkLWJyZWFrcG9pbnRzKTtcbiAgICAkaW5kZXg6IGxpc3QuaW5kZXgoJGtleXMsICRicmVha3BvaW50KTtcblxuICAgIEBpZiBub3QgJGluZGV4IG9yICRpbmRleCA9PSAxIHtcbiAgICAgICAgQHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIEByZXR1cm4gbGlzdC5udGgoJGtleXMsICRpbmRleCAtIDEpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgbmV4dCBsYXJnZXIgYnJlYWtwb2ludCBmcm9tIHRoZSAkZ3JpZC1icmVha3BvaW50cyBtYXAuXG4gKlxuICogQGZ1bmN0aW9uIGdldC1iaWdnZXItYnJlYWtwb2ludFxuICogQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IC0gVGhlIGN1cnJlbnQgYnJlYWtwb2ludCB0byBmaW5kIHRoZSBuZXh0IGxhcmdlciBvbmUgZm9yLlxuICogQHJldHVybiB7U3RyaW5nIHwgbnVsbH0gLSBUaGUgbmV4dCBsYXJnZXIgYnJlYWtwb2ludCBvciBudWxsIGlmIHRoZSBjdXJyZW50IGJyZWFrcG9pbnQgaXMgdGhlIGxhcmdlc3Qgb3Igbm90IGZvdW5kLlxuICovXG5AZnVuY3Rpb24gZ2V0LWxhcmdlci1icmVha3BvaW50KCRicmVha3BvaW50KSB7XG4gICAgJGtleXM6IG1hcC5rZXlzKCRncmlkLWJyZWFrcG9pbnRzKTtcbiAgICAkaW5kZXg6IGxpc3QuaW5kZXgoJGtleXMsICRicmVha3BvaW50KTtcblxuICAgIEBpZiBub3QgJGluZGV4IG9yICRpbmRleCA9PSBsaXN0Lmxlbmd0aCgkYnJlYWtwb2ludCkge1xuICAgICAgICBAcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgQHJldHVybiBsaXN0Lm50aCgka2V5cywgJGluZGV4ICsgMSk7XG59XG4iLCJAdXNlICdzYXNzOmNvbG9yJztcbkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ3Nhc3M6bGlzdCc7XG5cbi8vICogVmlzdWFscyBmb3Igc21hbGwgYmxvY2tzIHdpdGggYSBob3ZlciAvIGZvY3VzLXdpdGhpbiBlZmZlY3QgaW5jbHVkZWRcbi8vICogVG8gbW9kaWZ5IGRlZmF1bHQgdmFsdWVzLCB5b3UgY291bGQgdXNlIEBpbmNsdWRlIHNtYWxsLWJsb2NrLWNvbXBvbmVudChtYXAuc2V0KCRjb25maWcsICdyYWRpdXMnLCAyMHB4KSlcbkBtaXhpbiBzbWFsbC1ibG9jay1jb21wb25lbnQoXG4gICAgJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cyxcbiAgICAkYmFja2dyb3VuZC1zdGFydDogY29sb3IuYWRqdXN0KG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgcHJpbWFyeS1saWdodCksICRhbHBoYTogLTEpLFxuICAgICRiYWNrZ3JvdW5kLWVuZDogY29sb3IuYWRqdXN0KG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgcHJpbWFyeS1saWdodCksICRhbHBoYTogMCksXG4gICAgJGJveC1zaGFkb3ctc3RhcnQ6IDAgNHB4IDIwcHggMCAjMDAwMDAwMTQsXG4gICAgJGJveC1zaGFkb3ctZW5kOiAwIDRweCA0cHggMCAjMDAwMDAwMTQsXG4gICAgJHRyYW5zaXRpb246ICdiYWNrZ3JvdW5kLWNvbG9yIGxpbmVhciAwLjE1cywgYm94LXNoYWRvdyBsaW5lYXIgMC4xNXMnXG4pIHtcbiAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLXN0YXJ0O1xuICAgIGJveC1zaGFkb3c6ICRib3gtc2hhZG93LXN0YXJ0O1xuICAgIHRyYW5zaXRpb246ICN7JHRyYW5zaXRpb259O1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLWVuZDtcbiAgICAgICAgYm94LXNoYWRvdzogJGJveC1zaGFkb3ctZW5kO1xuICAgIH1cbn1cblxuQG1peGluIHdpZGUtY2FyZCgkYnJlYWtwb2ludDogJ3hsJykge1xuICAgICRzbWFsbGVyLWJyZWFrcG9pbnQ6IGdldC1sYXJnZXItYnJlYWtwb2ludCgkYnJlYWtwb2ludCk7XG5cbiAgICAucHJvZHVjdC1jYXJkIHtcbiAgICAgICAgLS10aHVtYm5haWwtd2lkdGg6IDIwMHB4O1xuICAgICAgICAtLWZsYWctZm9udC1zaXplOiAxLjJyZW07XG5cbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBsaWdodCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAyMHB4IDAgcmdiKDAsIDAsIDAsIDAuMDcpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzO1xuXG4gICAgICAgICZfX2lubmVyIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDNyZW07XG4gICAgICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgJHNtYWxsZXItYnJlYWtwb2ludCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRzbWFsbGVyLWJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgICAgICAtLXRodW1ibmFpbC13aWR0aDogMjgwcHg7XG4gICAgICAgICAgICAgICAgLS1mbGFnLWZvbnQtc2l6ZTogMS42cmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkYnJlYWtwb2ludCkge1xuICAgICAgICAgICAgJl9faW5uZXIge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiB2YXIoLS10aHVtYm5haWwtd2lkdGgpIDFmciBhdXRvO1xuICAgICAgICAgICAgICAgIGdyaWQtYXV0by1yb3dzOiBhdXRvO1xuICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDI0cmVtO1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogM3JlbSA0cmVtIDNyZW0gMDtcblxuICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX3ByaW1hcnksXG4gICAgICAgICAgICAmX19zZWNvbmRhcnkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGNvbnRlbnRzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmX19zZWNvbmRhcnkge1xuICAgICAgICAgICAgICAgICYtaW5uZXIge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBjb250ZW50cztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX3RodW1ibmFpbCB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiB2YXIoLS10aHVtYm5haWwtd2lkdGgpO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAzMHB4O1xuICAgICAgICAgICAgICAgIGdyaWQtYXJlYTogYXV0bztcblxuICAgICAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogMjQwcHg7XG4gICAgICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6IDI0MHB4O1xuICAgICAgICAgICAgICAgICAgICBpbnNldDogMDtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiBhdXRvO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9fdmFyaWFudHMge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiA2O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmX19oZWFkaW5nIHtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMiAvIC0xO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMi4ycmVtO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmX19wZXJleCB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDIgLyAtMTtcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogMztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9fcGFyYW1ldGVycyB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDIgLyAtMTtcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogNDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9fYXZhaWxhYmlsaXR5IHtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMiAvIC0xO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiA1O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmX19wcmljZSB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDI7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDY7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuXG4gICAgICAgICAgICAgICAgLmNhcmQtcHJpY2Uge1xuICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICBnYXA6IDAgMS42cmVtO1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuXG4gICAgICAgICAgICAgICAgICAgICZfX2Z1bGwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAyLjJyZW07XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBkYXJrKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICZfX2Rpc2NvdW50LFxuICAgICAgICAgICAgICAgICAgICAmX19zYXZpbmcge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjZyZW07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX2ZsYWdzIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiAtMTBweDtcbiAgICAgICAgICAgICAgICByaWdodDogLTEzcHg7XG4gICAgICAgICAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgICAgICAgICBwbGFjZS1zZWxmOiBzdGFydCBlbmQ7XG4gICAgICAgICAgICAgICAgZ2FwOiAwLjNyZW07XG5cbiAgICAgICAgICAgICAgICBbY2xhc3MqPSdfX2l0ZW0nXSB7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXM7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuMjJlbSAwLjYzZW07XG4gICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1mbGFnLWZvbnQtc2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG5cbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzKj0nX190ZXh0J10ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiAnd2dodCcgNDAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmX19hZGQge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAzO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiA2O1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgICAgICAgICAgICAmLWxpbmsge1xuICAgICAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDIwNXB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gKiBBZGQgaW52ZXJ0ZWQgYm9yZGVyIHJhZGl1cyBjb3JuZXJzXG4vLyAqIG1hc2sgdmFsdWVzIGFyZSBpbiB0aGUgb3JkZXIgdGwgLyB0ciAvIGJyIC8gYmxcbi8vICogTm90ZSB0aGF0IGFsbCB1bml0cyBzaG91bGQgYmUgaW4gcHhcbi8vICogQHBhcmFtIHtsaXN0fSAtIHNwZWNpZmljIGJvcmRlciBjb3JuZXJzICRjb3JuZXJzIChhbGx8dGx8dHJ8Ymx8YnIpXG5AbWl4aW4gaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cygkY29ybmVyczogJ2FsbCcpIHtcbiAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJldHRpZXIvcHJldHRpZXJcbiAgICAkdmFsaWQtYm9yZGVyLXJhZGl1cy1wYXJhbXM6IFsnYWxsJywgJ3RsJywgJ3RyJywgJ2JsJywgJ2JyJywgJ3QnLCAncicsICdiJywgJ2wnXTtcbiAgICAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cztcbiAgICAkaW52ZXJ0ZWQtYm9yZGVyLXRsOiAwcHg7XG4gICAgJGludmVydGVkLWJvcmRlci10cjogMHB4O1xuICAgICRpbnZlcnRlZC1ib3JkZXItYnI6IDBweDtcbiAgICAkaW52ZXJ0ZWQtYm9yZGVyLWJsOiAwcHg7XG5cbiAgICAtLWludmVydGVkLWJvcmRlci1ncmFkaWVudDogIzAwMDAgOTglLCAjMDAwO1xuICAgIC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1czogI3skaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1c307XG5cbiAgICBAaWYgbm90IGxpc3QuaW5kZXgoJHZhbGlkLWJvcmRlci1yYWRpdXMtcGFyYW1zLCAkY29ybmVycykge1xuICAgICAgICBAZXJyb3IgXCIjeyRjb3JuZXJzfSBpcyBub3QgYSB2YWxpZCBzaWRlLiBFeHBlY3RlZCBvbmUgb2YgI3skdmFsaWQtYm9yZGVyLXJhZGl1cy1wYXJhbXN9LlwiO1xuICAgIH1cblxuICAgIEBpZiAkY29ybmVycyA9PSAnYWxsJyB7XG4gICAgICAgICRpbnZlcnRlZC1ib3JkZXItdGw6ICRpbnZlcnRlZC1ib3JkZXItcmFkaXVzO1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLXRyOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICAgICAgJGludmVydGVkLWJvcmRlci1icjogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgICAgICRpbnZlcnRlZC1ib3JkZXItYmw6ICRpbnZlcnRlZC1ib3JkZXItcmFkaXVzO1xuICAgIH0gQGVsc2UgaWYgJGNvcm5lcnMgPT0gJ3RsJyB7XG4gICAgICAgICRpbnZlcnRlZC1ib3JkZXItdGw6ICRpbnZlcnRlZC1ib3JkZXItcmFkaXVzO1xuICAgIH0gQGVsc2UgaWYgJGNvcm5lcnMgPT0gJ3RyJyB7XG4gICAgICAgICRpbnZlcnRlZC1ib3JkZXItdHI6ICRpbnZlcnRlZC1ib3JkZXItcmFkaXVzO1xuICAgIH0gQGVsc2UgaWYgJGNvcm5lcnMgPT0gJ2JyJyB7XG4gICAgICAgICRpbnZlcnRlZC1ib3JkZXItYnI6ICRpbnZlcnRlZC1ib3JkZXItcmFkaXVzO1xuICAgIH0gQGVsc2UgaWYgJGNvcm5lcnMgPT0gJ2JsJyB7XG4gICAgICAgICRpbnZlcnRlZC1ib3JkZXItYmw6ICRpbnZlcnRlZC1ib3JkZXItcmFkaXVzO1xuICAgIH0gQGVsc2UgaWYgJGNvcm5lcnMgPT0gJ3QnIHtcbiAgICAgICAgJGludmVydGVkLWJvcmRlci10bDogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgICAgICRpbnZlcnRlZC1ib3JkZXItdHI6ICRpbnZlcnRlZC1ib3JkZXItcmFkaXVzO1xuICAgIH0gQGVsc2UgaWYgJGNvcm5lcnMgPT0gJ3InIHtcbiAgICAgICAgJGludmVydGVkLWJvcmRlci10cjogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgICAgICRpbnZlcnRlZC1ib3JkZXItYnI6ICRpbnZlcnRlZC1ib3JkZXItcmFkaXVzO1xuICAgIH0gQGVsc2UgaWYgJGNvcm5lcnMgPT0gJ2InIHtcbiAgICAgICAgJGludmVydGVkLWJvcmRlci1icjogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgICAgICRpbnZlcnRlZC1ib3JkZXItYmw6ICRpbnZlcnRlZC1ib3JkZXItcmFkaXVzO1xuICAgIH0gQGVsc2UgaWYgJGNvcm5lcnMgPT0gJ2wnIHtcbiAgICAgICAgJGludmVydGVkLWJvcmRlci10bDogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgICAgICRpbnZlcnRlZC1ib3JkZXItYmw6ICRpbnZlcnRlZC1ib3JkZXItcmFkaXVzO1xuICAgIH1cblxuICAgIC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy10bDogI3skaW52ZXJ0ZWQtYm9yZGVyLXRsfTtcbiAgICAtLWludmVydGVkLWJvcmRlci1yYWRpdXMtdHI6ICN7JGludmVydGVkLWJvcmRlci10cn07XG4gICAgLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLWJyOiAjeyRpbnZlcnRlZC1ib3JkZXItYnJ9O1xuICAgIC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy1ibDogI3skaW52ZXJ0ZWQtYm9yZGVyLWJsfTtcblxuICAgIG1hc2s6XG4gICAgICAgIHJhZGlhbC1ncmFkaWVudCh2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLXRsKSBhdCAwIDAsIHZhcigtLWludmVydGVkLWJvcmRlci1ncmFkaWVudCkpIDAgMCxcbiAgICAgICAgcmFkaWFsLWdyYWRpZW50KHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtdHIpIGF0IDEwMCUgMCwgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLWdyYWRpZW50KSkgMTAwJSAwLFxuICAgICAgICByYWRpYWwtZ3JhZGllbnQodmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy1ibCkgYXQgMCAxMDAlLCB2YXIoLS1pbnZlcnRlZC1ib3JkZXItZ3JhZGllbnQpKSAwIDEwMCUsXG4gICAgICAgIHJhZGlhbC1ncmFkaWVudCh2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLWJyKSBhdCAxMDAlIDEwMCUsIHZhcigtLWludmVydGVkLWJvcmRlci1ncmFkaWVudCkpIDEwMCUgMTAwJTtcbiAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIG1hc2stc2l6ZTogNTElIDUxJTtcblxuICAgIC8vIHN0eWxlbGludC1kaXNhYmxlIG5vLWludmFsaWQtcG9zaXRpb24tZGVjbGFyYXRpb25cbiAgICAvLyBEaXNhYmxlIGZvciBvbGRlciBTYWZhcmkgYnJvd3NlcnMgYXMgdGhlIGxheW91dCBicmVha3MgdGhlcmUgd2l0aCBtYXNrXG4gICAgQHN1cHBvcnRzIChiYWNrZ3JvdW5kOiAtd2Via2l0LW5hbWVkLWltYWdlKGkpKSB7XG4gICAgICAgIG1hc2s6IG5vbmU7XG4gICAgfVxuXG4gICAgLy8gV2UgY2Fubm90IGNoZWNrIGZvciBAc3VwcG9ydHMgKGNsaXAtcGF0aDogc2hhcGUoKSkgYmVjYXVzZSwgd2hpbGUgRmlyZWZveCBzdXBwb3J0cyB0aGUgcnVsZSwgaXQgZG9lcyBub3Qgd29yayAtIHlldCAoaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMDMyOClcbiAgICAvLyBCdXQsIGFzIHNoYXBlKCkgY2FuIGJlIHVzZWQgaW4gYW5pbWF0aW9uIHBhdGhzLCBhbmQgQ2hyb21lIGFuZCBjdXJyZW50IFNhZmFyaSBzdXBwb3J0IHRoaXMgaW1wbGVtZW50YXRpb24uXG4gICAgLy8gTk9URTogV2Ugc2hvdWxkIHN0aWxsIGNoZWNrIHRvIHNlZSB3aGVuIGNsaXAtcGF0aDogc2hhcGUoKSBpcyBmdWxseSBlbmFibGVkIGluIEZpcmVmb3gsIGJ1dCBpbiB0aGUgbWVhbnRpbWUsIG1hc2tpbmcgd29ya3MgbmljZWx5IHRoZXJlXG4gICAgQHN1cHBvcnRzIChvZmZzZXQtcGF0aDogc2hhcGUoZnJvbSB0b3AgbGVmdCwgY3VydmUgdG8gNTAlIDUwJSB3aXRoIDI1JSAxMDAlKSkge1xuICAgICAgICBtYXNrOiBub25lO1xuICAgICAgICBjbGlwLXBhdGg6IHNoYXBlKFxuICAgICAgICAgICAgZnJvbSAwIHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtdGwpLFxuICAgICAgICAgICAgYXJjIGJ5IHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtdGwpIGNhbGModmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy10bCkgKiAtMSkgb2YgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy10bCksXG4gICAgICAgICAgICBsaW5lIHRvIGNhbGMoMTAwJSAtIHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtdHIpKSAwLFxuICAgICAgICAgICAgYXJjIGJ5IHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtdHIpIHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtdHIpIG9mIHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtdHIpLFxuICAgICAgICAgICAgbGluZSB0byAxMDAlIGNhbGMoMTAwJSAtIHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtYnIpKSxcbiAgICAgICAgICAgIGFyYyBieSBjYWxjKHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtYnIpICogLTEpIHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtYnIpIG9mIHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtYnIpLFxuICAgICAgICAgICAgbGluZSB0byB2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLWJsKSAxMDAlLFxuICAgICAgICAgICAgYXJjIGJ5IGNhbGModmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy1ibCkgKiAtMSkgY2FsYyh2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLWJsKSAqIC0xKSBvZiB2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLWJsKSxcbiAgICAgICAgICAgIGxpbmUgdG8gMCB2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLXRsKVxuICAgICAgICApO1xuICAgIH1cbiAgICAvLyBzdHlsZWxpbnQtZW5hYmxlIG5vLWludmFsaWQtcG9zaXRpb24tZGVjbGFyYXRpb25cbn1cblxuLy8gTGFiZWwgaXMgc2hpZnRlZCB3aGVuIC1cbi8vIGlucHV0IGlzIGZvY3VzZWRcbi8vIGhhcyB2YWx1ZSBwcm9wIGJ1dCBub3QgcGxhY2Vob2xkZXIgc2hvd24gKGhhcHBlbmRzIHdoZW4gcHJlZmlsbGVkIGlucHV0IGlzIG1hbnVhbGx5IGNsZWFyZWQpXG4vLyBoYXMgc29tZSB0ZXh0IHBsYWNlaG9sZGVyXG4vLyBpcyBhdXRvZmlsbGVkXG5AbWl4aW4gZm9ybS1pbnB1dC1sYWJlbC1zZWxlY3RvcnMge1xuICAgICY6aGFzKDp3aGVyZShpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSk6bm90KDp3aGVyZSg6cGxhY2Vob2xkZXItc2hvd24pKTppcyg6d2hlcmUoOm5vdCg6cGxhY2Vob2xkZXItc2hvd24pKSwgOndoZXJlKDpub3QoW3BsYWNlaG9sZGVyPScnXSwgW3BsYWNlaG9sZGVyPScgJ10pKSwgOm5vdChbdmFsdWU9JyddKSwgOi13ZWJraXQtYXV0b2ZpbGwsIDphdXRvZmlsbCwgOmZvY3VzKSkgOndoZXJlKC5mb3JtLWlucHV0X19sYWJlbCksXG4gICAgJjpoYXMoOndoZXJlKGlucHV0LCBzZWxlY3QsIHRleHRhcmVhKTppcyg6d2hlcmUoOnBsYWNlaG9sZGVyLXNob3duOm5vdChbcGxhY2Vob2xkZXI9JyddLCBbcGxhY2Vob2xkZXI9JyAnXSkpKSkgOndoZXJlKC5mb3JtLWlucHV0X19sYWJlbCksXG4gICAgJjpoYXMoOndoZXJlKGlucHV0LCBzZWxlY3QsIHRleHRhcmVhKTppcyg6Zm9jdXMpKSA6d2hlcmUoLmZvcm0taW5wdXRfX2xhYmVsKSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuLyoqXG4gKiBSZXNldCBpU3BhY2UgY3VzdG9tIGZvcm0gaW5wdXQgc3R5bGVzIHRvIGJlIGFibGUgdG8gZGVzaWduIHNwZWNpYWwgaW5wdXRzIG1vcmUgZWFzaWx5XG4gKi9cbkBtaXhpbiByZXNldC1mb3JtLWlucHV0IHtcbiAgICAmOmhhcyg6d2hlcmUoaW5wdXQ6bm90KFt0eXBlPSdjaGVja2JveCddLCBbdHlwZT0ncmFkaW8nXSksIHRleHRhcmVhLCBzZWxlY3QpKSB7XG4gICAgICAgIHotaW5kZXg6IGF1dG87XG4gICAgICAgIG1hcmdpbi10b3A6IGluaXRpYWw7XG5cbiAgICAgICAgOndoZXJlKC5mb3JtLWZpZWxkLWNvbnRhaW5lcikge1xuICAgICAgICAgICAgcGFkZGluZzogaW5pdGlhbDtcbiAgICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIDp3aGVyZSguZm9ybS1maWVsZCA+ICopIHtcbiAgICAgICAgICAgICY6bm90KFtkaXNhYmxlZF0pIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbml0aWFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgOndoZXJlKC5mb3JtLWZpZWxkX19pbnB1dCkge1xuICAgICAgICAgICAgZm9udC1zaXplOiBpbml0aWFsO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpoYXMoLmVycm9ycykge1xuICAgICAgICAgICAgLS1pbnB1dC1iZzogaW5pdGlhbDtcblxuICAgICAgICAgICAgLmZvcm0tZmllbGQtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbml0aWFsO1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogaW5pdGlhbCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgICAgICAgICAgLmZvcm0tZmllbGQtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiBpbml0aWFsICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpoYXMoW2Rpc2FibGVkXSkge1xuICAgICAgICAgICAgLmZvcm0tZmllbGQtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbml0aWFsO1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogaW5pdGlhbCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgOndoZXJlKC5mb3JtLWlucHV0X19sYWJlbCkge1xuICAgICAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgcGFkZGluZy1pbmxpbmU6IDA7XG4gICAgICAgICAgICBwYWRkaW5nLWJsb2NrOiAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiBpbml0aWFsO1xuICAgICAgICAgICAgY29sb3I6IGluaXRpYWw7XG4gICAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBjbGlwO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jbGlwOiBib3JkZXItYm94O1xuICAgICAgICAgICAgei1pbmRleDogYXV0bztcbiAgICAgICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgICAgICAgICAgZm9udC12YXJpYXRpb24tc2V0dGluZ3M6IGluaXRpYWw7XG4gICAgICAgICAgICBtYXJnaW4tYmxvY2stZW5kOiBpbml0aWFsO1xuXG4gICAgICAgICAgICAmOjpiZWZvcmUsXG4gICAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAgICAgY29udGVudDogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6aGFzKC5mb3JtLWZpZWxkLS1zbSkge1xuICAgICAgICAgICAgLmZvcm0taW5wdXRfX2xhYmVsIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWJsb2NrOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICAgICAgOndoZXJlKC5mb3JtLWZpZWxkLWNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogaW5pdGlhbDtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA6d2hlcmUoLmZvcm0taW5wdXRfX2xhYmVsKSB7XG4gICAgICAgICAgICAgICAgY29sb3I6IGluaXRpYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICY6bm90KDp3aGVyZSg6Zm9jdXMtd2l0aGluLCBbZGlzYWJsZWRdKSkge1xuICAgICAgICAgICAgICAgICY6d2hlcmUoOm5vdCg6aGFzKC5lcnJvcnMpKSkge1xuICAgICAgICAgICAgICAgICAgICA6d2hlcmUoLmZvcm0tZmllbGQtY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IGluaXRpYWw7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICA6d2hlcmUoLmZvcm0taW5wdXRfX2xhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogaW5pdGlhbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICY6aGFzKC5lcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgOndoZXJlKC5mb3JtLWZpZWxkLWNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiBpbml0aWFsO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgOndoZXJlKC5mb3JtLWlucHV0X19sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGluaXRpYWw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBmb3JtLWlucHV0LWxhYmVsLXNlbGVjdG9ycyB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICBmb250LXNpemU6IGluaXRpYWw7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuXG4gICAgICAgICAgICAmOjpiZWZvcmUsXG4gICAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogU3R5bGVzIHRvIGhpZGUgdGhlIHNjcm9sbGJhciBidXQgc3RpbGwgYWxsb3cgc2Nyb2xsaW5nXG4gKi9cbkBtaXhpbiBzY3JvbGwtd2l0aG91dC1zY3JvbGxiYXIge1xuICAgIG92ZXJmbG93OiBzY3JvbGw7XG4gICAgb3ZlcmZsb3c6IC1tb3otc2Nyb2xsYmFycy1ub25lOyAvKiBGaXJlZm94ICovXG4gICAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lOyAvKiBJRSBhbmQgRWRnZSAqL1xuICAgIHNjcm9sbGJhci13aWR0aDogbm9uZTsgLyogRmlyZWZveCAqL1xuXG4gICAgLyogQ2hyb21lLCBTYWZhcmkgYW5kIE9wZXJhICovXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuLy8gQWx0ZXJuYXRpdmUgZGlzYy1saWtlIHN0eWxpbmcgZm9yIHJhZGlvIGFuZCBjaGVja2JveCBpbnB1dHNcbkBtaXhpbiBpbnB1dC1kaXNjIHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBpbnNldDogMCAxMHB4IDAgYXV0bztcbiAgICBtYXJnaW4tYmxvY2s6IGF1dG87XG4gICAgYm9yZGVyLXJhZGl1czogMTAwJTtcbiAgICB3aWR0aDogMTVweDtcbiAgICBoZWlnaHQ6IDE1cHg7XG4gICAgZmxleDogMCAwIDE1cHg7IC8vIGluIGNhc2UgaXQncyBwYXJ0IG9mIGEgZmxleCBsYXlvdXRcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYigwLCAwLCAwLCAwLjEpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4xcyBlYXNlLWluLW91dDtcbn1cblxuLy8gY2FyZCBib3hlcyBhcmUgdHlwaWNhbGx5IHVzZWQgb24gcHJvZHVjdCBkZXRhaWwgc2VydmljZXMsIGNoZWNrb3V0IHRyYW5zcG9ydC9wYXltZW50IG9wdGlvbnMsXG4vLyBBTkQgcHJlLWNoZWNrb3V0IHBhZ2VcbkBtaXhpbiBjYXJkLWJveCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBsaWdodCk7XG4gICAgY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgJ2dyYXktOTAwJyk7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIG1hcC5nZXQoJGlucHV0LCBib3JkZXItY29sb3IpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogMTRweCAzMHB4IDE0cHggMjBweDtcblxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAtMXB4O1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIHByaW1hcnktZGFyayk7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGVhc2UtaW4tb3V0O1xuICAgIH1cblxuICAgIFt0eXBlPSdjaGVja2JveCddLFxuICAgIFt0eXBlPSdyYWRpbyddIHtcbiAgICAgICAgQGluY2x1ZGUgaW5wdXQtZGlzYztcbiAgICB9XG5cbiAgICAmOmhhcyg6Y2hlY2tlZCksXG4gICAgJltjbGFzcyo9J3NlbGVjdGVkJ10ge1xuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgW3R5cGU9J2NoZWNrYm94J106bm90KC5maXgtc3BlY2lmaWNpdHkpLFxuICAgICAgICBbdHlwZT0ncmFkaW8nXTpub3QoLmZpeC1zcGVjaWZpY2l0eSkge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIHByaW1hcnktZGFyayk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIHByaW1hcnktZGFyayk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyOm5vdCg6aGFzKFtkaXNhYmxlZF0pKSxcbiAgICAmOmZvY3VzLXdpdGhpbjpub3QoOmhhcyhbZGlzYWJsZWRdKSkge1xuICAgICAgICBib3JkZXItY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgZ3JheS00MDApO1xuXG4gICAgICAgIFt0eXBlPSdjaGVja2JveCddOm5vdCg6Y2hlY2tlZCksXG4gICAgICAgIFt0eXBlPSdyYWRpbyddOm5vdCg6Y2hlY2tlZCkge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2IoMCwgMCwgMCwgMC4yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6aGFzKFtkaXNhYmxlZF0pOm5vdCguZml4LXNwZWNpZmljaXR5KSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgbGlnaHQpO1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ3Nhc3M6Y29sb3InO1xuQGltcG9ydCAndGhlbWUtdmFyaWFibGVzJztcbkBpbXBvcnQgJy4uLy4uL2RlZmF1bHQvc2Fzcy9hc2dhcmQtdmFyaWFibGVzJztcbkBpbXBvcnQgJ2FwcC9hYnN0cmFjdHMvYWxsJztcblxuLm92ZXJmbG93LW1lbnUge1xuICAgIC0tb3ZlcmZsb3ctYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUsIDEpO1xuXG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuXG4gICAgLmdyZXktYmctMTAwICYge1xuICAgICAgICAtLW92ZXJmbG93LWJhY2tncm91bmQtY29sb3I6ICN7bWFwLmdldCgkdGhlbWUtY29sb3JzLCBncmF5LTEwMCl9O1xuICAgIH1cblxuICAgICZfX2l0ZW1zIHtcbiAgICAgICAgLyogc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIGxlbmd0aC16ZXJvLW5vLXVuaXQgKi9cbiAgICAgICAgLS1zY3JvbGxiYXItaGVpZ2h0OiAwcHg7XG4gICAgICAgIC0tbWFzay13aWR0aDogMjBweDtcbiAgICAgICAgLS1vdmVyZmxvdy1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1vdmVyZmxvdy1iYWNrZ3JvdW5kLWNvbG9yKTtcbiAgICAgICAgLS1tYXNrLWltYWdlLWNvbnRlbnQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdHJhbnNwYXJlbnQgNXB4LCAjMDAwIHZhcigtLW1hc2std2lkdGgpLCAjMDAwIGNhbGMoMTAwJSAtIHZhcigtLW1hc2std2lkdGgpKSwgdHJhbnNwYXJlbnQgY2FsYygxMDAlIC0gNXB4KSk7XG4gICAgICAgIC0tbWFzay1zaXplLWNvbnRlbnQ6IDEwMCUgY2FsYygxMDAlIC0gdmFyKC0tc2Nyb2xsYmFyLWhlaWdodCkpO1xuICAgICAgICAtLW1hc2staW1hZ2Utc2Nyb2xsYmFyOiBsaW5lYXItZ3JhZGllbnQoIzAwMCwgIzAwMCk7XG4gICAgICAgIC0tbWFzay1zaXplLXNjcm9sbGJhcjogMTAwJSB2YXIoLS1zY3JvbGxiYXItaGVpZ2h0KTtcblxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDAuOHJlbTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICAgIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiAnd2dodCcgNjAwO1xuICAgICAgICBzY3JvbGxiYXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG4gICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICBtYXNrLWltYWdlOiB2YXIoLS1tYXNrLWltYWdlLWNvbnRlbnQpLCB2YXIoLS1tYXNrLWltYWdlLXNjcm9sbGJhcik7XG4gICAgICAgIG1hc2stc2l6ZTogdmFyKC0tbWFzay1zaXplLWNvbnRlbnQpLCB2YXIoLS1tYXNrLXNpemUtc2Nyb2xsYmFyKTtcbiAgICAgICAgbWFzay1wb3NpdGlvbjpcbiAgICAgICAgICAgIDAgMCxcbiAgICAgICAgICAgIDEwMCUgMDtcbiAgICAgICAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdCwgbm8tcmVwZWF0O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1vdmVyZmxvdy1iYWNrZ3JvdW5kLWNvbG9yKTtcbiAgICAgICAgbWFyZ2luLWlubGluZTogY2FsYyh2YXIoLS1icy1ndXR0ZXIteCkgKiAtMC41KTtcbiAgICAgICAgcGFkZGluZy1pbmxpbmU6IGNhbGModmFyKC0tYnMtZ3V0dGVyLXgpICogMC41KTtcblxuICAgICAgICAvLyBoaWRlIHRoZSBzY3JvbGxiYXIgZm9yIHdlYmtpdC9ibGluayBicm93c2Vyc1xuICAgICAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAmOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBub25lO1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgnbGcnKSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2l0ZW0ge1xuICAgICAgICAmLWVsZW1lbnQge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogY29sb3IuYWRqdXN0KG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgcHJpbWFyeS1taWQpLCAkYWxwaGE6IC0xKTtcbiAgICAgICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICAgICAgZm9udC12YXJpYXRpb24tc2V0dGluZ3M6IGluaGVyaXQ7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgZWFzZS1vdXQgMC4xNXMsXG4gICAgICAgICAgICAgICAgY29sb3IgZWFzZS1vdXQgMC4xNXM7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcblxuICAgICAgICAgICAgJjpob3ZlcixcbiAgICAgICAgICAgICY6Zm9jdXMsXG4gICAgICAgICAgICAmOmFjdGl2ZSxcbiAgICAgICAgICAgICYtLWFjdGl2ZSxcbiAgICAgICAgICAgICYuaXMtYWN0aXZlIHtcbiAgICAgICAgICAgICAgICBmb250LXZhcmlhdGlvbi1zZXR0aW5nczogJ3dnaHQnIDYwMDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvci5taXgobWFwLmdldCgkdGhlbWUtY29sb3JzLCBwcmltYXJ5KSwgJHdoaXRlLCAxMCUpO1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogY29sb3IubWl4KG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgcHJpbWFyeS1kYXJrKSwgJHdoaXRlLCAyNSUpO1xuXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgnbGcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGNvbG9yLm1peChtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIHByaW1hcnkpLCAkd2hpdGUsIDE2JSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmhvdmVyOndoZXJlKDpub3QoJi0tYWN0aXZlKSwgOm5vdCgmLmlzLWFjdGl2ZSkpLFxuICAgICAgICAgICAgJjphY3RpdmU6d2hlcmUoOm5vdCgmLS1hY3RpdmUpLCA6bm90KCYuaXMtYWN0aXZlKSkge1xuICAgICAgICAgICAgICAgIGNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIHByaW1hcnkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLS1hY3RpdmUsXG4gICAgICAgICAgICAmLmlzLWFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCdsZycpIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxLjFyZW0gMnJlbTtcbiAgICAgICAgICAgICAgICBib3JkZXItd2lkdGg6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvLyBCcmVha3BvaW50IHZpZXdwb3J0IHNpemVzIGFuZCBtZWRpYSBxdWVyaWVzLlxuLy9cbi8vIEJyZWFrcG9pbnRzIGFyZSBkZWZpbmVkIGFzIGEgbWFwIG9mIChuYW1lOiBtaW5pbXVtIHdpZHRoKSwgb3JkZXIgZnJvbSBzbWFsbCB0byBsYXJnZTpcbi8vXG4vLyAgICAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KVxuLy9cbi8vIFRoZSBtYXAgZGVmaW5lZCBpbiB0aGUgYCRncmlkLWJyZWFrcG9pbnRzYCBnbG9iYWwgdmFyaWFibGUgaXMgdXNlZCBhcyB0aGUgYCRicmVha3BvaW50c2AgYXJndW1lbnQgYnkgZGVmYXVsdC5cblxuLy8gTmFtZSBvZiB0aGUgbmV4dCBicmVha3BvaW50LCBvciBudWxsIGZvciB0aGUgbGFzdCBicmVha3BvaW50LlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSlcbi8vICAgIG1kXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgbWRcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgJGJyZWFrcG9pbnQtbmFtZXM6ICh4cyBzbSBtZCBsZyB4bCB4eGwpKVxuLy8gICAgbWRcbkBmdW5jdGlvbiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMsICRicmVha3BvaW50LW5hbWVzOiBtYXAta2V5cygkYnJlYWtwb2ludHMpKSB7XG4gICRuOiBpbmRleCgkYnJlYWtwb2ludC1uYW1lcywgJG5hbWUpO1xuICBAaWYgbm90ICRuIHtcbiAgICBAZXJyb3IgXCJicmVha3BvaW50IGAjeyRuYW1lfWAgbm90IGZvdW5kIGluIGAjeyRicmVha3BvaW50c31gXCI7XG4gIH1cbiAgQHJldHVybiBpZigkbiA8IGxlbmd0aCgkYnJlYWtwb2ludC1uYW1lcyksIG50aCgkYnJlYWtwb2ludC1uYW1lcywgJG4gKyAxKSwgbnVsbCk7XG59XG5cbi8vIE1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTnVsbCBmb3IgdGhlIHNtYWxsZXN0IChmaXJzdCkgYnJlYWtwb2ludC5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW1pbihzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICA1NzZweFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG1pbiAhPSAwLCAkbWluLCBudWxsKTtcbn1cblxuLy8gTWF4aW11bSBicmVha3BvaW50IHdpZHRoLlxuLy8gVGhlIG1heGltdW0gdmFsdWUgaXMgcmVkdWNlZCBieSAwLjAycHggdG8gd29yayBhcm91bmQgdGhlIGxpbWl0YXRpb25zIG9mXG4vLyBgbWluLWAgYW5kIGBtYXgtYCBwcmVmaXhlcyBhbmQgdmlld3BvcnRzIHdpdGggZnJhY3Rpb25hbCB3aWR0aHMuXG4vLyBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL21lZGlhcXVlcmllcy00LyNtcS1taW4tbWF4XG4vLyBVc2VzIDAuMDJweCByYXRoZXIgdGhhbiAwLjAxcHggdG8gd29yayBhcm91bmQgYSBjdXJyZW50IHJvdW5kaW5nIGJ1ZyBpbiBTYWZhcmkuXG4vLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODI2MVxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWF4KG1kLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIDc2Ny45OHB4XG5AZnVuY3Rpb24gYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1heDogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbWF4IGFuZCAkbWF4ID4gMCwgJG1heCAtIC4wMiwgbnVsbCk7XG59XG5cbi8vIFJldHVybnMgYSBibGFuayBzdHJpbmcgaWYgc21hbGxlc3QgYnJlYWtwb2ludCwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIG5hbWUgd2l0aCBhIGRhc2ggaW4gZnJvbnQuXG4vLyBVc2VmdWwgZm9yIG1ha2luZyByZXNwb25zaXZlIHV0aWxpdGllcy5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHhzLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIFwiXCIgIChSZXR1cm5zIGEgYmxhbmsgc3RyaW5nKVxuLy8gICAgPj4gYnJlYWtwb2ludC1pbmZpeChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICBcIi1zbVwiXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pbmZpeCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICBAcmV0dXJuIGlmKGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpID09IG51bGwsIFwiXCIsIFwiLSN7JG5hbWV9XCIpO1xufVxuXG4vLyBNZWRpYSBvZiBhdCBsZWFzdCB0aGUgbWluaW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIHdpZGVyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWluIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSBvZiBhdCBtb3N0IHRoZSBtYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgbGFyZ2VzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCBuYXJyb3dlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWF4IHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSB0aGF0IHNwYW5zIG11bHRpcGxlIGJyZWFrcG9pbnQgd2lkdGhzLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IGJldHdlZW4gdGhlIG1pbiBhbmQgbWF4IGJyZWFrcG9pbnRzXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1iZXR3ZWVuKCRsb3dlciwgJHVwcGVyLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRsb3dlciwgJGJyZWFrcG9pbnRzKTtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJHVwcGVyLCAkYnJlYWtwb2ludHMpO1xuXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRsb3dlciwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJHVwcGVyLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLyBNZWRpYSBiZXR3ZWVuIHRoZSBicmVha3BvaW50J3MgbWluaW11bSBhbmQgbWF4aW11bSB3aWR0aHMuXG4vLyBObyBtaW5pbXVtIGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludCwgYW5kIG5vIG1heGltdW0gZm9yIHRoZSBsYXJnZXN0IG9uZS5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBvbmx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50LCBub3Qgdmlld3BvcnRzIGFueSB3aWRlciBvciBuYXJyb3dlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LW9ubHkoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogIGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICAkbmV4dDogYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICAkbWF4OiAgYnJlYWtwb2ludC1tYXgoJG5leHQsICRicmVha3BvaW50cyk7XG5cbiAgQGlmICRtaW4gIT0gbnVsbCBhbmQgJG1heCAhPSBudWxsIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWF4ID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuZXh0LCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb2xsYXItdmFyaWFibGUtZW1wdHktbGluZS1iZWZvcmVcbi8vIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZG91YmxlLXNsYXNoLWNvbW1lbnQtZW1wdHktbGluZS1iZWZvcmVcbkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uLy4uL2RlZmF1bHQvc2Fzcy9hc2dhcmQtdmFyaWFibGVzJyBhcyBhc2dhcmQtdmFyaWFibGVzO1xuXG4vLyBib290c3RyYXAgdmFyaWFibGVzXG4vLyBsYXlvdXRcbiRncmlkLWJyZWFrcG9pbnRzOiBtYXAubWVyZ2UoXG4gICAgYXNnYXJkLXZhcmlhYmxlcy4kZ3JpZC1icmVha3BvaW50cyxcbiAgICAoXG4gICAgICAgIGRlc2t0b3A6IDE2NTBweCxcbiAgICAgICAgZnVsbGhkOiAxOTIwcHgsXG4gICAgICAgIDJrOiAyNTAwcHhcbiAgICApXG4pO1xuXG4kY29udGFpbmVyLW1heC13aWR0aHM6IG1hcC5tZXJnZShcbiAgICBhc2dhcmQtdmFyaWFibGVzLiRjb250YWluZXItbWF4LXdpZHRocyxcbiAgICAoXG4gICAgICAgIGxnOiAxMDI0cHgsXG4gICAgICAgIHhsOiAxMTQwcHgsXG4gICAgICAgIHh4bDogMTY4NXB4XG4gICAgKVxuKTtcblxuLy8gc3BhY2luZ1xuJGNvbnRhaW5lci1wYWRkaW5nLXg6IDNyZW07XG4kY2FudmFzLXBhZGRpbmcteTogNHJlbTtcbiRjYW52YXMtcGFkZGluZy15LW1kOiA2cmVtO1xuJGNhbnZhcy1wYWRkaW5nLXkteHhsOiA3cmVtO1xuXG4vLyBmb250XG4kZm9udC1zaXplLXJvb3Q6IDYyLjUlO1xuJGZvbnQtc2l6ZS1iYXNlOiAxLjRyZW07XG4kbGluZS1oZWlnaHQtYmFzZTogMS42O1xuJGZvbnQtZmFtaWx5LWJhc2U6ICdJbnRlcicsICdJbnRlci1mYWxsYmFjaycsICdBcmlhbCcsIHNhbnMtc2VyaWY7XG4kZm9udC1zaXplLXNtOiAxLjJyZW07XG4kZm9udC1zaXplLWxnOiAkZm9udC1zaXplLWJhc2UgKiAxLjI1O1xuJGZvbnQtc2l6ZS1sYXJnZXI6ICRmb250LXNpemUtYmFzZSAqIDEuNTsgLy8gJGg0LWZvbnQtc2l6ZTtcbiRmb250LXNpemUtbGFyZ2VzdDogJGZvbnQtc2l6ZS1iYXNlICogMjsgLy8gJGgyLWZvbnQtc2l6ZTtcblxuJGxlZ2VuZC1mb250LXNpemU6IDJyZW07XG4kbGVnZW5kLW1hcmdpbi1ib3R0b206IDJyZW07XG4kbGVnZW5kLWZvbnQtd2VpZ2h0OiA3MDA7XG5cbi8vIHR5cG9cbiRoZWFkaW5ncy1tYXJnaW4tYm90dG9tOiAxZW07XG4kaGVhZGluZ3MtZm9udC13ZWlnaHQ6IDcwMDtcblxuLy8gY29sb3JzXG4kcHJpbWFyeTogIzAwN2RiYTtcbiRwcmltYXJ5LWRhcms6ICMxNDVjODA7XG4kcHJpbWFyeS1taWQ6IHJnYigwLCAxNDEsIDIxMCwgMC4xNSk7XG4kcHJpbWFyeS1saWdodDogI2U2ZjRmYjtcbiRzZWNvbmRhcnk6ICNmMDA7XG4kbGlnaHQ6ICNmZmY7XG4kZGFyazogIzAwMDtcblxuJGdyZWVuOiAjMDQ4MTAxO1xuJGdyZWVuLWRhcms6ICMxODgwMzg7XG4kZ3JlZW4tc3A6IHJnYigzLCAxODEsIDApO1xuJGdyZWVuLWRhcmstc2VtaS10cmFuc3A6IHJnYigyNCwgMTI4LCA1NiwgMC4xKTtcblxuJHRoZW1lLWNvbG9yczogbWFwLm1lcmdlKFxuICAgIGFzZ2FyZC12YXJpYWJsZXMuJHRoZW1lLWNvbG9ycyxcbiAgICAoXG4gICAgICAgIHByaW1hcnk6ICRwcmltYXJ5LFxuICAgICAgICBwcmltYXJ5LWRhcms6ICRwcmltYXJ5LWRhcmssXG4gICAgICAgIHByaW1hcnktbWlkOiAkcHJpbWFyeS1taWQsXG4gICAgICAgIHByaW1hcnktbGlnaHQ6ICRwcmltYXJ5LWxpZ2h0LFxuICAgICAgICBzZWNvbmRhcnk6ICRzZWNvbmRhcnksXG4gICAgICAgIGxpZ2h0OiAkbGlnaHQsXG4gICAgICAgIGRhcms6ICRkYXJrLFxuICAgICAgICBkYXJrLXNlbWktdHJhbnNwOiByZ2IoMCwgMCwgMCwgMC4xKSxcbiAgICAgICAgYmFzZS1iZzogJGxpZ2h0LFxuICAgICAgICBiYXNlLXRleHQ6ICRkYXJrLFxuICAgICAgICBsaW5rOiAkcHJpbWFyeSxcbiAgICAgICAgc3VjY2VzczogIzhlZDYwOSxcbiAgICAgICAgc3VjY2Vzcy1iZzogI2U4ZjFkOSxcbiAgICAgICAgc3VjY2Vzcy10ZXh0OiAkZGFyayxcbiAgICAgICAgaW5mbzogIzljYjVlMSxcbiAgICAgICAgaW5mby1iZzogI2RkZWRmMyxcbiAgICAgICAgaW5mby10ZXh0OiAkZGFyayxcbiAgICAgICAgd2FybmluZzogIzIzOWJjOCxcbiAgICAgICAgd2FybmluZy1iZzogIzljYjVlMSxcbiAgICAgICAgd2FybmluZy10ZXh0OiAkZGFyayxcbiAgICAgICAgZGFuZ2VyOiAjZTI2OTY5LFxuICAgICAgICBkYW5nZXItYmc6ICNmNmRmZGYsXG4gICAgICAgIGRhbmdlci10ZXh0OiAkZGFyayxcbiAgICAgICAgc3Rhci1yYXRpbmctYmc6ICNmYjAsXG4gICAgICAgIGluLXN0b2NrOiAkZ3JlZW4sXG4gICAgICAgIG91dC1vZi1zdG9jazogI2UyNjk2OSxcbiAgICAgICAgcHJlb3JkZXI6ICNlYWIwMDAsXG4gICAgICAgIC8vIDEwJSBvZiBpbi1zdG9jayBjb2xvdXJcbiAgICAgICAgaW4tc3RvY2stYmc6IHJnYig1LCAxMzYsIDIsIDAuMSksXG4gICAgICAgIGdyYXktMTAwOiAjZjNmM2YzLFxuICAgICAgICBncmF5LTE1MDogI2U0ZTRlNCxcbiAgICAgICAgZ3JheS0yMDA6ICNkZWRlZGUsXG4gICAgICAgIGdyYXktMzAwOiAjZDBkMGQwLFxuICAgICAgICBncmF5LTQwMDogI2IxYjFiMSxcbiAgICAgICAgZ3JheS02MDA6ICM3NDc0NzQsXG4gICAgICAgIGdyYXktNzAwOiAjNGQ0ZDRkLFxuICAgICAgICBncmF5LTgwMDogIzM4MzgzOCxcbiAgICAgICAgZ3JheS05MDA6ICMyNjI2MjYsXG4gICAgICAgIGdyYXktc2VtaS10cmFuc3A6IHJnYigyMCwgOTIsIDEyOCwgMC4xKSxcbiAgICAgICAgc2F2aW5nLWNvbG9yOiByZ2IoMjQsIDEyOCwgNTYsIDEpLFxuICAgICAgICBzYXZpbmctY29sb3ItYmc6ICRncmVlbi1kYXJrLXNlbWktdHJhbnNwLFxuICAgICAgICB2b3VjaGVyLWJnOiAjZDhlZGY3LFxuICAgICAgICBzYXZpbmdzLXByaW1hcnk6ICNlMTE5MzEsXG4gICAgICAgIHNhdmluZ3Mtc2Vjb25kYXJ5OiAjZmVlOTU2LFxuICAgICAgICB1c2VkLW9mZmVycy1wcmltYXJ5OiAjZWFiMDAwLFxuICAgICAgICB1c2VkLW9mZmVycy1zZWNvbmRhcnk6ICNmZWZiZjJcbiAgICApXG4pO1xuLy8gYm9vdHN0cmFwIHZhcmlhYmxlcyBlbmRcblxuJGxhYmVsLWdpZnQtY29sb3I6ICMwMGFlYTM7XG4kbGFiZWwtdXNlZC1wcm9kdWN0LWNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIHVzZWQtb2ZmZXJzLXByaW1hcnkpO1xuJGxhYmVsLWdpZnQtYmctY29sb3I6ICNlNmZiZjM7XG5cbi8vIHNob3BpbyB2YXJpYWJsZXNcbiRmb250LXBhdGg6ICcvYXNzZXRzL2lzcGFjZS5jei9mb250JztcblxuJGgxLWZvbnQtc2l6ZTogY2xhbXAoM3JlbSwgNnZ3LCA0cmVtKTsgLy8gJGZvbnQtc2l6ZS1iYXNlICogMi41O1xuJGgyLWZvbnQtc2l6ZTogMy42cmVtOyAvLyBDdXN0b20gZm9udCBzaXplIGJ5IGRlc2lnblxuJGgzLWZvbnQtc2l6ZTogMnJlbTsgLy8gJGZvbnQtc2l6ZS1iYXNlICogMS43NTtcbiRoNC1mb250LXNpemU6IDEuOHJlbTtcbiRoNS1mb250LXNpemU6IDEuNnJlbTtcbiRoNi1mb250LXNpemU6IDEuNnJlbTtcblxuJGRlZmF1bHQtYm9yZGVyLXJhZGl1czogOHB4O1xuXG4kYnRuOiBtYXAubWVyZ2UoXG4gICAgYXNnYXJkLXZhcmlhYmxlcy4kYnRuLFxuICAgIChcbiAgICAgICAgYmctY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgJ3ByaW1hcnknKSxcbiAgICAgICAgY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgJ2xpZ2h0JyksXG4gICAgICAgIGhvdmVyLWJnLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsICdwcmltYXJ5LWRhcmsnKSxcbiAgICAgICAgaG92ZXItY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgJ2xpZ2h0JyksXG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXNcbiAgICApXG4pO1xuXG4kYnRuLWFsdDogKFxuICAgIGJnLWNvbG9yOiAkZ3JlZW4tZGFyayxcbiAgICBjb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCAnbGlnaHQnKSxcbiAgICBob3Zlci1iZy1jb2xvcjogJGdyZWVuLXNwLFxuICAgIGhvdmVyLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsICdsaWdodCcpLFxuICAgIGJvcmRlci1yYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXNcbik7XG5cbiRidG4tZGlzYWJsZWQ6IG1hcC5tZXJnZShcbiAgICBhc2dhcmQtdmFyaWFibGVzLiRidG4tZGlzYWJsZWQsXG4gICAgKFxuICAgICAgICBiZy1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBncmF5LTIwMCksXG4gICAgICAgIGNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsICdiYXNlLXRleHQnKSxcbiAgICAgICAgaG92ZXItYmctY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgZ3JheS0yMDApLFxuICAgICAgICBob3Zlci1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCAnYmFzZS10ZXh0JylcbiAgICApXG4pO1xuXG4kYnRuLWRhcms6IChcbiAgICBiZy1jb2xvcjogJGRhcmssXG4gICAgY29sb3I6ICNmZmYsXG4gICAgaG92ZXItYmctY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgZ3JheS05MDApLFxuICAgIGhvdmVyLWNvbG9yOiAjZmZmXG4pO1xuXG4kaW5wdXQ6IG1hcC5tZXJnZShcbiAgICBhc2dhcmQtdmFyaWFibGVzLiRpbnB1dCxcbiAgICAoXG4gICAgICAgIGJnLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsICdsaWdodCcpLFxuICAgICAgICBib3JkZXItY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgJ2dyYXktMjAwJyksXG4gICAgICAgIGNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsICdkYXJrJyksXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDBcbiAgICApXG4pO1xuXG4kY2hlY2tib3gtY2hlY2s6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLFxcXG4gICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXFxcbiAgICB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxcXG4gICAgZmlsbD1cIm5vbmVcIlxcXG4gICAgc3Ryb2tlPVwiI3tyZ2JhKCRsaWdodCwgMSl9XCJcXFxuICAgIHN0cm9rZS13aWR0aD1cIjNcIj5cXFxuICAgIDxwb2x5bGluZSBwb2ludHM9XCIyMCA2IDkgMTcgNCAxMlwiPjwvcG9seWxpbmU+XFxcbiAgICA8L3N2Zz4nKTtcblxuJHBhc3N3b3JkLXNob3c6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLFxcXG4gICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA1NzYgNTEyXCI+XFxcbiAgICA8cGF0aCBkPVwiTTI4OCA4MGMtNjUuMiAwLTExOC44IDI5LjYtMTU5LjkgNjcuN0M4OS42IDE4My41IDYzIDIyNiA0OS40IDI1NiA2MyAyODYgODkuNiAzMjguNSAxMjggMzY0LjNjNDEuMiAzOC4xIDk0LjggNjcuNyAxNjAgNjcuN3MxMTguOC0yOS42IDE1OS45LTY3LjdDNDg2LjQgMzI4LjUgNTEzIDI4NiA1MjYuNiAyNTZjLTEzLjYtMzAtNDAuMi03Mi41LTc4LjYtMTA4LjNDNDA2LjggMTA5LjYgMzUzLjIgODAgMjg4IDgwek05NS40IDExMi42QzE0Mi41IDY4LjggMjA3LjIgMzIgMjg4IDMyczE0NS41IDM2LjggMTkyLjYgODAuNmM0Ni44IDQzLjUgNzguMSA5NS40IDkzIDEzMS4xIDMuMyA3LjkgMy4zIDE2LjcgMCAyNC42LTE0LjkgMzUuNy00Ni4yIDg3LjctOTMgMTMxLjFDNDMzLjUgNDQzLjIgMzY4LjggNDgwIDI4OCA0ODBzLTE0NS41LTM2LjgtMTkyLjYtODAuNkM0OC42IDM1NiAxNy4zIDMwNCAyLjUgMjY4LjNjLTMuMy03LjktMy4zLTE2LjcgMC0yNC42QzE3LjMgMjA4IDQ4LjYgMTU2IDk1LjQgMTEyLjZ6TTI4OCAzMzZjNDQuMiAwIDgwLTM1LjggODAtODBzLTM1LjgtODAtODAtODBoLTJjMS4zIDUuMSAyIDEwLjUgMiAxNiAwIDM1LjMtMjguNyA2NC02NCA2NC01LjUgMC0xMC45LS43LTE2LTJ2MmMwIDQ0LjIgMzUuOCA4MCA4MCA4MHptMC0yMDhhMTI4IDEyOCAwIDEgMSAwIDI1NiAxMjggMTI4IDAgMSAxIDAtMjU2elwiLz5cXFxuICAgIDwvc3ZnPicpO1xuXG4kYW5nbGUtcmlnaHQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLFxcXG4gICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDMyMCA1MTJcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XFxcbiAgICA8cGF0aCBmaWxsPVwiI3tyZ2JhKG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgcHJpbWFyeSksIDAuOTk5KX1cIlxcXG4gICAgZD1cIk0yNzguNiAyMzMuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM2wtMTYwIDE2MGMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMMjEwLjcgMjU2IDczLjQgMTE4LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBsMTYwIDE2MHpcIi8+XFxcbiAgICA8L3N2Zz4nKTtcblxuJGRpYWdvbmFsLWxpbmU6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLFxcXG4gICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDEwMCAxMDBcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgcHJlc2VydmVBc3BlY3RSYXRpbz1cIm5vbmVcIj5cXFxuICAgIDxsaW5lIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2U9XCIje3JnYmEobWFwLmdldCgkdGhlbWUtY29sb3JzLCBncmF5LTQwMCksIDAuOTk5KX1cIlxcXG4gICAgeDE9XCIwXCIgeTE9XCIwXCIgeDI9XCIxMDBcIiB5Mj1cIjEwMFwiIHZlY3Rvci1lZmZlY3Q9XCJub24tc2NhbGluZy1zdHJva2VcIi8+XFxcbiAgICA8L3N2Zz4nKTtcblxuJGJyZWFkY3J1bWJzOiBtYXAubWVyZ2UoXG4gICAgYXNnYXJkLXZhcmlhYmxlcy4kYnJlYWRjcnVtYnMsXG4gICAgKFxuICAgICAgICBiZy1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCAnZ3JheS0xMDAnKSxcbiAgICAgICAgY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgJ2RhcmsnKSxcbiAgICAgICAgYWN0aXZlLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsICdncmF5LTYwMCcpXG4gICAgKVxuKTtcblxuLy8gaGVhZGVyXG4kaGVhZGVyLW5hdi1oZWlnaHQ6IDUuNXJlbTsgLy8gaGVpZ2h0IG9uIHNtYWxsIHNjcmVlbnNcbiRoZWFkZXItbmF2LWRlc2t0b3AtaGVpZ2h0OiAxNC41cmVtOyAvLyBoZWlnaHQgb24gYmlnZ2VyIHNjcmVlbnNcbiRoZWFkZXItdG9wLW5hdi1kZXNrdG9wLWhlaWdodDogMTQuNXJlbTsgLy8gaGVpZ2h0IG9uIGJpZ2dlciBzY3JlZW5zXG4kaGVhZGVyLW5hdi1icmVha3BvaW50OiAneGwnOyAvLyBicmVha3BvaW50IHdoZW4gbmF2IGNoYW5nZXMgZnJvbSBtb2JpbGUgdG8gZGVza3RvcFxuJGhlYWRlci1zZWFyY2gtZGVza3RvcC1oZWlnaHQ6IDVyZW07XG4kaGVhZGVyLXNlYXJjaC1kZXNrdG9wLXdpZHRoOiAxMDAlO1xuXG4kc2Nyb2xsYmFyLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsICdwcmltYXJ5Jyk7XG5cbi8vIG1lbnVcbiRtZW51LWl0ZW0tZGVza3RvcC1wYWRkaW5nOiAxcmVtO1xuJG1lbnUtc2Vjb25kYXJ5LWxpbmtzLWJnOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsICdwcmltYXJ5LWRhcmsnKTtcbiRtZW51LXN1Ym1lbnUtc2luZ2xlLWNvbHVtbi1taW46IDk7XG5cbi8vIGZvb3RlclxuJGZvb3Rlci1ibG9jay1jb2xsYXBzZWQtaGVpZ2h0OiA2LjVyZW07XG5cbi8vIHZvdWNoZXIgUERGXG4vLyBOT1RFOiBpZiB0aGUgZm9udHMgdXNlZCBoZXJlIGFyZSBub24tc3RhbmRhcmQsIHRoZW4gdGhleSBuZWVkIHRvIGJlIHVwbG9hZGVkIGFuZCBzcGVjaWZpZWQgc2VwYXJhdGVseSBpbiB0aGVcbi8vIG1QREYgaW5pdGlhbGl6YXRpb24gKHNlZSB1c2FnZSBpbiBTRCBvciBzcGVhayB3aXRoIERCIDopKVxuJHZvdWNoZXI6IG1hcC5tZXJnZShcbiAgICBhc2dhcmQtdmFyaWFibGVzLiR2b3VjaGVyLFxuICAgIChcbiAgICAgICAgcHJpbWFyeS1iYWNrZ3JvdW5kLWNvbG9yOiAjZmZmLFxuICAgICAgICBwcmltYXJ5LWNvbG9yOiAjNDQ0LFxuICAgICAgICBzZWNvbmRhcnktYmFja2dyb3VuZC1jb2xvcjogI2RkZCxcbiAgICAgICAgc2Vjb25kYXJ5LWNvbG9yOiAjNDQ0LFxuICAgICAgICBibG9jay1oaWdobGlnaHQtYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMCxcbiAgICAgICAgYmxvY2staGlnaGxpZ2h0LWNvbG9yOiAjNDQ0LFxuICAgICAgICBiYXNlLWZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlLFxuICAgICAgICBiYXNlLWxpbmUtaGVpZ2h0OiAxLjUsXG4gICAgICAgIGhlYWRpbmctZm9udDogJGZvbnQtZmFtaWx5LWJhc2UsXG4gICAgICAgIGJvZHktZm9udDogJGZvbnQtZmFtaWx5LWJhc2UsXG4gICAgICAgIGxvZ28tbWF4LWhlaWdodDogMTBtbVxuICAgIClcbik7XG5cbi8vIEZ1bGwtd2lkdGggc2xpZGVyIGltYWdlIGRpbWVuc2lvbnMgKGFwcGxpZXMgdG8gZGVza3RvcCBvbmx5KVxuLy8gaW1hZ2Utd2lkdGg6IGltYWdlIHNpemVcbi8vIGltYWdlLWNvbnRlbnQtYXJlYS13aWR0aDogd2hlcmUgd2UgY2FuIHNhZmVseSBjcm9wIChmcm9tIHRoZSBmdWxsIHNpemUgaW1hZ2UpXG4kc2xpZGVyLWRlc2t0b3A6IG1hcC5tZXJnZShcbiAgICBhc2dhcmQtdmFyaWFibGVzLiRzbGlkZXItZGVza3RvcCxcbiAgICAoXG4gICAgICAgIGltYWdlLXdpZHRoOiAxOTAwcHgsXG4gICAgICAgIGltYWdlLWNvbnRlbnQtYXJlYS13aWR0aDogMTIwMHB4XG4gICAgKVxuKTtcbi8vIHNob3BpbyB2YXJpYWJsZXMgZW5kXG5cbi8vIENTUyB2YXJpYWJsZXNcbi8vIG1vdmUgdG8gYXBwLnNjc3NcbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkBpbXBvcnQgJ3RoZW1lLXZhcmlhYmxlcyc7XG5AaW1wb3J0ICcuLi8uLi9kZWZhdWx0L3Nhc3MvYXNnYXJkLXZhcmlhYmxlcyc7XG5AaW1wb3J0ICdhcHAvYWJzdHJhY3RzL2FsbCc7XG5cbi50aW1lLWxpbWl0ZWQtb2ZmZXJzIHtcbiAgICAmX190aXRsZSB7XG4gICAgICAgIG1hcmdpbi1ibG9jay1lbmQ6IDFyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgZm9udC12YXJpYXRpb24tc2V0dGluZ3M6ICd3Z2h0JyA2MDA7XG4gICAgfVxuXG4gICAgJl9fb2ZmZXIge1xuICAgICAgICAmLWRldGFpbHMge1xuICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBwcmltYXJ5KTtcbiAgICAgICAgICAgIGNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIGxpZ2h0KTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMgJGRlZmF1bHQtYm9yZGVyLXJhZGl1cyAwIDA7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgICAgICAgICAqIHtcbiAgICAgICAgICAgICAgICB3b3JkLWJyZWFrOiBub3JtYWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgID4gKiB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1pbmxpbmU6IDJyZW07XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAgICAgICAgICAgICAmOndoZXJlKDpmaXJzdC1jaGlsZCkge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWJsb2NrOiAycmVtIDFyZW07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJjp3aGVyZSg6bGFzdC1jaGlsZCkge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWJsb2NrOiAxcmVtIDJyZW07XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1ibG9jay1zdGFydDogMnB4IGRhc2hlZDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmOndoZXJlKDpmaXJzdC1jaGlsZDpsYXN0LWNoaWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1ibG9jazogMnJlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICo6d2hlcmUoOm5vdCgudGltZS1saW1pdGVkLW9mZmVyc19fb2ZmZXItdGltZS1yZW1haW5pbmctaGVhZGluZykpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCdsZycpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAzNHB4O1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgICAgICAgICBmb250LXZhcmlhdGlvbi1zZXR0aW5nczogJ3dnaHQnIDkwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLXRpbWUtcmVtYWluaW5nIHtcbiAgICAgICAgICAgICYtaGVhZGluZyB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICAgICAgZm9udC12YXJpYXRpb24tc2V0dGluZ3M6ICd3Z2h0JyA1MDA7XG4gICAgICAgICAgICAgICAgZm9udC12YXJpYW50OiB0YWJ1bGFyLW51bXM7XG5cbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCdsZycpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAyOHB4O1xuICAgICAgICAgICAgICAgICAgICBmb250LXZhcmlhdGlvbi1zZXR0aW5nczogJ3dnaHQnIDcwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYtdmFsdWUge1xuICAgICAgICAgICAgICAgIGZvbnQtdmFyaWFudDogdGFidWxhci1udW1zO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi0teGwtd2lkZSB7XG4gICAgICAgIC50aW1lLWxpbWl0ZWQtb2ZmZXJzIHtcbiAgICAgICAgICAgICZfX29mZmVyIHtcbiAgICAgICAgICAgICAgICAmLWRldGFpbHMge1xuICAgICAgICAgICAgICAgICAgICAqOndoZXJlKDpub3QoLnRpbWUtbGltaXRlZC1vZmZlcnNfX29mZmVyLXRpbWUtcmVtYWluaW5nLWhlYWRpbmcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAzNHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiAnd2dodCcgOTAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJi10aW1lLXJlbWFpbmluZyB7XG4gICAgICAgICAgICAgICAgICAgICYtaGVhZGluZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDI4cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXZhcmlhdGlvbi1zZXR0aW5nczogJ3dnaHQnIDcwMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJ3hsJykge1xuICAgICAgICAgICAgLnRpbWUtbGltaXRlZC1vZmZlcnMge1xuICAgICAgICAgICAgICAgICZfX29mZmVyIHtcbiAgICAgICAgICAgICAgICAgICAgJi13cmFwcGVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHdpZGUtY2FyZCgneGwnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDEuMmZyO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgJi1kZXRhaWxzIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogNTBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICA+ICoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgbGlnaHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctYmxvY2s6IGNsYW1wKDJyZW0sIDN2dywgNC43NXJlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FwOiAwLjVyZW07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmOndoZXJlKDpsYXN0LWNoaWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1ibG9jay1zdGFydDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICo6d2hlcmUoOm5vdCgudGltZS1saW1pdGVkLW9mZmVyc19fb2ZmZXItdGltZS1yZW1haW5pbmctaGVhZGluZykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDQ0cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAmLXBlcmNlbnRhZ2Utc2F2aW5nIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIGludmVydGVkLWJvcmRlci1yYWRpdXMoJ3InKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cyAwIDAgJGRlZmF1bHQtYm9yZGVyLXJhZGl1cztcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgJi10aW1lLXJlbWFpbmluZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbGV4OiAxLjIgMSBhdXRvO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cyAwIDAgJGRlZmF1bHQtYm9yZGVyLXJhZGl1cztcblxuICAgICAgICAgICAgICAgICAgICAgICAgJjp3aGVyZSg6bm90KDpmaXJzdC1jaGlsZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBpbnZlcnRlZC1ib3JkZXItcmFkaXVzKCdsJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDJweCBkYXNoZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICYtaGVhZGluZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAzNnB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJjp3aGVyZSg6bm90KCYtLXhsLXdpZGUpKSB7XG4gICAgICAgIC50aW1lLWxpbWl0ZWQtb2ZmZXJzIHtcbiAgICAgICAgICAgICZfX29mZmVyIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJ2xnJykge1xuICAgICAgICAgICAgICAgICAgICAmLXRpbWUtcmVtYWluaW5nIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICYtaGVhZGluZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJjpmaXJzdC1jaGlsZDpub3QoOm9ubHktY2hpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogJzonO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnByb2R1Y3QtY2FyZCB7XG4gICAgICAgICAgICAmX19mbGFncyB7XG4gICAgICAgICAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgICAgICAgICByaWdodDogMTBweDtcbiAgICAgICAgICAgICAgICB0b3A6IGNhbGModmFyKC0tdGh1bWJuYWlsLXBhZGRpbmcpIC0gMjBweCk7XG5cbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJ2xnJykge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIFtjbGFzcyo9J19faXRlbSddIHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cyAqIDAuNTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jYXJkLXByaWNlIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ibG9jazogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgZ2FwOiAwIDAuM3JlbTtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJ2xnJykge1xuICAgICAgICAgICAgLnByb2R1Y3QtY2FyZCB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCAnbGlnaHQnKTtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMjBweCAwIHJnYmEobWFwLmdldCgkdGhlbWUtY29sb3JzLCAnZGFyaycpLCAwLjEpO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAgMCAkZGVmYXVsdC1ib3JkZXItcmFkaXVzICRkZWZhdWx0LWJvcmRlci1yYWRpdXM7XG5cbiAgICAgICAgICAgICAgICAmX19wZXJleCB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJl9fZmxhZ3Mge1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICAgICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiBjYWxjKHZhcigtLXRodW1ibmFpbC1wYWRkaW5nKSAtIDEwcHgpO1xuICAgICAgICAgICAgICAgICAgICBwbGFjZS1zZWxmOiBzdGFydDtcblxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MqPSdfX2l0ZW0nXSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzKj0nX190ZXh0J10ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC12YXJpYXRpb24tc2V0dGluZ3M6ICd3Z2h0JyA1MDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmX19pbm5lciB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogNzBweCAxZnIgMzhweDtcbiAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBtaW4tY29udGVudCBtaW4tY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMjBweCAwIDIwcHggMTBweDtcbiAgICAgICAgICAgICAgICAgICAgZ2FwOiAxMHB4IDIwcHg7XG4gICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJl9fYXZhaWxhYmlsaXR5IHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmX19wcmltYXJ5LFxuICAgICAgICAgICAgICAgICZfX3NlY29uZGFyeSxcbiAgICAgICAgICAgICAgICAmX19zZWNvbmRhcnktaW5uZXIge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBjb250ZW50cztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmX190aHVtYm5haWwge1xuICAgICAgICAgICAgICAgICAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbGVuZ3RoLXplcm8tbm8tdW5pdCAqL1xuICAgICAgICAgICAgICAgICAgICAtLXRodW1ibmFpbC1wYWRkaW5nOiAwcHg7XG5cbiAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDEgLyBzcGFuIDI7XG4gICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDcwcHg7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJl9faGVhZGluZyB7XG4gICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMjtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ibG9jazogYXV0byAwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICZfX3ByaWNlIHtcbiAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDI7XG4gICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAyO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYmxvY2s6IDAgYXV0bztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAuY2FyZC1wcmljZSB7XG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgICAgICAgICAgICAgICAgZ2FwOiAxMHB4IDAuNXJlbTtcblxuICAgICAgICAgICAgICAgICAgICAmX19mdWxsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgJl9fZGlzY291bnQsXG4gICAgICAgICAgICAgICAgICAgICZfX3NhdmluZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICZfX3NhdmluZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgc2F2aW5nLWNvbG9yLWJnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDRweCA2cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzICogMC41O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICZfX2FkZCB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fc2xpZGVyIHtcbiAgICAgICAgLmVtYmxhIHtcbiAgICAgICAgICAgIC5jYXRlZ29yeV9fc2lkZWJhciAmIHtcbiAgICAgICAgICAgICAgICAmX192aWV3cG9ydCB7XG4gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICZfX2NvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgICAgIGdhcDogNjBweDsgLy8gYWxsb3cgZm9yIHRoZSBzaGFkb3cgKHZhbHVlIGlzIDEwcHggPiBjb250YWluZXIgcGFkZGluZylcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX2J1dHRvbnMge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IG1heC1jb250ZW50O1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMnJlbSBhdXRvIDA7XG4gICAgICAgICAgICAgICAgYm90dG9tOiBpbml0aWFsO1xuICAgICAgICAgICAgICAgIHJpZ2h0OiBpbml0aWFsO1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDIwcHggMCByZ2JhKG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgJ2RhcmsnKSwgMC4wNik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX2J1dHRvbiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY2FyZC1wcmljZV9fdm91Y2hlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLy8gRklYIEZPUiBpT1MgLyBNYWNPUyBTYWZhcmkgd2l0aCBTcGxpZGVcbiAgICBAYXQtcm9vdCB7XG4gICAgICAgIC5jb250YWluZXI6aGFzKD4gI3smfSkge1xuICAgICAgICAgICAgb3ZlcmZsb3cteDogY2xpcDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=*/