/*!**********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** 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/eshop.setos.cz/sass/posts.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
 */
/**
 * Special version of the card-box() layout for the B2B shop
 */
/**
 * card-box list layout for the B2B shop
 */
.default-page__header {
  background-color: #f3f3f3;
  padding-bottom: 2.5rem;
  margin-top: -0.1rem;
}
.default-page__header .container {
  display: flex;
  flex-direction: column;
}
.default-page__header:has(+ .canvas) {
  margin-bottom: -1rem;
}
@media (min-width: 768px) {
  .default-page__header:has(+ .canvas) {
    margin-bottom: -2rem;
  }
}
@media (min-width: 1366px) {
  .default-page__header {
    padding-bottom: 3em;
    margin-top: -0.25rem;
  }
  .default-page__header:has(+ .canvas) {
    margin-bottom: -1rem;
  }
}
.default-page__header h1 {
  margin: 0;
}
.default-page__header-image {
  order: -1;
  margin-bottom: 4rem;
}
.default-page__header-image picture {
  width: 100%;
}
.default-page__header-image img {
  max-width: 100%;
  margin: auto;
}

@media (min-width: 768px) {
  .default-post *:not(header) .container, .default-post__header h1, .default-post__header--meta {
    max-width: 848px;
    margin-inline: auto;
  }
  .default-post__header h1, .default-post__header--meta {
    padding-inline: calc(var(--bs-gutter-x) * 0.5);
    width: 100%;
  }
}
.default-post__header h1 {
  text-wrap: balance;
}
.default-post__header--meta {
  margin-top: 2rem;
}
.default-post__header--date {
  display: inline-block;
}
.default-post__header--date:not(:last-child) {
  margin-right: 1em;
}
.default-post__header--tags {
  display: inline-flex;
  flex-wrap: wrap;
}
.default-post__header--tags > a ~ a {
  margin-left: 0.3em;
}
.default-post .post-item__date {
  display: inline-block;
}
.default-post--index .default-page__header h1 {
  display: grid;
  align-items: baseline;
  grid-template-columns: 1fr auto;
}
.default-post--index .default-page__header + .canvas .default-post__content--tags {
  margin-top: -1.5rem;
}
.default-post__content--tags {
  margin-bottom: 5rem;
}
.default-post__content--tags .container {
  display: grid;
  gap: clamp(10px, 5vw, 2rem);
  align-items: baseline;
}
@media (min-width: 480px) {
  .default-post__content--tags .container {
    grid-template-columns: auto 1fr;
  }
}
.default-post__content--tags .container h2 {
  margin: 0;
}
.default-post__content--tags .container ul {
  display: flex;
  flex-wrap: wrap;
  gap: 5px 15px;
}
.default-post__posts--grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: clamp(10px, 5vw, 3rem);
}
.default-post__posts--grid .post-item {
  margin: 0;
  max-width: none;
}
.default-post__posts--grid + .pagination {
  margin-block-start: clamp(10px, 5vw, 3rem);
}

