/*!*********************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** 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/obchod-samsung.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(244, 244, 244, 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: #e6e6e6;
  color: #000;
  border-color: #bfbfbf;
}
@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: #d6d6d6;
  }
}
.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/obchod-samsung.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: #ff4337;
  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: 50px;
    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: #ff4337;
    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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLm9iY2hvZC1zYW1zdW5nLmN6LmFzZ2FyZC50ZW1wbGF0ZS40M2FiZmE5MDFmODVjYWEyMjc1MS5jc3MiLCJtYXBwaW5ncyI6Ijs7O0FBR0E7Ozs7O0VBQUE7QUFpQkE7Ozs7OztFQUFBO0FDK1BBOztFQUFBO0FBK0hBOztFQUFBO0FDNVlBO0VBQ0k7RUFFQTtBQWFKO0FBWEk7RUFDSTtBQWFSO0FBVkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsMEJBQ0k7RUFFSjtFQUNBO0VBQ0E7RUFDQTtBQVNSO0FBTlE7RUFDSTtBQVFaO0FBTFE7RUFDSTtFQUNBO0VBQ0E7QUFPWjtBQUpRO0VBQ0k7RUFDQTtBQU1aO0FDREk7RURoREE7SUErQ1E7RUFNVjtBQUNGO0FBRlE7RUFDSTtFQUNBO0VBQ0E7RUFDQSxrQkUyRFk7RUYxRFo7RUFDQTtFQUNBO0VBQ0EsaUVBQ0k7RUFFSjtBQUVaO0FBQVk7RUFLSTtFQUNBO0VBQ0E7RUFDQTtBQUZoQjtBQ3ZCSTtFRGlCUTtJQVdRO0VBRGxCO0FBQ0Y7QUFJWTtFQUVJO0VBQ0E7QUFIaEI7QUNoQ0k7RURJSTtJQW1DUTtJQUNBO0VBSGQ7QUFDRixDOzs7O0FGbEdBOzs7OztFQUFBO0FBaUJBOzs7Ozs7RUFBQTtBQytQQTs7RUFBQTtBQStIQTs7RUFBQTtBSTVZSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FBY1I7QUFWUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFZWjtBQVZZO0VBQ0k7QUFZaEI7QUFUWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFXaEI7QUFUZ0I7RUFDSTtBQVdwQjtBQVJnQjtFQUNJO0VBQ0E7QUFVcEI7QUFQZ0I7RUFDSTtFQUNBO0FBU3BCO0FBTFk7RUFDSTtBQU9oQjtBRktJO0VFYlE7SUFJUTtJQUNBO0lBQ0E7SUFDQTtFQVFsQjtBQUNGO0FBSFk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBQUtoQjtBRlRJO0VFQVE7SUFPUTtJQUNBO0VBTWxCO0FBQ0Y7QUFIWTtFQUNJO0FBS2hCO0FBSW9CO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUFGeEI7QUFPb0I7RUFDSTtFQUNBO0FBTHhCO0FGNUJJO0VFMENnQjtJQUdJO0lBQ0E7RUFidEI7RUpuRUU7SUFDSTtJQUNBO0lBRUE7SUFDQTtJQUNBLGtCRytGZ0I7RUMzQnRCO0VKbEVNO0lBQ0k7SUFDQTtFSW9FVjtBQUNGO0FGN0NJO0VGbENBO0lBZVk7SUFDQTtFSW9FZDtBQUNGO0FGbkRJO0VGYlE7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RUltRWQ7RUpqRWM7SUFDSTtJQUNBO0lBQ0E7RUltRWxCO0VKL0RVO0lBRUk7RUlnRWQ7RUo1RGM7SUFDSTtFSThEbEI7RUoxRFU7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFSTREZDtFSjFEYztJQUNJO0lBQ0E7SUFDQTtJQUNBO0VJNERsQjtFSnhEVTtJQUNJO0lBQ0E7RUkwRGQ7RUp2RFU7SUFDSTtJQUNBO0lBQ0E7RUl5RGQ7RUp0RFU7SUFDSTtJQUNBO0VJd0RkO0VKckRVO0lBQ0k7SUFDQTtFSXVEZDtFSnBEVTtJQUNJO0lBQ0E7RUlzRGQ7RUpuRFU7SUFDSTtJQUNBO0lBQ0E7RUlxRGQ7RUpuRGM7SUFDSTtJQUNBO0lBQ0E7RUlxRGxCO0VKbkRrQjtJQUNJO0lBQ0E7RUlxRHRCO0VKbERrQjtJQUVJO0VJbUR0QjtFSjlDVTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFSWdEZDtFSjlDYztJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RUlnRGxCO0VKOUNrQjtJQUNJO0lBQ0E7RUlnRHRCO0VKM0NVO0lBQ0k7SUFDQTtJQUNBO0VJNkNkO0VKM0NjO0lBQ0k7RUk2Q2xCO0FBQ0Y7QUZ4Skk7RUVpRGdCO0lBQ0k7SUFDQTtJQUNBO0VBMEd0QjtFQXhHc0I7SUFDSTtJQUNBO0lBQ0E7SUFDQTtFQTBHMUI7RUF4RzBCO0lBQ0k7RUEwRzlCO0VBdEdzQjtJQUNJO0VBd0cxQjtFQXBHa0I7SUp3RGhCO0lBQ0E7SUFpQ0E7SUFDQTtJQUNBO0lBQ0E7SUFFQSx3WkFDSTtJQUlKO0lBQ0E7SUlsR29CO0lBQ0E7RUE2R3RCO0VKUkU7SUl6R2dCO01KMEdaO0lJV0o7RUFDRjtFSk5FO0lJaEhnQjtNSmlIWjtNQUNBO0lJU0o7RUFDRjtFQXJIa0I7SUFDSTtJQUNBO0VBdUh0QjtFQXJIc0I7SUo2Q3BCO0lBQ0E7SUFpQ0E7SUFDQTtJQUNBO0lBQ0E7SUFFQSx3WkFDSTtJQUlKO0lBQ0E7SUl2RndCO0lBQ0E7RUE4SDFCO0VKcENFO0lJOUZvQjtNSitGaEI7SUl1Q0o7RUFDRjtFSmxDRTtJSXJHb0I7TUpzR2hCO01BQ0E7SUlxQ0o7RUFDRjtFQXRJc0I7SUFDSTtFQXdJMUI7QUFDRjtBRnJOSTtFRXdGZ0I7SUFDSTtFQWdJdEI7RUE1SDhCO0lBQ0k7RUE4SGxDO0FBQ0Y7QUFySFk7RUFDSTtFQUNBO0VBQ0E7QUF1SGhCO0FGbE9JO0VFd0dRO0lBTVE7RUF3SGxCO0FBQ0Y7QUF0SGdCO0VBQ0k7QUF3SHBCO0FBcEhZO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQXNIaEI7QUZwUEk7RUVtSVE7SUFDSTtJQUNBO0lBQ0E7RUFvSGQ7RUFsSGM7SUFDSTtFQW9IbEI7RUFqSGM7SUFDSTtJQUNBO0lBQ0E7SUFDQTtFQW1IbEI7RUFqSGtCO0lBQ0ksa0JEN0ZBO0VDZ050QjtFQWhIa0I7SUFDSTtFQWtIdEI7RUE5R2M7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RUFnSGxCO0VBN0djO0lBQ0k7RUErR2xCO0VBNUdjO0lBR0k7RUE0R2xCO0VBekdjO0lBQ0k7SUFDQTtJQUVBO0lBQ0E7SUFDQTtJQUNBO0VBMEdsQjtFQXZHYztJQUNJO0lBQ0E7SUFDQTtJQUNBO0VBeUdsQjtFQXRHYztJQUNJO0lBQ0E7SUFDQTtFQXdHbEI7RUFyR2M7SUFDSTtJQUNBO0VBdUdsQjtFQXJHa0I7SUFDSTtFQXVHdEI7RUFwR2tCO0lBRUk7RUFxR3RCO0VBbEdrQjtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RUFvR3RCO0VBaEdjO0lBQ0k7RUFrR2xCO0FBQ0Y7QUExRmdCO0VBQ0k7QUE0RnBCO0FBekZnQjtFQUNJO0FBMkZwQjtBQXZGWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQXlGaEI7QUF0Rlk7RUFDSTtBQXdGaEI7QUFuRkk7RUFDSTtBQXFGUjtBQWhGUTtFQUNJO0FBa0ZaLEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zaG9waW8vLi9kYXRhL3d3dy90ZW1wbGF0ZXMvYXNnYXJkL29iY2hvZC1zYW1zdW5nLmN6L3Nhc3MvYXBwL2Fic3RyYWN0cy9fZm5zLnNjc3MiLCJ3ZWJwYWNrOi8vc2hvcGlvLy4vZGF0YS93d3cvdGVtcGxhdGVzL2FzZ2FyZC9vYmNob2Qtc2Ftc3VuZy5jei9zYXNzL2FwcC9hYnN0cmFjdHMvX21peGlucy5zY3NzIiwid2VicGFjazovL3Nob3Bpby8uL2RhdGEvd3d3L3RlbXBsYXRlcy9hc2dhcmQvb2JjaG9kLXNhbXN1bmcuY3ovc2Fzcy9vdmVyZmxvdy1tZW51LnNjc3MiLCJ3ZWJwYWNrOi8vc2hvcGlvLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fYnJlYWtwb2ludHMuc2NzcyIsIndlYnBhY2s6Ly9zaG9waW8vLi9kYXRhL3d3dy90ZW1wbGF0ZXMvYXNnYXJkL29iY2hvZC1zYW1zdW5nLmN6L3Nhc3MvX3RoZW1lLXZhcmlhYmxlcy5zY3NzIiwid2VicGFjazovL3Nob3Bpby8uL2RhdGEvd3d3L3RlbXBsYXRlcy9hc2dhcmQvb2JjaG9kLXNhbXN1bmcuY3ovc2Fzcy9vZmZlcnMuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOmxpc3QnO1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgbmV4dCBzbWFsbGVyIGJyZWFrcG9pbnQgZnJvbSB0aGUgZ2l2ZW4gYnJlYWtwb2ludC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgLSBUaGUgYnJlYWtwb2ludCBmb3Igd2hpY2ggdG8gZmluZCB0aGUgbmV4dCBzbWFsbGVyIGJyZWFrcG9pbnQuXG4gKiBAcmV0dXJuIHtTdHJpbmd8bnVsbH0gLSBUaGUgbmV4dCBzbWFsbGVyIGJyZWFrcG9pbnQsIG9yIG51bGwgaWYgbm8gc21hbGxlciBicmVha3BvaW50IGlzIGF2YWlsYWJsZS5cbiAqL1xuQGZ1bmN0aW9uIGdldC1zbWFsbGVyLWJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpIHtcbiAgICAka2V5czogbWFwLmtleXMoJGdyaWQtYnJlYWtwb2ludHMpO1xuICAgICRpbmRleDogbGlzdC5pbmRleCgka2V5cywgJGJyZWFrcG9pbnQpO1xuXG4gICAgQGlmIG5vdCAkaW5kZXggb3IgJGluZGV4ID09IDEge1xuICAgICAgICBAcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgQHJldHVybiBsaXN0Lm50aCgka2V5cywgJGluZGV4IC0gMSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBuZXh0IGxhcmdlciBicmVha3BvaW50IGZyb20gdGhlICRncmlkLWJyZWFrcG9pbnRzIG1hcC5cbiAqXG4gKiBAZnVuY3Rpb24gZ2V0LWJpZ2dlci1icmVha3BvaW50XG4gKiBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgLSBUaGUgY3VycmVudCBicmVha3BvaW50IHRvIGZpbmQgdGhlIG5leHQgbGFyZ2VyIG9uZSBmb3IuXG4gKiBAcmV0dXJuIHtTdHJpbmcgfCBudWxsfSAtIFRoZSBuZXh0IGxhcmdlciBicmVha3BvaW50IG9yIG51bGwgaWYgdGhlIGN1cnJlbnQgYnJlYWtwb2ludCBpcyB0aGUgbGFyZ2VzdCBvciBub3QgZm91bmQuXG4gKi9cbkBmdW5jdGlvbiBnZXQtbGFyZ2VyLWJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpIHtcbiAgICAka2V5czogbWFwLmtleXMoJGdyaWQtYnJlYWtwb2ludHMpO1xuICAgICRpbmRleDogbGlzdC5pbmRleCgka2V5cywgJGJyZWFrcG9pbnQpO1xuXG4gICAgQGlmIG5vdCAkaW5kZXggb3IgJGluZGV4ID09IGxpc3QubGVuZ3RoKCRicmVha3BvaW50KSB7XG4gICAgICAgIEByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBAcmV0dXJuIGxpc3QubnRoKCRrZXlzLCAkaW5kZXggKyAxKTtcbn1cbiIsIkB1c2UgJ3Nhc3M6Y29sb3InO1xuQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczpsaXN0JztcblxuLy8gKiBWaXN1YWxzIGZvciBzbWFsbCBibG9ja3Mgd2l0aCBhIGhvdmVyIC8gZm9jdXMtd2l0aGluIGVmZmVjdCBpbmNsdWRlZFxuLy8gKiBUbyBtb2RpZnkgZGVmYXVsdCB2YWx1ZXMsIHlvdSBjb3VsZCB1c2UgQGluY2x1ZGUgc21hbGwtYmxvY2stY29tcG9uZW50KG1hcC5zZXQoJGNvbmZpZywgJ3JhZGl1cycsIDIwcHgpKVxuQG1peGluIHNtYWxsLWJsb2NrLWNvbXBvbmVudChcbiAgICAkcmFkaXVzOiAxMHB4LFxuICAgICRiYWNrZ3JvdW5kLXN0YXJ0OiBjb2xvci5hZGp1c3QobWFwLmdldCgkdGhlbWUtY29sb3JzLCBwcmltYXJ5LWxpZ2h0KSwgJGFscGhhOiAtMSksXG4gICAgJGJhY2tncm91bmQtZW5kOiBjb2xvci5hZGp1c3QobWFwLmdldCgkdGhlbWUtY29sb3JzLCBwcmltYXJ5LWxpZ2h0KSwgJGFscGhhOiAwKSxcbiAgICAkYm94LXNoYWRvdy1zdGFydDogMCA0cHggMjBweCAwICMwMDAwMDAxNCxcbiAgICAkYm94LXNoYWRvdy1lbmQ6IDAgNHB4IDRweCAwICMwMDAwMDAxNCxcbiAgICAkdHJhbnNpdGlvbjogJ2JhY2tncm91bmQtY29sb3IgbGluZWFyIDAuMTVzLCBib3gtc2hhZG93IGxpbmVhciAwLjE1cydcbikge1xuICAgIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtc3RhcnQ7XG4gICAgYm94LXNoYWRvdzogJGJveC1zaGFkb3ctc3RhcnQ7XG4gICAgdHJhbnNpdGlvbjogI3skdHJhbnNpdGlvbn07XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtZW5kO1xuICAgICAgICBib3gtc2hhZG93OiAkYm94LXNoYWRvdy1lbmQ7XG4gICAgfVxufVxuXG5AbWl4aW4gd2lkZS1jYXJkKCRicmVha3BvaW50OiAneGwnKSB7XG4gICAgJHNtYWxsZXItYnJlYWtwb2ludDogZ2V0LWxhcmdlci1icmVha3BvaW50KCRicmVha3BvaW50KTtcblxuICAgIC5wcm9kdWN0LWNhcmQge1xuICAgICAgICAtLXRodW1ibmFpbC13aWR0aDogMjAwcHg7XG4gICAgICAgIC0tZmxhZy1mb250LXNpemU6IDEuMnJlbTtcblxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIGxpZ2h0KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDIwcHggMCByZ2IoMCwgMCwgMCwgMC4wNyk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXM7XG5cbiAgICAgICAgJl9faW5uZXIge1xuICAgICAgICAgICAgcGFkZGluZzogM3JlbTtcbiAgICAgICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAkc21hbGxlci1icmVha3BvaW50IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJHNtYWxsZXItYnJlYWtwb2ludCkge1xuICAgICAgICAgICAgICAgIC0tdGh1bWJuYWlsLXdpZHRoOiAyODBweDtcbiAgICAgICAgICAgICAgICAtLWZsYWctZm9udC1zaXplOiAxLjZyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50KSB7XG4gICAgICAgICAgICAmX19pbm5lciB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHZhcigtLXRodW1ibmFpbC13aWR0aCkgMWZyIGF1dG87XG4gICAgICAgICAgICAgICAgZ3JpZC1hdXRvLXJvd3M6IGF1dG87XG4gICAgICAgICAgICAgICAgbWluLWhlaWdodDogMjRyZW07XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAzcmVtIDRyZW0gM3JlbSAwO1xuXG4gICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMSAvIC0xO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9fcHJpbWFyeSxcbiAgICAgICAgICAgICZfX3NlY29uZGFyeSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogY29udGVudHM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX3NlY29uZGFyeSB7XG4gICAgICAgICAgICAgICAgJi1pbm5lciB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGNvbnRlbnRzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9fdGh1bWJuYWlsIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IHZhcigtLXRodW1ibmFpbC13aWR0aCk7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDMwcHg7XG4gICAgICAgICAgICAgICAgZ3JpZC1hcmVhOiBhdXRvO1xuXG4gICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAyNDBweDtcbiAgICAgICAgICAgICAgICAgICAgbWF4LWhlaWdodDogMjQwcHg7XG4gICAgICAgICAgICAgICAgICAgIGluc2V0OiAwO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IGF1dG87XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmX192YXJpYW50cyB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDE7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDY7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX2hlYWRpbmcge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAyIC8gLTE7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDI7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAyLjJyZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX3BlcmV4IHtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMiAvIC0xO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiAzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmX19wYXJhbWV0ZXJzIHtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMiAvIC0xO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiA0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmX19hdmFpbGFiaWxpdHkge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAyIC8gLTE7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX3ByaWNlIHtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMjtcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogNjtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG5cbiAgICAgICAgICAgICAgICAuY2FyZC1wcmljZSB7XG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgIGdhcDogMCAxLjZyZW07XG4gICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgJl9fZnVsbCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDIuMnJlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIGRhcmspO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgJl9fZGlzY291bnQsXG4gICAgICAgICAgICAgICAgICAgICZfX3NhdmluZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuNnJlbTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9fZmxhZ3Mge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB0b3A6IC0xMHB4O1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAtMTNweDtcbiAgICAgICAgICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICAgICAgICAgIHBsYWNlLXNlbGY6IHN0YXJ0IGVuZDtcbiAgICAgICAgICAgICAgICBnYXA6IDAuM3JlbTtcblxuICAgICAgICAgICAgICAgIFtjbGFzcyo9J19faXRlbSddIHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTBweDtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMC4yMmVtIDAuNjNlbTtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IHZhcigtLWZsYWctZm9udC1zaXplKTtcbiAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcblxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MqPSdfX3RleHQnXSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC12YXJpYXRpb24tc2V0dGluZ3M6ICd3Z2h0JyA0MDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX2FkZCB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDM7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDY7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMDtcblxuICAgICAgICAgICAgICAgICYtbGluayB7XG4gICAgICAgICAgICAgICAgICAgIG1pbi13aWR0aDogMjA1cHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyAqIEFkZCBpbnZlcnRlZCBib3JkZXIgcmFkaXVzIGNvcm5lcnNcbi8vICogbWFzayB2YWx1ZXMgYXJlIGluIHRoZSBvcmRlciB0bCAvIHRyIC8gYnIgLyBibFxuLy8gKiBOb3RlIHRoYXQgYWxsIHVuaXRzIHNob3VsZCBiZSBpbiBweFxuLy8gKiBAcGFyYW0ge2xpc3R9IC0gc3BlY2lmaWMgYm9yZGVyIGNvcm5lcnMgJGNvcm5lcnMgKGFsbHx0bHx0cnxibHxicilcbkBtaXhpbiBpbnZlcnRlZC1ib3JkZXItcmFkaXVzKCRjb3JuZXJzOiAnYWxsJykge1xuICAgIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmV0dGllci9wcmV0dGllclxuICAgICR2YWxpZC1ib3JkZXItcmFkaXVzLXBhcmFtczogWydhbGwnLCAndGwnLCAndHInLCAnYmwnLCAnYnInLCAndCcsICdyJywgJ2InLCAnbCddO1xuICAgICRpbnZlcnRlZC1ib3JkZXItcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzO1xuICAgICRpbnZlcnRlZC1ib3JkZXItdGw6IDBweDtcbiAgICAkaW52ZXJ0ZWQtYm9yZGVyLXRyOiAwcHg7XG4gICAgJGludmVydGVkLWJvcmRlci1icjogMHB4O1xuICAgICRpbnZlcnRlZC1ib3JkZXItYmw6IDBweDtcblxuICAgIC0taW52ZXJ0ZWQtYm9yZGVyLWdyYWRpZW50OiAjMDAwMCA5OCUsICMwMDA7XG4gICAgLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzOiAjeyRpbnZlcnRlZC1ib3JkZXItcmFkaXVzfTtcblxuICAgIEBpZiBub3QgbGlzdC5pbmRleCgkdmFsaWQtYm9yZGVyLXJhZGl1cy1wYXJhbXMsICRjb3JuZXJzKSB7XG4gICAgICAgIEBlcnJvciBcIiN7JGNvcm5lcnN9IGlzIG5vdCBhIHZhbGlkIHNpZGUuIEV4cGVjdGVkIG9uZSBvZiAjeyR2YWxpZC1ib3JkZXItcmFkaXVzLXBhcmFtc30uXCI7XG4gICAgfVxuXG4gICAgQGlmICRjb3JuZXJzID09ICdhbGwnIHtcbiAgICAgICAgJGludmVydGVkLWJvcmRlci10bDogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgICAgICRpbnZlcnRlZC1ib3JkZXItdHI6ICRpbnZlcnRlZC1ib3JkZXItcmFkaXVzO1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLWJyOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICAgICAgJGludmVydGVkLWJvcmRlci1ibDogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgfSBAZWxzZSBpZiAkY29ybmVycyA9PSAndGwnIHtcbiAgICAgICAgJGludmVydGVkLWJvcmRlci10bDogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgfSBAZWxzZSBpZiAkY29ybmVycyA9PSAndHInIHtcbiAgICAgICAgJGludmVydGVkLWJvcmRlci10cjogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgfSBAZWxzZSBpZiAkY29ybmVycyA9PSAnYnInIHtcbiAgICAgICAgJGludmVydGVkLWJvcmRlci1icjogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgfSBAZWxzZSBpZiAkY29ybmVycyA9PSAnYmwnIHtcbiAgICAgICAgJGludmVydGVkLWJvcmRlci1ibDogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgfSBAZWxzZSBpZiAkY29ybmVycyA9PSAndCcge1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLXRsOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICAgICAgJGludmVydGVkLWJvcmRlci10cjogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgfSBAZWxzZSBpZiAkY29ybmVycyA9PSAncicge1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLXRyOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICAgICAgJGludmVydGVkLWJvcmRlci1icjogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgfSBAZWxzZSBpZiAkY29ybmVycyA9PSAnYicge1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLWJyOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICAgICAgJGludmVydGVkLWJvcmRlci1ibDogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgfSBAZWxzZSBpZiAkY29ybmVycyA9PSAnbCcge1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLXRsOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICAgICAgJGludmVydGVkLWJvcmRlci1ibDogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgfVxuXG4gICAgLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLXRsOiAjeyRpbnZlcnRlZC1ib3JkZXItdGx9O1xuICAgIC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy10cjogI3skaW52ZXJ0ZWQtYm9yZGVyLXRyfTtcbiAgICAtLWludmVydGVkLWJvcmRlci1yYWRpdXMtYnI6ICN7JGludmVydGVkLWJvcmRlci1icn07XG4gICAgLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLWJsOiAjeyRpbnZlcnRlZC1ib3JkZXItYmx9O1xuXG4gICAgbWFzazpcbiAgICAgICAgcmFkaWFsLWdyYWRpZW50KHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtdGwpIGF0IDAgMCwgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLWdyYWRpZW50KSkgMCAwLFxuICAgICAgICByYWRpYWwtZ3JhZGllbnQodmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy10cikgYXQgMTAwJSAwLCB2YXIoLS1pbnZlcnRlZC1ib3JkZXItZ3JhZGllbnQpKSAxMDAlIDAsXG4gICAgICAgIHJhZGlhbC1ncmFkaWVudCh2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLWJsKSBhdCAwIDEwMCUsIHZhcigtLWludmVydGVkLWJvcmRlci1ncmFkaWVudCkpIDAgMTAwJSxcbiAgICAgICAgcmFkaWFsLWdyYWRpZW50KHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtYnIpIGF0IDEwMCUgMTAwJSwgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLWdyYWRpZW50KSkgMTAwJSAxMDAlO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgbWFzay1zaXplOiA1MSUgNTElO1xuXG4gICAgLy8gc3R5bGVsaW50LWRpc2FibGUgbm8taW52YWxpZC1wb3NpdGlvbi1kZWNsYXJhdGlvblxuICAgIC8vIERpc2FibGUgZm9yIG9sZGVyIFNhZmFyaSBicm93c2VycyBhcyB0aGUgbGF5b3V0IGJyZWFrcyB0aGVyZSB3aXRoIG1hc2tcbiAgICBAc3VwcG9ydHMgKGJhY2tncm91bmQ6IC13ZWJraXQtbmFtZWQtaW1hZ2UoaSkpIHtcbiAgICAgICAgbWFzazogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBXZSBjYW5ub3QgY2hlY2sgZm9yIEBzdXBwb3J0cyAoY2xpcC1wYXRoOiBzaGFwZSgpKSBiZWNhdXNlLCB3aGlsZSBGaXJlZm94IHN1cHBvcnRzIHRoZSBydWxlLCBpdCBkb2VzIG5vdCB3b3JrIC0geWV0IChodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEwMzI4KVxuICAgIC8vIEJ1dCwgYXMgc2hhcGUoKSBjYW4gYmUgdXNlZCBpbiBhbmltYXRpb24gcGF0aHMsIGFuZCBDaHJvbWUgYW5kIGN1cnJlbnQgU2FmYXJpIHN1cHBvcnQgdGhpcyBpbXBsZW1lbnRhdGlvbi5cbiAgICAvLyBOT1RFOiBXZSBzaG91bGQgc3RpbGwgY2hlY2sgdG8gc2VlIHdoZW4gY2xpcC1wYXRoOiBzaGFwZSgpIGlzIGZ1bGx5IGVuYWJsZWQgaW4gRmlyZWZveCwgYnV0IGluIHRoZSBtZWFudGltZSwgbWFza2luZyB3b3JrcyBuaWNlbHkgdGhlcmVcbiAgICBAc3VwcG9ydHMgKG9mZnNldC1wYXRoOiBzaGFwZShmcm9tIHRvcCBsZWZ0LCBjdXJ2ZSB0byA1MCUgNTAlIHdpdGggMjUlIDEwMCUpKSB7XG4gICAgICAgIG1hc2s6IG5vbmU7XG4gICAgICAgIGNsaXAtcGF0aDogc2hhcGUoXG4gICAgICAgICAgICBmcm9tIDAgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy10bCksXG4gICAgICAgICAgICBhcmMgYnkgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy10bCkgY2FsYyh2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLXRsKSAqIC0xKSBvZiB2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLXRsKSxcbiAgICAgICAgICAgIGxpbmUgdG8gY2FsYygxMDAlIC0gdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy10cikpIDAsXG4gICAgICAgICAgICBhcmMgYnkgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy10cikgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy10cikgb2YgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy10ciksXG4gICAgICAgICAgICBsaW5lIHRvIDEwMCUgY2FsYygxMDAlIC0gdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy1icikpLFxuICAgICAgICAgICAgYXJjIGJ5IGNhbGModmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy1icikgKiAtMSkgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy1icikgb2YgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy1iciksXG4gICAgICAgICAgICBsaW5lIHRvIHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtYmwpIDEwMCUsXG4gICAgICAgICAgICBhcmMgYnkgY2FsYyh2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLWJsKSAqIC0xKSBjYWxjKHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtYmwpICogLTEpIG9mIHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtYmwpLFxuICAgICAgICAgICAgbGluZSB0byAwIHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtdGwpXG4gICAgICAgICk7XG4gICAgfVxuICAgIC8vIHN0eWxlbGludC1lbmFibGUgbm8taW52YWxpZC1wb3NpdGlvbi1kZWNsYXJhdGlvblxufVxuXG4vLyBMYWJlbCBpcyBzaGlmdGVkIHdoZW4gLVxuLy8gaW5wdXQgaXMgZm9jdXNlZFxuLy8gaGFzIHZhbHVlIHByb3AgYnV0IG5vdCBwbGFjZWhvbGRlciBzaG93biAoaGFwcGVuZHMgd2hlbiBwcmVmaWxsZWQgaW5wdXQgaXMgbWFudWFsbHkgY2xlYXJlZClcbi8vIGhhcyBzb21lIHRleHQgcGxhY2Vob2xkZXJcbi8vIGlzIGF1dG9maWxsZWRcbkBtaXhpbiBmb3JtLWlucHV0LWxhYmVsLXNlbGVjdG9ycyB7XG4gICAgJjpoYXMoOndoZXJlKGlucHV0LCBzZWxlY3QsIHRleHRhcmVhKTpub3QoOndoZXJlKDpwbGFjZWhvbGRlci1zaG93bikpOmlzKDp3aGVyZSg6bm90KDpwbGFjZWhvbGRlci1zaG93bikpLCA6d2hlcmUoOm5vdChbcGxhY2Vob2xkZXI9JyddLCBbcGxhY2Vob2xkZXI9JyAnXSkpLCA6bm90KFt2YWx1ZT0nJ10pLCA6LXdlYmtpdC1hdXRvZmlsbCwgOmF1dG9maWxsLCA6Zm9jdXMpKSA6d2hlcmUoLmZvcm0taW5wdXRfX2xhYmVsKSxcbiAgICAmOmhhcyg6d2hlcmUoaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEpOmlzKDp3aGVyZSg6cGxhY2Vob2xkZXItc2hvd246bm90KFtwbGFjZWhvbGRlcj0nJ10sIFtwbGFjZWhvbGRlcj0nICddKSkpKSA6d2hlcmUoLmZvcm0taW5wdXRfX2xhYmVsKSxcbiAgICAmOmhhcyg6d2hlcmUoaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEpOmlzKDpmb2N1cykpIDp3aGVyZSguZm9ybS1pbnB1dF9fbGFiZWwpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG4vKipcbiAqIFJlc2V0IGlTcGFjZSBjdXN0b20gZm9ybSBpbnB1dCBzdHlsZXMgdG8gYmUgYWJsZSB0byBkZXNpZ24gc3BlY2lhbCBpbnB1dHMgbW9yZSBlYXNpbHlcbiAqL1xuQG1peGluIHJlc2V0LWZvcm0taW5wdXQge1xuICAgICY6aGFzKDp3aGVyZShpbnB1dDpub3QoW3R5cGU9J2NoZWNrYm94J10sIFt0eXBlPSdyYWRpbyddKSwgdGV4dGFyZWEsIHNlbGVjdCkpIHtcbiAgICAgICAgei1pbmRleDogYXV0bztcbiAgICAgICAgbWFyZ2luLXRvcDogaW5pdGlhbDtcblxuICAgICAgICA6d2hlcmUoLmZvcm0tZmllbGQtY29udGFpbmVyKSB7XG4gICAgICAgICAgICBwYWRkaW5nOiBpbml0aWFsO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgOndoZXJlKC5mb3JtLWZpZWxkID4gKikge1xuICAgICAgICAgICAgJjpub3QoW2Rpc2FibGVkXSkge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaXRpYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICA6d2hlcmUoLmZvcm0tZmllbGRfX2lucHV0KSB7XG4gICAgICAgICAgICBmb250LXNpemU6IGluaXRpYWw7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhhcyguZXJyb3JzKSB7XG4gICAgICAgICAgICAtLWlucHV0LWJnOiBpbml0aWFsO1xuXG4gICAgICAgICAgICAuZm9ybS1maWVsZC1jb250YWluZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaXRpYWw7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiBpbml0aWFsICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgICAgICAgICAuZm9ybS1maWVsZC1jb250YWluZXIge1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IGluaXRpYWwgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmhhcyhbZGlzYWJsZWRdKSB7XG4gICAgICAgICAgICAuZm9ybS1maWVsZC1jb250YWluZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaXRpYWw7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiBpbml0aWFsICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICA6d2hlcmUoLmZvcm0taW5wdXRfX2xhYmVsKSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICBwYWRkaW5nLWlubGluZTogMDtcbiAgICAgICAgICAgIHBhZGRpbmctYmxvY2s6IDA7XG4gICAgICAgICAgICBmb250LXNpemU6IGluaXRpYWw7XG4gICAgICAgICAgICBjb2xvcjogaW5pdGlhbDtcbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGNsaXA7XG4gICAgICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNsaXA6IGJvcmRlci1ib3g7XG4gICAgICAgICAgICB6LWluZGV4OiBhdXRvO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgICAgICAgICBmb250LXZhcmlhdGlvbi1zZXR0aW5nczogaW5pdGlhbDtcbiAgICAgICAgICAgIG1hcmdpbi1ibG9jay1lbmQ6IGluaXRpYWw7XG5cbiAgICAgICAgICAgICY6OmJlZm9yZSxcbiAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpoYXMoLmZvcm0tZmllbGQtLXNtKSB7XG4gICAgICAgICAgICAuZm9ybS1pbnB1dF9fbGFiZWwge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctYmxvY2s6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgICAgICA6d2hlcmUoLmZvcm0tZmllbGQtY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiBpbml0aWFsO1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDp3aGVyZSguZm9ybS1pbnB1dF9fbGFiZWwpIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogaW5pdGlhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgJjpub3QoOndoZXJlKDpmb2N1cy13aXRoaW4sIFtkaXNhYmxlZF0pKSB7XG4gICAgICAgICAgICAgICAgJjp3aGVyZSg6bm90KDpoYXMoLmVycm9ycykpKSB7XG4gICAgICAgICAgICAgICAgICAgIDp3aGVyZSguZm9ybS1maWVsZC1jb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogaW5pdGlhbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIDp3aGVyZSguZm9ybS1pbnB1dF9fbGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBpbml0aWFsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJjpoYXMoLmVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICA6d2hlcmUoLmZvcm0tZmllbGQtY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IGluaXRpYWw7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICA6d2hlcmUoLmZvcm0taW5wdXRfX2xhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogaW5pdGlhbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGZvcm0taW5wdXQtbGFiZWwtc2VsZWN0b3JzIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogaW5pdGlhbDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG5cbiAgICAgICAgICAgICY6OmJlZm9yZSxcbiAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiBTdHlsZXMgdG8gaGlkZSB0aGUgc2Nyb2xsYmFyIGJ1dCBzdGlsbCBhbGxvdyBzY3JvbGxpbmdcbiAqL1xuQG1peGluIHNjcm9sbC13aXRob3V0LXNjcm9sbGJhciB7XG4gICAgb3ZlcmZsb3c6IHNjcm9sbDtcbiAgICBvdmVyZmxvdzogLW1vei1zY3JvbGxiYXJzLW5vbmU7IC8qIEZpcmVmb3ggKi9cbiAgICAtbXMtb3ZlcmZsb3ctc3R5bGU6IG5vbmU7IC8qIElFIGFuZCBFZGdlICovXG4gICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lOyAvKiBGaXJlZm94ICovXG5cbiAgICAvKiBDaHJvbWUsIFNhZmFyaSBhbmQgT3BlcmEgKi9cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4vLyBBbHRlcm5hdGl2ZSBkaXNjLWxpa2Ugc3R5bGluZyBmb3IgcmFkaW8gYW5kIGNoZWNrYm94IGlucHV0c1xuQG1peGluIGlucHV0LWRpc2Mge1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0OiAwIDEwcHggMCBhdXRvO1xuICAgIG1hcmdpbi1ibG9jazogYXV0bztcbiAgICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICAgIHdpZHRoOiAxNXB4O1xuICAgIGhlaWdodDogMTVweDtcbiAgICBmbGV4OiAwIDAgMTVweDsgLy8gaW4gY2FzZSBpdCdzIHBhcnQgb2YgYSBmbGV4IGxheW91dFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG4gICAgYm9yZGVyOiAycHggc29saWQgcmdiKDAsIDAsIDAsIDAuMSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjFzIGVhc2UtaW4tb3V0O1xufVxuXG4vLyBjYXJkIGJveGVzIGFyZSB0eXBpY2FsbHkgdXNlZCBvbiBwcm9kdWN0IGRldGFpbCBzZXJ2aWNlcywgY2hlY2tvdXQgdHJhbnNwb3J0L3BheW1lbnQgb3B0aW9ucyxcbi8vIEFORCBwcmUtY2hlY2tvdXQgcGFnZVxuQG1peGluIGNhcmQtYm94IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIGxpZ2h0KTtcbiAgICBjb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCAnZ3JheS05MDAnKTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgbWFwLmdldCgkaW5wdXQsIGJvcmRlci1jb2xvcik7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiAxNHB4IDMwcHggMTRweCAyMHB4O1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IC0xcHg7XG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgZWFzZS1pbi1vdXQ7XG4gICAgfVxuXG4gICAgW3R5cGU9J2NoZWNrYm94J10sXG4gICAgW3R5cGU9J3JhZGlvJ10ge1xuICAgICAgICBAaW5jbHVkZSBpbnB1dC1kaXNjO1xuICAgIH1cblxuICAgICY6aGFzKDpjaGVja2VkKSxcbiAgICAmW2NsYXNzKj0nc2VsZWN0ZWQnXSB7XG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cblxuICAgICAgICBbdHlwZT0nY2hlY2tib3gnXTpub3QoLmZpeC1zcGVjaWZpY2l0eSksXG4gICAgICAgIFt0eXBlPSdyYWRpbyddOm5vdCguZml4LXNwZWNpZmljaXR5KSB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6aG92ZXI6bm90KDpoYXMoW2Rpc2FibGVkXSkpLFxuICAgICY6Zm9jdXMtd2l0aGluOm5vdCg6aGFzKFtkaXNhYmxlZF0pKSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBncmF5LTQwMCk7XG5cbiAgICAgICAgW3R5cGU9J2NoZWNrYm94J106bm90KDpjaGVja2VkKSxcbiAgICAgICAgW3R5cGU9J3JhZGlvJ106bm90KDpjaGVja2VkKSB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHJnYigwLCAwLCAwLCAwLjIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJjpoYXMoW2Rpc2FibGVkXSk6bm90KC5maXgtc3BlY2lmaWNpdHkpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBsaWdodCk7XG4gICAgICAgIG9wYWNpdHk6IDAuNztcblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2Fzczpjb2xvcic7XG5AaW1wb3J0ICd0aGVtZS12YXJpYWJsZXMnO1xuQGltcG9ydCAnLi4vLi4vZGVmYXVsdC9zYXNzL2FzZ2FyZC12YXJpYWJsZXMnO1xuQGltcG9ydCAnYXBwL2Fic3RyYWN0cy9hbGwnO1xuXG4ub3ZlcmZsb3ctbWVudSB7XG4gICAgLS1vdmVyZmxvdy1iYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSwgMSk7XG5cbiAgICBtYXgtd2lkdGg6IDEwMCU7XG5cbiAgICAuZ3JleS1iZy0xMDAgJiB7XG4gICAgICAgIC0tb3ZlcmZsb3ctYmFja2dyb3VuZC1jb2xvcjogI3ttYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIGdyYXktMTAwKX07XG4gICAgfVxuXG4gICAgJl9faXRlbXMge1xuICAgICAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbGVuZ3RoLXplcm8tbm8tdW5pdCAqL1xuICAgICAgICAtLXNjcm9sbGJhci1oZWlnaHQ6IDBweDtcbiAgICAgICAgLS1tYXNrLXdpZHRoOiAyMHB4O1xuICAgICAgICAtLW92ZXJmbG93LWJhY2tncm91bmQtY29sb3I6IHZhcigtLW92ZXJmbG93LWJhY2tncm91bmQtY29sb3IpO1xuICAgICAgICAtLW1hc2staW1hZ2UtY29udGVudDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB0cmFuc3BhcmVudCA1cHgsICMwMDAgdmFyKC0tbWFzay13aWR0aCksICMwMDAgY2FsYygxMDAlIC0gdmFyKC0tbWFzay13aWR0aCkpLCB0cmFuc3BhcmVudCBjYWxjKDEwMCUgLSA1cHgpKTtcbiAgICAgICAgLS1tYXNrLXNpemUtY29udGVudDogMTAwJSBjYWxjKDEwMCUgLSB2YXIoLS1zY3JvbGxiYXItaGVpZ2h0KSk7XG4gICAgICAgIC0tbWFzay1pbWFnZS1zY3JvbGxiYXI6IGxpbmVhci1ncmFkaWVudCgjMDAwLCAjMDAwKTtcbiAgICAgICAgLS1tYXNrLXNpemUtc2Nyb2xsYmFyOiAxMDAlIHZhcigtLXNjcm9sbGJhci1oZWlnaHQpO1xuXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogMC44cmVtO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgICAgZm9udC12YXJpYXRpb24tc2V0dGluZ3M6ICd3Z2h0JyA2MDA7XG4gICAgICAgIHNjcm9sbGJhci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIHNjcm9sbGJhci13aWR0aDogbm9uZTtcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICAgIG1hc2staW1hZ2U6IHZhcigtLW1hc2staW1hZ2UtY29udGVudCksIHZhcigtLW1hc2staW1hZ2Utc2Nyb2xsYmFyKTtcbiAgICAgICAgbWFzay1zaXplOiB2YXIoLS1tYXNrLXNpemUtY29udGVudCksIHZhcigtLW1hc2stc2l6ZS1zY3JvbGxiYXIpO1xuICAgICAgICBtYXNrLXBvc2l0aW9uOlxuICAgICAgICAgICAgMCAwLFxuICAgICAgICAgICAgMTAwJSAwO1xuICAgICAgICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0LCBuby1yZXBlYXQ7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW92ZXJmbG93LWJhY2tncm91bmQtY29sb3IpO1xuICAgICAgICBtYXJnaW4taW5saW5lOiBjYWxjKHZhcigtLWJzLWd1dHRlci14KSAqIC0wLjUpO1xuICAgICAgICBwYWRkaW5nLWlubGluZTogY2FsYyh2YXIoLS1icy1ndXR0ZXIteCkgKiAwLjUpO1xuXG4gICAgICAgIC8vIGhpZGUgdGhlIHNjcm9sbGJhciBmb3Igd2Via2l0L2JsaW5rIGJyb3dzZXJzXG4gICAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgICAgIGhlaWdodDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IG5vbmU7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCdsZycpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS40cmVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9faXRlbSB7XG4gICAgICAgICYtZWxlbWVudCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXM7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvci5hZGp1c3QobWFwLmdldCgkdGhlbWUtY29sb3JzLCBwcmltYXJ5LW1pZCksICRhbHBoYTogLTEpO1xuICAgICAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgICAgICBmb250LXZhcmlhdGlvbi1zZXR0aW5nczogaW5oZXJpdDtcbiAgICAgICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciBlYXNlLW91dCAwLjE1cyxcbiAgICAgICAgICAgICAgICBjb2xvciBlYXNlLW91dCAwLjE1cztcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXG4gICAgICAgICAgICAmOmhvdmVyLFxuICAgICAgICAgICAgJjpmb2N1cyxcbiAgICAgICAgICAgICY6YWN0aXZlLFxuICAgICAgICAgICAgJi0tYWN0aXZlLFxuICAgICAgICAgICAgJi5pcy1hY3RpdmUge1xuICAgICAgICAgICAgICAgIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiAnd2dodCcgNjAwO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGNvbG9yLm1peChtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIHByaW1hcnkpLCAkd2hpdGUsIDEwJSk7XG4gICAgICAgICAgICAgICAgY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiBjb2xvci5taXgobWFwLmdldCgkdGhlbWUtY29sb3JzLCBwcmltYXJ5LWRhcmspLCAkd2hpdGUsIDI1JSk7XG5cbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCdsZycpIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogY29sb3IubWl4KG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgcHJpbWFyeSksICR3aGl0ZSwgMTYlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYtLWFjdGl2ZSxcbiAgICAgICAgICAgICYuaXMtYWN0aXZlIHtcbiAgICAgICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJ2xnJykge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEuMXJlbSAycmVtO1xuICAgICAgICAgICAgICAgIGJvcmRlci13aWR0aDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8vIEJyZWFrcG9pbnQgdmlld3BvcnQgc2l6ZXMgYW5kIG1lZGlhIHF1ZXJpZXMuXG4vL1xuLy8gQnJlYWtwb2ludHMgYXJlIGRlZmluZWQgYXMgYSBtYXAgb2YgKG5hbWU6IG1pbmltdW0gd2lkdGgpLCBvcmRlciBmcm9tIHNtYWxsIHRvIGxhcmdlOlxuLy9cbi8vICAgICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpXG4vL1xuLy8gVGhlIG1hcCBkZWZpbmVkIGluIHRoZSBgJGdyaWQtYnJlYWtwb2ludHNgIGdsb2JhbCB2YXJpYWJsZSBpcyB1c2VkIGFzIHRoZSBgJGJyZWFrcG9pbnRzYCBhcmd1bWVudCBieSBkZWZhdWx0LlxuXG4vLyBOYW1lIG9mIHRoZSBuZXh0IGJyZWFrcG9pbnQsIG9yIG51bGwgZm9yIHRoZSBsYXN0IGJyZWFrcG9pbnQuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtKVxuLy8gICAgbWRcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICBtZFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAkYnJlYWtwb2ludC1uYW1lczogKHhzIHNtIG1kIGxnIHhsIHh4bCkpXG4vLyAgICBtZFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cywgJGJyZWFrcG9pbnQtbmFtZXM6IG1hcC1rZXlzKCRicmVha3BvaW50cykpIHtcbiAgJG46IGluZGV4KCRicmVha3BvaW50LW5hbWVzLCAkbmFtZSk7XG4gIEBpZiBub3QgJG4ge1xuICAgIEBlcnJvciBcImJyZWFrcG9pbnQgYCN7JG5hbWV9YCBub3QgZm91bmQgaW4gYCN7JGJyZWFrcG9pbnRzfWBcIjtcbiAgfVxuICBAcmV0dXJuIGlmKCRuIDwgbGVuZ3RoKCRicmVha3BvaW50LW5hbWVzKSwgbnRoKCRicmVha3BvaW50LW5hbWVzLCAkbiArIDEpLCBudWxsKTtcbn1cblxuLy8gTWluaW11bSBicmVha3BvaW50IHdpZHRoLiBOdWxsIGZvciB0aGUgc21hbGxlc3QgKGZpcnN0KSBicmVha3BvaW50LlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWluKHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIDU3NnB4XG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbWluICE9IDAsICRtaW4sIG51bGwpO1xufVxuXG4vLyBNYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguXG4vLyBUaGUgbWF4aW11bSB2YWx1ZSBpcyByZWR1Y2VkIGJ5IDAuMDJweCB0byB3b3JrIGFyb3VuZCB0aGUgbGltaXRhdGlvbnMgb2Zcbi8vIGBtaW4tYCBhbmQgYG1heC1gIHByZWZpeGVzIGFuZCB2aWV3cG9ydHMgd2l0aCBmcmFjdGlvbmFsIHdpZHRocy5cbi8vIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvbWVkaWFxdWVyaWVzLTQvI21xLW1pbi1tYXhcbi8vIFVzZXMgMC4wMnB4IHJhdGhlciB0aGFuIDAuMDFweCB0byB3b3JrIGFyb3VuZCBhIGN1cnJlbnQgcm91bmRpbmcgYnVnIGluIFNhZmFyaS5cbi8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MjYxXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1tYXgobWQsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgNzY3Ljk4cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWF4OiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRtYXggYW5kICRtYXggPiAwLCAkbWF4IC0gLjAyLCBudWxsKTtcbn1cblxuLy8gUmV0dXJucyBhIGJsYW5rIHN0cmluZyBpZiBzbWFsbGVzdCBicmVha3BvaW50LCBvdGhlcndpc2UgcmV0dXJucyB0aGUgbmFtZSB3aXRoIGEgZGFzaCBpbiBmcm9udC5cbi8vIFVzZWZ1bCBmb3IgbWFraW5nIHJlc3BvbnNpdmUgdXRpbGl0aWVzLlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoeHMsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgXCJcIiAgKFJldHVybnMgYSBibGFuayBzdHJpbmcpXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIFwiLXNtXCJcbkBmdW5jdGlvbiBicmVha3BvaW50LWluZml4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEByZXR1cm4gaWYoYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cykgPT0gbnVsbCwgXCJcIiwgXCItI3skbmFtZX1cIik7XG59XG5cbi8vIE1lZGlhIG9mIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludC5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgd2lkZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtaW4ge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIE1lZGlhIG9mIGF0IG1vc3QgdGhlIG1heGltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBsYXJnZXN0IGJyZWFrcG9pbnQuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIG5hcnJvd2VyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtYXgge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIE1lZGlhIHRoYXQgc3BhbnMgbXVsdGlwbGUgYnJlYWtwb2ludCB3aWR0aHMuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgYmV0d2VlbiB0aGUgbWluIGFuZCBtYXggYnJlYWtwb2ludHNcbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWJldHdlZW4oJGxvd2VyLCAkdXBwZXIsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJGxvd2VyLCAkYnJlYWtwb2ludHMpO1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkdXBwZXIsICRicmVha3BvaW50cyk7XG5cbiAgQGlmICRtaW4gIT0gbnVsbCBhbmQgJG1heCAhPSBudWxsIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWF4ID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGxvd2VyLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkdXBwZXIsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vIE1lZGlhIGJldHdlZW4gdGhlIGJyZWFrcG9pbnQncyBtaW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRocy5cbi8vIE5vIG1pbmltdW0gZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LCBhbmQgbm8gbWF4aW11bSBmb3IgdGhlIGxhcmdlc3Qgb25lLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IG9ubHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQsIG5vdCB2aWV3cG9ydHMgYW55IHdpZGVyIG9yIG5hcnJvd2VyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtb25seSgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiAgYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gICRuZXh0OiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50cyk7XG4gICRtYXg6ICBicmVha3BvaW50LW1heCgkbmV4dCwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJG5leHQsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBzY3NzL2RvbGxhci12YXJpYWJsZS1lbXB0eS1saW5lLWJlZm9yZVxuLy8gc3R5bGVsaW50LWRpc2FibGUgc2Nzcy9kb3VibGUtc2xhc2gtY29tbWVudC1lbXB0eS1saW5lLWJlZm9yZVxuQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vLi4vZGVmYXVsdC9zYXNzL2FzZ2FyZC12YXJpYWJsZXMnIGFzIGFzZ2FyZC12YXJpYWJsZXM7XG5cbi8vIGJvb3RzdHJhcCB2YXJpYWJsZXNcbi8vIGxheW91dFxuJGdyaWQtYnJlYWtwb2ludHM6IG1hcC5tZXJnZShcbiAgICBhc2dhcmQtdmFyaWFibGVzLiRncmlkLWJyZWFrcG9pbnRzLFxuICAgIChcbiAgICAgICAgZGVza3RvcDogMTY1MHB4LFxuICAgICAgICBmdWxsaGQ6IDE5MjBweCxcbiAgICAgICAgMms6IDI1MDBweFxuICAgIClcbik7XG5cbiRjb250YWluZXItbWF4LXdpZHRoczogbWFwLm1lcmdlKFxuICAgIGFzZ2FyZC12YXJpYWJsZXMuJGNvbnRhaW5lci1tYXgtd2lkdGhzLFxuICAgIChcbiAgICAgICAgbGc6IDEwMjRweCxcbiAgICAgICAgeGw6IDExNDBweCxcbiAgICAgICAgeHhsOiAxNjg1cHhcbiAgICApXG4pO1xuXG4vLyBzcGFjaW5nXG4kY29udGFpbmVyLXBhZGRpbmcteDogM3JlbTtcbiRjYW52YXMtcGFkZGluZy15OiA0cmVtO1xuJGNhbnZhcy1wYWRkaW5nLXktbWQ6IDZyZW07XG4kY2FudmFzLXBhZGRpbmcteS14eGw6IDdyZW07XG5cbi8vIGZvbnRcbiRmb250LXNpemUtcm9vdDogNjIuNSU7XG4kZm9udC1zaXplLWJhc2U6IDEuNHJlbTtcbiRsaW5lLWhlaWdodC1iYXNlOiAxLjY7XG4kZm9udC1mYW1pbHktYmFzZTogJ0ludGVyJywgJ0ludGVyLWZhbGxiYWNrJywgJ0FyaWFsJywgc2Fucy1zZXJpZjtcbiRmb250LXNpemUtc206IDEuMnJlbTtcbiRmb250LXNpemUtbGc6ICRmb250LXNpemUtYmFzZSAqIDEuMjU7XG4kZm9udC1zaXplLWxhcmdlcjogJGZvbnQtc2l6ZS1iYXNlICogMS41OyAvLyAkaDQtZm9udC1zaXplO1xuJGZvbnQtc2l6ZS1sYXJnZXN0OiAkZm9udC1zaXplLWJhc2UgKiAyOyAvLyAkaDItZm9udC1zaXplO1xuXG4kbGVnZW5kLWZvbnQtc2l6ZTogMnJlbTtcbiRsZWdlbmQtbWFyZ2luLWJvdHRvbTogMnJlbTtcbiRsZWdlbmQtZm9udC13ZWlnaHQ6IDcwMDtcblxuLy8gdHlwb1xuJGhlYWRpbmdzLW1hcmdpbi1ib3R0b206IDFlbTtcbiRoZWFkaW5ncy1mb250LXdlaWdodDogNzAwO1xuXG4vLyBjb2xvcnNcbiRwcmltYXJ5OiAjMDAwO1xuJHByaW1hcnktZGFyazogIzAwMDtcbiRwcmltYXJ5LW1pZDogI2Y0ZjRmNDtcbiRwcmltYXJ5LWxpZ2h0OiAjZjRmNGY0O1xuJHNlY29uZGFyeTogI2ZmNDMzNztcbiRsaWdodDogI2ZmZjtcbiRkYXJrOiAjMDAwO1xuXG4kZ3JlZW46ICMwNTg4MDI7XG4kZ3JlZW4tZGFyazogIzE4ODAzODtcbiRncmVlbi1zcDogcmdiKDMsIDE4MSwgMCk7XG4kZ3JlZW4tZGFyay1zZW1pLXRyYW5zcDogcmdiKDI0LCAxMjgsIDU2LCAwLjEpO1xuXG4kdGhlbWUtY29sb3JzOiBtYXAubWVyZ2UoXG4gICAgYXNnYXJkLXZhcmlhYmxlcy4kdGhlbWUtY29sb3JzLFxuICAgIChcbiAgICAgICAgcHJpbWFyeTogJHByaW1hcnksXG4gICAgICAgIHByaW1hcnktZGFyazogJHByaW1hcnktZGFyayxcbiAgICAgICAgcHJpbWFyeS1taWQ6ICRwcmltYXJ5LW1pZCxcbiAgICAgICAgcHJpbWFyeS1saWdodDogJHByaW1hcnktbGlnaHQsXG4gICAgICAgIHNlY29uZGFyeTogJHNlY29uZGFyeSxcbiAgICAgICAgbGlnaHQ6ICRsaWdodCxcbiAgICAgICAgZGFyazogJGRhcmssXG4gICAgICAgIGRhcmstc2VtaS10cmFuc3A6IHJnYigwLCAwLCAwLCAwLjEpLFxuICAgICAgICBiYXNlLWJnOiAkbGlnaHQsXG4gICAgICAgIGJhc2UtdGV4dDogJGRhcmssXG4gICAgICAgIGxpbms6ICRwcmltYXJ5LFxuICAgICAgICBzdWNjZXNzOiAjOGVkNjA5LFxuICAgICAgICBzdWNjZXNzLWJnOiAjZThmMWQ5LFxuICAgICAgICBzdWNjZXNzLXRleHQ6ICRkYXJrLFxuICAgICAgICBpbmZvOiAjOWNiNWUxLFxuICAgICAgICBpbmZvLWJnOiAjZGRlZGYzLFxuICAgICAgICBpbmZvLXRleHQ6ICRkYXJrLFxuICAgICAgICB3YXJuaW5nOiAjMjM5YmM4LFxuICAgICAgICB3YXJuaW5nLWJnOiAjOWNiNWUxLFxuICAgICAgICB3YXJuaW5nLXRleHQ6ICRkYXJrLFxuICAgICAgICBkYW5nZXI6ICNlMjY5NjksXG4gICAgICAgIGRhbmdlci1iZzogI2Y2ZGZkZixcbiAgICAgICAgZGFuZ2VyLXRleHQ6ICRkYXJrLFxuICAgICAgICBzdGFyLXJhdGluZy1iZzogI2ZiMCxcbiAgICAgICAgaW4tc3RvY2s6ICRncmVlbixcbiAgICAgICAgb3V0LW9mLXN0b2NrOiAjZTI2OTY5LFxuICAgICAgICBwcmVvcmRlcjogI2VhYjAwMCxcbiAgICAgICAgLy8gMTAlIG9mIGluLXN0b2NrIGNvbG91clxuICAgICAgICBpbi1zdG9jay1iZzogcmdiKDUsIDEzNiwgMiwgMC4xKSxcbiAgICAgICAgZ3JheS0xMDA6ICNmM2YzZjMsXG4gICAgICAgIGdyYXktMTUwOiAjZTRlNGU0LFxuICAgICAgICBncmF5LTIwMDogI2RlZGVkZSxcbiAgICAgICAgZ3JheS0zMDA6ICNkMGQwZDAsXG4gICAgICAgIGdyYXktNDAwOiAjYjFiMWIxLFxuICAgICAgICBncmF5LTYwMDogIzc0NzQ3NCxcbiAgICAgICAgZ3JheS03MDA6ICM0ZDRkNGQsXG4gICAgICAgIGdyYXktODAwOiAjMzgzODM4LFxuICAgICAgICBncmF5LTkwMDogIzI2MjYyNixcbiAgICAgICAgZ3JheS1zZW1pLXRyYW5zcDogcmdiKDIwLCA5MiwgMTI4LCAwLjEpLFxuICAgICAgICBzYXZpbmctY29sb3I6IHJnYigyNCwgMTI4LCA1NiwgMSksXG4gICAgICAgIHNhdmluZy1jb2xvci1iZzogJGdyZWVuLWRhcmstc2VtaS10cmFuc3AsXG4gICAgICAgIHZvdWNoZXItYmc6ICNkOGVkZjcsXG4gICAgICAgIHNhdmluZ3MtcHJpbWFyeTogI2UxMTkzMSxcbiAgICAgICAgc2F2aW5ncy1zZWNvbmRhcnk6ICNmZWU5NTYsXG4gICAgICAgIHVzZWQtb2ZmZXJzLXByaW1hcnk6ICNlYWIwMDAsXG4gICAgICAgIHVzZWQtb2ZmZXJzLXNlY29uZGFyeTogI2ZlZmJmMlxuICAgIClcbik7XG4vLyBib290c3RyYXAgdmFyaWFibGVzIGVuZFxuXG4kbGFiZWwtZ2lmdC1jb2xvcjogIzAwYWVhMztcbiRsYWJlbC11c2VkLXByb2R1Y3QtY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgdXNlZC1vZmZlcnMtcHJpbWFyeSk7XG4kbGFiZWwtZ2lmdC1iZy1jb2xvcjogI2U2ZmJmMztcblxuLy8gc2hvcGlvIHZhcmlhYmxlc1xuJGZvbnQtcGF0aDogJy9hc3NldHMvaXNwYWNlLmN6L2ZvbnQnO1xuXG4kaDEtZm9udC1zaXplOiBjbGFtcCgzcmVtLCA2dncsIDRyZW0pOyAvLyAkZm9udC1zaXplLWJhc2UgKiAyLjU7XG4kaDItZm9udC1zaXplOiAzLjZyZW07IC8vIEN1c3RvbSBmb250IHNpemUgYnkgZGVzaWduXG4kaDMtZm9udC1zaXplOiAycmVtOyAvLyAkZm9udC1zaXplLWJhc2UgKiAxLjc1O1xuJGg0LWZvbnQtc2l6ZTogMS44cmVtO1xuJGg1LWZvbnQtc2l6ZTogMS42cmVtO1xuJGg2LWZvbnQtc2l6ZTogMS42cmVtO1xuXG4kZGVmYXVsdC1ib3JkZXItcmFkaXVzOiA4cHg7XG5cbiRidG46IG1hcC5tZXJnZShcbiAgICBhc2dhcmQtdmFyaWFibGVzLiRidG4sXG4gICAgKFxuICAgICAgICBiZy1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCAncHJpbWFyeScpLFxuICAgICAgICBjb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCAnbGlnaHQnKSxcbiAgICAgICAgaG92ZXItYmctY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgJ3NlY29uZGFyeScpLFxuICAgICAgICBob3Zlci1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCAnbGlnaHQnKSxcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1c1xuICAgIClcbik7XG5cbiRidG4tYWx0OiAoXG4gICAgYmctY29sb3I6ICRncmVlbi1kYXJrLFxuICAgIGNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsICdsaWdodCcpLFxuICAgIGhvdmVyLWJnLWNvbG9yOiAkZ3JlZW4tc3AsXG4gICAgaG92ZXItY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgJ2xpZ2h0JyksXG4gICAgYm9yZGVyLXJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1c1xuKTtcblxuJGJ0bi1kaXNhYmxlZDogbWFwLm1lcmdlKFxuICAgIGFzZ2FyZC12YXJpYWJsZXMuJGJ0bi1kaXNhYmxlZCxcbiAgICAoXG4gICAgICAgIGJnLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIGdyYXktMjAwKSxcbiAgICAgICAgY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgJ2Jhc2UtdGV4dCcpLFxuICAgICAgICBob3Zlci1iZy1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBncmF5LTIwMCksXG4gICAgICAgIGhvdmVyLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsICdiYXNlLXRleHQnKVxuICAgIClcbik7XG5cbiRidG4tZGFyazogKFxuICAgIGJnLWNvbG9yOiAkZGFyayxcbiAgICBjb2xvcjogI2ZmZixcbiAgICBob3Zlci1iZy1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBncmF5LTkwMCksXG4gICAgaG92ZXItY29sb3I6ICNmZmZcbik7XG5cbiRpbnB1dDogbWFwLm1lcmdlKFxuICAgIGFzZ2FyZC12YXJpYWJsZXMuJGlucHV0LFxuICAgIChcbiAgICAgICAgYmctY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgJ2xpZ2h0JyksXG4gICAgICAgIGJvcmRlci1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCAnZ3JheS0yMDAnKSxcbiAgICAgICAgY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgJ2RhcmsnKSxcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMFxuICAgIClcbik7XG5cbiRjaGVja2JveC1jaGVjazogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsXFxcbiAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcXFxuICAgIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXFxcbiAgICBmaWxsPVwibm9uZVwiXFxcbiAgICBzdHJva2U9XCIje3JnYmEoJGxpZ2h0LCAxKX1cIlxcXG4gICAgc3Ryb2tlLXdpZHRoPVwiM1wiPlxcXG4gICAgPHBvbHlsaW5lIHBvaW50cz1cIjIwIDYgOSAxNyA0IDEyXCI+PC9wb2x5bGluZT5cXFxuICAgIDwvc3ZnPicpO1xuXG4kcGFzc3dvcmQtc2hvdzogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsXFxcbiAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDU3NiA1MTJcIj5cXFxuICAgIDxwYXRoIGQ9XCJNMjg4IDgwYy02NS4yIDAtMTE4LjggMjkuNi0xNTkuOSA2Ny43Qzg5LjYgMTgzLjUgNjMgMjI2IDQ5LjQgMjU2IDYzIDI4NiA4OS42IDMyOC41IDEyOCAzNjQuM2M0MS4yIDM4LjEgOTQuOCA2Ny43IDE2MCA2Ny43czExOC44LTI5LjYgMTU5LjktNjcuN0M0ODYuNCAzMjguNSA1MTMgMjg2IDUyNi42IDI1NmMtMTMuNi0zMC00MC4yLTcyLjUtNzguNi0xMDguM0M0MDYuOCAxMDkuNiAzNTMuMiA4MCAyODggODB6TTk1LjQgMTEyLjZDMTQyLjUgNjguOCAyMDcuMiAzMiAyODggMzJzMTQ1LjUgMzYuOCAxOTIuNiA4MC42YzQ2LjggNDMuNSA3OC4xIDk1LjQgOTMgMTMxLjEgMy4zIDcuOSAzLjMgMTYuNyAwIDI0LjYtMTQuOSAzNS43LTQ2LjIgODcuNy05MyAxMzEuMUM0MzMuNSA0NDMuMiAzNjguOCA0ODAgMjg4IDQ4MHMtMTQ1LjUtMzYuOC0xOTIuNi04MC42QzQ4LjYgMzU2IDE3LjMgMzA0IDIuNSAyNjguM2MtMy4zLTcuOS0zLjMtMTYuNyAwLTI0LjZDMTcuMyAyMDggNDguNiAxNTYgOTUuNCAxMTIuNnpNMjg4IDMzNmM0NC4yIDAgODAtMzUuOCA4MC04MHMtMzUuOC04MC04MC04MGgtMmMxLjMgNS4xIDIgMTAuNSAyIDE2IDAgMzUuMy0yOC43IDY0LTY0IDY0LTUuNSAwLTEwLjktLjctMTYtMnYyYzAgNDQuMiAzNS44IDgwIDgwIDgwem0wLTIwOGExMjggMTI4IDAgMSAxIDAgMjU2IDEyOCAxMjggMCAxIDEgMC0yNTZ6XCIvPlxcXG4gICAgPC9zdmc+Jyk7XG5cbiRhbmdsZS1yaWdodDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsXFxcbiAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMzIwIDUxMlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cXFxuICAgIDxwYXRoIGZpbGw9XCIje3JnYmEobWFwLmdldCgkdGhlbWUtY29sb3JzLCBwcmltYXJ5KSwgMC45OTkpfVwiXFxcbiAgICBkPVwiTTI3OC42IDIzMy40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zbC0xNjAgMTYwYy0xMi41IDEyLjUtMzIuOCAxMi41LTQ1LjMgMHMtMTIuNS0zMi44IDAtNDUuM0wyMTAuNyAyNTYgNzMuNCAxMTguNmMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMGwxNjAgMTYwelwiLz5cXFxuICAgIDwvc3ZnPicpO1xuXG4kZGlhZ29uYWwtbGluZTogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsXFxcbiAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMTAwIDEwMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiPlxcXG4gICAgPGxpbmUgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZT1cIiN7cmdiYShtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIGdyYXktNDAwKSwgMC45OTkpfVwiXFxcbiAgICB4MT1cIjBcIiB5MT1cIjBcIiB4Mj1cIjEwMFwiIHkyPVwiMTAwXCIgdmVjdG9yLWVmZmVjdD1cIm5vbi1zY2FsaW5nLXN0cm9rZVwiLz5cXFxuICAgIDwvc3ZnPicpO1xuXG4kYnJlYWRjcnVtYnM6IG1hcC5tZXJnZShcbiAgICBhc2dhcmQtdmFyaWFibGVzLiRicmVhZGNydW1icyxcbiAgICAoXG4gICAgICAgIGJnLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsICdncmF5LTEwMCcpLFxuICAgICAgICBjb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCAnZGFyaycpLFxuICAgICAgICBhY3RpdmUtY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgJ2dyYXktNjAwJylcbiAgICApXG4pO1xuXG4vLyBoZWFkZXJcbiRoZWFkZXItbmF2LWhlaWdodDogNS41cmVtOyAvLyBoZWlnaHQgb24gc21hbGwgc2NyZWVuc1xuJGhlYWRlci1uYXYtZGVza3RvcC1oZWlnaHQ6IDE0LjVyZW07IC8vIGhlaWdodCBvbiBiaWdnZXIgc2NyZWVuc1xuJGhlYWRlci10b3AtbmF2LWRlc2t0b3AtaGVpZ2h0OiAxNC41cmVtOyAvLyBoZWlnaHQgb24gYmlnZ2VyIHNjcmVlbnNcbiRoZWFkZXItbmF2LWJyZWFrcG9pbnQ6ICd4bCc7IC8vIGJyZWFrcG9pbnQgd2hlbiBuYXYgY2hhbmdlcyBmcm9tIG1vYmlsZSB0byBkZXNrdG9wXG4kaGVhZGVyLXNlYXJjaC1kZXNrdG9wLWhlaWdodDogNXJlbTtcbiRoZWFkZXItc2VhcmNoLWRlc2t0b3Atd2lkdGg6IDEwMCU7XG5cbiRzY3JvbGxiYXItY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgJ3ByaW1hcnknKTtcblxuLy8gbWVudVxuJG1lbnUtaXRlbS1kZXNrdG9wLXBhZGRpbmc6IDFyZW07XG4kbWVudS1zZWNvbmRhcnktbGlua3MtYmc6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgJ3ByaW1hcnktZGFyaycpO1xuJG1lbnUtc3VibWVudS1zaW5nbGUtY29sdW1uLW1pbjogOTtcblxuLy8gZm9vdGVyXG4kZm9vdGVyLWJsb2NrLWNvbGxhcHNlZC1oZWlnaHQ6IDYuNXJlbTtcblxuLy8gdm91Y2hlciBQREZcbi8vIE5PVEU6IGlmIHRoZSBmb250cyB1c2VkIGhlcmUgYXJlIG5vbi1zdGFuZGFyZCwgdGhlbiB0aGV5IG5lZWQgdG8gYmUgdXBsb2FkZWQgYW5kIHNwZWNpZmllZCBzZXBhcmF0ZWx5IGluIHRoZVxuLy8gbVBERiBpbml0aWFsaXphdGlvbiAoc2VlIHVzYWdlIGluIFNEIG9yIHNwZWFrIHdpdGggREIgOikpXG4kdm91Y2hlcjogbWFwLm1lcmdlKFxuICAgIGFzZ2FyZC12YXJpYWJsZXMuJHZvdWNoZXIsXG4gICAgKFxuICAgICAgICBwcmltYXJ5LWJhY2tncm91bmQtY29sb3I6ICNmZmYsXG4gICAgICAgIHByaW1hcnktY29sb3I6ICM0NDQsXG4gICAgICAgIHNlY29uZGFyeS1iYWNrZ3JvdW5kLWNvbG9yOiAjZGRkLFxuICAgICAgICBzZWNvbmRhcnktY29sb3I6ICM0NDQsXG4gICAgICAgIGJsb2NrLWhpZ2hsaWdodC1iYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwLFxuICAgICAgICBibG9jay1oaWdobGlnaHQtY29sb3I6ICM0NDQsXG4gICAgICAgIGJhc2UtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UsXG4gICAgICAgIGJhc2UtbGluZS1oZWlnaHQ6IDEuNSxcbiAgICAgICAgaGVhZGluZy1mb250OiAkZm9udC1mYW1pbHktYmFzZSxcbiAgICAgICAgYm9keS1mb250OiAkZm9udC1mYW1pbHktYmFzZSxcbiAgICAgICAgbG9nby1tYXgtaGVpZ2h0OiAxMG1tXG4gICAgKVxuKTtcblxuLy8gRnVsbC13aWR0aCBzbGlkZXIgaW1hZ2UgZGltZW5zaW9ucyAoYXBwbGllcyB0byBkZXNrdG9wIG9ubHkpXG4vLyBpbWFnZS13aWR0aDogaW1hZ2Ugc2l6ZVxuLy8gaW1hZ2UtY29udGVudC1hcmVhLXdpZHRoOiB3aGVyZSB3ZSBjYW4gc2FmZWx5IGNyb3AgKGZyb20gdGhlIGZ1bGwgc2l6ZSBpbWFnZSlcbiRzbGlkZXItZGVza3RvcDogbWFwLm1lcmdlKFxuICAgIGFzZ2FyZC12YXJpYWJsZXMuJHNsaWRlci1kZXNrdG9wLFxuICAgIChcbiAgICAgICAgaW1hZ2Utd2lkdGg6IDE5MDBweCxcbiAgICAgICAgaW1hZ2UtY29udGVudC1hcmVhLXdpZHRoOiAxMjAwcHhcbiAgICApXG4pO1xuLy8gc2hvcGlvIHZhcmlhYmxlcyBlbmRcblxuLy8gQ1NTIHZhcmlhYmxlc1xuLy8gbW92ZSB0byBhcHAuc2Nzc1xuIiwiQHVzZSAnc2FzczptYXAnO1xuQGltcG9ydCAndGhlbWUtdmFyaWFibGVzJztcbkBpbXBvcnQgJy4uLy4uL2RlZmF1bHQvc2Fzcy9hc2dhcmQtdmFyaWFibGVzJztcbkBpbXBvcnQgJ2FwcC9hYnN0cmFjdHMvYWxsJztcblxuLnRpbWUtbGltaXRlZC1vZmZlcnMge1xuICAgICZfX3RpdGxlIHtcbiAgICAgICAgbWFyZ2luLWJsb2NrLWVuZDogMXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICBmb250LXZhcmlhdGlvbi1zZXR0aW5nczogJ3dnaHQnIDYwMDtcbiAgICB9XG5cbiAgICAmX19vZmZlciB7XG4gICAgICAgICYtZGV0YWlscyB7XG4gICAgICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIHNlY29uZGFyeSk7XG4gICAgICAgICAgICBjb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBsaWdodCk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzICRkZWZhdWx0LWJvcmRlci1yYWRpdXMgMCAwO1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICAgICAgICAgKiB7XG4gICAgICAgICAgICAgICAgd29yZC1icmVhazogbm9ybWFsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA+ICoge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctaW5saW5lOiAycmVtO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgICAgICAgICAgICAgJjp3aGVyZSg6Zmlyc3QtY2hpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1ibG9jazogMnJlbSAxcmVtO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICY6d2hlcmUoOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1ibG9jazogMXJlbSAycmVtO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItYmxvY2stc3RhcnQ6IDJweCBkYXNoZWQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJjp3aGVyZSg6Zmlyc3QtY2hpbGQ6bGFzdC1jaGlsZCkge1xuICAgICAgICAgICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctYmxvY2s6IDJyZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAqOndoZXJlKDpub3QoLnRpbWUtbGltaXRlZC1vZmZlcnNfX29mZmVyLXRpbWUtcmVtYWluaW5nLWhlYWRpbmcpKSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgnbGcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMzRweDtcbiAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICAgICAgZm9udC12YXJpYXRpb24tc2V0dGluZ3M6ICd3Z2h0JyA5MDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi10aW1lLXJlbWFpbmluZyB7XG4gICAgICAgICAgICAmLWhlYWRpbmcge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgICAgIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiAnd2dodCcgNTAwO1xuICAgICAgICAgICAgICAgIGZvbnQtdmFyaWFudDogdGFidWxhci1udW1zO1xuXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgnbGcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjhweDtcbiAgICAgICAgICAgICAgICAgICAgZm9udC12YXJpYXRpb24tc2V0dGluZ3M6ICd3Z2h0JyA3MDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLXZhbHVlIHtcbiAgICAgICAgICAgICAgICBmb250LXZhcmlhbnQ6IHRhYnVsYXItbnVtcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLXhsLXdpZGUge1xuICAgICAgICAudGltZS1saW1pdGVkLW9mZmVycyB7XG4gICAgICAgICAgICAmX19vZmZlciB7XG4gICAgICAgICAgICAgICAgJi1kZXRhaWxzIHtcbiAgICAgICAgICAgICAgICAgICAgKjp3aGVyZSg6bm90KC50aW1lLWxpbWl0ZWQtb2ZmZXJzX19vZmZlci10aW1lLXJlbWFpbmluZy1oZWFkaW5nKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMzRweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXZhcmlhdGlvbi1zZXR0aW5nczogJ3dnaHQnIDkwMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICYtdGltZS1yZW1haW5pbmcge1xuICAgICAgICAgICAgICAgICAgICAmLWhlYWRpbmcge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAyOHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC12YXJpYXRpb24tc2V0dGluZ3M6ICd3Z2h0JyA3MDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCd4bCcpIHtcbiAgICAgICAgICAgIC50aW1lLWxpbWl0ZWQtb2ZmZXJzIHtcbiAgICAgICAgICAgICAgICAmX19vZmZlciB7XG4gICAgICAgICAgICAgICAgICAgICYtd3JhcHBlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSB3aWRlLWNhcmQoJ3hsJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxLjJmcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICYtZGV0YWlscyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDUwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgPiAqIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIHNlY29uZGFyeSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgbGlnaHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctYmxvY2s6IGNsYW1wKDJyZW0sIDN2dywgNC43NXJlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FwOiAwLjVyZW07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmOndoZXJlKDpsYXN0LWNoaWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1ibG9jay1zdGFydDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICo6d2hlcmUoOm5vdCgudGltZS1saW1pdGVkLW9mZmVyc19fb2ZmZXItdGltZS1yZW1haW5pbmctaGVhZGluZykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDQ0cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAmLXBlcmNlbnRhZ2Utc2F2aW5nIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIGludmVydGVkLWJvcmRlci1yYWRpdXMoJ3InKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cyAwIDAgJGRlZmF1bHQtYm9yZGVyLXJhZGl1cztcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgJi10aW1lLXJlbWFpbmluZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbGV4OiAxLjIgMSBhdXRvO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cyAwIDAgJGRlZmF1bHQtYm9yZGVyLXJhZGl1cztcblxuICAgICAgICAgICAgICAgICAgICAgICAgJjp3aGVyZSg6bm90KDpmaXJzdC1jaGlsZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBpbnZlcnRlZC1ib3JkZXItcmFkaXVzKCdsJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDJweCBkYXNoZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICYtaGVhZGluZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAzNnB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJjp3aGVyZSg6bm90KCYtLXhsLXdpZGUpKSB7XG4gICAgICAgIC50aW1lLWxpbWl0ZWQtb2ZmZXJzIHtcbiAgICAgICAgICAgICZfX29mZmVyIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJ2xnJykge1xuICAgICAgICAgICAgICAgICAgICAmLXRpbWUtcmVtYWluaW5nIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICYtaGVhZGluZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJjpmaXJzdC1jaGlsZDpub3QoOm9ubHktY2hpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogJzonO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnByb2R1Y3QtY2FyZCB7XG4gICAgICAgICAgICAmX19mbGFncyB7XG4gICAgICAgICAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgICAgICAgICByaWdodDogMTBweDtcbiAgICAgICAgICAgICAgICB0b3A6IGNhbGModmFyKC0tdGh1bWJuYWlsLXBhZGRpbmcpIC0gMjBweCk7XG5cbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJ2xnJykge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIFtjbGFzcyo9J19faXRlbSddIHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cyAqIDAuNTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jYXJkLXByaWNlIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ibG9jazogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgZ2FwOiAwIDAuM3JlbTtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJ2xnJykge1xuICAgICAgICAgICAgLnByb2R1Y3QtY2FyZCB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCAnbGlnaHQnKTtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMjBweCAwIHJnYmEobWFwLmdldCgkdGhlbWUtY29sb3JzLCAnZGFyaycpLCAwLjEpO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAgMCAkZGVmYXVsdC1ib3JkZXItcmFkaXVzICRkZWZhdWx0LWJvcmRlci1yYWRpdXM7XG5cbiAgICAgICAgICAgICAgICAmX19wZXJleCB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJl9fZmxhZ3Mge1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICAgICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiBjYWxjKHZhcigtLXRodW1ibmFpbC1wYWRkaW5nKSAtIDEwcHgpO1xuICAgICAgICAgICAgICAgICAgICBwbGFjZS1zZWxmOiBzdGFydDtcblxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MqPSdfX2l0ZW0nXSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzKj0nX190ZXh0J10ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC12YXJpYXRpb24tc2V0dGluZ3M6ICd3Z2h0JyA1MDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmX19pbm5lciB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogNzBweCAxZnIgMzhweDtcbiAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBtaW4tY29udGVudCBtaW4tY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMjBweCAwIDIwcHggMTBweDtcbiAgICAgICAgICAgICAgICAgICAgZ2FwOiAxMHB4IDIwcHg7XG4gICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJl9fYXZhaWxhYmlsaXR5IHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmX19wcmltYXJ5LFxuICAgICAgICAgICAgICAgICZfX3NlY29uZGFyeSxcbiAgICAgICAgICAgICAgICAmX19zZWNvbmRhcnktaW5uZXIge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBjb250ZW50cztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmX190aHVtYm5haWwge1xuICAgICAgICAgICAgICAgICAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbGVuZ3RoLXplcm8tbm8tdW5pdCAqL1xuICAgICAgICAgICAgICAgICAgICAtLXRodW1ibmFpbC1wYWRkaW5nOiAwcHg7XG5cbiAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDEgLyBzcGFuIDI7XG4gICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDcwcHg7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJl9faGVhZGluZyB7XG4gICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMjtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjJyZW07XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ibG9jazogYXV0byAwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICZfX3ByaWNlIHtcbiAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDI7XG4gICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAyO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYmxvY2s6IDAgYXV0bztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAuY2FyZC1wcmljZSB7XG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgICAgICAgICAgICAgICAgZ2FwOiAxMHB4IDAuNXJlbTtcblxuICAgICAgICAgICAgICAgICAgICAmX19mdWxsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgJl9fZGlzY291bnQsXG4gICAgICAgICAgICAgICAgICAgICZfX3NhdmluZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICZfX3NhdmluZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgc2F2aW5nLWNvbG9yLWJnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDRweCA2cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzICogMC41O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICZfX2FkZCB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fc2xpZGVyIHtcbiAgICAgICAgLmVtYmxhIHtcbiAgICAgICAgICAgIC5jYXRlZ29yeV9fc2lkZWJhciAmIHtcbiAgICAgICAgICAgICAgICAmX192aWV3cG9ydCB7XG4gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICZfX2NvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgICAgIGdhcDogNjBweDsgLy8gYWxsb3cgZm9yIHRoZSBzaGFkb3cgKHZhbHVlIGlzIDEwcHggPiBjb250YWluZXIgcGFkZGluZylcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX2J1dHRvbnMge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IG1heC1jb250ZW50O1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMnJlbSBhdXRvIDA7XG4gICAgICAgICAgICAgICAgYm90dG9tOiBpbml0aWFsO1xuICAgICAgICAgICAgICAgIHJpZ2h0OiBpbml0aWFsO1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDIwcHggMCByZ2JhKG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgJ2RhcmsnKSwgMC4wNik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX2J1dHRvbiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY2FyZC1wcmljZV9fdm91Y2hlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLy8gRklYIEZPUiBpT1MgLyBNYWNPUyBTYWZhcmkgd2l0aCBTcGxpZGVcbiAgICBAYXQtcm9vdCB7XG4gICAgICAgIC5jb250YWluZXI6aGFzKD4gI3smfSkge1xuICAgICAgICAgICAgb3ZlcmZsb3cteDogY2xpcDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=*/