.default-post__header-image {
  max-width: 848px;
  margin-inline: auto;
}
@media (min-width: 768px) {
  .default-post__header-image {
    padding-inline: calc(var(--bs-gutter-x) * 0.5);
  }
}
.default-post__header--meta {
  margin-block-end: -1.5rem;
}
@media (min-width: 768px) {
  .default-post__header--meta {
    margin-block-end: -2rem;
  }
}
@media (min-width: 1366px) {
  .default-post__header--meta {
    margin-block-end: -3rem;
  }
}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLmVzaG9wLnNldG9zLmN6LmFzZ2FyZC5wb3N0LjIzYWQ3NTAzNmMxZmVhZDMxZmZiLmNzcyIsIm1hcHBpbmdzIjoiOzs7QUFHQTs7Ozs7RUFBQTtBQWlCQTs7Ozs7O0VBQUE7QUM4UEE7O0VBQUE7QUErSEE7O0VBQUE7QUFlQTs7RUFBQTtBQW1HQTs7RUFBQTtBQ2hnQkk7RUFDSTtFQUNBO0VBQ0E7QUN1QlI7QURyQlE7RUFDSTtFQUNBO0FDdUJaO0FEcEJRO0VBQ0k7QUNzQlo7QUMyQkk7RUY3Q1E7SUFDSTtFQ3FCZDtBQUNGO0FDc0JJO0VGNURBO0lBcUJRO0lBQ0E7RUNxQlY7RURuQlU7SUFDSTtFQ3FCZDtBQUNGO0FEbEJRO0VBQ0k7QUNvQlo7QURqQlE7RUFDSTtFQUNBO0FDbUJaO0FEakJZO0VBQ0k7QUNtQmhCO0FEaEJZO0VBQ0k7RUFDQTtBQ2tCaEI7O0FDREk7RUMzREk7SUFHSTtJQUNBO0VGOERWO0VFM0RNO0lBRUk7SUFDQTtFRjREVjtBQUNGO0FFeERRO0VBQ0k7QUYwRFo7QUV0REk7RUFDSTtBRndEUjtBRXJESTtFQUNJO0FGdURSO0FFckRRO0VBQ0k7QUZ1RFo7QUVuREk7RUFDSTtFQUNBO0FGcURSO0FFbkRRO0VBQ0k7QUZxRFo7QUVqREk7RUFDSTtBRm1EUjtBRTlDWTtFQUNJO0VBQ0E7RUFDQTtBRmdEaEI7QUU1Q2dCO0VBQ0k7QUY4Q3BCO0FFeENJO0VBQ0k7QUYwQ1I7QUV4Q1E7RUFDSTtFQUNBO0VBQ0E7QUYwQ1o7QUNsREk7RUNLSTtJQU1RO0VGMkNkO0FBQ0Y7QUV6Q1k7RUFDSTtBRjJDaEI7QUV4Q1k7RUFDSTtFQUNBO0VBQ0E7QUYwQ2hCO0FFckNJO0VBQ0k7RUFDQTtFQUNBO0FGdUNSO0FFckNRO0VBQ0k7RUFDQTtBRnVDWjtBRXBDUTtFQUNJO0FGc0NaOztBQW5JUTtFQUNJO0VBQ0E7QUFzSVo7QUNoRkk7RUR4REk7SUFLUTtFQXVJZDtBQUNGO0FBcElRO0VBQ0k7QUFzSVo7QUN4Rkk7RUQvQ0k7SUFJUTtFQXVJZDtBQUNGO0FDN0ZJO0VEL0NJO0lBUVE7RUF3SWQ7QUFDRixDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc2hvcGlvLy4vZGF0YS93d3cvdGVtcGxhdGVzL2FzZ2FyZC9lc2hvcC5zZXRvcy5jei9zYXNzL2FwcC9hYnN0cmFjdHMvX2Zucy5zY3NzIiwid2VicGFjazovL3Nob3Bpby8uL2RhdGEvd3d3L3RlbXBsYXRlcy9hc2dhcmQvZXNob3Auc2V0b3MuY3ovc2Fzcy9hcHAvYWJzdHJhY3RzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly9zaG9waW8vLi9kYXRhL3d3dy90ZW1wbGF0ZXMvYXNnYXJkL2RlZmF1bHQvc2Fzcy9hcHAvY29tcG9uZW50cy9fYWx0ZXJuYXRlLWhlYWRlci5zY3NzIiwid2VicGFjazovL3Nob3Bpby8uL2RhdGEvd3d3L3RlbXBsYXRlcy9hc2dhcmQvZXNob3Auc2V0b3MuY3ovc2Fzcy9wb3N0cy5zY3NzIiwid2VicGFjazovL3Nob3Bpby8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy9taXhpbnMvX2JyZWFrcG9pbnRzLnNjc3MiLCJ3ZWJwYWNrOi8vc2hvcGlvLy4vZGF0YS93d3cvdGVtcGxhdGVzL2FzZ2FyZC9kZWZhdWx0L3Nhc3MvcG9zdHMvX3Bvc3RzLWRlZmF1bHQuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOmxpc3QnO1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgbmV4dCBzbWFsbGVyIGJyZWFrcG9pbnQgZnJvbSB0aGUgZ2l2ZW4gYnJlYWtwb2ludC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgLSBUaGUgYnJlYWtwb2ludCBmb3Igd2hpY2ggdG8gZmluZCB0aGUgbmV4dCBzbWFsbGVyIGJyZWFrcG9pbnQuXG4gKiBAcmV0dXJuIHtTdHJpbmd8bnVsbH0gLSBUaGUgbmV4dCBzbWFsbGVyIGJyZWFrcG9pbnQsIG9yIG51bGwgaWYgbm8gc21hbGxlciBicmVha3BvaW50IGlzIGF2YWlsYWJsZS5cbiAqL1xuQGZ1bmN0aW9uIGdldC1zbWFsbGVyLWJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpIHtcbiAgICAka2V5czogbWFwLmtleXMoJGdyaWQtYnJlYWtwb2ludHMpO1xuICAgICRpbmRleDogbGlzdC5pbmRleCgka2V5cywgJGJyZWFrcG9pbnQpO1xuXG4gICAgQGlmIG5vdCAkaW5kZXggb3IgJGluZGV4ID09IDEge1xuICAgICAgICBAcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgQHJldHVybiBsaXN0Lm50aCgka2V5cywgJGluZGV4IC0gMSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBuZXh0IGxhcmdlciBicmVha3BvaW50IGZyb20gdGhlICRncmlkLWJyZWFrcG9pbnRzIG1hcC5cbiAqXG4gKiBAZnVuY3Rpb24gZ2V0LWJpZ2dlci1icmVha3BvaW50XG4gKiBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgLSBUaGUgY3VycmVudCBicmVha3BvaW50IHRvIGZpbmQgdGhlIG5leHQgbGFyZ2VyIG9uZSBmb3IuXG4gKiBAcmV0dXJuIHtTdHJpbmcgfCBudWxsfSAtIFRoZSBuZXh0IGxhcmdlciBicmVha3BvaW50IG9yIG51bGwgaWYgdGhlIGN1cnJlbnQgYnJlYWtwb2ludCBpcyB0aGUgbGFyZ2VzdCBvciBub3QgZm91bmQuXG4gKi9cbkBmdW5jdGlvbiBnZXQtbGFyZ2VyLWJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpIHtcbiAgICAka2V5czogbWFwLmtleXMoJGdyaWQtYnJlYWtwb2ludHMpO1xuICAgICRpbmRleDogbGlzdC5pbmRleCgka2V5cywgJGJyZWFrcG9pbnQpO1xuXG4gICAgQGlmIG5vdCAkaW5kZXggb3IgJGluZGV4ID09IGxpc3QubGVuZ3RoKCRicmVha3BvaW50KSB7XG4gICAgICAgIEByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBAcmV0dXJuIGxpc3QubnRoKCRrZXlzLCAkaW5kZXggKyAxKTtcbn1cbiIsIkB1c2UgJ3Nhc3M6Y29sb3InO1xuQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczpsaXN0JztcblxuLy8gKiBWaXN1YWxzIGZvciBzbWFsbCBibG9ja3Mgd2l0aCBhIGhvdmVyIC8gZm9jdXMtd2l0aGluIGVmZmVjdCBpbmNsdWRlZFxuLy8gKiBUbyBtb2RpZnkgZGVmYXVsdCB2YWx1ZXMsIHlvdSBjb3VsZCB1c2UgQGluY2x1ZGUgc21hbGwtYmxvY2stY29tcG9uZW50KG1hcC5zZXQoJGNvbmZpZywgJ3JhZGl1cycsIDIwcHgpKVxuQG1peGluIHNtYWxsLWJsb2NrLWNvbXBvbmVudChcbiAgICAkcmFkaXVzOiAxMHB4LFxuICAgICRiYWNrZ3JvdW5kLXN0YXJ0OiBjb2xvci5hZGp1c3QobWFwLmdldCgkdGhlbWUtY29sb3JzLCBwcmltYXJ5LWxpZ2h0KSwgJGFscGhhOiAtMSksXG4gICAgJGJhY2tncm91bmQtZW5kOiBjb2xvci5hZGp1c3QobWFwLmdldCgkdGhlbWUtY29sb3JzLCBwcmltYXJ5LW1pZCksICRhbHBoYTogMCksXG4gICAgJGJveC1zaGFkb3ctc3RhcnQ6IDAgNHB4IDIwcHggMCAjMDAwMDAwMTQsXG4gICAgJGJveC1zaGFkb3ctZW5kOiAwIDRweCA0cHggMCAjMDAwMDAwMTQsXG4gICAgJHRyYW5zaXRpb246ICdiYWNrZ3JvdW5kLWNvbG9yIGxpbmVhciAwLjE1cywgYm94LXNoYWRvdyBsaW5lYXIgMC4xNXMnXG4pIHtcbiAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLXN0YXJ0O1xuICAgIGJveC1zaGFkb3c6ICRib3gtc2hhZG93LXN0YXJ0O1xuICAgIHRyYW5zaXRpb246ICN7JHRyYW5zaXRpb259O1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLWVuZDtcbiAgICAgICAgYm94LXNoYWRvdzogJGJveC1zaGFkb3ctZW5kO1xuICAgIH1cbn1cblxuQG1peGluIHdpZGUtY2FyZCgkYnJlYWtwb2ludDogJ3hsJykge1xuICAgICRzbWFsbGVyLWJyZWFrcG9pbnQ6IGdldC1sYXJnZXItYnJlYWtwb2ludCgkYnJlYWtwb2ludCk7XG5cbiAgICAucHJvZHVjdC1jYXJkIHtcbiAgICAgICAgLS10aHVtYm5haWwtd2lkdGg6IDIwMHB4O1xuICAgICAgICAtLWZsYWctZm9udC1zaXplOiAxLjJyZW07XG5cbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBsaWdodCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAyMHB4IDAgcmdiKDAsIDAsIDAsIDAuMDcpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG5cbiAgICAgICAgJl9faW5uZXIge1xuICAgICAgICAgICAgcGFkZGluZzogM3JlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAkc21hbGxlci1icmVha3BvaW50IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJHNtYWxsZXItYnJlYWtwb2ludCkge1xuICAgICAgICAgICAgICAgIC0tdGh1bWJuYWlsLXdpZHRoOiAyODBweDtcbiAgICAgICAgICAgICAgICAtLWZsYWctZm9udC1zaXplOiAxLjZyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50KSB7XG4gICAgICAgICAgICAmX19pbm5lciB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHZhcigtLXRodW1ibmFpbC13aWR0aCkgMWZyIGF1dG87XG4gICAgICAgICAgICAgICAgZ3JpZC1hdXRvLXJvd3M6IGF1dG87XG4gICAgICAgICAgICAgICAgbWluLWhlaWdodDogMjRyZW07XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAzcmVtIDRyZW0gM3JlbSAwO1xuXG4gICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMSAvIC0xO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9fcHJpbWFyeSxcbiAgICAgICAgICAgICZfX3NlY29uZGFyeSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogY29udGVudHM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX3NlY29uZGFyeSB7XG4gICAgICAgICAgICAgICAgJi1pbm5lciB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGNvbnRlbnRzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9fdGh1bWJuYWlsIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IHZhcigtLXRodW1ibmFpbC13aWR0aCk7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDMwcHg7XG4gICAgICAgICAgICAgICAgZ3JpZC1hcmVhOiBhdXRvO1xuXG4gICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAyNDBweDtcbiAgICAgICAgICAgICAgICAgICAgbWF4LWhlaWdodDogMjQwcHg7XG4gICAgICAgICAgICAgICAgICAgIGluc2V0OiAwO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IGF1dG87XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmX192YXJpYW50cyB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDE7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDY7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX2hlYWRpbmcge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAyIC8gLTE7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDI7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAyLjJyZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX3BlcmV4IHtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMiAvIC0xO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiAzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmX19wYXJhbWV0ZXJzIHtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMiAvIC0xO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiA0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmX19hdmFpbGFiaWxpdHkge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAyIC8gLTE7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX3ByaWNlIHtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMjtcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogNjtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG5cbiAgICAgICAgICAgICAgICAuY2FyZC1wcmljZSB7XG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgIGdhcDogMCAxLjZyZW07XG4gICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgJl9fZnVsbCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDIuMnJlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIGRhcmspO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgJl9fZGlzY291bnQsXG4gICAgICAgICAgICAgICAgICAgICZfX3NhdmluZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuNnJlbTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJl9fZmxhZ3Mge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB0b3A6IC0xMHB4O1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAtMTNweDtcbiAgICAgICAgICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICAgICAgICAgIHBsYWNlLXNlbGY6IHN0YXJ0IGVuZDtcbiAgICAgICAgICAgICAgICBnYXA6IDAuM3JlbTtcblxuICAgICAgICAgICAgICAgIFtjbGFzcyo9J19faXRlbSddIHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTBweDtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMC4yMmVtIDAuNjNlbTtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IHZhcigtLWZsYWctZm9udC1zaXplKTtcbiAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcblxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MqPSdfX3RleHQnXSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC12YXJpYXRpb24tc2V0dGluZ3M6ICd3Z2h0JyA0MDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICZfX2FkZCB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDM7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDY7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMDtcblxuICAgICAgICAgICAgICAgICYtbGluayB7XG4gICAgICAgICAgICAgICAgICAgIG1pbi13aWR0aDogMjA1cHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyAqIEFkZCBpbnZlcnRlZCBib3JkZXIgcmFkaXVzIGNvcm5lcnNcbi8vICogbWFzayB2YWx1ZXMgYXJlIGluIHRoZSBvcmRlciB0bCAvIHRyIC8gYnIgLyBibFxuLy8gKiBOb3RlIHRoYXQgYWxsIHVuaXRzIHNob3VsZCBiZSBpbiBweFxuLy8gKiBAcGFyYW0ge2xpc3R9IC0gc3BlY2lmaWMgYm9yZGVyIGNvcm5lcnMgJGNvcm5lcnMgKGFsbHx0bHx0cnxibHxicilcbkBtaXhpbiBpbnZlcnRlZC1ib3JkZXItcmFkaXVzKCRjb3JuZXJzOiAnYWxsJykge1xuICAgIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmV0dGllci9wcmV0dGllclxuICAgICR2YWxpZC1ib3JkZXItcmFkaXVzLXBhcmFtczogWydhbGwnLCAndGwnLCAndHInLCAnYmwnLCAnYnInLCAndCcsICdyJywgJ2InLCAnbCddO1xuICAgICRpbnZlcnRlZC1ib3JkZXItcmFkaXVzOiAxNHB4O1xuICAgICRpbnZlcnRlZC1ib3JkZXItdGw6IDBweDtcbiAgICAkaW52ZXJ0ZWQtYm9yZGVyLXRyOiAwcHg7XG4gICAgJGludmVydGVkLWJvcmRlci1icjogMHB4O1xuICAgICRpbnZlcnRlZC1ib3JkZXItYmw6IDBweDtcblxuICAgIC0taW52ZXJ0ZWQtYm9yZGVyLWdyYWRpZW50OiAjMDAwMCA5OCUsICMwMDA7XG4gICAgLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzOiAjeyRpbnZlcnRlZC1ib3JkZXItcmFkaXVzfTtcblxuICAgIEBpZiBub3QgbGlzdC5pbmRleCgkdmFsaWQtYm9yZGVyLXJhZGl1cy1wYXJhbXMsICRjb3JuZXJzKSB7XG4gICAgICAgIEBlcnJvciBcIiN7JGNvcm5lcnN9IGlzIG5vdCBhIHZhbGlkIHNpZGUuIEV4cGVjdGVkIG9uZSBvZiAjeyR2YWxpZC1ib3JkZXItcmFkaXVzLXBhcmFtc30uXCI7XG4gICAgfVxuXG4gICAgQGlmICRjb3JuZXJzID09ICdhbGwnIHtcbiAgICAgICAgJGludmVydGVkLWJvcmRlci10bDogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgICAgICRpbnZlcnRlZC1ib3JkZXItdHI6ICRpbnZlcnRlZC1ib3JkZXItcmFkaXVzO1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLWJyOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICAgICAgJGludmVydGVkLWJvcmRlci1ibDogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgfSBAZWxzZSBpZiAkY29ybmVycyA9PSAndGwnIHtcbiAgICAgICAgJGludmVydGVkLWJvcmRlci10bDogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgfSBAZWxzZSBpZiAkY29ybmVycyA9PSAndHInIHtcbiAgICAgICAgJGludmVydGVkLWJvcmRlci10cjogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgfSBAZWxzZSBpZiAkY29ybmVycyA9PSAnYnInIHtcbiAgICAgICAgJGludmVydGVkLWJvcmRlci1icjogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgfSBAZWxzZSBpZiAkY29ybmVycyA9PSAnYmwnIHtcbiAgICAgICAgJGludmVydGVkLWJvcmRlci1ibDogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgfSBAZWxzZSBpZiAkY29ybmVycyA9PSAndCcge1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLXRsOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICAgICAgJGludmVydGVkLWJvcmRlci10cjogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgfSBAZWxzZSBpZiAkY29ybmVycyA9PSAncicge1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLXRyOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICAgICAgJGludmVydGVkLWJvcmRlci1icjogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgfSBAZWxzZSBpZiAkY29ybmVycyA9PSAnYicge1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLWJyOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICAgICAgJGludmVydGVkLWJvcmRlci1ibDogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgfSBAZWxzZSBpZiAkY29ybmVycyA9PSAnbCcge1xuICAgICAgICAkaW52ZXJ0ZWQtYm9yZGVyLXRsOiAkaW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cztcbiAgICAgICAgJGludmVydGVkLWJvcmRlci1ibDogJGludmVydGVkLWJvcmRlci1yYWRpdXM7XG4gICAgfVxuXG4gICAgLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLXRsOiAjeyRpbnZlcnRlZC1ib3JkZXItdGx9O1xuICAgIC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy10cjogI3skaW52ZXJ0ZWQtYm9yZGVyLXRyfTtcbiAgICAtLWludmVydGVkLWJvcmRlci1yYWRpdXMtYnI6ICN7JGludmVydGVkLWJvcmRlci1icn07XG4gICAgLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLWJsOiAjeyRpbnZlcnRlZC1ib3JkZXItYmx9O1xuXG4gICAgbWFzazpcbiAgICAgICAgcmFkaWFsLWdyYWRpZW50KHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtdGwpIGF0IDAgMCwgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLWdyYWRpZW50KSkgMCAwLFxuICAgICAgICByYWRpYWwtZ3JhZGllbnQodmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy10cikgYXQgMTAwJSAwLCB2YXIoLS1pbnZlcnRlZC1ib3JkZXItZ3JhZGllbnQpKSAxMDAlIDAsXG4gICAgICAgIHJhZGlhbC1ncmFkaWVudCh2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLWJsKSBhdCAwIDEwMCUsIHZhcigtLWludmVydGVkLWJvcmRlci1ncmFkaWVudCkpIDAgMTAwJSxcbiAgICAgICAgcmFkaWFsLWdyYWRpZW50KHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtYnIpIGF0IDEwMCUgMTAwJSwgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLWdyYWRpZW50KSkgMTAwJSAxMDAlO1xuICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgbWFzay1zaXplOiA1MSUgNTElO1xuXG4gICAgLy8gc3R5bGVsaW50LWRpc2FibGUgbm8taW52YWxpZC1wb3NpdGlvbi1kZWNsYXJhdGlvblxuICAgIC8vIERpc2FibGUgZm9yIG9sZGVyIFNhZmFyaSBicm93c2VycyBhcyB0aGUgbGF5b3V0IGJyZWFrcyB0aGVyZSB3aXRoIG1hc2tcbiAgICBAc3VwcG9ydHMgKGJhY2tncm91bmQ6IC13ZWJraXQtbmFtZWQtaW1hZ2UoaSkpIHtcbiAgICAgICAgbWFzazogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBXZSBjYW5ub3QgY2hlY2sgZm9yIEBzdXBwb3J0cyAoY2xpcC1wYXRoOiBzaGFwZSgpKSBiZWNhdXNlLCB3aGlsZSBGaXJlZm94IHN1cHBvcnRzIHRoZSBydWxlLCBpdCBkb2VzIG5vdCB3b3JrIC0geWV0IChodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEwMzI4KVxuICAgIC8vIEJ1dCwgYXMgc2hhcGUoKSBjYW4gYmUgdXNlZCBpbiBhbmltYXRpb24gcGF0aHMsIGFuZCBDaHJvbWUgYW5kIGN1cnJlbnQgU2FmYXJpIHN1cHBvcnQgdGhpcyBpbXBsZW1lbnRhdGlvbi5cbiAgICAvLyBOT1RFOiBXZSBzaG91bGQgc3RpbGwgY2hlY2sgdG8gc2VlIHdoZW4gY2xpcC1wYXRoOiBzaGFwZSgpIGlzIGZ1bGx5IGVuYWJsZWQgaW4gRmlyZWZveCwgYnV0IGluIHRoZSBtZWFudGltZSwgbWFza2luZyB3b3JrcyBuaWNlbHkgdGhlcmVcbiAgICBAc3VwcG9ydHMgKG9mZnNldC1wYXRoOiBzaGFwZShmcm9tIHRvcCBsZWZ0LCBjdXJ2ZSB0byA1MCUgNTAlIHdpdGggMjUlIDEwMCUpKSB7XG4gICAgICAgIG1hc2s6IG5vbmU7XG4gICAgICAgIGNsaXAtcGF0aDogc2hhcGUoXG4gICAgICAgICAgICBmcm9tIDAgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy10bCksXG4gICAgICAgICAgICBhcmMgYnkgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy10bCkgY2FsYyh2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLXRsKSAqIC0xKSBvZiB2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLXRsKSxcbiAgICAgICAgICAgIGxpbmUgdG8gY2FsYygxMDAlIC0gdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy10cikpIDAsXG4gICAgICAgICAgICBhcmMgYnkgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy10cikgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy10cikgb2YgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy10ciksXG4gICAgICAgICAgICBsaW5lIHRvIDEwMCUgY2FsYygxMDAlIC0gdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy1icikpLFxuICAgICAgICAgICAgYXJjIGJ5IGNhbGModmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy1icikgKiAtMSkgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy1icikgb2YgdmFyKC0taW52ZXJ0ZWQtYm9yZGVyLXJhZGl1cy1iciksXG4gICAgICAgICAgICBsaW5lIHRvIHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtYmwpIDEwMCUsXG4gICAgICAgICAgICBhcmMgYnkgY2FsYyh2YXIoLS1pbnZlcnRlZC1ib3JkZXItcmFkaXVzLWJsKSAqIC0xKSBjYWxjKHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtYmwpICogLTEpIG9mIHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtYmwpLFxuICAgICAgICAgICAgbGluZSB0byAwIHZhcigtLWludmVydGVkLWJvcmRlci1yYWRpdXMtdGwpXG4gICAgICAgICk7XG4gICAgfVxuICAgIC8vIHN0eWxlbGludC1lbmFibGUgbm8taW52YWxpZC1wb3NpdGlvbi1kZWNsYXJhdGlvblxufVxuXG4vLyBMYWJlbCBpcyBzaGlmdGVkIHdoZW4gLVxuLy8gaW5wdXQgaXMgZm9jdXNlZFxuLy8gaGFzIHZhbHVlIHByb3AgYnV0IG5vdCBwbGFjZWhvbGRlciBzaG93biAoaGFwcGVuZHMgd2hlbiBwcmVmaWxsZWQgaW5wdXQgaXMgbWFudWFsbHkgY2xlYXJlZClcbi8vIGhhcyBzb21lIHRleHQgcGxhY2Vob2xkZXJcbi8vIGlzIGF1dG9maWxsZWRcbkBtaXhpbiBmb3JtLWlucHV0LWxhYmVsLXNlbGVjdG9ycyB7XG4gICAgJjpoYXMoOndoZXJlKGlucHV0LCBzZWxlY3QsIHRleHRhcmVhKTpub3QoOndoZXJlKDpwbGFjZWhvbGRlci1zaG93bikpOmlzKDp3aGVyZSg6bm90KDpwbGFjZWhvbGRlci1zaG93bikpLCA6d2hlcmUoOm5vdChbcGxhY2Vob2xkZXI9JyddLCBbcGxhY2Vob2xkZXI9JyAnXSkpLCA6bm90KFt2YWx1ZT0nJ10pLCA6LXdlYmtpdC1hdXRvZmlsbCwgOmF1dG9maWxsLCA6Zm9jdXMpKSA6d2hlcmUoLmZvcm0taW5wdXRfX2xhYmVsKSxcbiAgICAmOmhhcyg6d2hlcmUoaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEpOmlzKDp3aGVyZSg6cGxhY2Vob2xkZXItc2hvd246bm90KFtwbGFjZWhvbGRlcj0nJ10sIFtwbGFjZWhvbGRlcj0nICddKSkpKSA6d2hlcmUoLmZvcm0taW5wdXRfX2xhYmVsKSxcbiAgICAmOmhhcyg6d2hlcmUoaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEpOmlzKDpmb2N1cykpIDp3aGVyZSguZm9ybS1pbnB1dF9fbGFiZWwpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG4vKipcbiAqIFJlc2V0IGlTcGFjZSBjdXN0b20gZm9ybSBpbnB1dCBzdHlsZXMgdG8gYmUgYWJsZSB0byBkZXNpZ24gc3BlY2lhbCBpbnB1dHMgbW9yZSBlYXNpbHlcbiAqL1xuQG1peGluIHJlc2V0LWZvcm0taW5wdXQge1xuICAgICY6aGFzKDp3aGVyZShpbnB1dDpub3QoW3R5cGU9J2NoZWNrYm94J10sIFt0eXBlPSdyYWRpbyddKSwgdGV4dGFyZWEsIHNlbGVjdCkpIHtcbiAgICAgICAgei1pbmRleDogYXV0bztcbiAgICAgICAgbWFyZ2luLXRvcDogaW5pdGlhbDtcblxuICAgICAgICA6d2hlcmUoLmZvcm0tZmllbGQtY29udGFpbmVyKSB7XG4gICAgICAgICAgICBwYWRkaW5nOiBpbml0aWFsO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgOndoZXJlKC5mb3JtLWZpZWxkID4gKikge1xuICAgICAgICAgICAgJjpub3QoW2Rpc2FibGVkXSkge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaXRpYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICA6d2hlcmUoLmZvcm0tZmllbGRfX2lucHV0KSB7XG4gICAgICAgICAgICBmb250LXNpemU6IGluaXRpYWw7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhhcyguZXJyb3JzKSB7XG4gICAgICAgICAgICAtLWlucHV0LWJnOiBpbml0aWFsO1xuXG4gICAgICAgICAgICAuZm9ybS1maWVsZC1jb250YWluZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaXRpYWw7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiBpbml0aWFsICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgICAgICAgICAuZm9ybS1maWVsZC1jb250YWluZXIge1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IGluaXRpYWwgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmhhcyhbZGlzYWJsZWRdKSB7XG4gICAgICAgICAgICAuZm9ybS1maWVsZC1jb250YWluZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaXRpYWw7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiBpbml0aWFsICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICA6d2hlcmUoLmZvcm0taW5wdXRfX2xhYmVsKSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICBwYWRkaW5nLWlubGluZTogMDtcbiAgICAgICAgICAgIHBhZGRpbmctYmxvY2s6IDA7XG4gICAgICAgICAgICBmb250LXNpemU6IGluaXRpYWw7XG4gICAgICAgICAgICBjb2xvcjogaW5pdGlhbDtcbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGNsaXA7XG4gICAgICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNsaXA6IGJvcmRlci1ib3g7XG4gICAgICAgICAgICB6LWluZGV4OiBhdXRvO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgICAgICAgICBmb250LXZhcmlhdGlvbi1zZXR0aW5nczogaW5pdGlhbDtcbiAgICAgICAgICAgIG1hcmdpbi1ibG9jay1lbmQ6IGluaXRpYWw7XG5cbiAgICAgICAgICAgICY6OmJlZm9yZSxcbiAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpoYXMoLmZvcm0tZmllbGQtLXNtKSB7XG4gICAgICAgICAgICAuZm9ybS1pbnB1dF9fbGFiZWwge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctYmxvY2s6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgICAgICA6d2hlcmUoLmZvcm0tZmllbGQtY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiBpbml0aWFsO1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDp3aGVyZSguZm9ybS1pbnB1dF9fbGFiZWwpIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogaW5pdGlhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgJjpub3QoOndoZXJlKDpmb2N1cy13aXRoaW4sIFtkaXNhYmxlZF0pKSB7XG4gICAgICAgICAgICAgICAgJjp3aGVyZSg6bm90KDpoYXMoLmVycm9ycykpKSB7XG4gICAgICAgICAgICAgICAgICAgIDp3aGVyZSguZm9ybS1maWVsZC1jb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogaW5pdGlhbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIDp3aGVyZSguZm9ybS1pbnB1dF9fbGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBpbml0aWFsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJjpoYXMoLmVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICA6d2hlcmUoLmZvcm0tZmllbGQtY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IGluaXRpYWw7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICA6d2hlcmUoLmZvcm0taW5wdXRfX2xhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogaW5pdGlhbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGZvcm0taW5wdXQtbGFiZWwtc2VsZWN0b3JzIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogaW5pdGlhbDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG5cbiAgICAgICAgICAgICY6OmJlZm9yZSxcbiAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiBTdHlsZXMgdG8gaGlkZSB0aGUgc2Nyb2xsYmFyIGJ1dCBzdGlsbCBhbGxvdyBzY3JvbGxpbmdcbiAqL1xuQG1peGluIHNjcm9sbC13aXRob3V0LXNjcm9sbGJhciB7XG4gICAgb3ZlcmZsb3c6IHNjcm9sbDtcbiAgICBvdmVyZmxvdzogLW1vei1zY3JvbGxiYXJzLW5vbmU7IC8qIEZpcmVmb3ggKi9cbiAgICAtbXMtb3ZlcmZsb3ctc3R5bGU6IG5vbmU7IC8qIElFIGFuZCBFZGdlICovXG4gICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lOyAvKiBGaXJlZm94ICovXG5cbiAgICAvKiBDaHJvbWUsIFNhZmFyaSBhbmQgT3BlcmEgKi9cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4vKipcbiAqIFNwZWNpYWwgdmVyc2lvbiBvZiB0aGUgY2FyZC1ib3goKSBsYXlvdXQgZm9yIHRoZSBCMkIgc2hvcFxuICovXG5AbWl4aW4gY2FyZC1ib3gtY2hlY2tvdXQge1xuICAgIEBpbmNsdWRlIGNhcmQtYm94O1xuXG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgZGFyayk7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB3b3JkLWJyZWFrOiBub3JtYWw7XG5cbiAgICAmOmhhcyhpbnB1dDpjaGVja2VkKSxcbiAgICAmLnNlbGVjdGVkLXBheW1lbnQtc2hpcHBpbmctbWV0aG9kIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50O1xuICAgICAgICBib3JkZXItY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgcHJpbWFyeS1kYXJrKTtcblxuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCdtZCcpIHtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDFweCBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIHByaW1hcnktZGFyayk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLmZvcm0tYmxvY2stZGlzYWJsZWQge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIEBjb250ZW50O1xufVxuXG5AbWl4aW4gY2FyZC1ib3gtY2hlY2tvdXQtY29tcG9uZW50cygkaXMtbWluaW1hbDogZmFsc2UpIHtcbiAgICBAaWYgJGlzLW1pbmltYWwge1xuICAgICAgICAmLWxhYmVsIHtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjg7XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgJi1sYWJlbCxcbiAgICAgICAgJi1pbmZvLFxuICAgICAgICAmLXByaWNlIHtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLWxhYmVsIHtcbiAgICAgICAgcG9zaXRpb246IGluaXRpYWw7XG4gICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgIEBpZiAkaXMtbWluaW1hbCB7XG4gICAgICAgICAgICBncmlkLWNvbHVtbjogMTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBncmlkLWNvbHVtbjogMjtcbiAgICAgICAgfVxuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aGFzKDpjaGVja2VkKSxcbiAgICAgICAgJjpoYXMoW2Rpc2FibGVkXSkge1xuICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgICAgICAgICB0b3VjaC1hY3Rpb246IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAucmFkaW8ge1xuICAgICAgICAgICAgJl9faW5wdXQge1xuICAgICAgICAgICAgICAgIHRvcDogLTE2cHg7IC8vIGNvbnNpZGVyIHRoZSAxNHB4IHBhZGRpbmcgKGV4dHJhIDJweCBmb3IgYm9yZGVyKVxuXG4gICAgICAgICAgICAgICAgJjpjaGVja2VkOm5vdCg6ZGlzYWJsZWQpOjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi10ZXh0IHtcbiAgICAgICAgICAgIEBpZiAkaXMtbWluaW1hbCB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMjtcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBjb250ZW50O1xufVxuXG4vKipcbiAqIGNhcmQtYm94IGxpc3QgbGF5b3V0IGZvciB0aGUgQjJCIHNob3BcbiAqL1xuQG1peGluIGNhcmQtYm94LWxpc3QtY2hlY2tvdXQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiBjb2x1bW47XG4gICAgZ2FwOiAwLjhyZW07XG4gICAgdHJhbnNpdGlvbjogZ2FwIDAuM3M7XG59XG5cbi8vIEFsdGVybmF0aXZlIGRpc2MtbGlrZSBzdHlsaW5nIGZvciByYWRpbyBhbmQgY2hlY2tib3ggaW5wdXRzXG5AbWl4aW4gaW5wdXQtZGlzYyB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaW5zZXQ6IDAgMTBweCAwIGF1dG87XG4gICAgbWFyZ2luLWJsb2NrOiBhdXRvO1xuICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gICAgd2lkdGg6IDE1cHg7XG4gICAgaGVpZ2h0OiAxNXB4O1xuICAgIGZsZXg6IDAgMCAxNXB4OyAvLyBpbiBjYXNlIGl0J3MgcGFydCBvZiBhIGZsZXggbGF5b3V0XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMCwgMCwgMCwgMC4xKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMXMgZWFzZS1pbi1vdXQ7XG59XG5cbi8vIGNhcmQgYm94ZXMgYXJlIHR5cGljYWxseSB1c2VkIG9uIHByb2R1Y3QgZGV0YWlsIHNlcnZpY2VzLCBjaGVja291dCB0cmFuc3BvcnQvcGF5bWVudCBvcHRpb25zLFxuLy8gQU5EIHByZS1jaGVja291dCBwYWdlXG5AbWl4aW4gY2FyZC1ib3gge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hcC5nZXQoJHRoZW1lLWNvbG9ycywgbGlnaHQpO1xuICAgIGNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsICdncmF5LTkwMCcpO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCBtYXAuZ2V0KCRpbnB1dCwgYm9yZGVyLWNvbG9yKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmc6IDE0cHggMzBweCAxNHB4IDIwcHg7XG5cbiAgICAmOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogLTFweDtcbiAgICAgICAgYm9yZGVyOiAycHggc29saWQgbWFwLmdldCgkdGhlbWUtY29sb3JzLCBwcmltYXJ5LWRhcmspO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cyBlYXNlLWluLW91dDtcbiAgICB9XG5cbiAgICBbdHlwZT0nY2hlY2tib3gnXSxcbiAgICBbdHlwZT0ncmFkaW8nXSB7XG4gICAgICAgIEBpbmNsdWRlIGlucHV0LWRpc2M7XG4gICAgfVxuXG4gICAgJjpoYXMoOmNoZWNrZWQpLFxuICAgICZbY2xhc3MqPSdzZWxlY3RlZCddIHtcbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuXG4gICAgICAgIFt0eXBlPSdjaGVja2JveCddOm5vdCguZml4LXNwZWNpZmljaXR5KSxcbiAgICAgICAgW3R5cGU9J3JhZGlvJ106bm90KC5maXgtc3BlY2lmaWNpdHkpIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBwcmltYXJ5LWRhcmspO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWFwLmdldCgkdGhlbWUtY29sb3JzLCBwcmltYXJ5LWRhcmspO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJjpob3Zlcjpub3QoOmhhcyhbZGlzYWJsZWRdKSksXG4gICAgJjpmb2N1cy13aXRoaW46bm90KDpoYXMoW2Rpc2FibGVkXSkpIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIGdyYXktNDAwKTtcblxuICAgICAgICBbdHlwZT0nY2hlY2tib3gnXTpub3QoOmNoZWNrZWQpLFxuICAgICAgICBbdHlwZT0ncmFkaW8nXTpub3QoOmNoZWNrZWQpIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogcmdiKDAsIDAsIDAsIDAuMik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhhcyhbZGlzYWJsZWRdKTpub3QoLmZpeC1zcGVjaWZpY2l0eSkge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXAuZ2V0KCR0aGVtZS1jb2xvcnMsIGxpZ2h0KTtcbiAgICAgICAgb3BhY2l0eTogMC43O1xuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5cbi5kZWZhdWx0LXBhZ2Uge1xuICAgICZfX2hlYWRlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hcC5nZXQoJGJyZWFkY3J1bWJzLCAnYmctY29sb3InKTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDIuNXJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogLTAuMXJlbTtcblxuICAgICAgICAuY29udGFpbmVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpoYXMoKyAuY2FudmFzKSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAtMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJ21kJykge1xuICAgICAgICAgICAgJjpoYXMoKyAuY2FudmFzKSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogLTJyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCd4eGwnKSB7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogM2VtO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogLTAuMjVyZW07XG5cbiAgICAgICAgICAgICY6aGFzKCsgLmNhbnZhcykge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IC0xcmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaDEge1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgJi1pbWFnZSB7XG4gICAgICAgICAgICBvcmRlcjogLTE7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0cmVtO1xuXG4gICAgICAgICAgICBwaWN0dXJlIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiBhdXRvO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiQGltcG9ydCAndGhlbWUtdmFyaWFibGVzJztcbkBpbXBvcnQgJy4uLy4uL2RlZmF1bHQvc2Fzcy9hc2dhcmQtdmFyaWFibGVzJztcbkBpbXBvcnQgJ2FwcC9hYnN0cmFjdHMvYWxsJztcbkBpbXBvcnQgJy4uLy4uL2RlZmF1bHQvc2Fzcy9wb3N0cy9hbGwnO1xuXG4uZGVmYXVsdC1wb3N0IHtcbiAgICAmX19oZWFkZXIge1xuICAgICAgICAmLWltYWdlIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogODQ4cHg7IC8vIHNhbWUgYXMgcG9zdHMgY29udGVudFxuICAgICAgICAgICAgbWFyZ2luLWlubGluZTogYXV0bztcblxuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChtZCkge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctaW5saW5lOiBjYWxjKHZhcigtLWJzLWd1dHRlci14KSAqIDAuNSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLS1tZXRhIHtcbiAgICAgICAgICAgIG1hcmdpbi1ibG9jay1lbmQ6IC0xLjVyZW07XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJ21kJykge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ibG9jay1lbmQ6IC0ycmVtO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCd4eGwnKSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJsb2NrLWVuZDogLTNyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvLyBCcmVha3BvaW50IHZpZXdwb3J0IHNpemVzIGFuZCBtZWRpYSBxdWVyaWVzLlxuLy9cbi8vIEJyZWFrcG9pbnRzIGFyZSBkZWZpbmVkIGFzIGEgbWFwIG9mIChuYW1lOiBtaW5pbXVtIHdpZHRoKSwgb3JkZXIgZnJvbSBzbWFsbCB0byBsYXJnZTpcbi8vXG4vLyAgICAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KVxuLy9cbi8vIFRoZSBtYXAgZGVmaW5lZCBpbiB0aGUgYCRncmlkLWJyZWFrcG9pbnRzYCBnbG9iYWwgdmFyaWFibGUgaXMgdXNlZCBhcyB0aGUgYCRicmVha3BvaW50c2AgYXJndW1lbnQgYnkgZGVmYXVsdC5cblxuLy8gTmFtZSBvZiB0aGUgbmV4dCBicmVha3BvaW50LCBvciBudWxsIGZvciB0aGUgbGFzdCBicmVha3BvaW50LlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSlcbi8vICAgIG1kXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgbWRcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgJGJyZWFrcG9pbnQtbmFtZXM6ICh4cyBzbSBtZCBsZyB4bCB4eGwpKVxuLy8gICAgbWRcbkBmdW5jdGlvbiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMsICRicmVha3BvaW50LW5hbWVzOiBtYXAta2V5cygkYnJlYWtwb2ludHMpKSB7XG4gICRuOiBpbmRleCgkYnJlYWtwb2ludC1uYW1lcywgJG5hbWUpO1xuICBAaWYgbm90ICRuIHtcbiAgICBAZXJyb3IgXCJicmVha3BvaW50IGAjeyRuYW1lfWAgbm90IGZvdW5kIGluIGAjeyRicmVha3BvaW50c31gXCI7XG4gIH1cbiAgQHJldHVybiBpZigkbiA8IGxlbmd0aCgkYnJlYWtwb2ludC1uYW1lcyksIG50aCgkYnJlYWtwb2ludC1uYW1lcywgJG4gKyAxKSwgbnVsbCk7XG59XG5cbi8vIE1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTnVsbCBmb3IgdGhlIHNtYWxsZXN0IChmaXJzdCkgYnJlYWtwb2ludC5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW1pbihzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICA1NzZweFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG1pbiAhPSAwLCAkbWluLCBudWxsKTtcbn1cblxuLy8gTWF4aW11bSBicmVha3BvaW50IHdpZHRoLlxuLy8gVGhlIG1heGltdW0gdmFsdWUgaXMgcmVkdWNlZCBieSAwLjAycHggdG8gd29yayBhcm91bmQgdGhlIGxpbWl0YXRpb25zIG9mXG4vLyBgbWluLWAgYW5kIGBtYXgtYCBwcmVmaXhlcyBhbmQgdmlld3BvcnRzIHdpdGggZnJhY3Rpb25hbCB3aWR0aHMuXG4vLyBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL21lZGlhcXVlcmllcy00LyNtcS1taW4tbWF4XG4vLyBVc2VzIDAuMDJweCByYXRoZXIgdGhhbiAwLjAxcHggdG8gd29yayBhcm91bmQgYSBjdXJyZW50IHJvdW5kaW5nIGJ1ZyBpbiBTYWZhcmkuXG4vLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODI2MVxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWF4KG1kLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIDc2Ny45OHB4XG5AZnVuY3Rpb24gYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1heDogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbWF4IGFuZCAkbWF4ID4gMCwgJG1heCAtIC4wMiwgbnVsbCk7XG59XG5cbi8vIFJldHVybnMgYSBibGFuayBzdHJpbmcgaWYgc21hbGxlc3QgYnJlYWtwb2ludCwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIG5hbWUgd2l0aCBhIGRhc2ggaW4gZnJvbnQuXG4vLyBVc2VmdWwgZm9yIG1ha2luZyByZXNwb25zaXZlIHV0aWxpdGllcy5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHhzLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIFwiXCIgIChSZXR1cm5zIGEgYmxhbmsgc3RyaW5nKVxuLy8gICAgPj4gYnJlYWtwb2ludC1pbmZpeChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICBcIi1zbVwiXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pbmZpeCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICBAcmV0dXJuIGlmKGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpID09IG51bGwsIFwiXCIsIFwiLSN7JG5hbWV9XCIpO1xufVxuXG4vLyBNZWRpYSBvZiBhdCBsZWFzdCB0aGUgbWluaW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIHdpZGVyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWluIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSBvZiBhdCBtb3N0IHRoZSBtYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgbGFyZ2VzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCBuYXJyb3dlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWF4IHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSB0aGF0IHNwYW5zIG11bHRpcGxlIGJyZWFrcG9pbnQgd2lkdGhzLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IGJldHdlZW4gdGhlIG1pbiBhbmQgbWF4IGJyZWFrcG9pbnRzXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1iZXR3ZWVuKCRsb3dlciwgJHVwcGVyLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRsb3dlciwgJGJyZWFrcG9pbnRzKTtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJHVwcGVyLCAkYnJlYWtwb2ludHMpO1xuXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRsb3dlciwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJHVwcGVyLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLyBNZWRpYSBiZXR3ZWVuIHRoZSBicmVha3BvaW50J3MgbWluaW11bSBhbmQgbWF4aW11bSB3aWR0aHMuXG4vLyBObyBtaW5pbXVtIGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludCwgYW5kIG5vIG1heGltdW0gZm9yIHRoZSBsYXJnZXN0IG9uZS5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBvbmx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50LCBub3Qgdmlld3BvcnRzIGFueSB3aWRlciBvciBuYXJyb3dlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LW9ubHkoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogIGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICAkbmV4dDogYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICAkbWF4OiAgYnJlYWtwb2ludC1tYXgoJG5leHQsICRicmVha3BvaW50cyk7XG5cbiAgQGlmICRtaW4gIT0gbnVsbCBhbmQgJG1heCAhPSBudWxsIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWF4ID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuZXh0LCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuXG4uZGVmYXVsdC1wb3N0IHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKG1kKSB7XG4gICAgICAgICo6bm90KGhlYWRlcikgLmNvbnRhaW5lcixcbiAgICAgICAgJl9faGVhZGVyIGgxLFxuICAgICAgICAmX19oZWFkZXItLW1ldGEge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiA4NDhweDtcbiAgICAgICAgICAgIG1hcmdpbi1pbmxpbmU6IGF1dG87XG4gICAgICAgIH1cblxuICAgICAgICAmX19oZWFkZXIgaDEsXG4gICAgICAgICZfX2hlYWRlci0tbWV0YSB7XG4gICAgICAgICAgICBwYWRkaW5nLWlubGluZTogY2FsYyh2YXIoLS1icy1ndXR0ZXIteCkgKiAwLjUpO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19oZWFkZXIge1xuICAgICAgICBoMSB7XG4gICAgICAgICAgICB0ZXh0LXdyYXA6IGJhbGFuY2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19oZWFkZXItLW1ldGEge1xuICAgICAgICBtYXJnaW4tdG9wOiAycmVtO1xuICAgIH1cblxuICAgICZfX2hlYWRlci0tZGF0ZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAgICAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19oZWFkZXItLXRhZ3Mge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgICAgID4gYSB+IGEge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDAuM2VtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnBvc3QtaXRlbV9fZGF0ZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG5cbiAgICAmLS1pbmRleCB7XG4gICAgICAgIC5kZWZhdWx0LXBhZ2VfX2hlYWRlciB7XG4gICAgICAgICAgICBoMSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XG4gICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgYXV0bztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgKyAuY2FudmFzIHtcbiAgICAgICAgICAgICAgICAuZGVmYXVsdC1wb3N0X19jb250ZW50LS10YWdzIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTEuNXJlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19jb250ZW50LS10YWdzIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXJlbTtcblxuICAgICAgICAuY29udGFpbmVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICBnYXA6IGNsYW1wKDEwcHgsIDV2dywgMnJlbSk7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAocykge1xuICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGgyIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHVsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgICAgICAgICBnYXA6IDVweCAxNXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fcG9zdHMtLWdyaWQge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgzMDBweCwgMWZyKSk7XG4gICAgICAgIGdhcDogY2xhbXAoMTBweCwgNXZ3LCAzcmVtKTtcblxuICAgICAgICAucG9zdC1pdGVtIHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgICsgLnBhZ2luYXRpb24ge1xuICAgICAgICAgICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiBjbGFtcCgxMHB4LCA1dncsIDNyZW0pO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==*/