/*!
 * Theme Name: Van Ons Theme
 * Theme URI: https://www.van-ons.nl/
 * Description: Van Ons Theme theme created by Van Ons.
 * Author: Van Ons
 * Author URI: https://www.van-ons.nl/
 * Version: 2.5.1
 * Text Domain: vo-theme
 */
@charset "UTF-8";
/*
 * Important!
 *
 * Are you working with the Gutenberg Base CSS for the
 * first time? Read the documentation first:
 * https://handboek.van-ons.nl/knowledge-base/developers/standaarden-en-afspraken/gutenberg-base-css-starter-theme/
 */
/* Settings */
/**
 * Color scheme
 * ----------------------------------------------------------------------------
 */
/**
 * Settings
 * ----------------------------------------------------------------------------
 */
/* Global */
/* Breakpoints */
/* Typography */
/* XY Grid */
/* Gutenberg Settings */
/**
 * Custom variables
 * ----------------------------------------------------------------------------
 */
/* Spacing */
/* Transitions */
/* z-index */
/* FontAwesome */
/* Border radius */
/* Box shadow */
/* Drop shadow */
/* Image gradiant */
/* WP admin bar */
/**
 * Custom functions
 * ----------------------------------------------------------------------------
 */
/**
 * Custom mixins
 * ----------------------------------------------------------------------------
 */
/**
 * Used to compile CSS to display retina images.
 *
 * Example:
 * @include background-image-retina(logo, png, 210px, 70px);
 *
 */
/**
 * Custom placeholders
 * ----------------------------------------------------------------------------
 */
.ew-post-item__list, .ew-tabs ul, .search-item__list, .search-item__actions, .funda-info__list, :root .post-list__pagination, :root .related-post__list, :root .linked-articles__list {
  margin-bottom: 0;
  margin-left: 0;
  padding-left: 0;
  list-style: none; }

.entry__content ol, ol.wp-block[data-type="core/list"], ol.wp-block[data-type="core/list"] ol {
  list-style: none;
  padding-left: 1.6875rem;
  counter-reset: li; }
  .entry__content ol > li, ol.wp-block[data-type="core/list"] > li, ol.wp-block[data-type="core/list"] ol > li {
    counter-increment: li; }
  .entry__content ol > li::before, ol.wp-block[data-type="core/list"] > li::before, ol.wp-block[data-type="core/list"] ol > li::before {
    content: "" counter(li) ".";
    position: absolute;
    display: flex;
    justify-content: center;
    color: #F90023;
    width: 1.6875rem;
    margin-left: -1.6875rem; }
  .entry__content ol[reversed][data-value], ol.wp-block[reversed][data-value][data-type="core/list"], ol.wp-block[data-type="core/list"] ol[reversed][data-value] {
    counter-reset: li; }
    .entry__content ol[reversed][data-value] > li, ol.wp-block[reversed][data-value][data-type="core/list"] > li, ol.wp-block[data-type="core/list"] ol[reversed][data-value] > li {
      counter-increment: li -1; }
    .entry__content ol[reversed][data-value] > li::before, ol.wp-block[reversed][data-value][data-type="core/list"] > li::before, ol.wp-block[data-type="core/list"] ol[reversed][data-value] > li::before {
      content: "" counter(li) "."; }

ul.wp-block[data-type="core/list"], ul.wp-block[data-type="core/list"] ul {
  list-style: none;
  padding-left: 1.6875rem; }
  ul.wp-block[data-type="core/list"] li::before {
    content: "\25CF";
    position: absolute;
    display: flex;
    justify-content: center;
    color: #F90023;
    font-weight: 700;
    width: 1.6875rem;
    margin-left: -1.6875rem; }

.ew-post-item__sponsor {
  font-weight: 500; }

h1, .h1,
h2, .h2,
h3, .h3,
h4, .h4,
h5, .h5,
h6, .h6, .ew-post-item__title, .badge, .search-item__company, .post-list__bullet, .entry__content > p:first-child, .linked-article__title {
  font-weight: 700; }

/**
 * Add styling to root (optional)
 * ----------------------------------------------------------------------------
 */
/**
 * Form placeholder styling
 * ----------------------------------------------------------------------------
 */
/**
 * Automatically include focus styles with hover
 * ----------------------------------------------------------------------------
 */
/**
 * Button
 */
/**
  * Headings
 */
/* Normalize */
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
/* Document
   ========================================================================== */
/**
 * 1. Correct the line height in all browsers.
 * 2. Prevent adjustments of font size after orientation changes in iOS.
 */
html {
  line-height: 1.15;
  /* 1 */
  -webkit-text-size-adjust: 100%;
  /* 2 */ }

/* Sections
   ========================================================================== */
/**
 * Remove the margin in all browsers.
 */
body {
  margin: 0; }

/**
 * Render the `main` element consistently in IE.
 */
main {
  display: block; }

/**
 * Correct the font size and margin on `h1` elements within `section` and
 * `article` contexts in Chrome, Firefox, and Safari.
 */
h1 {
  font-size: 2em;
  margin: 0.67em 0; }

/* Grouping content
   ========================================================================== */
/**
 * 1. Add the correct box sizing in Firefox.
 * 2. Show the overflow in Edge and IE.
 */
hr {
  box-sizing: content-box;
  /* 1 */
  height: 0;
  /* 1 */
  overflow: visible;
  /* 2 */ }

/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */
pre {
  font-family: monospace, monospace;
  /* 1 */
  font-size: 1em;
  /* 2 */ }

/* Text-level semantics
   ========================================================================== */
/**
 * Remove the gray background on active links in IE 10.
 */
a {
  background-color: transparent; }

/**
 * 1. Remove the bottom border in Chrome 57-
 * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
 */
abbr[title] {
  border-bottom: none;
  /* 1 */
  text-decoration: underline;
  /* 2 */
  text-decoration: underline dotted;
  /* 2 */ }

/**
 * Add the correct font weight in Chrome, Edge, and Safari.
 */
b,
strong {
  font-weight: bolder; }

/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */
code,
kbd,
samp {
  font-family: monospace, monospace;
  /* 1 */
  font-size: 1em;
  /* 2 */ }

/**
 * Add the correct font size in all browsers.
 */
small {
  font-size: 80%; }

/**
 * Prevent `sub` and `sup` elements from affecting the line height in
 * all browsers.
 */
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline; }

sub {
  bottom: -0.25em; }

sup {
  top: -0.5em; }

/* Embedded content
   ========================================================================== */
/**
 * Remove the border on images inside links in IE 10.
 */
img {
  border-style: none; }

/* Forms
   ========================================================================== */
/**
 * 1. Change the font styles in all browsers.
 * 2. Remove the margin in Firefox and Safari.
 */
button,
input,
optgroup,
select,
textarea {
  font-family: inherit;
  /* 1 */
  font-size: 100%;
  /* 1 */
  line-height: 1.15;
  /* 1 */
  margin: 0;
  /* 2 */ }

/**
 * Show the overflow in IE.
 * 1. Show the overflow in Edge.
 */
button,
input {
  /* 1 */
  overflow: visible; }

/**
 * Remove the inheritance of text transform in Edge, Firefox, and IE.
 * 1. Remove the inheritance of text transform in Firefox.
 */
button,
select {
  /* 1 */
  text-transform: none; }

/**
 * Correct the inability to style clickable types in iOS and Safari.
 */
button,
[type="button"],
[type="reset"],
[type="submit"] {
  -webkit-appearance: button; }

/**
 * Remove the inner border and padding in Firefox.
 */
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
  border-style: none;
  padding: 0; }

/**
 * Restore the focus styles unset by the previous rule.
 */
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
  outline: 1px dotted ButtonText; }

/**
 * Correct the padding in Firefox.
 */
fieldset {
  padding: 0.35em 0.75em 0.625em; }

/**
 * 1. Correct the text wrapping in Edge and IE.
 * 2. Correct the color inheritance from `fieldset` elements in IE.
 * 3. Remove the padding so developers are not caught out when they zero out
 *    `fieldset` elements in all browsers.
 */
legend {
  box-sizing: border-box;
  /* 1 */
  color: inherit;
  /* 2 */
  display: table;
  /* 1 */
  max-width: 100%;
  /* 1 */
  padding: 0;
  /* 3 */
  white-space: normal;
  /* 1 */ }

/**
 * Add the correct vertical alignment in Chrome, Firefox, and Opera.
 */
progress {
  vertical-align: baseline; }

/**
 * Remove the default vertical scrollbar in IE 10+.
 */
textarea {
  overflow: auto; }

/**
 * 1. Add the correct box sizing in IE 10.
 * 2. Remove the padding in IE 10.
 */
[type="checkbox"],
[type="radio"] {
  box-sizing: border-box;
  /* 1 */
  padding: 0;
  /* 2 */ }

/**
 * Correct the cursor style of increment and decrement buttons in Chrome.
 */
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
  height: auto; }

/**
 * 1. Correct the odd appearance in Chrome and Safari.
 * 2. Correct the outline style in Safari.
 */
[type="search"] {
  -webkit-appearance: textfield;
  /* 1 */
  outline-offset: -2px;
  /* 2 */ }

/**
 * Remove the inner padding in Chrome and Safari on macOS.
 */
[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none; }

/**
 * 1. Correct the inability to style clickable types in iOS and Safari.
 * 2. Change font properties to `inherit` in Safari.
 */
::-webkit-file-upload-button {
  -webkit-appearance: button;
  /* 1 */
  font: inherit;
  /* 2 */ }

/* Interactive
   ========================================================================== */
/*
 * Add the correct display in Edge, IE 10+, and Firefox.
 */
details {
  display: block; }

/*
 * Add the correct display in all browsers.
 */
summary {
  display: list-item; }

/* Misc
   ========================================================================== */
/**
 * Add the correct display in IE 10+.
 */
template {
  display: none; }

/**
 * Add the correct display in IE 10.
 */
[hidden] {
  display: none; }

/* Global */
/**
 * Reset.
 * ----------------------------------------------------------------------------
 */
/**
 * A very simple reset that sits on top of Normalize.css.
 */
body,
h1,
h2,
h3,
h4,
h5,
h6,
blockquote,
p,
pre,
dl,
dd,
ol,
ul,
figure,
hr,
fieldset,
legend {
  margin: 0;
  padding: 0; }

/**
 * Remove trailing margins from nested lists.
 */
li > ol,
li > ul {
  margin-bottom: 0; }

/**
 * Remove default table spacing.
 */
table {
  border-collapse: collapse;
  border-spacing: 0; }

/**
 * 1. Reset Chrome and Firefox behaviour which sets a `min-width: min-content;`
 *    on fieldsets.
 */
fieldset {
  min-width: 0;
  /* [1] */
  border: 0; }

/**
 * More sensible default box-sizing.
 * @see css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice
 */
html {
  box-sizing: border-box; }

*, *:before, *:after {
  box-sizing: inherit; }

/**
 * Reset button styles
 */
button,
[type="button"],
[type="reset"],
[type="submit"] {
  -webkit-appearance: none;
  -moz-appearance: none;
  border: 0;
  margin: 0;
  padding: 0;
  font: inherit; }

/**
 * Print.
 * ----------------------------------------------------------------------------
 */
/**
 * Very crude, reset-like styles taken from the HTML5 Boilerplate:
 * https://github.com/h5bp/html5-boilerplate/blob/5.3.0/dist/doc/css.md#print-styles
 * https://github.com/h5bp/html5-boilerplate/blob/master/dist/css/main.css#L205-L282
 */
@media print {
  /**
     * 1. Black prints faster: http://www.sanbeiji.com/archives/953
     **/
  *, *:before, *:after {
    background: transparent !important;
    color: #000 !important;
    /* [1] */
    box-shadow: none !important;
    text-shadow: none !important; }
  a,
  a:visited {
    text-decoration: underline; }
  a[href]:after {
    content: " (" attr(href) ")"; }
  abbr[title]:after {
    content: " (" attr(title) ")"; }
  /**
   * Don’t show links that are fragment identifiers, or use the `javascript:`
   * pseudo protocol.
   */
  a[href^='#']:after,
  a[href^='javascript:']:after {
    content: ''; }
  pre,
  blockquote {
    border: 1px solid #999;
    page-break-inside: avoid; }
  /**
   * Printing Tables: http://css-discuss.incutio.com/wiki/Printing_Tables
   */
  thead {
    display: table-header-group; }
  tr,
  img {
    page-break-inside: avoid; }
  img {
    max-width: 100% !important; }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3; }
  h2,
  h3 {
    page-break-after: avoid; } }

/**
 * Screen Reader Text
 * ----------------------------------------------------------------------------
 */
.screen-reader-text {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important; }

/**
 * Animations.
 * ----------------------------------------------------------------------------
 */
@keyframes fade-in {
  0% {
    opacity: 0; }
  100% {
    opacity: 1; } }

@keyframes slide-down {
  0% {
    opacity: 0;
    transform: translateY(-30px); }
  100% {
    opacity: 1;
    transform: none; } }

@keyframes blink {
  0% {
    opacity: 1; }
  50% {
    opacity: .6; }
  100% {
    opacity: 1; } }

[data-animation] {
  opacity: 0; }
  [data-animation][data-animation-appearing] {
    animation-name: fade-in;
    animation-duration: 0.5s;
    animation-timing-function: cubic-bezier(0, 0.6, 0.7, 1);
    animation-fill-mode: forwards; }
    [data-animation][data-animation-appearing][data-animation='slide-down'] {
      animation-name: slide-down; }

@media print, screen and (min-width: 70.25em) {
  [data-animation][data-animation-delay='100'][data-animation-delay='100'] {
    animation-delay: 0.1s; }
  [data-animation][data-animation-delay='200'][data-animation-delay='200'] {
    animation-delay: 0.2s; }
  [data-animation][data-animation-delay='300'][data-animation-delay='300'] {
    animation-delay: 0.3s; }
  [data-animation][data-animation-delay='400'][data-animation-delay='400'] {
    animation-delay: 0.4s; }
  [data-animation][data-animation-delay='500'][data-animation-delay='500'] {
    animation-delay: 0.5s; }
  [data-animation][data-animation-delay='600'][data-animation-delay='600'] {
    animation-delay: 0.6s; }
  [data-animation][data-animation-delay='700'][data-animation-delay='700'] {
    animation-delay: 0.7s; }
  [data-animation][data-animation-delay='800'][data-animation-delay='800'] {
    animation-delay: 0.8s; }
  [data-animation][data-animation-delay='900'][data-animation-delay='900'] {
    animation-delay: 0.9s; }
  [data-animation][data-animation-delay='1000'][data-animation-delay='1000'] {
    animation-delay: 1s; }
  [data-animation][data-animation-delay='1100'][data-animation-delay='1100'] {
    animation-delay: 1.1s; }
  [data-animation][data-animation-delay='1200'][data-animation-delay='1200'] {
    animation-delay: 1.2s; }
  [data-animation][data-animation-delay='1300'][data-animation-delay='1300'] {
    animation-delay: 1.3s; }
  [data-animation][data-animation-delay='1400'][data-animation-delay='1400'] {
    animation-delay: 1.4s; }
  [data-animation][data-animation-delay='1500'][data-animation-delay='1500'] {
    animation-delay: 1.5s; }
  [data-animation][data-animation-delay='1600'][data-animation-delay='1600'] {
    animation-delay: 1.6s; }
  [data-animation][data-animation-delay='1700'][data-animation-delay='1700'] {
    animation-delay: 1.7s; }
  [data-animation][data-animation-delay='1800'][data-animation-delay='1800'] {
    animation-delay: 1.8s; }
  [data-animation][data-animation-delay='1900'][data-animation-delay='1900'] {
    animation-delay: 1.9s; }
  [data-animation][data-animation-delay='2000'][data-animation-delay='2000'] {
    animation-delay: 2s; }
  [data-animation][data-animation-delay='2100'][data-animation-delay='2100'] {
    animation-delay: 2.1s; }
  [data-animation][data-animation-delay='2200'][data-animation-delay='2200'] {
    animation-delay: 2.2s; }
  [data-animation][data-animation-delay='2300'][data-animation-delay='2300'] {
    animation-delay: 2.3s; }
  [data-animation][data-animation-delay='2400'][data-animation-delay='2400'] {
    animation-delay: 2.4s; }
  [data-animation][data-animation-delay='2500'][data-animation-delay='2500'] {
    animation-delay: 2.5s; }
  [data-animation][data-animation-delay='2600'][data-animation-delay='2600'] {
    animation-delay: 2.6s; }
  [data-animation][data-animation-delay='2700'][data-animation-delay='2700'] {
    animation-delay: 2.7s; }
  [data-animation][data-animation-delay='2800'][data-animation-delay='2800'] {
    animation-delay: 2.8s; }
  [data-animation][data-animation-delay='2900'][data-animation-delay='2900'] {
    animation-delay: 2.9s; }
  [data-animation][data-animation-delay='3000'][data-animation-delay='3000'] {
    animation-delay: 3s; }
  [data-animation][data-animation-delay='3100'][data-animation-delay='3100'] {
    animation-delay: 3.1s; }
  [data-animation][data-animation-delay='3200'][data-animation-delay='3200'] {
    animation-delay: 3.2s; }
  [data-animation][data-animation-delay='3300'][data-animation-delay='3300'] {
    animation-delay: 3.3s; }
  [data-animation][data-animation-delay='3400'][data-animation-delay='3400'] {
    animation-delay: 3.4s; }
  [data-animation][data-animation-delay='3500'][data-animation-delay='3500'] {
    animation-delay: 3.5s; }
  [data-animation][data-animation-delay='3600'][data-animation-delay='3600'] {
    animation-delay: 3.6s; }
  [data-animation][data-animation-delay='3700'][data-animation-delay='3700'] {
    animation-delay: 3.7s; }
  [data-animation][data-animation-delay='3800'][data-animation-delay='3800'] {
    animation-delay: 3.8s; }
  [data-animation][data-animation-delay='3900'][data-animation-delay='3900'] {
    animation-delay: 3.9s; }
  [data-animation][data-animation-delay='4000'][data-animation-delay='4000'] {
    animation-delay: 4s; } }

@media (prefers-reduced-motion: reduce) {
  [data-animation] {
    animation-duration: 0.001s !important;
    animation-delay: 0.001s !important; } }

/**
 * Custom fonts
 *
 * Fonts used by Indebuurt
 * Montserrat - For titles
 * Font weights: Bold
 * Link: https://fonts.google.com/specimen/Montserrat
 *
 * Open Sans - For body texts
 * Font weights: regular, regular italic, bold, bold italic
 * Link: https://fonts.google.com/specimen/Open+Sans
 * ----------------------------------------------------------------------------
 */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: local("Montserrat Bold"), local("Montserrat-Bold"), url("assets/fonts/montserrat-bold.woff2") format("woff2"), url("assets/fonts/montserrat-bold.woff") format("woff"); }

@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: local("Montserrat Medium"), local("Montserrat-Medium"), url("assets/fonts/montserrat-medium.woff2") format("woff2"), url("assets/fonts/montserrat-medium.woff") format("woff"); }

@font-face {
  font-family: 'Open Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: local("Open Sans Regular"), local("OpenSans-Regular"), url("assets/fonts/open-sans-regular.woff2") format("woff2"), url("assets/fonts/open-sans-regular.woff") format("woff"); }

@font-face {
  font-family: 'Open Sans';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: local("Open Sans Italic"), local("OpenSans-Italic"), url("assets/fonts/open-sans-regular-italic.woff2") format("woff2"), url("assets/fonts/open-sans-regular-italic.woff") format("woff"); }

@font-face {
  font-family: 'Open Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: local("Open Sans Bold"), local("OpenSans-Bold"), url("assets/fonts/open-sans-bold.woff2") format("woff2"), url("assets/fonts/open-sans-bold.woff") format("woff"); }

@font-face {
  font-family: 'Open Sans';
  font-style: Italic;
  font-weight: 700;
  font-display: swap;
  src: local("Open Sans Bold Italic"), local("OpenSans-BoldItalic"), url("assets/fonts/open-sans-bold-italic.woff2") format("woff2"), url("assets/fonts/open-sans-bold-italic.woff") format("woff"); }

/**
 * WordPress-specific styles.
 * ----------------------------------------------------------------------------
 */
.alignnone {
  margin: 5px 20px 20px 0; }

.aligncenter,
div.aligncenter {
  display: block;
  margin: 5px auto 5px auto; }

.alignright {
  float: right;
  margin: 5px 0 20px 20px; }

.alignleft {
  float: left;
  margin: 5px 20px 20px 0; }

a img.alignright {
  float: right;
  margin: 5px 0 20px 20px; }

a img.alignnone {
  margin: 5px 20px 20px 0; }

a img.alignleft {
  float: left;
  margin: 5px 20px 20px 0; }

a img.aligncenter {
  display: block;
  margin-left: auto;
  margin-right: auto; }

.wp-caption {
  background: #fff;
  border: 1px solid #f0f0f0;
  max-width: 96%;
  /* Image does not overflow the content area */
  padding: 5px 3px 10px;
  text-align: center; }

.wp-caption.alignnone {
  margin: 5px 20px 20px 0; }

.wp-caption.alignleft {
  margin: 5px 20px 20px 0; }

.wp-caption.alignright {
  margin: 5px 0 20px 20px; }

.wp-caption img {
  border: 0 none;
  height: auto;
  margin: 0;
  max-width: 98.5%;
  padding: 0;
  width: auto; }

.wp-caption p.wp-caption-text {
  font-size: 11px;
  line-height: 17px;
  margin: 0;
  padding: 0 4px 5px; }

.gallery {
  display: flex;
  flex-flow: row wrap;
  justify-content: center;
  margin-bottom: calc(1.5 * 1rem); }

.gallery-item {
  display: inline-block;
  margin-right: 16px;
  margin-bottom: 16px;
  text-align: center;
  vertical-align: top;
  width: 100%; }

.gallery-columns-2 .gallery-item {
  max-width: calc((100% - 16px * 1) / 2); }

.gallery-columns-2 .gallery-item:nth-of-type(2n + 2) {
  margin-right: 0; }

.gallery-columns-3 .gallery-item {
  max-width: calc((100% - 16px * 2) / 3); }

.gallery-columns-3 .gallery-item:nth-of-type(3n + 3) {
  margin-right: 0; }

.gallery-columns-4 .gallery-item {
  max-width: calc((100% - 16px * 3) / 4); }

.gallery-columns-4 .gallery-item:nth-of-type(4n + 4) {
  margin-right: 0; }

.gallery-columns-5 .gallery-item {
  max-width: calc((100% - 16px * 4) / 5); }

.gallery-columns-5 .gallery-item:nth-of-type(5n + 5) {
  margin-right: 0; }

.gallery-columns-6 .gallery-item {
  max-width: calc((100% - 16px * 5) / 6); }

.gallery-columns-6 .gallery-item:nth-of-type(6n + 6) {
  margin-right: 0; }

.gallery-columns-7 .gallery-item {
  max-width: calc((100% - 16px * 6) / 7); }

.gallery-columns-7 .gallery-item:nth-of-type(7n + 7) {
  margin-right: 0; }

.gallery-columns-8 .gallery-item {
  max-width: calc((100% - 16px * 7) / 8); }

.gallery-columns-8 .gallery-item:nth-of-type(8n + 8) {
  margin-right: 0; }

.gallery-columns-9 .gallery-item {
  max-width: calc((100% - 16px * 8) / 9); }

.gallery-columns-9 .gallery-item:nth-of-type(9n + 9) {
  margin-right: 0; }

.gallery-item:last-of-type {
  padding-right: 0; }

.gallery-caption {
  display: block;
  padding: 0.5rem; }

.gallery-item > div > a {
  display: block; }

@media screen and (max-width: 600px) {
  #wpadminbar {
    position: fixed; } }

/**
 * Global styles and elements used throughout the site.
 * ----------------------------------------------------------------------------
 */
::-moz-selection {
  background: #F90023;
  color: #ffffff; }

::selection {
  background: #F90023;
  color: #ffffff; }

html {
  min-height: 100%;
  overflow-x: hidden;
  overflow-y: scroll; }
  html.scroll-disabled {
    overflow-y: hidden; }

a {
  transition: all 0.5s cubic-bezier(0, 0.6, 0.7, 1); }

p:last-child {
  margin-bottom: 0; }

form {
  margin-bottom: 0; }

.video-container {
  position: relative;
  padding-top: 0;
  padding-bottom: 56.25%;
  height: 0;
  opacity: 0;
  transition: opacity 0.5s cubic-bezier(0, 0.6, 0.7, 1); }
  .video-container iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border: none; }
  .video-container.active {
    opacity: 1; }

button {
  background: transparent; }

.mychannels {
  position: relative;
  z-index: 1; }

.localfocusvisual,
[src*='localfocuswidgets.net'] {
  width: 100%;
  height: 34.375rem;
  overflow: hidden;
  border: 0; }

.entry__content iframe:not([src*='youtube.com']):not([src*='vimeo.com']) {
  width: 100%;
  border: 0;
  min-height: 18.75rem; }

.color-primary {
  color: #F90023; }

/**
 * Typography
 * ----------------------------------------------------------------------------
 */
body {
  font-family: "Open Sans", "Helvetica", Arial, sans-serif;
  font-size: 100%;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale; }

h1, .h1,
h2, .h2,
h3, .h3,
h4, .h4,
h5, .h5,
h6, .h6 {
  font-family: "Montserrat", "Verdana", Arial, sans-serif;
  margin-bottom: 0.5rem; }

h1,
.h1 {
  font-size: 1.25rem;
  line-height: 1.2; }
  @media print, screen and (min-width: 70.25em) {
    h1,
    .h1 {
      font-size: 2.625rem;
      line-height: 1.09524; } }

h2,
.h2 {
  font-size: 1.25rem;
  line-height: 1.2; }
  @media print, screen and (min-width: 70.25em) {
    h2,
    .h2 {
      font-size: 2rem;
      line-height: 1.0625; } }

h3,
.h3 {
  font-size: 1.125rem;
  line-height: 1.11111; }
  @media print, screen and (min-width: 70.25em) {
    h3,
    .h3 {
      font-size: 1.5rem;
      line-height: 1.25; } }

h4,
.h4 {
  font-size: 1.125rem;
  line-height: 1.11111; }

h5,
.h5 {
  font-size: 1.125rem;
  line-height: 1.11111; }

h6,
.h6 {
  font-size: 1rem;
  line-height: 1.11111; }

p {
  margin-bottom: 1rem; }
  p:last-child {
    margin-bottom: 0; }

ul,
ol {
  margin: 0 0 1rem 1rem; }

blockquote p:before {
  content: '“'; }

blockquote p:after {
  content: '”'; }

blockquote cite {
  color: #797979; }

/* Foundation; The XY Grid is included by default; Documentation at <http://foundation.zurb.com/sites/docs/> */
/**
 * Foundation for Sites
 * Version 6.7.1
 * https://get.foundation
 * Licensed under MIT Open Source
 */
html[data-external-widget] {
  margin: 0 !important;
  background-color: #ffffff; }

.external-widget * {
  font-family: "Montserrat", "Verdana", Arial, sans-serif; }

.external-widget a {
  text-decoration: none; }

.external-widget .column {
  padding: 0; }

.external-widget .ew-container {
  border: 1px solid #F4F4F4; }
  .external-widget .ew-container--padding {
    padding: 0.9375rem 0.9375rem 0.25rem 0.9375rem; }
  .external-widget .ew-container--bg-color {
    background-color: rgba(210, 75, 39, 0.05); }

.ew-header {
  width: 100%;
  padding: .7rem 1rem;
  background-color: #F90023;
  display: flex;
  justify-content: space-between;
  align-items: center; }

.ew-header__city {
  font-size: 0.875rem; }

.ew-header__logo {
  max-width: 120px;
  margin-right: .7rem; }

.ew-header__link {
  font-size: 0.875rem; }

.ew-header__link a, .ew-header__city a {
  color: #ffffff; }
  .ew-header__link a:visited, .ew-header__city a:visited {
    color: #ffffff; }

.ew-header__container {
  display: flex;
  font-size: 1.125rem;
  font-weight: bold;
  align-items: center; }

.ew-header__city {
  color: #ffffff;
  margin-top: 5px; }

.external-widget .ew-flex {
  display: flex;
  height: 100%;
  flex-direction: column;
  padding: 1rem 0; }
  .external-widget .ew-flex .ew-section-col,
  .external-widget .ew-flex .ew-section-full {
    display: flex;
    flex-direction: column;
    width: 100%; }
  .external-widget .ew-flex .ew-section-col {
    margin-top: 1rem; }
  @media screen and (min-width: 35em) {
    .external-widget .ew-flex {
      flex-direction: row;
      flex-wrap: wrap; }
      .external-widget .ew-flex .ew-section-full {
        width: 100%; }
      .external-widget .ew-flex .ew-section-col {
        width: 50%; } }
  @media screen and (min-width: 43.375em) {
    .external-widget .ew-flex {
      flex-direction: row; }
      .external-widget .ew-flex .ew-section-col,
      .external-widget .ew-flex .ew-section-full {
        width: 33%; }
        .external-widget .ew-flex .ew-section-col--1, .external-widget .ew-flex .ew-section-col--2,
        .external-widget .ew-flex .ew-section-full--1,
        .external-widget .ew-flex .ew-section-full--2 {
          width: 66%; }
        .external-widget .ew-flex .ew-section-col--3, .external-widget .ew-flex .ew-section-col--4,
        .external-widget .ew-flex .ew-section-full--3,
        .external-widget .ew-flex .ew-section-full--4 {
          width: 50%; }
      .external-widget .ew-flex .ew-section-col {
        margin-top: 0; }
      .external-widget .ew-flex .ew-section-full .ew-featured-post {
        margin-right: 0; } }

.external-widget .ew-featured-post {
  display: flex;
  height: 100%; }
  .external-widget .ew-featured-post:hover {
    transform: scale(1.03) translateY(-3px) translateZ(0);
    box-shadow: 0 10px 15px rgba(0, 0, 0, 0.15); }

.external-widget .ew-featured-post__container {
  position: relative;
  width: 100%;
  padding-top: 56.25%;
  overflow: hidden;
  z-index: -1;
  border-radius: 8px; }
  @media screen and (min-width: 35em) {
    .external-widget .ew-featured-post__container {
      padding-top: 30%; } }
  .external-widget .ew-featured-post__container .wp-post-image {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    width: 100%;
    object-fit: cover; }

.external-widget .ew-featured-post__opacity {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.3); }

.external-widget .ew-featured-post__title {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  padding: 1rem;
  color: #ffffff;
  font-size: 1.125rem;
  line-height: 1.3125rem;
  font-weight: bold; }

.external-widget .external-widget__header h2 {
  color: #000000;
  font-size: 1.125rem;
  font-weight: bold;
  margin: 0; }

.external-widget .ew-section {
  margin: 0 1rem; }

.external-widget .popular-posts__item {
  display: flex;
  align-items: top;
  margin: .9rem 0; }
  .external-widget .popular-posts__item:hover .popular-posts__item-number {
    transform: scale(1.03) translateY(-3px) translateZ(0);
    box-shadow: 0 10px 15px rgba(0, 0, 0, 0.15); }
  .external-widget .popular-posts__item:hover .popular-posts__item-title {
    color: #F90023; }

.external-widget .popular-posts__item-number {
  background-color: #F90023;
  color: #ffffff;
  font-size: 0.875rem;
  font-weight: bold;
  border-radius: 100px;
  text-align: center;
  width: 22px;
  height: 22px;
  flex: 0 0 22px;
  line-height: 22px;
  margin-right: .5rem;
  transition: all 0.5s cubic-bezier(0, 0.6, 0.7, 1); }

.external-widget .popular-posts__item-title, .external-widget .new-posts__item-title, .external-widget .partner-posts__item-title {
  color: #000000;
  font-size: 0.6875rem;
  line-height: 0.8125rem;
  font-weight: 600;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  transition: all 0.5s cubic-bezier(0, 0.6, 0.7, 1); }
  .external-widget .popular-posts__item-title--1, .external-widget .popular-posts__item-title--2, .external-widget .popular-posts__item-title--3, .external-widget .popular-posts__item-title--4, .external-widget .new-posts__item-title--1, .external-widget .new-posts__item-title--2, .external-widget .new-posts__item-title--3, .external-widget .new-posts__item-title--4, .external-widget .partner-posts__item-title--1, .external-widget .partner-posts__item-title--2, .external-widget .partner-posts__item-title--3, .external-widget .partner-posts__item-title--4 {
    font-size: 0.9375rem;
    line-height: 0.9375rem; }

.external-widget .new-posts__item, .external-widget .partner-posts__item {
  display: flex;
  margin: .5rem 0; }
  .external-widget .new-posts__item:hover .new-posts__item-thumbnail,
  .external-widget .new-posts__item:hover .partner-posts__item-thumbnail, .external-widget .partner-posts__item:hover .new-posts__item-thumbnail,
  .external-widget .partner-posts__item:hover .partner-posts__item-thumbnail {
    transform: scale(1.03) translateY(-3px) translateZ(0);
    box-shadow: 0 10px 15px rgba(0, 0, 0, 0.15); }
  .external-widget .new-posts__item:hover .new-posts__item-title,
  .external-widget .new-posts__item:hover .partner-posts__item-title, .external-widget .partner-posts__item:hover .new-posts__item-title,
  .external-widget .partner-posts__item:hover .partner-posts__item-title {
    color: #F90023; }

.external-widget .new-posts__item-thumbnail, .external-widget .partner-posts__item-thumbnail {
  position: relative;
  height: 50px;
  flex: 0 0 50px;
  margin-right: .5rem;
  background: #F4F4F4;
  border-radius: 3px;
  transition: all 0.5s cubic-bezier(0, 0.6, 0.7, 1); }
  .external-widget .new-posts__item-thumbnail .wp-post-image, .external-widget .partner-posts__item-thumbnail .wp-post-image {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 5px; }

.external-widget .new-posts__item-container, .external-widget .partner-posts__item-container {
  display: flex;
  flex-direction: column;
  justify-content: space-between; }

.external-widget .new-posts__item-partner {
  color: #797979;
  font-size: 0.625rem; }
  .external-widget .new-posts__item-partner .company {
    white-space: nowrap;
    color: #F90023; }

.external-widget .partner-posts {
  padding: .6rem 1rem .5rem 1rem;
  margin: 0; }

.external-widget .parnter-posts__item-container {
  margin: 0 -1rem; }
  @media screen and (min-width: 35em) {
    .external-widget .parnter-posts__item-container {
      display: flex; } }

.external-widget .partner-posts__item {
  flex: 1 0 0;
  margin: .5rem 1rem; }

.external-widget .partner-posts__item-partner {
  font-size: 0.75rem;
  color: #F90023; }

.ew-column-grid {
  display: flex;
  flex-direction: column; }

.ew-column-grid__header {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  margin-bottom: .5rem; }
  .ew-column-grid__header h2 {
    font-size: 1.25rem;
    margin-bottom: 0; }
  .ew-column-grid__header .link {
    display: none; }

.ew-column-grid__cell {
  width: 100%; }

.ew-column-grid__inner-block {
  margin: 0.9375rem 0; }
  .ew-column-grid__inner-block h2 {
    font-size: 1.25rem; }

.ew-column-grid__inner-block--offer {
  margin: 0; }

.ew-column-grid__footer {
  text-align: center; }

@media screen and (min-width: 35em) {
  .ew-column-grid__header {
    margin-bottom: 0; }
  .ew-column-grid {
    flex-direction: row; }
  .ew-column-grid__cell {
    width: calc(50% - 15px); }
    .ew-column-grid__cell:last-child {
      margin-left: auto; }
  .ew-column-grid__inner-block {
    margin: 0.9375rem 0 0 0; }
  .ew-column-grid__inner-block--offer {
    margin: .5rem 0; } }

@media print, screen and (min-width: 40em) {
  .ew-column-grid__header .link {
    display: inline-block; }
  .ew-column-grid__footer {
    text-align: start; }
    .ew-column-grid__footer .link {
      display: none; } }

.ew-post-item {
  display: flex;
  flex-direction: row;
  color: #000000;
  margin-bottom: 0.625rem;
  transition: 0.5s cubic-bezier(0, 0.6, 0.7, 1); }
  .ew-post-item:hover, .ew-post-item:focus {
    color: #F90023;
    transform: translateY(-5px); }

.ew-post-item__thumbnail {
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 33 36' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16.75 6.397c8.78 0 9.744 8.266 9.751 11.821l.006 3.785v1.175l.001.27v2.941l-.001.2v.4l-.04 8.666h-3.334l-.005-3.734v-3.99-.99l.001-.246v-.746l.001-.255v-2.99-.365l-.001-.777-.005-3.337c-.01-5.279-1.817-8.403-6.373-8.403h-.102c-4.857.05-6.847 3.218-6.86 8.472l.031 17.361H6.413v-8.133l-.005-1.786v-.472l-.002-.746V21.87v-.344l.001-.726.005-2.513C6.438 7.648 13.556 6.428 16.616 6.397zM17.749 0c2.74.017 15.2.99 15.2 17.281v1.692c.004 3.307.016 5.11.02 8.584v1.157l.03 6.941H29.59v-7.43c.002-1.44.01-2.596.017-3.657.016-2.26-.036-4.046-.036-7.216 0-13.033-9.565-13.905-11.861-13.926h-.145c-.223 0-.346.01-.346.01-.276-.03-13.841-1.447-13.841 14.84V26.59l-.001.043v.227l-.002.578-.004 1.809v.664l-.001.35v1.981l-.023 3.414H0v-17.37C0 3.945 8.111.011 17.219.011c0 0 .127-.009.36-.01z' fill='%23FFF' fill-rule='evenodd'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center;
  background-size: 1.5rem;
  background-color: #D8D8D8;
  order: 0;
  flex-shrink: 0;
  position: relative;
  width: 6.5rem;
  height: 4.875rem;
  border-radius: 5px;
  margin-bottom: 0;
  margin-right: 0.625rem;
  overflow: hidden;
  z-index: 0;
  transition: 0.5s cubic-bezier(0, 0.6, 0.7, 1); }
  .ew-post-item__thumbnail img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover; }
  .ew-post-item:hover .ew-post-item__thumbnail {
    box-shadow: 0 10px 15px rgba(0, 0, 0, 0.15); }

.ew-post-item__popular-number {
  position: absolute;
  bottom: 0.625rem;
  left: 0.625rem;
  width: 1.5rem;
  height: 1.5rem;
  background-color: #F90023;
  color: #ffffff;
  line-height: 1.625rem;
  font-weight: bold;
  text-align: center;
  border-radius: 50%;
  font-size: 0.75rem; }

.ew-post-item__content {
  display: flex;
  flex-direction: column; }

.ew-post-item__title {
  font-family: "Montserrat", "Verdana", Arial, sans-serif;
  font-size: 0.75rem;
  line-height: 1rem;
  margin-bottom: 0.1875rem;
  pointer-events: none;
  transition: color 0.25s cubic-bezier(0, 0.6, 0.7, 1); }

.ew-post-item__sponsor {
  color: #797979;
  font-family: "Montserrat", "Verdana", Arial, sans-serif;
  font-size: 0.625rem;
  line-height: 0.8125rem;
  margin-top: auto;
  margin-bottom: 0;
  pointer-events: none; }

.ew-post-item__sponsor-name {
  color: #F90023;
  text-decoration: none;
  position: relative;
  z-index: 2;
  pointer-events: all; }
  .ew-post-item__sponsor-name:hover, .ew-post-item__sponsor-name:focus {
    color: #c6001c; }

.ew-post-item-featured {
  display: flex;
  height: 11.125rem; }
  .ew-post-item-featured:hover {
    transform: scale(1.03) translateY(-3px) translateZ(0);
    box-shadow: 0 10px 15px rgba(0, 0, 0, 0.15); }

.ew-post-item-featured__container {
  position: relative;
  width: 100%;
  overflow: hidden;
  z-index: -1;
  border-radius: 8px; }
  .ew-post-item-featured__container .wp-post-image {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    width: 100%;
    object-fit: cover; }

.ew-post-item-featured__opacity {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.3); }

.ew-post-item-featured__title {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  padding: 1rem;
  color: #ffffff;
  font-size: 1rem;
  line-height: 1.1875rem;
  font-weight: bold; }

.ew-post-item-featured__sponsor {
  font-size: 0.625rem;
  line-height: 0.8125rem;
  color: #ffffff;
  margin-top: 0.625rem;
  font-weight: normal; }
  .ew-post-item-featured__sponsor span {
    font-weight: bold; }

.ew-post-item__list-item {
  color: #797979;
  display: flex;
  font-size: 0.625rem;
  line-height: 0.875rem;
  margin-bottom: 0.3125rem; }
  .ew-post-item__list-item:last-child {
    margin-bottom: 0; }

.ew-post-item__list-item__icon {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  font-size: 0.75rem;
  width: 0.75rem;
  height: 0.875rem;
  margin-right: 0.5rem; }

.ew-tabs ul {
  display: flex;
  margin: 0 0 1.25rem 0; }
  .ew-tabs ul li {
    margin: 0 1.125rem 0 0; }
    .ew-tabs ul li button {
      font-size: 1.25rem;
      font-weight: bold;
      border-bottom: 3px solid #000000;
      transition: 0.5s cubic-bezier(0, 0.6, 0.7, 1);
      padding-bottom: 0.1875rem; }
      .ew-tabs ul li button[aria-selected='false'] {
        border-color: transparent;
        opacity: .5; }

.ew-tabs .ew-tab-content {
  display: none; }
  .ew-tabs .ew-tab-content[aria-hidden='false'] {
    display: block; }

/* Shared (styles used in both website and editor) */
/* Components */
/**
 * Button.
 *
 * .button (standard element)
 * .button--red (red button)
 * .button--orange (orange button)
 * .button--contain (width based on text in the button)
 * .button--with-icon (icon on the right side)
 * .button--with-icon-infront (icon on the left side)
 * ----------------------------------------------------------------------------
 */
.button {
  position: relative;
  display: inline-block;
  background-color: #ADADAD;
  font-weight: bold;
  color: #ffffff;
  text-decoration: none;
  width: 100%;
  text-align: left;
  transition: all 0.5s cubic-bezier(0, 0.6, 0.7, 1);
  border: 2px solid #ADADAD;
  padding: 0.5625rem 0.8125rem;
  font-size: 0.625rem;
  line-height: 0.8125rem;
  border-radius: 0.1875rem; }
  .button.button--medium {
    padding: 0.6875rem 1.25rem;
    font-size: 0.875rem;
    line-height: 1.5rem; }
  @media print, screen and (min-width: 40em) {
    .button {
      padding: 0.6875rem 1.25rem;
      font-size: 0.875rem;
      line-height: 1.5rem; } }
  @media print, screen and (min-width: 70.25em) {
    .button {
      padding: 0.6875rem 1.25rem; } }
  .button.button--outline:not(:hover), .button.button--outline:not(:focus), .is-style-outline .button:not(:hover), .is-style-outline .button:not(:focus) {
    color: #ADADAD;
    background-color: transparent; }
  .button.button--outline:hover, .button.button--outline:focus, .is-style-outline .button:hover, .is-style-outline .button:focus {
    color: #ffffff;
    background-color: #F90023;
    border-color: #F90023; }
  .button:hover, .button:focus {
    box-shadow: 0 10px 15px rgba(0, 0, 0, 0.2);
    transform: translateY(-4px);
    color: #ffffff;
    background-color: #949494;
    border-color: #949494;
    transform: translateY(-3px);
    cursor: pointer; }

.button--red {
  background-color: #F90023;
  color: #ffffff;
  border-color: #F90023; }
  .button--red.button--outline:not(:hover), .button--red.button--outline:not(:focus), .is-style-outline .button--red:not(:hover), .is-style-outline .button--red:not(:focus) {
    color: #F90023;
    background-color: transparent; }
  .button--red.button--outline:hover, .button--red.button--outline:focus, .is-style-outline .button--red:hover, .is-style-outline .button--red:focus {
    color: #ffffff;
    background-color: #F90023;
    border-color: #F90023; }
  .button--red:hover, .button--red:focus {
    color: #ffffff;
    background-color: #c6001c;
    border-color: #c6001c; }

.button--orange {
  background-color: #FF7E1F;
  color: #ffffff;
  border-color: #FF7E1F; }
  .button--orange.button--outline:not(:hover), .button--orange.button--outline:not(:focus), .is-style-outline .button--orange:not(:hover), .is-style-outline .button--orange:not(:focus) {
    color: #FF7E1F;
    background-color: transparent; }
  .button--orange.button--outline:hover, .button--orange.button--outline:focus, .is-style-outline .button--orange:hover, .is-style-outline .button--orange:focus {
    color: #ffffff;
    background-color: #F90023;
    border-color: #F90023; }
  .button--orange:hover, .button--orange:focus {
    color: #ffffff;
    background-color: #eb6400;
    border-color: #eb6400; }

.button--green {
  background-color: #239525;
  color: #ffffff;
  border-color: #239525; }
  .button--green.button--outline:not(:hover), .button--green.button--outline:not(:focus), .is-style-outline .button--green:not(:hover), .is-style-outline .button--green:not(:focus) {
    color: #239525;
    background-color: transparent; }
  .button--green.button--outline:hover, .button--green.button--outline:focus, .is-style-outline .button--green:hover, .is-style-outline .button--green:focus {
    color: #ffffff;
    background-color: #F90023;
    border-color: #F90023; }
  .button--green:hover, .button--green:focus {
    color: #ffffff;
    background-color: #196c1b;
    border-color: #196c1b; }

.button--gray-light {
  background-color: #F4F4F4;
  color: #535353;
  border-color: #F4F4F4; }
  .button--gray-light.button--outline:not(:hover), .button--gray-light.button--outline:not(:focus), .is-style-outline .button--gray-light:not(:hover), .is-style-outline .button--gray-light:not(:focus) {
    color: #F4F4F4;
    background-color: transparent; }
  .button--gray-light.button--outline:hover, .button--gray-light.button--outline:focus, .is-style-outline .button--gray-light:hover, .is-style-outline .button--gray-light:focus {
    color: #535353;
    background-color: #F90023;
    border-color: #F90023; }
  .button--gray-light:hover, .button--gray-light:focus {
    color: #535353;
    background-color: #dbdbdb;
    border-color: #dbdbdb; }

.button--contain {
  width: auto; }

.button--external {
  display: flex !important;
  flex-direction: row;
  justify-content: space-between;
  align-items: center; }

:root .button--with-icon {
  display: flex;
  padding-right: 3.125rem; }
  :root .button--with-icon svg, :root .button--with-icon i, :root .button--with-icon img {
    font-size: 1.5rem;
    position: absolute;
    right: 0.75rem;
    top: 50%;
    transform: translateY(-50%); }
  :root .button--with-icon img {
    width: 1.5rem;
    height: 1.5rem;
    filter: invert(100%); }

:root .button--with-icon-infront {
  display: flex;
  padding-left: 2.5rem; }
  :root .button--with-icon-infront svg, :root .button--with-icon-infront i, :root .button--with-icon-infront img {
    font-size: 1.125rem;
    position: absolute;
    left: 0.5625rem;
    top: 50%;
    transform: translateY(-50%); }

@media print, screen and (min-width: 70.25em) {
  :root .button--with-icon-infront {
    padding-left: 3.125rem; }
    :root .button--with-icon-infront svg, :root .button--with-icon-infront i {
      font-size: 1.5rem;
      left: 0.75rem; } }

:root .button--icon-chevron {
  padding-left: 1.625rem; }
  :root .button--icon-chevron svg, :root .button--icon-chevron i {
    font-size: 0.625rem;
    left: 0.75rem; }

@media print, screen and (min-width: 40em) {
  :root .button--icon-chevron {
    padding-left: 2.5rem; }
    :root .button--icon-chevron svg, :root .button--icon-chevron i {
      font-size: 0.75rem;
      left: 1.25rem; } }

.company-item {
  position: relative;
  display: flex;
  flex-direction: column;
  background-color: #F4F4F4;
  overflow: hidden;
  border-radius: 0.1875rem; }
  .entry .company-item + * {
    margin-top: 1.875rem; }

.company-item__container {
  order: 2;
  flex-grow: 1; }

.company-item__content {
  padding: 1.25rem; }

.company-item__title {
  color: #000000;
  margin-bottom: 0.25rem; }

.company-item__address {
  font-size: 0.875rem;
  line-height: 1.57143;
  color: #535353; }

.company-item__image {
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 33 36' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16.75 6.397c8.78 0 9.744 8.266 9.751 11.821l.006 3.785v1.175l.001.27v2.941l-.001.2v.4l-.04 8.666h-3.334l-.005-3.734v-3.99-.99l.001-.246v-.746l.001-.255v-2.99-.365l-.001-.777-.005-3.337c-.01-5.279-1.817-8.403-6.373-8.403h-.102c-4.857.05-6.847 3.218-6.86 8.472l.031 17.361H6.413v-8.133l-.005-1.786v-.472l-.002-.746V21.87v-.344l.001-.726.005-2.513C6.438 7.648 13.556 6.428 16.616 6.397zM17.749 0c2.74.017 15.2.99 15.2 17.281v1.692c.004 3.307.016 5.11.02 8.584v1.157l.03 6.941H29.59v-7.43c.002-1.44.01-2.596.017-3.657.016-2.26-.036-4.046-.036-7.216 0-13.033-9.565-13.905-11.861-13.926h-.145c-.223 0-.346.01-.346.01-.276-.03-13.841-1.447-13.841 14.84V26.59l-.001.043v.227l-.002.578-.004 1.809v.664l-.001.35v1.981l-.023 3.414H0v-17.37C0 3.945 8.111.011 17.219.011c0 0 .127-.009.36-.01z' fill='%23FFF' fill-rule='evenodd'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center;
  background-size: 1.5rem;
  background-color: #D8D8D8;
  order: 1;
  flex-shrink: 0;
  width: 100%;
  height: 100%;
  min-height: 11.125rem;
  position: relative;
  overflow: hidden;
  z-index: 0;
  border-top-left-radius: 3px;
  border-top-right-radius: 3px; }
  .company-item__image img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    margin-right: 0; }
  .company-item__image a {
    pointer-events: none; }

:root .company-item__image-link {
  position: absolute;
  display: block;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
  pointer-events: all; }

.company-item__footer .button {
  display: block;
  width: auto; }

@media print, screen and (min-width: 40em) and (max-width: 70.24875em) {
  .company-item {
    flex-direction: row; }
  .company-item__image {
    width: 11.25rem;
    height: unset;
    min-height: unset;
    border-top-right-radius: 0; }
  .company-item__status .open-status {
    font-size: 0.5rem;
    line-height: 0.625rem;
    padding: 0.25rem 0.375rem;
    border-width: 1px; } }

@media only screen and (min-width: 787px) and (max-width: 1124px) {
  .company-item__title,
  .company-item__address {
    padding-right: 5rem; }
  .company-item__status {
    position: absolute;
    top: 1.0625rem;
    right: 1.1875rem; } }

@media print, screen and (min-width: 70.25em) {
  .company-item__address {
    font-size: 1rem;
    line-height: 1.75; }
  .company-item__image {
    border-top-left-radius: 5px;
    border-top-right-radius: 5px; } }

/**
 * Variation
 */
@media screen and (min-width: 30em) {
  .company-item--horizontal {
    flex-direction: row; }
    .company-item--horizontal .company-item__image {
      width: 11.25rem;
      height: unset;
      min-height: unset;
      border-top-right-radius: 0; } }

@media screen and (min-width: 81.25em) {
  .company-item--horizontal .company-item__image {
    width: 17.9375rem; } }

@media print, screen and (min-width: 70.25em) {
  .entry__preside--desktop .company-item {
    position: sticky;
    top: calc(130px + 2.5rem);
    /* header = 130px + spacing */ } }

/**
 * Icon Button.

 * .icon-button (standard element)
 * ----------------------------------------------------------------------------
 */
.icon-button {
  color: #ffffff;
  background-color: #F90023;
  border: 2px solid #F90023;
  font-size: 1.125rem;
  line-height: 1;
  font-weight: 500;
  text-decoration: none;
  width: 2.1875rem;
  height: 2.1875rem;
  border-radius: 6.25rem;
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  vertical-align: middle;
  cursor: pointer;
  transition: all 0.5s cubic-bezier(0, 0.6, 0.7, 1); }
  @media print, screen and (min-width: 70.25em) {
    .icon-button {
      font-size: 1.375rem;
      width: 3rem;
      height: 3rem; } }
  .icon-button svg path {
    fill: #ffffff; }
  .icon-button.icon-button--outline:not(:hover), .icon-button.icon-button--outline:not(:focus) {
    color: #F90023;
    background-color: transparent; }
  .icon-button.icon-button--outline:hover, .icon-button.icon-button--outline:focus {
    color: #ffffff;
    background-color: #000000;
    border-color: #000000; }
  .icon-button:hover, .icon-button:focus {
    color: #ffffff;
    background-color: #000000;
    border-color: #000000;
    box-shadow: 0 10px 15px rgba(0, 0, 0, 0.2);
    transform: translateY(-4px); }

.icon-button--white {
  color: #F90023;
  background-color: #ffffff;
  border: 2px solid #ffffff; }
  .icon-button--white svg path {
    fill: #F90023; }
  .icon-button--white.icon-button--outline:not(:hover), .icon-button--white.icon-button--outline:not(:focus) {
    color: #ffffff; }
  .icon-button--white.icon-button--outline:hover, .icon-button--white.icon-button--outline:focus {
    color: #ffffff;
    background-color: #000000;
    border-color: #000000; }
  .icon-button--white:hover, .icon-button--white:focus {
    color: #ffffff;
    background-color: #000000;
    border-color: #000000; }

.icon-button--cross {
  font-size: 0.9375rem; }

.icon-button--static {
  font-size: 1.0625rem;
  width: 2.5rem;
  height: 2.5rem; }

.icon-button--small {
  font-size: 1rem;
  width: 2.1875rem;
  height: 2.1875rem; }

.icon-button--transparent {
  color: #797979;
  background-color: transparent;
  border: 2px solid transparent; }
  .icon-button--transparent svg path {
    fill: #797979; }
  .icon-button--transparent.icon-button--outline:not(:hover), .icon-button--transparent.icon-button--outline:not(:focus) {
    color: transparent; }
  .icon-button--transparent.icon-button--outline:hover, .icon-button--transparent.icon-button--outline:focus {
    color: #000000;
    background-color: transparent;
    border-color: transparent; }
  .icon-button--transparent:hover, .icon-button--transparent:focus {
    color: #000000;
    background-color: transparent;
    border-color: transparent; }

.icon-button--transparent.is-active {
  color: #000000; }

.icon-button--slider {
  color: #ffffff;
  background-color: transparent;
  border: 2px solid transparent; }
  .icon-button--slider svg path {
    fill: #ffffff; }
  .icon-button--slider.icon-button--outline:not(:hover), .icon-button--slider.icon-button--outline:not(:focus) {
    color: transparent; }
  .icon-button--slider.icon-button--outline:hover, .icon-button--slider.icon-button--outline:focus {
    color: #ffffff;
    background-color: transparent;
    border-color: transparent; }
  .icon-button--slider:hover, .icon-button--slider:focus {
    color: #ffffff;
    background-color: transparent;
    border-color: transparent; }
  .icon-button--slider:hover, .icon-button--slider:focus {
    background-color: rgba(0, 0, 0, 0.4);
    box-shadow: none; }

@media print, screen and (min-width: 70.25em) {
  .icon-button--cross {
    font-size: 1.375rem; } }

/**
 * Share button

 * .share-button (standard element)
 * ----------------------------------------------------------------------------
 */
.share-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  vertical-align: middle;
  width: 4.375rem;
  height: 2.8125rem;
  font-size: 1.3125rem;
  background: #ADADAD;
  border-radius: 3px;
  color: #ffffff; }
  .share-button:hover, .share-button:focus {
    background: #949494;
    box-shadow: 0 10px 15px rgba(0, 0, 0, 0.2);
    transform: translateY(-4px); }
  .share-button--facebook {
    background: #3B5998; }
    .share-button--facebook:hover, .share-button--facebook:focus {
      background: #2d4373; }
  .share-button--twitter {
    background: #1DA1F2; }
    .share-button--twitter:hover, .share-button--twitter:focus {
      background: #0c85d0; }
  .share-button--whatsapp {
    background: #25D366; }
    .share-button--whatsapp:hover, .share-button--whatsapp:focus {
      background: #1da851; }

@media print, screen and (min-width: 40em) {
  .share-button {
    width: 5rem; } }

@media print, screen and (min-width: 70.25em) {
  .share-button {
    width: 4.25rem; } }

/**
 * Variation
 */
@media print, screen and (min-width: 40em) {
  .share-button--flexible {
    width: 100%; } }

/**
 * Forms
 * ----------------------------------------------------------------------------
 */
/**
 * Basic styling
 */
input:not([type]),
input[type='text'],
input[type='password'],
input[type='email'],
input[type='url'],
input[type='date'],
input[type='month'],
input[type='time'],
input[type='datetime'],
input[type='datetime-local'],
input[type='week'],
input[type='number'],
input[type='search'],
input[type='tel'],
textarea {
  background: #ffffff;
  border: 1px solid #ADADAD;
  padding: 10px 15px;
  box-shadow: none;
  border-radius: 3px;
  box-sizing: border-box;
  outline: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none; }
  input:not([type]):focus, input:not([type]):focus-within,
  input[type='text']:focus,
  input[type='text']:focus-within,
  input[type='password']:focus,
  input[type='password']:focus-within,
  input[type='email']:focus,
  input[type='email']:focus-within,
  input[type='url']:focus,
  input[type='url']:focus-within,
  input[type='date']:focus,
  input[type='date']:focus-within,
  input[type='month']:focus,
  input[type='month']:focus-within,
  input[type='time']:focus,
  input[type='time']:focus-within,
  input[type='datetime']:focus,
  input[type='datetime']:focus-within,
  input[type='datetime-local']:focus,
  input[type='datetime-local']:focus-within,
  input[type='week']:focus,
  input[type='week']:focus-within,
  input[type='number']:focus,
  input[type='number']:focus-within,
  input[type='search']:focus,
  input[type='search']:focus-within,
  input[type='tel']:focus,
  input[type='tel']:focus-within,
  textarea:focus,
  textarea:focus-within {
    border: 1px solid #F90023; }
  input:not([type])::-webkit-input-placeholder, input[type='text']::-webkit-input-placeholder, input[type='password']::-webkit-input-placeholder, input[type='email']::-webkit-input-placeholder, input[type='url']::-webkit-input-placeholder, input[type='date']::-webkit-input-placeholder, input[type='month']::-webkit-input-placeholder, input[type='time']::-webkit-input-placeholder, input[type='datetime']::-webkit-input-placeholder, input[type='datetime-local']::-webkit-input-placeholder, input[type='week']::-webkit-input-placeholder, input[type='number']::-webkit-input-placeholder, input[type='search']::-webkit-input-placeholder, input[type='tel']::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
    color: #535353; }
  input:not([type]):-moz-placeholder, input[type='text']:-moz-placeholder, input[type='password']:-moz-placeholder, input[type='email']:-moz-placeholder, input[type='url']:-moz-placeholder, input[type='date']:-moz-placeholder, input[type='month']:-moz-placeholder, input[type='time']:-moz-placeholder, input[type='datetime']:-moz-placeholder, input[type='datetime-local']:-moz-placeholder, input[type='week']:-moz-placeholder, input[type='number']:-moz-placeholder, input[type='search']:-moz-placeholder, input[type='tel']:-moz-placeholder, textarea:-moz-placeholder {
    color: #535353; }
  input:not([type])::-moz-placeholder, input[type='text']::-moz-placeholder, input[type='password']::-moz-placeholder, input[type='email']::-moz-placeholder, input[type='url']::-moz-placeholder, input[type='date']::-moz-placeholder, input[type='month']::-moz-placeholder, input[type='time']::-moz-placeholder, input[type='datetime']::-moz-placeholder, input[type='datetime-local']::-moz-placeholder, input[type='week']::-moz-placeholder, input[type='number']::-moz-placeholder, input[type='search']::-moz-placeholder, input[type='tel']::-moz-placeholder, textarea::-moz-placeholder {
    color: #535353; }
  input:not([type]):-ms-input-placeholder, input[type='text']:-ms-input-placeholder, input[type='password']:-ms-input-placeholder, input[type='email']:-ms-input-placeholder, input[type='url']:-ms-input-placeholder, input[type='date']:-ms-input-placeholder, input[type='month']:-ms-input-placeholder, input[type='time']:-ms-input-placeholder, input[type='datetime']:-ms-input-placeholder, input[type='datetime-local']:-ms-input-placeholder, input[type='week']:-ms-input-placeholder, input[type='number']:-ms-input-placeholder, input[type='search']:-ms-input-placeholder, input[type='tel']:-ms-input-placeholder, textarea:-ms-input-placeholder {
    color: #535353; }

/**
 * Textarea
 */
textarea {
  line-height: 1.25rem; }

/**
 * Checkbox and radio
 */
input[type="checkbox"],
input[type="radio"] {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  outline: none !important;
  cursor: pointer;
  margin-top: 0.3125rem;
  margin-right: 0.625rem;
  margin-bottom: 0;
  position: relative;
  display: inline-flex;
  flex-shrink: 0;
  align-items: center;
  justify-content: center;
  width: 1.0625rem;
  height: 1.0625rem;
  border: 1px solid #ADADAD;
  background-color: #ffffff;
  vertical-align: top;
  transition: all 0.25s cubic-bezier(0, 0.6, 0.7, 1); }
  input[type="checkbox"]::before,
  input[type="radio"]::before {
    content: '';
    position: absolute;
    background-image: none;
    background-color: transparent;
    width: 100%;
    height: 100%;
    transition: all 0.25s cubic-bezier(0, 0.6, 0.7, 1); }
  input[type="checkbox"] + label,
  input[type="radio"] + label {
    margin: 0;
    cursor: pointer; }
  input[type="checkbox"]:hover, input[type="checkbox"]:focus,
  input[type="radio"]:hover,
  input[type="radio"]:focus {
    border-color: #F90023; }
  input[type="checkbox"]:checked,
  input[type="radio"]:checked {
    border-color: #ADADAD; }
    input[type="checkbox"]:checked::before,
    input[type="radio"]:checked::before {
      color: #F90023; }

input[type="checkbox"] {
  border-radius: 0.125rem; }
  input[type="checkbox"]::before {
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 8 7' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform='translate(-2 -3)' fill='none' fill-rule='evenodd'%3E%3Crect stroke='%23ADADAD' stroke-width='.6' fill='%23FFF' x='-.3' y='-.3' width='12.6' height='12.6' rx='2'/%3E%3Cpath d='M4.693 9.16l5.246-5.298a.214.214 0 000-.3l-.495-.5a.209.209 0 00-.297 0L4.544 7.711l-1.69-1.708a.209.209 0 00-.298 0l-.495.5a.214.214 0 000 .3L4.396 9.16a.209.209 0 00.297 0z' fill='%23F90023'/%3E%3C/g%3E%3C/svg%3E");
    background-size: 0.625rem;
    background-position: center;
    background-repeat: no-repeat;
    opacity: 0; }
  input[type="checkbox"]:checked::before {
    opacity: 1; }

input[type="radio"] {
  border-radius: 100%;
  overflow: hidden; }
  input[type="radio"]::before {
    width: 0.4375rem;
    height: 0.4375rem;
    border-radius: 1.25rem; }
  input[type="radio"]:checked::before {
    background-color: #F90023; }

/**
 * Buttons
 */
button,
input[type='button'],
input[type='reset'],
input[type='submit'] {
  cursor: pointer; }

/**
 * Select
 */
select {
  color: #535353;
  background-color: #ffffff;
  border: 1px solid #ADADAD;
  width: 100%;
  padding: 0.5625rem;
  line-height: 1.25rem;
  border-radius: 3px;
  appearance: none;
  -moz-appearance: none;
  -webkit-appearance: none;
  background-image: linear-gradient(45deg, transparent 50%, #ADADAD 50%), linear-gradient(135deg, #ADADAD 50%, transparent 50%), linear-gradient(to right, #ADADAD, #ADADAD);
  background-position: calc(100% - 20px) calc(1em + 2px), calc(100% - 15px) calc(1em + 2px), calc(100% - 2.5em) 0.5em;
  background-size: 5px 5px, 5px 5px, 1px 1.5em;
  background-repeat: no-repeat; }
  select:focus {
    border-color: #F90023;
    outline: none; }

/**
 * Disabled
 */
button[disabled],
input[disabled],
select[disabled] {
  cursor: default; }

/**
 * Search
 */
input[type='search'] {
  -webkit-appearance: textfield; }

input[type='search']::-webkit-search-cancel-button,
input[type='search']::-webkit-search-decoration {
  -webkit-appearance: none; }

/**
 * Color
 */
input[type='color'] {
  background: #ffffff;
  border: 1px solid #ADADAD; }

/**
 * Range
 */
input[type='range'] {
  margin: 0;
  padding: 0;
  width: 100%;
  height: 0.75rem;
  background: transparent;
  font: 1em/1 arial, sans-serif; }
  input[type='range'], input[type='range']::-webkit-slider-thumb {
    -webkit-appearance: none; }
  input[type='range']::-webkit-slider-runnable-track {
    box-sizing: border-box;
    border: none;
    width: 100%;
    height: 0.125rem;
    background: #ADADAD; }
  input[type='range']::-moz-range-track {
    box-sizing: border-box;
    border: none;
    width: 100%;
    height: 0.125rem;
    background: #ADADAD; }
  input[type='range']::-ms-track {
    box-sizing: border-box;
    border: none;
    width: 100%;
    height: 0.125rem;
    background: #ADADAD; }
  input[type='range']::-webkit-slider-thumb {
    margin-top: -0.3125rem;
    box-sizing: border-box;
    border: none;
    width: 0.75rem;
    height: 0.75rem;
    border-radius: 50%;
    background: #F90023; }
  input[type='range']::-moz-range-thumb {
    box-sizing: border-box;
    border: none;
    width: 0.75rem;
    height: 0.75rem;
    border-radius: 50%;
    background: #F90023; }
  input[type='range']::-ms-thumb {
    margin-top: 0;
    box-sizing: border-box;
    border: none;
    width: 0.75rem;
    height: 0.75rem;
    border-radius: 50%;
    background: #F90023; }
  input[type='range']::-ms-tooltip {
    display: none; }

/**
 * React Datepicker
 */
.react-datepicker-wrapper {
  width: 100%;
  margin-bottom: 0.375rem; }
  .react-datepicker-wrapper input {
    font-size: 0.875rem;
    width: 100%;
    padding-left: 2.5rem;
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 16 18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.889 0c.245 0 .444.199.444.444v.889h1.334c.736 0 1.333.597 1.333 1.334V16c0 .736-.597 1.333-1.333 1.333H1.333A1.333 1.333 0 010 16V2.667c0-.737.597-1.334 1.333-1.334h1.333V.444a.444.444 0 11.89 0l-.001.889h8.889V.444c0-.245.2-.444.445-.444zm2.222 6.222H.89V16c0 .228.171.416.393.441l.051.003h13.334a.445.445 0 00.441-.392l.003-.052V6.222zm-.444-4H1.333a.445.445 0 00-.441.393l-.003.052v2.666H15.11V2.667a.445.445 0 00-.393-.442l-.051-.003z' fill='%23797979' fill-rule='evenodd'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-size: 1.125rem;
    background-position: 11px center; }

@media print, screen and (min-width: 40em) {
  .react-datepicker-wrapper input {
    font-size: 1rem; } }

.icon {
  display: inline;
  width: 1em;
  height: 1em;
  fill: currentColor; }

/**
 * Open status
 * If a company, venue or something like that is open or closed.
 *
 * Classes:
 * .open-status (standard element)
 * .open-status--open (open state)
 * .open-status--closed (closed state)
 * .open-status--on-request (opened on request)
 * .open-status--bullet (bullet style)
 * .open-status--bullet-only-mobile (bullet style only on mobile, desktop the normal version)
 * ----------------------------------------------------------------------------
 */
.open-status {
  display: inline-block;
  font-size: 0.75rem;
  line-height: 1rem;
  padding: 0.375rem 0.625rem;
  color: #ffffff;
  background-color: #239525;
  border: 1px solid #239525;
  font-weight: bold;
  border-radius: 0.1875rem; }
  @media print, screen and (min-width: 40em) {
    .open-status {
      border-width: 2px; } }
  @media print, screen and (min-width: 70.25em) {
    .open-status {
      font-size: 0.875rem;
      line-height: 1.125rem;
      padding: 0.4375rem 0.6875rem; } }
  .open-status.open-status--outline {
    color: #239525;
    background-color: transparent; }

.open-status--closed {
  background-color: #797979;
  border-color: #797979; }
  .open-status--closed.open-status--outline {
    color: #797979; }

.open-status--on-request {
  background-color: #239525;
  border-color: #239525; }
  .open-status--on-request.open-status--outline {
    color: #239525; }

.open-status--bullet {
  width: 5px;
  height: 5px;
  padding: 0;
  text-indent: -9999px; }
  .open-status--bullet.open-status--bullet--open {
    background-color: #239525; }
  .open-status--bullet.open-status--bullet--closed {
    background-color: #797979; }

@media print, screen and (max-width: 39.99875em) {
  .open-status--bullet-only-mobile {
    width: 5px;
    height: 5px;
    padding: 0;
    text-indent: -9999px; }
    .open-status--bullet-only-mobile.open-status--bullet-only-mobile--open {
      background-color: #239525; }
    .open-status--bullet-only-mobile.open-status--bullet-only-mobile--closed {
      background-color: #797979; } }

@media print, screen and (max-width: 39.99875em) {
  .open-status--small {
    font-size: 0.5rem;
    line-height: 0.625rem;
    padding: 0.25rem 0.375rem; } }

@media print, screen and (min-width: 40em) and (max-width: 70.24875em) {
  .open-status--small,
  .open-status--medium {
    font-size: 0.75rem;
    line-height: 0.9375rem;
    padding: 0.25rem 0.625rem; } }

/**
 * Tags
 * Tags under a button
 *
 * Classes:
 * .tag (standard element)
 * ----------------------------------------------------------------------------
 */
.tag {
  display: inline-block;
  padding: 10px 15px 10px 32px;
  border: 2px solid #F4F4F4;
  background-color: #ffffff;
  background-image: url("data:image/svg+xml,%3Csvg width='7' height='11' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform='translate(-15 -15)' fill='none' fill-rule='evenodd'%3E%3Crect stroke='%23EBEBEB' stroke-width='2' x='1' y='1' width='158' height='38' rx='3'/%3E%3Cpath d='M21.046 20.485l-4.555-4.555a.563.563 0 00-.795 0l-.531.531a.562.562 0 00-.001.795l3.61 3.627-3.61 3.626a.562.562 0 000 .795l.532.531c.22.22.576.22.795 0l4.555-4.555a.563.563 0 000-.795z' fill='%23797979'/%3E%3C/g%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: 14px 12px;
  font-size: 0.875rem;
  font-weight: bold;
  text-decoration: none;
  color: #797979;
  border-radius: 0.1875rem; }
  .tag:hover, .tag:focus {
    border-color: #ffffff;
    box-shadow: 0 10px 15px rgba(0, 0, 0, 0.2);
    transform: translateY(-4px); }

/**
* Category tags
* Category tags that are used on multiple places
*
* Classes:
* .category-tag (standard element)
* ----------------------------------------------------------------------------
*/
.category-tag {
  display: inline-block;
  font-size: 0.875rem;
  padding: 0.4375rem 0.875rem;
  border-radius: 30px;
  background-color: #F90023;
  color: #ffffff;
  font-weight: bold;
  text-decoration: none; }
  .category-tag:not(.category-tag--static):hover, .category-tag:not(.category-tag--static):focus {
    background-color: #000000;
    box-shadow: 0 10px 15px rgba(0, 0, 0, 0.2);
    transform: translateY(-4px); }

.category-tag--gray {
  color: #ffffff;
  background-color: #ADADAD; }

@media print, screen and (max-width: 70.24875em) {
  .category-tag--static {
    padding: 0.375rem 0.625rem;
    font-size: 0.75rem; } }

/**
 * Link
 * Link styles
 *
 * Classes:
 * .link (standard)
 * .link--more (standard grey)
 * .link--more-red (standard red)
 * .link--icon (link with icon)
 * .link-icon-infront (link with icon)
 * ----------------------------------------------------------------------------
 */
.link {
  font-size: 0.875rem;
  line-height: 1.57143;
  color: #535353;
  font-weight: bold;
  text-decoration: none;
  transition: color 0.5s cubic-bezier(0, 0.6, 0.7, 1); }
  @media print, screen and (min-width: 70.25em) {
    .link {
      font-size: 1rem;
      line-height: 1.75; } }
  .link svg {
    height: .7em; }
  .link--icon svg, .link--icon-infront svg {
    transition: transform 0.5s cubic-bezier(0, 0.6, 0.7, 1); }
  .link--icon:hover svg, .link--icon:focus svg, .link--icon-infront:hover svg, .link--icon-infront:focus svg {
    transform: translateX(4px); }

:root .link--black {
  color: #000000; }

:root .link--red {
  color: #F90023; }

:root .link--gray {
  color: #535353; }

.link--arrow {
  display: inline-flex; }
  .link--arrow svg {
    height: auto;
    max-height: 1.5625rem;
    transition: all 0.5s cubic-bezier(0, 0.6, 0.7, 1); }

.link--prev span:first-child {
  order: 1; }

.link--prev span:last-child {
  order: 0;
  margin-right: 0.625rem; }

.link--prev:hover svg, .link--prev:focus svg {
  transform: translateX(-4px); }

.link--next span:first-child {
  order: 0; }

.link--next span:last-child {
  order: 1;
  margin-left: 0.625rem; }

.link--next:hover svg, .link--next:focus svg {
  transform: translateX(4px); }

.link--small {
  font-size: 0.8125rem; }

.badge {
  display: inline-block;
  font-family: "Montserrat", "Verdana", Arial, sans-serif;
  font-size: 0.625rem;
  color: #ffffff;
  background-color: #F90023;
  border: 1px solid #F90023;
  padding: 0.125rem 0.375rem 0.1875rem 0.375rem;
  border-radius: 3px; }

.badge--medium {
  border: 2px solid #F90023;
  padding: 0.25rem 0.375rem; }

.badge--large {
  border: 2px solid #F90023;
  padding: 0.25rem 0.375rem;
  height: fit-content; }

.badge--xlarge {
  border: 2px solid #F90023;
  height: fit-content;
  display: inline-block;
  font-size: 0.75rem;
  line-height: 1rem;
  padding: 0.375rem 0.625rem;
  font-weight: bold;
  border-radius: 0.1875rem; }

.badge--outline {
  color: #F90023;
  background-color: transparent; }

@media print, screen and (min-width: 40em) {
  .badge--large {
    padding: 0.3125rem 0.4375rem;
    font-size: 0.75rem;
    line-height: 1rem; } }

@media print, screen and (min-width: 70.25em) {
  .badge {
    padding: 0.25rem 0.375rem 0.3125rem 0.375rem;
    font-size: 0.6875rem; }
  .badge--medium {
    padding: 0.25rem 0.375rem;
    font-size: 0.75rem; }
  .badge--large {
    padding: 0.5625rem 0.75rem;
    font-size: 0.875rem;
    line-height: 1.125rem; }
  .badge--xlarge {
    font-size: 0.875rem;
    line-height: 1.125rem;
    padding: 0.4375rem 0.6875rem; } }

/**
 * Sponsored.
 * Triggered by shortcode [$]
 * ----------------------------------------------------------------------------
 */
.sponsored {
  font-weight: bold;
  font-size: 1rem;
  color: #000000; }

.search-item {
  position: relative;
  color: #535353; }

.search-item__anchor {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1; }

.search-item__inner {
  width: 100%; }

.search-item__main {
  min-height: 4.375rem;
  padding-left: 5.3125rem;
  margin-bottom: 0.625rem; }

.search-item__header {
  margin-bottom: 0.5rem; }

.search-item__header--cancelled {
  margin-bottom: 0.5rem;
  justify-content: normal; }
  .search-item__header--cancelled .badge {
    vertical-align: text-bottom;
    margin-right: 0.5rem; }
  .search-item__header--cancelled .search-item__title {
    display: inline; }

.search-item__title {
  color: #000000;
  font-size: 0.75rem;
  line-height: 1rem;
  margin-bottom: 0.3125rem;
  transition: color 0.5s cubic-bezier(0, 0.6, 0.7, 1); }

.search-item__address,
.search-item__icon-text {
  display: flex;
  font-size: 0.625rem;
  line-height: 1rem;
  margin-bottom: 0; }
  .search-item__address span:first-child,
  .search-item__icon-text span:first-child {
    order: 2; }
  .search-item__address span:last-child,
  .search-item__icon-text span:last-child {
    order: 1;
    font-size: 0.75rem;
    width: 0.625rem;
    height: 1rem;
    margin-right: 0.375rem;
    display: flex;
    align-items: center; }

.search-item__company {
  color: #535353;
  font-size: 0.625rem;
  line-height: 1rem;
  margin-bottom: 0.25rem;
  transition: color 0.5s cubic-bezier(0, 0.6, 0.7, 1); }

.search-item__fulfilled {
  margin-bottom: 0.25rem; }

.search-item__list--opening-times {
  display: flex;
  align-items: center; }
  .search-item__list--opening-times li:first-child {
    margin-right: 0.625rem; }
  .search-item__list--opening-times li:last-child {
    font-size: 0.625rem;
    line-height: 1rem;
    color: #797979; }

.search-item__list--icons {
  display: none; }
  .search-item__list--icons li {
    display: flex;
    font-size: 0.625rem;
    line-height: 1rem;
    text-decoration: none; }
    .search-item__list--icons li span:first-child {
      order: 2; }
    .search-item__list--icons li span:last-child {
      order: 1;
      flex-shrink: 0;
      font-size: 0.75rem;
      width: 0.625rem;
      height: 1rem;
      margin-right: 0.375rem;
      display: flex;
      align-items: center; }
    .search-item__list--icons li .icon--check {
      color: #239525; }

.search-item__image {
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 33 36' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16.75 6.397c8.78 0 9.744 8.266 9.751 11.821l.006 3.785v1.175l.001.27v2.941l-.001.2v.4l-.04 8.666h-3.334l-.005-3.734v-3.99-.99l.001-.246v-.746l.001-.255v-2.99-.365l-.001-.777-.005-3.337c-.01-5.279-1.817-8.403-6.373-8.403h-.102c-4.857.05-6.847 3.218-6.86 8.472l.031 17.361H6.413v-8.133l-.005-1.786v-.472l-.002-.746V21.87v-.344l.001-.726.005-2.513C6.438 7.648 13.556 6.428 16.616 6.397zM17.749 0c2.74.017 15.2.99 15.2 17.281v1.692c.004 3.307.016 5.11.02 8.584v1.157l.03 6.941H29.59v-7.43c.002-1.44.01-2.596.017-3.657.016-2.26-.036-4.046-.036-7.216 0-13.033-9.565-13.905-11.861-13.926h-.145c-.223 0-.346.01-.346.01-.276-.03-13.841-1.447-13.841 14.84V26.59l-.001.043v.227l-.002.578-.004 1.809v.664l-.001.35v1.981l-.023 3.414H0v-17.37C0 3.945 8.111.011 17.219.011c0 0 .127-.009.36-.01z' fill='%23FFF' fill-rule='evenodd'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center;
  background-size: 1.5rem;
  background-color: #D8D8D8;
  flex-shrink: 0;
  position: absolute;
  top: 0;
  left: 0;
  width: 4.375rem;
  height: 4.375rem;
  margin-bottom: 0;
  margin-right: 0.9375rem;
  overflow: hidden;
  z-index: 0;
  border-radius: 0.1875rem; }
  .search-item__image img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover; }

.search-item--nvb .search-item__image {
  background-color: #ffffff; }
  .search-item--nvb .search-item__image img {
    object-fit: contain; }

.search-item__badge {
  position: absolute;
  right: 0.3125rem;
  bottom: 0.3125rem;
  z-index: 1; }

.search-item__badge--gallery {
  color: #ffffff;
  display: inline-flex;
  align-items: center;
  font-weight: bold;
  width: auto;
  left: 0.1875rem;
  right: unset;
  bottom: 0.3125rem;
  min-width: 1.875rem;
  background-color: rgba(0, 0, 0, 0.4);
  padding: 0.1875rem;
  border-radius: 3px; }
  .search-item__badge--gallery span:first-child {
    font-size: 0.6875rem;
    margin-right: 0.3125rem;
    line-height: 0; }
  .search-item__badge--gallery span:last-child {
    font-size: 0.5rem;
    line-height: 0.5rem; }

.search-item__actions {
  flex-wrap: wrap; }

.search-item__action {
  width: 100%;
  margin-bottom: 0.25rem; }
  .search-item__action.search-item__action--full {
    width: 100%;
    flex-basis: 100%;
    margin: 0.25rem 0; }
  .search-item__action .button {
    max-width: 100%;
    text-align: left; }
  .search-item__action:last-child {
    margin-bottom: 0; }
  .search-item__action a {
    position: relative;
    z-index: 2; }

.search-item__retailer {
  max-height: 1.5rem; }

.search-item__anchor:hover + .search-item__inner .search-item__title, .search-item__anchor:focus + .search-item__inner .search-item__title {
  color: #F90023; }

@media screen and (min-width: 20em) {
  .search-item__actions {
    display: flex;
    align-items: center;
    margin-left: -0.125rem;
    margin-right: -0.125rem; }
  .search-item__action {
    width: calc(50% - 4px);
    margin-left: 0.125rem;
    margin-right: 0.125rem;
    margin-bottom: 0; } }

@media screen and (min-width: 43.75em) {
  .search-item__action .button {
    min-width: 12.5rem; } }

@media print, screen and (min-width: 40em) {
  .search-item__inner {
    display: flex; }
  .search-item__content {
    order: 1;
    flex-grow: 1;
    display: flex;
    flex-direction: column; }
  .search-item__main {
    min-height: 0;
    padding-left: 0;
    margin-bottom: 0.25rem; }
  .search-item__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 0.375rem; }
  .search-item__title {
    font-size: 1rem;
    line-height: 1.25rem;
    margin-bottom: 0; }
  .search-item__address,
  .search-item__icon-text {
    font-size: 0.875rem;
    line-height: 1.75rem;
    margin-bottom: 0.25rem; }
    .search-item__address span:last-child,
    .search-item__icon-text span:last-child {
      font-size: 1.0625rem;
      width: 0.8125rem;
      height: 1.75rem;
      margin-right: 0.5rem; }
  .search-item__company {
    font-size: 0.875rem;
    line-height: 1.75rem;
    margin-bottom: 0.25rem; }
  .search-item__list--opening-times {
    position: relative; }
    .search-item__list--opening-times li:first-child {
      order: 0;
      margin-right: 0; }
    .search-item__list--opening-times li:last-child {
      order: 1;
      font-size: 0.75rem;
      line-height: 1.75rem;
      position: absolute;
      bottom: 0;
      transform: translateY(calc(100% + 0.3125rem));
      width: 100%;
      text-align: center; }
  .search-item__list--icons {
    display: block; }
    .search-item__list--icons li {
      font-size: 0.875rem;
      line-height: 1.75rem; }
      .search-item__list--icons li span:last-child {
        font-size: 1rem;
        width: 1rem;
        height: 1.75rem;
        margin-right: 0.625rem; }
  .search-item__footer {
    margin-top: auto; }
  .search-item__actions {
    justify-content: space-between; }
  .search-item__image {
    order: 0;
    flex-shrink: 0;
    position: relative;
    top: unset;
    left: unset;
    width: 15rem;
    height: 11.25rem; }
  .search-item__badge--gallery {
    padding: 0.375rem;
    left: 0.75rem;
    bottom: 0.75rem;
    right: unset; }
    .search-item__badge--gallery span:first-child {
      font-size: 1.125rem;
      margin-right: 0.625rem; }
    .search-item__badge--gallery span:last-child {
      font-size: 0.875rem;
      line-height: 0.875rem;
      margin-right: 0.3125rem; } }

@media screen and (min-width: 48.75em) {
  .search-item__action {
    width: auto; }
  .search-item__action--more-info {
    margin-left: auto; } }

@media print, screen and (min-width: 70.25em) {
  .search-item__title {
    font-size: 1.5rem;
    line-height: 1.875rem; }
  .search-item__list--opening-times li:last-child {
    font-size: 0.875rem; }
  .search-item__address,
  .search-item__icon-text {
    font-size: 1rem;
    line-height: 1.75rem;
    margin-bottom: 0.75rem; }
    .search-item__address span:last-child,
    .search-item__icon-text span:last-child {
      font-size: 1.125rem;
      width: 0.875rem;
      height: 1.75rem;
      margin-right: 0.625rem; }
  .search-item__company {
    font-size: 1.125rem;
    line-height: 1.75rem;
    margin-bottom: 0.9375rem; }
  .search-item__fulfilled {
    margin-bottom: 0.9375rem; }
  .search-item__list--icons li {
    font-size: 1rem;
    line-height: 1.75rem; }
    .search-item__list--icons li span:last-child {
      font-size: 1.125rem;
      width: 1.125rem;
      height: 1.75rem;
      margin-right: 0.625rem; }
  .search-item__retailer {
    display: inline-block; }
  .search-item__image {
    width: 20rem;
    height: 15rem;
    margin-right: 1.25rem; }
  .search-item__badge {
    right: 0.9375rem;
    bottom: 0.9375rem; }
  .search-item__badge--gallery {
    right: unset; }
  .search-item__actions {
    justify-content: flex-end; } }

@media screen and (min-width: 90em) {
  .search-item__image {
    margin-right: 2.5rem; } }

/**
 * Variations
 */
.cell--search-ad {
  position: relative; }

.cell--search-item:not(:last-child) .search-item,
.cell--search-ad:not(:last-child) {
  margin-bottom: 1.25rem; }
  .cell--search-item:not(:last-child) .search-item::after,
  .cell--search-ad:not(:last-child)::after {
    position: absolute;
    content: '';
    bottom: -0.625rem;
    left: 0;
    background: #D8D8D8;
    height: 0.0625rem;
    width: 100%;
    display: block; }

@media print, screen and (min-width: 40em) {
  .cell--search-item:not(:last-child) .search-item,
  .cell--search-ad:not(:last-child) {
    margin-bottom: 1.625rem; }
    .cell--search-item:not(:last-child) .search-item::after,
    .cell--search-ad:not(:last-child)::after {
      bottom: -0.8125rem; } }

@media print, screen and (min-width: 70.25em) {
  .cell--search-item:not(:last-child) .search-item,
  .cell--search-ad:not(:last-child) .ad {
    margin-bottom: 2.5rem; }
    .cell--search-item:not(:last-child) .search-item::after,
    .cell--search-ad:not(:last-child) .ad::after {
      bottom: -1.25rem; } }

@media screen and (min-width: 48.75em) {
  .search-item--guide .search-item__action--more-info {
    margin-left: 0; } }

.search-item--offer .search-item__header {
  margin-bottom: 0.125rem; }

.search-item--offer .search-item__list--icons {
  display: block; }

.search-item--offer .search-item__footer {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between; }

.search-item--offer .search-item__actions {
  width: 100%;
  justify-content: space-between; }

@media print, screen and (min-width: 70.25em) {
  .search-item--offer .search-item__header {
    margin-bottom: 0.625rem; } }

.search-item--job .icon--logo-nationale-vacaturebank {
  width: auto;
  max-width: 8rem;
  height: auto;
  max-height: 1.5625rem; }

.search-item--job .search-item__header {
  margin-bottom: 0.125rem; }

.search-item--job .search-item__list--icons {
  display: block; }
  .search-item--job .search-item__list--icons li:last-child {
    display: none; }

.search-item--job .search-item__image {
  border: 1px solid #d9d8d9; }

.search-item--job .search-item__actions {
  width: 100%;
  justify-content: space-between; }

@media print, screen and (min-width: 40em) {
  .search-item--job .search-item__list--icons li:last-child {
    display: flex; } }

.search-item--agenda .search-item__header {
  margin-bottom: 0.125rem; }

.search-item--agenda .search-item__list--icons {
  display: block; }
  .search-item--agenda .search-item__list--icons li:nth-of-type(2) {
    display: none; }

.search-item--agenda .search-item__actions {
  width: 100%; }

@media print, screen and (min-width: 40em) {
  .search-item--agenda .search-item__list--icons li:nth-of-type(2) {
    display: flex; }
  .search-item--agenda .search-item__actions {
    justify-content: flex-end; } }

.search-item--suggested .search-item__header {
  margin-bottom: 0.125rem; }

.search-item--suggested .search-item__list--icons {
  display: block; }

@media print, screen and (min-width: 70.25em) {
  .search-item--suggested {
    display: flex;
    height: 100%; }
    .search-item--suggested .search-item__inner {
      height: 100%;
      flex-direction: column; }
    .search-item--suggested .search-item__main {
      margin-bottom: 0.9375rem; }
    .search-item--suggested .search-item__title {
      font-size: 1.125rem;
      line-height: 1.625rem;
      margin-bottom: 0; }
    .search-item--suggested .search-item__company {
      font-size: 1rem;
      line-height: 1.75rem;
      margin-bottom: 0.625rem; }
    .search-item--suggested .search-item__list {
      font-size: 0.875rem; }
    .search-item--suggested .search-item__actions {
      justify-content: flex-end;
      width: 100%; }
    .search-item--suggested .search-item__action {
      width: 100%; }
    .search-item--suggested .search-item__image {
      width: 100%;
      height: 13.125rem;
      margin-right: 0;
      margin-bottom: 0.625rem; } }

@media print, screen and (max-width: 39.99875em) {
  .search-item--large-on-mobile .search-item__inner {
    display: flex;
    flex-direction: column; }
  .search-item--large-on-mobile .search-item__content {
    order: 1; }
  .search-item--large-on-mobile .search-item__main {
    padding-left: 0;
    min-height: 0; }
  .search-item--large-on-mobile .search-item__list--opening-times {
    position: absolute;
    top: 0.75rem;
    right: 0.75rem;
    z-index: 1; }
    .search-item--large-on-mobile .search-item__list--opening-times li {
      margin: 0; }
    .search-item--large-on-mobile .search-item__list--opening-times li:last-child {
      display: none; }
    .search-item--large-on-mobile .search-item__list--opening-times .open-status.open-status--outline.open-status--closed {
      color: #ffffff;
      background-color: #797979;
      border-color: #797979; }
    .search-item--large-on-mobile .search-item__list--opening-times .open-status.open-status--outline.open-status--open {
      color: #ffffff;
      background-color: #239525;
      border-color: #239525; }
  .search-item--large-on-mobile .search-item__icon-text {
    font-size: 0.875rem;
    line-height: 1.375rem; }
    .search-item--large-on-mobile .search-item__icon-text span:last-child {
      font-size: 0.8125rem;
      width: 0.8125rem;
      height: 1.25rem; }
  .search-item--large-on-mobile .search-item__image {
    position: relative;
    order: 0;
    width: 100%;
    height: 9.375rem;
    margin-bottom: 0.625rem; } }

@media print, screen and (min-width: 40em) {
  .search-item--large-on-mobile .search-item__icon-text--category {
    display: none; } }

.search-item--suggested.search-item--large-on-mobile .search-item__image .search-item__title {
  display: none; }

@media print, screen and (max-width: 39.99875em) {
  .search-item--suggested.search-item--large-on-mobile .search-item__image {
    position: relative;
    display: flex;
    z-index: 0; }
    .search-item--suggested.search-item--large-on-mobile .search-item__image::before {
      content: '';
      position: absolute;
      display: block;
      width: 100%;
      height: 100%;
      top: 0;
      left: 0;
      background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) -25%, black 100%);
      opacity: 0.35;
      z-index: 1;
      transition: all 0.5s cubic-bezier(0, 0.6, 0.7, 1); }
    .search-item--suggested.search-item--large-on-mobile .search-item__image .search-item__title {
      display: block;
      position: relative;
      color: #ffffff;
      padding: 0.625rem 1rem;
      margin-top: auto;
      z-index: 1; }
  .search-item--suggested.search-item--large-on-mobile .search-item__anchor:hover + .search-item__inner .search-item__image::before, .search-item--suggested.search-item--large-on-mobile .search-item__anchor:focus + .search-item__inner .search-item__image::before {
    opacity: .7; }
  .search-item--suggested.search-item--large-on-mobile .search-item__anchor:hover + .search-item__inner .search-item__company, .search-item--suggested.search-item--large-on-mobile .search-item__anchor:focus + .search-item__inner .search-item__company {
    color: #F90023; } }

.entry__content .search-item {
  border-bottom: 1px solid #D8D8D8;
  padding-bottom: 1.25rem; }
  .entry__content .search-item:last-child {
    border-bottom: 0; }

/* Search item in entry__content--compact */
@media screen and (min-width: 910px) {
  .entry__content.entry__content--compact .search-item__action .button {
    width: calc(100% - 42px); } }

@media screen and (min-width: 720px) {
  .entry__content.entry__content--compact .search-item .search-item__image {
    width: 12.5rem;
    height: 9.375rem;
    margin-right: 1.25rem; }
  .entry__content.entry__content--compact .search-item .search-item__action {
    width: calc(50% - 4px); }
    .entry__content.entry__content--compact .search-item .search-item__action .button {
      min-width: inherit;
      padding: 0.5rem 0.9375rem; }
  .entry__content.entry__content--compact .search-item .search-item__actions {
    margin-top: 0.625rem; }
  .entry__content.entry__content--compact .search-item .search-item__header {
    margin-bottom: 0.3125rem; }
  .entry__content.entry__content--compact .search-item .search-item__title {
    font-size: 1.25rem; }
  .entry__content.entry__content--compact .search-item .search-item__list--icons li {
    font-size: 0.875rem; } }

@media screen and (min-width: 640px) and (max-width: 720px) {
  .entry__content.entry__content--compact .search-item .search-item__inner {
    display: flex;
    flex-direction: column; }
  .entry__content.entry__content--compact .search-item .search-item__content {
    order: 2; }
  .entry__content.entry__content--compact .search-item .search-item__main {
    padding-left: 0; }
  .entry__content.entry__content--compact .search-item .search-item__image {
    width: 100%;
    height: 0;
    padding-bottom: 75%;
    position: relative;
    order: 1;
    margin-bottom: 1.25rem; } }

/* Search item in entry__content--wide */
@media screen and (min-width: 910px) and (max-width: 1028px) {
  .entry__content.entry__content--wide .search-item .search-item__image {
    width: 10rem;
    height: 7.5rem; } }

@media screen and (min-width: 640px) and (max-width: 910px) {
  .entry__content.entry__content--wide .search-item .search-item__image {
    width: 6.5rem;
    height: 4.875rem; }
  .entry__content.entry__content--wide .search-item .search-item__actions {
    width: calc(100% + 119px);
    margin-left: -119px;
    margin-right: 0;
    margin-top: 0.9375rem; }
    .entry__content.entry__content--wide .search-item .search-item__actions .search-item__action {
      width: calc(50% - 4px); }
    .entry__content.entry__content--wide .search-item .search-item__actions .search-item__action--more-info {
      margin-left: 0; } }

@media print, screen and (max-width: 39.99875em) {
  .search-item .search-item__inner {
    display: flex; }
  .search-item .search-item__content {
    order: 2;
    flex-grow: 1; }
  .search-item .search-item__main {
    padding-left: 0; }
  .search-item .search-item__image {
    width: 6.5rem;
    height: 4.875rem;
    position: relative; } }

@media print, screen and (max-width: 39.99875em) {
  .cell--suggested .search-item.search-item--suggested .search-item__inner {
    flex-direction: row; }
  .cell--suggested .search-item.search-item--suggested .search-item__content {
    width: 100%; }
  .cell--suggested .search-item.search-item--suggested .search-item__image {
    width: 6.5rem;
    height: 4.875rem;
    padding-bottom: 0;
    margin-bottom: 0; }
    .cell--suggested .search-item.search-item--suggested .search-item__image .search-item__title {
      display: none; }
    .cell--suggested .search-item.search-item--suggested .search-item__image .search-item__badge {
      margin: 0; }
  .cell--suggested .search-item.search-item--suggested .search-item__footer {
    display: none; } }

.funda-info {
  margin: 0 !important; }

.funda-info__top,
.funda-info__bottom {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  padding: 1.25rem 0 0;
  margin-left: -1.25rem;
  margin-right: -1.25rem; }
  .funda-info__top > *,
  .funda-info__bottom > * {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-content: center;
    flex-basis: calc(100% - 2.5rem);
    width: calc(100% - 2.5rem);
    min-width: 12.5rem;
    margin-left: 1.25rem;
    margin-right: 1.25rem;
    margin-bottom: 1.25rem; }
    @media print, screen and (min-width: 40em) {
      .funda-info__top > *,
      .funda-info__bottom > * {
        flex-basis: calc(50% - 2.5rem);
        width: calc(50% - 2.5rem); } }
    .funda-info__top > * > *,
    .funda-info__bottom > * > * {
      flex-basis: 100%;
      width: 100%; }

.funda-info__bottom {
  padding-top: 0; }

.funda-info__spacer {
  height: 1px;
  width: 100%;
  display: block;
  background-color: #D9D9D9;
  margin-top: 1.25rem;
  margin-bottom: 1.25rem; }
  .funda-info__spacer.funda-info__spacer--no-margin {
    margin-top: 0;
    margin-bottom: 0; }

.funda-info__label {
  display: block;
  font-family: "Open Sans", "Helvetica", Arial, sans-serif;
  font-weight: 700;
  font-size: 0.875rem;
  color: #000000;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap; }

.funda-info__meta-value {
  display: block;
  font-family: "Open Sans", "Helvetica", Arial, sans-serif;
  font-weight: 400;
  font-size: 0.875rem;
  color: #535353; }

.funda-info__meta-value__sup {
  font-size: 0.75rem; }

.funda-info__list {
  padding: 1.25rem 0;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  margin-left: -0.625rem !important;
  margin-right: -0.625rem !important; }
  .funda-info__list > * {
    display: block;
    flex-basis: calc((100% / 2) - 1.25rem);
    width: calc((100% / 2) - 1.25rem);
    min-width: 9.375rem;
    padding-left: 0.625rem;
    padding-right: 0.625rem;
    margin-left: auto;
    margin-right: auto;
    margin-bottom: 1.875rem;
    text-align: center; }
    @media print, screen and (min-width: 40em) {
      .funda-info__list > * {
        margin-bottom: 1.25rem;
        text-align: left;
        min-width: 13.75rem;
        flex-basis: calc((100% / 3) - 1.25rem);
        width: calc((100% / 3) - 1.25rem);
        margin-left: 0;
        margin-right: 0; } }
  .funda-info__list li::before {
    display: none !important; }

.funda-info__icon {
  color: #000000;
  margin-left: auto;
  margin-right: auto;
  margin-bottom: 0.625rem; }
  @media print, screen and (min-width: 40em) {
    .funda-info__icon {
      margin-left: 0;
      margin-right: 0;
      margin-bottom: 0; } }

.funda-info__meta.funda-info__meta--icon {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap; }
  .funda-info__meta.funda-info__meta--icon .funda-info__icon {
    flex-basis: 1.875rem;
    height: 1.875rem;
    width: 1.875rem;
    display: inline-flex;
    align-self: center; }
    .funda-info__meta.funda-info__meta--icon .funda-info__icon svg {
      width: 100%; }
  .funda-info__meta.funda-info__meta--icon .funda-info__meta-container {
    flex-basis: 100%;
    width: 100%; }
    @media print, screen and (min-width: 40em) {
      .funda-info__meta.funda-info__meta--icon .funda-info__meta-container {
        flex-basis: calc(100% - 3.125rem);
        width: calc(100% - 3.125rem);
        margin-left: 1.25rem; } }
    @media print, screen and (min-width: 70.25em) {
      .funda-info__meta.funda-info__meta--icon .funda-info__meta-container {
        flex-basis: calc(100% - 3.75rem);
        width: calc(100% - 3.75rem);
        margin-left: 1.875rem; } }

.funda-info__meta.funda-info__meta--asking-price .funda-info__label, .funda-info__meta.funda-info__meta--rent-price .funda-info__label {
  font-weight: 400;
  color: #535353; }

.funda-info__meta.funda-info__meta--asking-price .funda-info__meta-value, .funda-info__meta.funda-info__meta--rent-price .funda-info__meta-value {
  font-family: "Montserrat", "Verdana", Arial, sans-serif;
  font-size: 1.5rem;
  font-weight: 700;
  color: #000000; }

.funda-info__meta.funda-info__meta--asking-price .funda-info__meta-value__sup, .funda-info__meta.funda-info__meta--rent-price .funda-info__meta-value__sup {
  font-size: 1.375rem; }

@media print, screen and (min-width: 40em) {
  .funda-info__meta.funda-info__meta--offered-since {
    text-align: right; } }

.funda-info__meta.funda-info__meta--offered-since:nth-child(3) {
  flex-basis: calc(100% - 2.5rem);
  width: calc(100% - 2.5rem); }

.funda-info__meta.funda-info__meta--offered-since .funda-info__label {
  font-weight: 400;
  color: #535353; }

.funda-info__meta.funda-info__meta--offered-since .funda-info__meta-value {
  font-weight: 700;
  color: #000000;
  font-size: 1rem; }

.funda-info__meta.funda-info__meta--offered-since .funda-info__meta-value__sup {
  font-size: 0.875rem; }

@media print, screen and (min-width: 40em) {
  .funda-info__meta.funda-info__meta--photos-funda {
    text-align: right; } }

.funda-info__meta.funda-info__meta--photos-funda .funda-info__meta-value {
  font-style: italic;
  color: #A5A5A5; }
  .funda-info__meta.funda-info__meta--photos-funda .funda-info__meta-value a {
    color: #A5A5A5; }
    .funda-info__meta.funda-info__meta--photos-funda .funda-info__meta-value a:hover {
      color: #F90023; }

/* Blocks */
.post-list__read-more.is-hidden {
  display: none; }

.post-list__item > h1, .post-list__item > h2, .post-list__item > h3, .post-list__item > h4, .post-list__item > h5, .post-list__item > h6, .wp-block-vo-list-item > h1, .wp-block-vo-list-item > h2, .wp-block-vo-list-item > h3, .wp-block-vo-list-item > h4, .wp-block-vo-list-item > h5, .wp-block-vo-list-item > h6 {
  color: #000000;
  margin-bottom: 0.9375rem; }
  .post-list__item > h1:first-child, .post-list__item > h2:first-child, .post-list__item > h3:first-child, .post-list__item > h4:first-child, .post-list__item > h5:first-child, .post-list__item > h6:first-child, .wp-block-vo-list-item > h1:first-child, .wp-block-vo-list-item > h2:first-child, .wp-block-vo-list-item > h3:first-child, .wp-block-vo-list-item > h4:first-child, .wp-block-vo-list-item > h5:first-child, .wp-block-vo-list-item > h6:first-child {
    margin-top: 0; }
  .post-list__item > h1 + *, .post-list__item > h2 + *, .post-list__item > h3 + *, .post-list__item > h4 + *, .post-list__item > h5 + *, .post-list__item > h6 + *, .wp-block-vo-list-item > h1 + *, .wp-block-vo-list-item > h2 + *, .wp-block-vo-list-item > h3 + *, .wp-block-vo-list-item > h4 + *, .wp-block-vo-list-item > h5 + *, .wp-block-vo-list-item > h6 + * {
    margin-top: 0.9375rem; }
  @media print, screen and (min-width: 40em) {
    .post-list__item > h1, .post-list__item > h2, .post-list__item > h3, .post-list__item > h4, .post-list__item > h5, .post-list__item > h6, .wp-block-vo-list-item > h1, .wp-block-vo-list-item > h2, .wp-block-vo-list-item > h3, .wp-block-vo-list-item > h4, .wp-block-vo-list-item > h5, .wp-block-vo-list-item > h6 {
      margin-bottom: 1.25rem; }
      .post-list__item > h1 + *, .post-list__item > h2 + *, .post-list__item > h3 + *, .post-list__item > h4 + *, .post-list__item > h5 + *, .post-list__item > h6 + *, .wp-block-vo-list-item > h1 + *, .wp-block-vo-list-item > h2 + *, .wp-block-vo-list-item > h3 + *, .wp-block-vo-list-item > h4 + *, .wp-block-vo-list-item > h5 + *, .wp-block-vo-list-item > h6 + * {
        margin-top: 1.25rem; } }
  @media print, screen and (min-width: 70.25em) {
    .post-list__item > h1, .post-list__item > h2, .post-list__item > h3, .post-list__item > h4, .post-list__item > h5, .post-list__item > h6, .wp-block-vo-list-item > h1, .wp-block-vo-list-item > h2, .wp-block-vo-list-item > h3, .wp-block-vo-list-item > h4, .wp-block-vo-list-item > h5, .wp-block-vo-list-item > h6 {
      margin-top: 2.5rem; } }

.post-list__item > *:empty:not(iframe), .wp-block-vo-list-item > *:empty:not(iframe) {
  display: none; }

.post-list__item > *:empty + *, .wp-block-vo-list-item > *:empty + * {
  margin-top: 0; }

.post-list__item .linked-articles, .wp-block-vo-list-item .linked-articles {
  padding: 0;
  background-color: transparent; }
  .post-list__item .linked-articles::before, .post-list__item .linked-articles::after, .wp-block-vo-list-item .linked-articles::before, .wp-block-vo-list-item .linked-articles::after {
    display: none; }

.post-list__item .linked-articles__header, .wp-block-vo-list-item .linked-articles__header {
  margin-bottom: 1.25rem; }

.post-list__item-company {
  margin-top: 1.25rem; }

:root .post-list__pagination {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  margin: 1.25rem 0; }
  :root .post-list__pagination li {
    margin: 0.1875rem; }
    @media print, screen and (max-width: 39.99875em) {
      :root .post-list__pagination li {
        margin: 0; }
        :root .post-list__pagination li button {
          margin: 0.1875rem; } }
    :root .post-list__pagination li::before {
      display: none !important; }
    :root .post-list__pagination li:first-child, :root .post-list__pagination li:last-child {
      margin: 0; }

.post-list__button {
  font-size: 0.875rem;
  line-height: 1.57143;
  line-height: 1.75rem;
  text-decoration: underline;
  transition: 0.25s cubic-bezier(0, 0.6, 0.7, 1); }
  .post-list__button:hover, .post-list__button:focus {
    color: #F90023; }

:root .post-list__button[disabled] {
  cursor: not-allowed;
  text-decoration: none; }
  :root .post-list__button[disabled]::after {
    opacity: .2; }
  :root .post-list__button[disabled]:hover, :root .post-list__button[disabled]:focus {
    color: #cacaca; }

:root .post-list__button--prev {
  margin-right: 0.625rem; }

:root .post-list__button--next {
  margin-left: 0.625rem; }

@media print, screen and (max-width: 39.99875em) {
  .post-list__button--prev,
  .post-list__button--next {
    font-size: 0; }
    .post-list__button--prev::after,
    .post-list__button--next::after {
      content: '';
      background-position: center center;
      background-size: 0.5rem;
      background-repeat: no-repeat;
      display: inline-block;
      font-size: 1rem;
      width: 1.875rem;
      height: 1.875rem;
      text-align: center;
      line-height: 1.875rem;
      vertical-align: bottom; } }

.post-list__button--prev::after {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 37'%3E%3Cpath fill='%23535353' fill-rule='evenodd' d='M.656 20.323l16.021 16.021a1.979 1.979 0 002.798 0l1.87-1.869a1.979 1.979 0 00.002-2.794L8.65 18.924 21.347 6.167a1.979 1.979 0 00-.003-2.795l-1.869-1.869a1.979 1.979 0 00-2.798 0L.656 17.525a1.979 1.979 0 000 2.798z'/%3E%3C/svg%3E"); }

.post-list__button--next::after {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 37'%3E%3Cpath fill='%23535353' fill-rule='evenodd' d='M21.344 17.524L5.323 1.504a1.979 1.979 0 00-2.798 0L.655 3.371a1.979 1.979 0 00-.002 2.795L13.35 18.924.653 31.68a1.979 1.979 0 00.003 2.794l1.869 1.87a1.979 1.979 0 002.798 0l16.021-16.022a1.979 1.979 0 000-2.799z'/%3E%3C/svg%3E"); }

.post-list__bullet {
  width: 1.875rem;
  height: 1.875rem;
  color: #D8D8D8;
  background-color: transparent;
  border-radius: 2rem;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: 0.25s cubic-bezier(0, 0.6, 0.7, 1);
  font-size: 0.75rem; }
  .post-list__bullet:not(.is-more-button):hover, .post-list__bullet:not(.is-more-button):focus {
    color: #ffffff;
    background-color: #F90023; }

.post-list__bullet.is-active {
  color: #ffffff;
  background-color: #F90023;
  font-size: 1rem; }

.post-list__bullet.is-prev,
.post-list__bullet.is-next {
  font-size: 1rem;
  color: #535353; }

@media print, screen and (min-width: 40em) {
  :root .post-list__button--prev {
    margin-right: 1rem; }
  :root .post-list__button--next {
    margin-left: 1rem; } }

@media print, screen and (min-width: 70.25em) {
  .post-list__item-company {
    margin-top: 2.5rem;
    margin-bottom: 1.25rem; } }

@media print, screen and (max-width: 39.99875em) {
  .post-list__pagination--cropped .post-list__bullet[class="post-list__bullet "], .post-list__pagination--cropped .post-list__bullet[class="post-list__bullet"] {
    display: none; }
  .post-list__pagination--cropped .post-list__bullet.is-pagination-shown {
    display: flex; }
  .post-list__pagination--cropped .post-list__bullet.is-more-button {
    display: flex;
    font-size: 0;
    width: auto; }
    .post-list__pagination--cropped .post-list__bullet.is-more-button::after {
      content: '...';
      font-size: 0.625rem;
      margin: 0 -0.1875rem;
      color: #D8D8D8; } }

.related-post {
  position: relative;
  display: flex;
  flex-direction: column;
  background-color: #F4F4F4;
  overflow: hidden;
  border-radius: 0.1875rem; }

.related-post__container {
  order: 2;
  flex-grow: 1;
  display: flex;
  flex-direction: column; }

.related-post__content {
  padding: 1.25rem; }

.related-post__title {
  color: #000000;
  margin-bottom: 0.5rem; }

:root .related-post__list {
  margin-left: 0;
  margin-bottom: 0.5rem; }
  :root .related-post__list:last-child {
    margin-bottom: 0; }
  :root .related-post__list li {
    display: flex;
    font-size: 0.875rem;
    line-height: 1.75rem;
    text-decoration: none; }
    :root .related-post__list li::before {
      display: none; }
    :root .related-post__list li span:first-child {
      order: 2; }
    :root .related-post__list li span:last-child {
      order: 1;
      flex-shrink: 0;
      font-size: 1rem;
      width: 1rem;
      height: 1.75rem;
      margin-right: 0.625rem;
      display: flex;
      align-items: center; }

.related-post__excerpt {
  font-size: 0.875rem;
  line-height: 1.57143; }
  @media print, screen and (min-width: 70.25em) {
    .related-post__excerpt {
      font-size: 1rem;
      line-height: 1.75; } }

.related-post__image {
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 33 36' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16.75 6.397c8.78 0 9.744 8.266 9.751 11.821l.006 3.785v1.175l.001.27v2.941l-.001.2v.4l-.04 8.666h-3.334l-.005-3.734v-3.99-.99l.001-.246v-.746l.001-.255v-2.99-.365l-.001-.777-.005-3.337c-.01-5.279-1.817-8.403-6.373-8.403h-.102c-4.857.05-6.847 3.218-6.86 8.472l.031 17.361H6.413v-8.133l-.005-1.786v-.472l-.002-.746V21.87v-.344l.001-.726.005-2.513C6.438 7.648 13.556 6.428 16.616 6.397zM17.749 0c2.74.017 15.2.99 15.2 17.281v1.692c.004 3.307.016 5.11.02 8.584v1.157l.03 6.941H29.59v-7.43c.002-1.44.01-2.596.017-3.657.016-2.26-.036-4.046-.036-7.216 0-13.033-9.565-13.905-11.861-13.926h-.145c-.223 0-.346.01-.346.01-.276-.03-13.841-1.447-13.841 14.84V26.59l-.001.043v.227l-.002.578-.004 1.809v.664l-.001.35v1.981l-.023 3.414H0v-17.37C0 3.945 8.111.011 17.219.011c0 0 .127-.009.36-.01z' fill='%23FFF' fill-rule='evenodd'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center;
  background-size: 1.5rem;
  background-color: #D8D8D8;
  order: 1;
  flex-shrink: 0;
  width: 100%;
  height: 100%;
  min-height: 11.125rem;
  position: relative;
  overflow: hidden;
  z-index: 0;
  border-top-left-radius: 3px;
  border-top-right-radius: 3px; }
  .related-post__image img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    margin-right: 0; }

.related-post__footer {
  margin-top: auto; }
  .related-post__footer .button {
    display: block;
    width: auto; }

@media screen and (min-width: 30em) {
  .related-post {
    flex-direction: row;
    min-height: 12.5rem; }
  .related-post__image {
    width: 11.25rem;
    height: unset;
    min-height: unset;
    border-top-right-radius: 0; } }

@media print, screen and (min-width: 70.25em) {
  .related-post {
    min-height: 15.625rem; }
  :root .related-post__list li {
    font-size: 1rem;
    line-height: 1.75rem; }
    :root .related-post__list li span:last-child {
      font-size: 1.125rem;
      width: 1.125rem;
      height: 1.75rem;
      margin-right: 0.625rem; } }

@media screen and (min-width: 81.25em) {
  .related-post__image {
    width: 17.9375rem; } }

.note {
  padding: 1.25rem;
  background-color: #F4F4F4;
  border-radius: 5px; }
  .note p, .note ul, .note ol {
    font-size: 0.875rem;
    line-height: 1.57143; }
  .note h1, .note h2, .note h3, .note h4, .note h5, .note h6 {
    font-size: 0.875rem;
    line-height: 1.57143;
    color: #000000;
    margin-bottom: 0.25rem; }
    @media print, screen and (min-width: 70.25em) {
      .note h1, .note h2, .note h3, .note h4, .note h5, .note h6 {
        font-size: 1rem;
        line-height: 1.75; } }

.vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid,
.vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list,
.vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid,
.vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list {
  width: 100%;
  margin: 0 auto;
  display: grid;
  grid-gap: 0.625rem;
  grid-template-columns: repeat(4, 1fr);
  grid-auto-rows: 4.6875rem;
  padding: 0; }
  @media print, screen and (min-width: 70.25em) {
    .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid,
    .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list,
    .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid,
    .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list {
      grid-auto-rows: 9.375rem; } }
  .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.blocks-gallery-item,
  .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.vo-block-photo-wall__item,
  .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.blocks-gallery-item,
  .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.vo-block-photo-wall__item,
  .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.blocks-gallery-item,
  .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.vo-block-photo-wall__item,
  .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.blocks-gallery-item,
  .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.vo-block-photo-wall__item {
    display: flex;
    margin-bottom: 0;
    width: 100%;
    align-self: inherit;
    position: relative; }
    @media print, screen and (max-width: 70.24875em) {
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.blocks-gallery-item,
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.vo-block-photo-wall__item,
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.blocks-gallery-item,
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.vo-block-photo-wall__item,
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.blocks-gallery-item,
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.vo-block-photo-wall__item,
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.blocks-gallery-item,
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.vo-block-photo-wall__item {
        grid-column: auto /span 2;
        grid-row: auto /span 2; } }
    @media print, screen and (max-width: 70.24875em) {
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.blocks-gallery-item:nth-child(1), .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.blocks-gallery-item:nth-child(8), .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.blocks-gallery-item:nth-child(10n + 1), .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.blocks-gallery-item:nth-child(10n + 8),
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.vo-block-photo-wall__item:nth-child(1),
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.vo-block-photo-wall__item:nth-child(8),
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.vo-block-photo-wall__item:nth-child(10n + 1),
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.vo-block-photo-wall__item:nth-child(10n + 8),
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.blocks-gallery-item:nth-child(1),
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.blocks-gallery-item:nth-child(8),
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.blocks-gallery-item:nth-child(10n + 1),
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.blocks-gallery-item:nth-child(10n + 8),
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.vo-block-photo-wall__item:nth-child(1),
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.vo-block-photo-wall__item:nth-child(8),
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.vo-block-photo-wall__item:nth-child(10n + 1),
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.vo-block-photo-wall__item:nth-child(10n + 8),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.blocks-gallery-item:nth-child(1),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.blocks-gallery-item:nth-child(8),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.blocks-gallery-item:nth-child(10n + 1),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.blocks-gallery-item:nth-child(10n + 8),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.vo-block-photo-wall__item:nth-child(1),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.vo-block-photo-wall__item:nth-child(8),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.vo-block-photo-wall__item:nth-child(10n + 1),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.vo-block-photo-wall__item:nth-child(10n + 8),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.blocks-gallery-item:nth-child(1),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.blocks-gallery-item:nth-child(8),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.blocks-gallery-item:nth-child(10n + 1),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.blocks-gallery-item:nth-child(10n + 8),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.vo-block-photo-wall__item:nth-child(1),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.vo-block-photo-wall__item:nth-child(8),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.vo-block-photo-wall__item:nth-child(10n + 1),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.vo-block-photo-wall__item:nth-child(10n + 8) {
        grid-column: auto /span 4;
        grid-row: auto /span 4; } }
    @media print, screen and (min-width: 70.25em) {
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.blocks-gallery-item:nth-child(1), .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.blocks-gallery-item:nth-child(8), .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.blocks-gallery-item:nth-child(10n + 1), .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.blocks-gallery-item:nth-child(10n + 8),
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.vo-block-photo-wall__item:nth-child(1),
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.vo-block-photo-wall__item:nth-child(8),
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.vo-block-photo-wall__item:nth-child(10n + 1),
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.vo-block-photo-wall__item:nth-child(10n + 8),
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.blocks-gallery-item:nth-child(1),
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.blocks-gallery-item:nth-child(8),
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.blocks-gallery-item:nth-child(10n + 1),
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.blocks-gallery-item:nth-child(10n + 8),
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.vo-block-photo-wall__item:nth-child(1),
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.vo-block-photo-wall__item:nth-child(8),
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.vo-block-photo-wall__item:nth-child(10n + 1),
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.vo-block-photo-wall__item:nth-child(10n + 8),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.blocks-gallery-item:nth-child(1),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.blocks-gallery-item:nth-child(8),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.blocks-gallery-item:nth-child(10n + 1),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.blocks-gallery-item:nth-child(10n + 8),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.vo-block-photo-wall__item:nth-child(1),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.vo-block-photo-wall__item:nth-child(8),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.vo-block-photo-wall__item:nth-child(10n + 1),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.vo-block-photo-wall__item:nth-child(10n + 8),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.blocks-gallery-item:nth-child(1),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.blocks-gallery-item:nth-child(8),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.blocks-gallery-item:nth-child(10n + 1),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.blocks-gallery-item:nth-child(10n + 8),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.vo-block-photo-wall__item:nth-child(1),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.vo-block-photo-wall__item:nth-child(8),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.vo-block-photo-wall__item:nth-child(10n + 1),
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.vo-block-photo-wall__item:nth-child(10n + 8) {
        grid-column: auto /span 2;
        grid-row: auto /span 2; } }
    .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.blocks-gallery-item figure,
    .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.vo-block-photo-wall__item figure,
    .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.blocks-gallery-item figure,
    .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.vo-block-photo-wall__item figure,
    .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.blocks-gallery-item figure,
    .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.vo-block-photo-wall__item figure,
    .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.blocks-gallery-item figure,
    .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.vo-block-photo-wall__item figure {
      display: flex;
      align-items: flex-end;
      justify-content: flex-start;
      margin: 0;
      height: 100%;
      width: 100%; }
    .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.blocks-gallery-item figcaption,
    .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.vo-block-photo-wall__item figcaption,
    .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.blocks-gallery-item figcaption,
    .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.vo-block-photo-wall__item figcaption,
    .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.blocks-gallery-item figcaption,
    .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.vo-block-photo-wall__item figcaption,
    .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.blocks-gallery-item figcaption,
    .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.vo-block-photo-wall__item figcaption {
      position: absolute;
      bottom: 0;
      width: 100%;
      max-height: 100%;
      overflow: hidden;
      padding: 1.25rem 0.625rem 0.625rem;
      color: #ffffff;
      text-align: center;
      font-size: 0.75rem;
      line-height: 1.2;
      background: linear-gradient(0deg, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.3) 70%, transparent);
      box-sizing: border-box;
      margin: 0;
      flex-grow: 1; }
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.blocks-gallery-item figcaption .share__list,
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.vo-block-photo-wall__item figcaption .share__list,
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.blocks-gallery-item figcaption .share__list,
      .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.vo-block-photo-wall__item figcaption .share__list,
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.blocks-gallery-item figcaption .share__list,
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.vo-block-photo-wall__item figcaption .share__list,
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.blocks-gallery-item figcaption .share__list,
      .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.vo-block-photo-wall__item figcaption .share__list {
        display: none; }
    .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.blocks-gallery-item a,
    .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.blocks-gallery-item img,
    .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.vo-block-photo-wall__item a,
    .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.blocks-gallery-grid li.vo-block-photo-wall__item img,
    .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.blocks-gallery-item a,
    .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.blocks-gallery-item img,
    .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.vo-block-photo-wall__item a,
    .vo-block-photo-wall__inner .wp-block-gallery--photo-wall ul.vo-block-photo-wall__list li.vo-block-photo-wall__item img,
    .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.blocks-gallery-item a,
    .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.blocks-gallery-item img,
    .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.vo-block-photo-wall__item a,
    .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.blocks-gallery-grid li.vo-block-photo-wall__item img,
    .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.blocks-gallery-item a,
    .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.blocks-gallery-item img,
    .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.vo-block-photo-wall__item a,
    .vo-block-photo-wall__inner .vo-block-photo-wall__wrapper ul.vo-block-photo-wall__list li.vo-block-photo-wall__item img {
      display: block;
      height: 100%;
      flex: 1;
      object-fit: cover;
      width: 100%;
      color: #ffffff; }

@media print, screen and (max-width: 70.24875em) {
  .lum-lightbox-inner img {
    max-width: 100%;
    max-height: 100%; } }

.lum-lightbox-caption .share__list {
  position: fixed;
  right: 0.75rem;
  bottom: 0.75rem;
  top: unset;
  transform: none; }

/* Gutenberg */
/* Gutenberg setup */
/**
 * Blocks base
 * ----------------------------------------------------------------------------
 */
.entry__content {
  color: #535353;
  margin-left: auto;
  margin-right: auto;
  font-size: 0.875rem;
  line-height: 1.57143; }
  @media print, screen and (min-width: 70.25em) {
    .entry__content {
      font-size: 1rem;
      line-height: 1.75; } }
  .entry__content > * {
    max-width: 50rem;
    margin-left: auto;
    margin-right: auto; }
    .entry__content > *.alignwide {
      max-width: 62.5rem; }
    .entry__content > *.alignfull {
      max-width: calc(100% + calc(1.25rem * 2));
      margin-left: calc(1.25rem * -1);
      margin-right: calc(1.25rem * -1); }
  .entry__content.entry__content--wide > *:not(.ad--mobile-only), .entry__content.entry__content--wide > *.alignwide, .entry__content.entry__content--wide > *.alignfull {
    max-width: none;
    margin-left: 0;
    margin-right: 0; }
  .entry__content ul:not([class]) {
    list-style: none;
    margin-left: 1.6875rem; }
    .entry__content ul:not([class]) li::before {
      content: "\25CF";
      position: absolute;
      display: flex;
      justify-content: center;
      color: #F90023;
      font-weight: 700;
      width: 1.6875rem;
      margin-left: -1.6875rem; }
  .entry__content > * + *,
  .entry__content .wp-block-group > * + *,
  .entry__content .wp-block-group__inner-container > * + *,
  .entry__content .wp-block-vo-list-item > * + * {
    margin: 1.25rem auto; }
    .entry__content > * + *:last-child,
    .entry__content .wp-block-group > * + *:last-child,
    .entry__content .wp-block-group__inner-container > * + *:last-child,
    .entry__content .wp-block-vo-list-item > * + *:last-child {
      margin-bottom: 0; }
  .entry__content > p:first-child {
    font-family: "Montserrat", "Verdana", Arial, sans-serif; }
    @media print, screen and (min-width: 70.25em) {
      .entry__content > p:first-child {
        font-size: 1.125rem;
        line-height: 1.66667; } }
  .entry__content > h1, .entry__content > h2, .entry__content > h3, .entry__content > h4, .entry__content > h5, .entry__content > h6 {
    color: #000000;
    margin-bottom: 0.9375rem; }
    .entry__content > h1 + *, .entry__content > h2 + *, .entry__content > h3 + *, .entry__content > h4 + *, .entry__content > h5 + *, .entry__content > h6 + * {
      margin-top: 0.9375rem; }
    @media print, screen and (min-width: 40em) {
      .entry__content > h1, .entry__content > h2, .entry__content > h3, .entry__content > h4, .entry__content > h5, .entry__content > h6 {
        margin-bottom: 1.25rem; }
        .entry__content > h1 + *, .entry__content > h2 + *, .entry__content > h3 + *, .entry__content > h4 + *, .entry__content > h5 + *, .entry__content > h6 + * {
          margin-top: 1.25rem; } }
    @media print, screen and (min-width: 70.25em) {
      .entry__content > h1, .entry__content > h2, .entry__content > h3, .entry__content > h4, .entry__content > h5, .entry__content > h6 {
        margin-top: 2.5rem; } }
  @media print, screen and (min-width: 70.25em) {
    .entry__content > section {
      margin-top: 2.5rem;
      margin-bottom: 2.5rem; } }

/**
 * Media Elements
 * ----------------------------------------------------------------------------
 */
svg,
img,
embed,
object,
picture {
  display: inline-block;
  height: auto;
  max-width: 100%; }

:root figure {
  max-width: 100%; }
  :root figure a {
    color: #ADADAD;
    text-decoration: none; }
    :root figure a:hover, :root figure a:focus {
      color: #F90023; }

/**
 * Alignments
 * ----------------------------------------------------------------------------
 */
.text-right {
  text-align: right; }

.text-left {
  text-align: left; }

.text-center {
  text-align: center; }

.alignleft {
  display: inline;
  float: left;
  margin-right: 1.25rem; }

.alignright {
  display: inline;
  float: right;
  margin-left: 1.25rem; }

.aligncenter {
  clear: both;
  display: block;
  margin-left: auto;
  margin-right: auto; }

/**
 * Generate color classes
 * ----------------------------------------------------------------------------
 */
.has-black-background-color {
  background-color: #000000; }

.has-black-color {
  color: #000000; }

.has-black-text-color {
  color: #000000; }

.has-white-background-color {
  background-color: #ffffff; }

.has-white-color {
  color: #ffffff; }

.has-white-text-color {
  color: #ffffff; }

.has-red-background-color {
  background-color: #F90023; }

.has-red-color {
  color: #F90023; }

.has-red-text-color {
  color: #F90023; }

.has-orange-background-color {
  background-color: #FF7E1F; }

.has-orange-color {
  color: #FF7E1F; }

.has-orange-text-color {
  color: #FF7E1F; }

.has-green-background-color {
  background-color: #239525; }

.has-green-color {
  color: #239525; }

.has-green-text-color {
  color: #239525; }

.has-light-gray-background-color {
  background-color: #F4F4F4; }

.has-light-gray-color {
  color: #F4F4F4; }

.has-light-gray-text-color {
  color: #F4F4F4; }

.has-medium-gray-background-color {
  background-color: #D8D8D8; }

.has-medium-gray-color {
  color: #D8D8D8; }

.has-medium-gray-text-color {
  color: #D8D8D8; }

.has-dark-gray-background-color {
  background-color: #797979; }

.has-dark-gray-color {
  color: #797979; }

.has-dark-gray-text-color {
  color: #797979; }

.has-darkest-gray-background-color {
  background-color: #1E1E1E; }

.has-darkest-gray-color {
  color: #1E1E1E; }

.has-darkest-gray-text-color {
  color: #1E1E1E; }

/**
 * Generate gradient color classes
 * ----------------------------------------------------------------------------
 */
.has-black-to-white-gradient-background {
  background: linear-gradient(to right, black 0%, white 100%); }

/**
 * Generate font size classes
 * ----------------------------------------------------------------------------
 */
.has-small-font-size {
  font-size: 0.75rem; }

.has-normal-font-size {
  font-size: 1rem; }

.has-medium-font-size {
  font-size: 1.375rem; }

.has-large-font-size {
  font-size: 1.625rem; }

.has-huge-font-size {
  font-size: 2rem; }

.has-extra-huge-font-size {
  font-size: 2.625rem; }

/* WP Blocks */
.wp-block[data-type="core/list"] {
  padding-left: 0; }

ul.wp-block[data-type="core/list"], ul.wp-block[data-type="core/list"] ul {
  margin-left: auto; }

ol.wp-block[data-type="core/list"], ol.wp-block[data-type="core/list"] ol {
  margin-left: auto; }

/**
 * Heading
 */
.wp-block[data-type="core/heading"] {
  color: #000000; }

.wp-block-group *,
.wp-block-group .wp-block {
  max-width: 100%;
  width: 100%; }

.wp-block-group.has-background {
  padding: 1.25rem 1.25rem; }
  .wp-block-group.has-background:not(.alignwide):not(.alignfull) {
    width: 50rem;
    max-width: 100%; }

.wp-block-button__link {
  position: relative;
  display: inline-block;
  background-color: #ADADAD;
  font-weight: bold;
  color: #ffffff;
  text-decoration: none;
  width: 100%;
  text-align: left;
  transition: all 0.5s cubic-bezier(0, 0.6, 0.7, 1);
  border: 2px solid #ADADAD;
  padding: 0.5625rem 0.8125rem;
  font-size: 0.625rem;
  line-height: 0.8125rem;
  border-radius: 0.1875rem; }
  .wp-block-button__link.button--medium {
    padding: 0.6875rem 1.25rem;
    font-size: 0.875rem;
    line-height: 1.5rem; }
  @media print, screen and (min-width: 40em) {
    .wp-block-button__link {
      padding: 0.6875rem 1.25rem;
      font-size: 0.875rem;
      line-height: 1.5rem; } }
  @media print, screen and (min-width: 70.25em) {
    .wp-block-button__link {
      padding: 0.6875rem 1.25rem; } }
  .wp-block-button__link.button--outline:not(:hover), .wp-block-button__link.button--outline:not(:focus), .is-style-outline .wp-block-button__link:not(:hover), .is-style-outline .wp-block-button__link:not(:focus) {
    color: #ADADAD;
    background-color: transparent; }
  .wp-block-button__link.button--outline:hover, .wp-block-button__link.button--outline:focus, .is-style-outline .wp-block-button__link:hover, .is-style-outline .wp-block-button__link:focus {
    color: #ffffff;
    background-color: #F90023;
    border-color: #F90023; }
  .wp-block-button__link:hover, .wp-block-button__link:focus {
    box-shadow: 0 10px 15px rgba(0, 0, 0, 0.2);
    transform: translateY(-4px);
    color: #ffffff;
    background-color: #949494;
    border-color: #949494;
    transform: translateY(-3px);
    cursor: pointer; }

.wp-block-button__link.has-red-background-color {
  background-color: #F90023;
  color: #ffffff;
  border-color: #F90023; }
  .wp-block-button__link.has-red-background-color.button--outline:not(:hover), .wp-block-button__link.has-red-background-color.button--outline:not(:focus), .is-style-outline .wp-block-button__link.has-red-background-color:not(:hover), .is-style-outline .wp-block-button__link.has-red-background-color:not(:focus) {
    color: #F90023;
    background-color: transparent; }
  .wp-block-button__link.has-red-background-color.button--outline:hover, .wp-block-button__link.has-red-background-color.button--outline:focus, .is-style-outline .wp-block-button__link.has-red-background-color:hover, .is-style-outline .wp-block-button__link.has-red-background-color:focus {
    color: #ffffff;
    background-color: #F90023;
    border-color: #F90023; }
  .wp-block-button__link.has-red-background-color:hover, .wp-block-button__link.has-red-background-color:focus {
    color: #ffffff;
    background-color: #c6001c;
    border-color: #c6001c; }

.wp-block-button__link.has-orange-background-color {
  background-color: #FF7E1F;
  color: #ffffff;
  border-color: #FF7E1F; }
  .wp-block-button__link.has-orange-background-color.button--outline:not(:hover), .wp-block-button__link.has-orange-background-color.button--outline:not(:focus), .is-style-outline .wp-block-button__link.has-orange-background-color:not(:hover), .is-style-outline .wp-block-button__link.has-orange-background-color:not(:focus) {
    color: #FF7E1F;
    background-color: transparent; }
  .wp-block-button__link.has-orange-background-color.button--outline:hover, .wp-block-button__link.has-orange-background-color.button--outline:focus, .is-style-outline .wp-block-button__link.has-orange-background-color:hover, .is-style-outline .wp-block-button__link.has-orange-background-color:focus {
    color: #ffffff;
    background-color: #F90023;
    border-color: #F90023; }
  .wp-block-button__link.has-orange-background-color:hover, .wp-block-button__link.has-orange-background-color:focus {
    color: #ffffff;
    background-color: #eb6400;
    border-color: #eb6400; }

.wp-block-button__link.has-dark-gray-background-color {
  background-color: #797979;
  color: #ffffff;
  border-color: #797979; }
  .wp-block-button__link.has-dark-gray-background-color.button--outline:not(:hover), .wp-block-button__link.has-dark-gray-background-color.button--outline:not(:focus), .is-style-outline .wp-block-button__link.has-dark-gray-background-color:not(:hover), .is-style-outline .wp-block-button__link.has-dark-gray-background-color:not(:focus) {
    color: #797979;
    background-color: transparent; }
  .wp-block-button__link.has-dark-gray-background-color.button--outline:hover, .wp-block-button__link.has-dark-gray-background-color.button--outline:focus, .is-style-outline .wp-block-button__link.has-dark-gray-background-color:hover, .is-style-outline .wp-block-button__link.has-dark-gray-background-color:focus {
    color: #ffffff;
    background-color: #F90023;
    border-color: #F90023; }
  .wp-block-button__link.has-dark-gray-background-color:hover, .wp-block-button__link.has-dark-gray-background-color:focus {
    color: #ffffff;
    background-color: #606060;
    border-color: #606060; }

.wp-block-code code {
  display: block;
  overflow-x: scroll; }

.wp-block-image figure {
  line-height: 0; }

.wp-block-image figcaption {
  font-size: 0.875rem;
  line-height: 1.57143;
  margin-top: 0.625rem; }

.wp-block-quote {
  font-size: 1.125rem;
  margin-bottom: 1.25rem; }
  .wp-block-quote.is-style-large {
    padding: 0; }
  .wp-block-quote p {
    color: #F90023; }

/* VO Blocks */
/**
 * Block style
 */
.linked-articles {
  position: relative;
  padding: 1.25rem 0.9375rem 1.25rem 0.9375rem;
  background-color: #F4F4F4;
  z-index: 0; }

.linked-articles__header {
  margin-bottom: 1.25rem; }

.linked-articles__title {
  color: #000000; }

:root .linked-articles__list li {
  margin-left: 0;
  margin-bottom: 0.375rem; }
  :root .linked-articles__list li::before {
    display: none; }
  :root .linked-articles__list li:last-child {
    margin-bottom: 0; }

@media print, screen and (min-width: 40em) {
  .linked-articles {
    padding: 1.875rem 0.9375rem 1.875rem 0.9375rem; }
  :root .linked-articles__list li {
    margin-bottom: 0.625rem; }
    :root .linked-articles__list li:last-child {
      margin-bottom: 0; } }

@media print, screen and (min-width: 70.25em) {
  .linked-articles {
    padding: 3.125rem 0.9375rem 3.125rem 0.9375rem; }
  .linked-articles__header {
    margin-bottom: 2.5rem; }
  :root .linked-articles__list li {
    margin-bottom: 1.25rem; }
    :root .linked-articles__list li:last-child {
      margin-bottom: 0; } }

/**
 * Linked article
 * -------------------------
 * Part of an item
 * --small
 * --large
 */
.linked-article {
  position: relative; }

.linked-article__icon {
  flex-shrink: 0;
  font-size: 0.625rem;
  width: 1.125rem;
  transition: transform 0.25s cubic-bezier(0, 0.6, 0.7, 1); }

.linked-article__title {
  font-size: 0.75rem;
  color: #000000;
  line-height: inherit;
  font-family: "Montserrat", "Verdana", Arial, sans-serif;
  transition: color 0.25s cubic-bezier(0, 0.6, 0.7, 1); }

.linked-article__inner {
  display: flex; }

.linked-article__anchor {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1; }

.linked-article__inner {
  position: relative;
  height: 100%;
  display: flex; }

.linked-article__content {
  display: flex;
  flex-direction: column;
  order: 2; }

.linked-article__excerpt {
  display: none;
  font-size: 0.875rem;
  line-height: 1.3125rem; }

.linked-article__image {
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 33 36' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16.75 6.397c8.78 0 9.744 8.266 9.751 11.821l.006 3.785v1.175l.001.27v2.941l-.001.2v.4l-.04 8.666h-3.334l-.005-3.734v-3.99-.99l.001-.246v-.746l.001-.255v-2.99-.365l-.001-.777-.005-3.337c-.01-5.279-1.817-8.403-6.373-8.403h-.102c-4.857.05-6.847 3.218-6.86 8.472l.031 17.361H6.413v-8.133l-.005-1.786v-.472l-.002-.746V21.87v-.344l.001-.726.005-2.513C6.438 7.648 13.556 6.428 16.616 6.397zM17.749 0c2.74.017 15.2.99 15.2 17.281v1.692c.004 3.307.016 5.11.02 8.584v1.157l.03 6.941H29.59v-7.43c.002-1.44.01-2.596.017-3.657.016-2.26-.036-4.046-.036-7.216 0-13.033-9.565-13.905-11.861-13.926h-.145c-.223 0-.346.01-.346.01-.276-.03-13.841-1.447-13.841 14.84V26.59l-.001.043v.227l-.002.578-.004 1.809v.664l-.001.35v1.981l-.023 3.414H0v-17.37C0 3.945 8.111.011 17.219.011c0 0 .127-.009.36-.01z' fill='%23FFF' fill-rule='evenodd'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center;
  background-size: 1.5rem;
  background-color: #D8D8D8;
  flex-shrink: 0;
  position: relative;
  width: 6.5rem;
  height: 4.875rem;
  border-radius: 5px;
  margin-bottom: 0;
  margin-right: 0.625rem;
  overflow: hidden;
  z-index: 0; }
  .linked-article__image img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover; }

.linked-article__anchor:hover + .linked-article__inner .linked-article__title, .linked-article__anchor:focus + .linked-article__inner .linked-article__title {
  color: #F90023; }

:root .linked-article--small {
  display: inline-flex;
  text-decoration: none;
  line-height: 1rem;
  padding: 0.25rem 0;
  color: #000000; }
  :root .linked-article--small:hover, :root .linked-article--small:focus {
    color: #F90023; }
    :root .linked-article--small:hover .linked-article__title, :root .linked-article--small:focus .linked-article__title {
      color: #F90023; }
    :root .linked-article--small:hover .linked-article__icon, :root .linked-article--small:focus .linked-article__icon {
      transform: translateX(4px); }

@media print, screen and (min-width: 40em) {
  :root .linked-article--small {
    line-height: 1.25rem; }
    :root .linked-article--small:hover .linked-article__icon, :root .linked-article--small:focus .linked-article__icon {
      transform: translateX(6px); }
  .linked-article__icon {
    font-size: 0.6875rem;
    width: 1.5rem; }
  .linked-article__title {
    font-size: 1rem; } }

.linked-article--large {
  margin-bottom: 0.9375rem; }
  .linked-article--large .linked-article__title {
    margin-bottom: 0;
    pointer-events: none;
    transition: color 0.25s cubic-bezier(0, 0.6, 0.7, 1); }

@media print, screen and (min-width: 40em) {
  .linked-article--large .linked-article__title {
    font-size: 1.125rem;
    line-height: 1.25rem;
    margin-bottom: 0.625rem; }
  .linked-article--large .linked-article__excerpt {
    display: block; }
  .linked-article--large .linked-article__image {
    width: 11.0625rem;
    height: 11.0625rem; } }

@media print, screen and (min-width: 70.25em) {
  .linked-article--large .linked-article__title {
    font-size: 1.5rem;
    line-height: 1.875rem;
    margin-bottom: 0.9375rem; }
  .linked-article--large .linked-article__excerpt {
    font-size: 1rem;
    line-height: 1.75rem; }
  .linked-article--large .linked-article__image {
    width: 12.5rem;
    height: 12.5rem;
    margin-right: 2.5rem; } }

.wp-block-vo-list-item ul, .wp-block-vo-list-item ol {
  margin-right: auto; }

div[data-type="vo/gallery"] .block-editor-media-placeholder__upload-button {
  display: none; }

.editor-placeholder {
  background-color: #D8D8D8;
  font-size: 2rem;
  font-weight: 700;
  color: #535353;
  padding: 2.5rem 1.875rem;
  text-align: center; }

/**
 * Quick & Dirty solutions - Please keep this file as clean as possible!
 * ----------------------------------------------------------------------------
 */

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtd2lkZ2V0LmNzcyIsInNvdXJjZXMiOlsiZXh0ZXJuYWwtd2lkZ2V0LnNjc3MiLCJzZXR0aW5ncy9fY29sb3JzLnNjc3MiLCJzZXR0aW5ncy9fc2V0dGluZ3Muc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fdXRpbC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19tYXRoLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX3VuaXQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fdmFsdWUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fZGlyZWN0aW9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2NvbG9yLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX3NlbGVjdG9yLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2ZsZXguc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fYnJlYWtwb2ludC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19taXhpbnMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fdHlwb2dyYXBoeS5zY3NzIiwic2V0dGluZ3MvX3ZhcmlhYmxlcy5zY3NzIiwic2V0dGluZ3MvX21peGlucy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL25vcm1hbGl6ZS5jc3Mvbm9ybWFsaXplLmNzcyIsImdsb2JhbC9fcmVzZXQuc2NzcyIsImdsb2JhbC9fcHJpbnQuc2NzcyIsImdsb2JhbC9fc2NyZWVuLXJlYWRlci10ZXh0LnNjc3MiLCJnbG9iYWwvX2FuaW1hdGlvbnMuc2NzcyIsImdsb2JhbC9fZm9udHMuc2NzcyIsImdsb2JhbC9fd29yZHByZXNzLnNjc3MiLCJnbG9iYWwvX2dsb2JhbC5zY3NzIiwiZ2xvYmFsL190eXBvZ3JhcGh5LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2ZvdW5kYXRpb24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdmVuZG9yL25vcm1hbGl6ZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19taXNzaW5nLWRlcGVuZGVuY2llcy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL190cnVlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fY29udGFpbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3B1cmdlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fcmVtb3ZlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fcmVwbGFjZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3RvLWxpc3Quc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvX2dsb2JhbC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fZm9ybXMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3RleHQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX2NoZWNrYm94LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19sYWJlbC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9faGVscC10ZXh0LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19pbnB1dC1ncm91cC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fZmllbGRzZXQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3NlbGVjdC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fcmFuZ2Uuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3Byb2dyZXNzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19tZXRlci5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fZXJyb3Iuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdHlwb2dyYXBoeS9fdHlwb2dyYXBoeS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy90eXBvZ3JhcGh5L19iYXNlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3R5cG9ncmFwaHkvX2hlbHBlcnMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdHlwb2dyYXBoeS9fYWxpZ25tZW50LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3R5cG9ncmFwaHkvX3ByaW50LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2dyaWQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fcm93LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2NvbHVtbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19zaXplLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX3Bvc2l0aW9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2d1dHRlci5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19jbGFzc2VzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2xheW91dC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19mbGV4LWdyaWQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9feHktZ3JpZC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19ndXR0ZXJzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3h5LWdyaWQvX2dyaWQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9fY2VsbC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19mcmFtZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19wb3NpdGlvbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19sYXlvdXQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9fY29sbGFwc2Uuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9fY2xhc3Nlcy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19idXR0b24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fYnV0dG9uLWdyb3VwLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2Nsb3NlLWJ1dHRvbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19sYWJlbC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19wcm9ncmVzcy1iYXIuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fc2xpZGVyLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3N3aXRjaC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL190YWJsZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19iYWRnZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19icmVhZGNydW1icy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19jYWxsb3V0LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2NhcmQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fZHJvcGRvd24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fcGFnaW5hdGlvbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL190b29sdGlwLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2FjY29yZGlvbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19tZWRpYS1vYmplY3Quc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fb3JiaXQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fcmVzcG9uc2l2ZS1lbWJlZC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL190YWJzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3RodW1ibmFpbC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19tZW51LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX21lbnUtaWNvbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19hY2NvcmRpb24tbWVudS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19kcmlsbGRvd24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fZHJvcGRvd24tbWVudS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19vZmYtY2FudmFzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3JldmVhbC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19zdGlja3kuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdGl0bGUtYmFyLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3RvcC1iYXIuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fZmxvYXQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fZmxleC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL192aXNpYmlsaXR5LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fcHJvdG90eXBlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fcmVsYXRpb24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19ib3guc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19yb3RhdGUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL190ZXh0LXV0aWxpdGllcy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3RleHQtdHJhbnNmb3JtYXRpb24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL190ZXh0LWRlY29yYXRpb24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19mb250LXN0eWxpbmcuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19saXN0LXN0eWxlLXR5cGUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19yb3VuZGVkLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fYm9yZGVyZWQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19zaGFkb3cuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19hcnJvdy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3NlcGFyYXRvci5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX292ZXJmbG93LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fZGlzcGxheS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3Bvc2l0aW9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fYm9yZGVyLWJveC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX2JvcmRlci1ub25lLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fc2l6aW5nLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fc3BhY2luZy5zY3NzIiwiZXh0ZXJuYWwvX2V4dGVybmFsLXdpZGdldC5zY3NzIiwiZXh0ZXJuYWwvX2V4dGVybmFsLXdpZGdldC1oZWFkZXIuc2NzcyIsImV4dGVybmFsL19leHRlcm5hbC13aWRnZXQtMy1jb2x1bW4uc2NzcyIsImV4dGVybmFsL19leHRlcm5hbC13aWRnZXQtMi1jb2x1bW4uc2NzcyIsImV4dGVybmFsL19leHRlcm5hbC13aWRnZXQtcG9zdC1pdGVtLnNjc3MiLCJleHRlcm5hbC9fZXh0ZXJuYWwtd2lkZ2V0LXRhYnMuc2NzcyIsIl9zaGFyZWQuc2NzcyIsImNvbXBvbmVudHMvX2J1dHRvbi5zY3NzIiwiY29tcG9uZW50cy9fY29tcGFueS1pdGVtLnNjc3MiLCJjb21wb25lbnRzL19pY29uLWJ1dHRvbi5zY3NzIiwiY29tcG9uZW50cy9fc2hhcmUtYnV0dG9uLnNjc3MiLCJjb21wb25lbnRzL19mb3Jtcy5zY3NzIiwiY29tcG9uZW50cy9faWNvbnMuc2NzcyIsImNvbXBvbmVudHMvX29wZW4tc3RhdHVzLnNjc3MiLCJjb21wb25lbnRzL190YWdzLnNjc3MiLCJjb21wb25lbnRzL19saW5rcy5zY3NzIiwiY29tcG9uZW50cy9fYmFkZ2Uuc2NzcyIsImNvbXBvbmVudHMvX3Nwb25zb3JlZC5zY3NzIiwiY29tcG9uZW50cy9fc2VhcmNoLWl0ZW0uc2NzcyIsImNvbXBvbmVudHMvX2Z1bmRhLWluZm8uc2NzcyIsImJsb2Nrcy9fcG9zdC1saXN0LnNjc3MiLCJibG9ja3MvX3JlbGF0ZWQtcG9zdC5zY3NzIiwiYmxvY2tzL19nYWxsZXJ5LnNjc3MiLCJibG9ja3MvX25vdGUuc2NzcyIsImJsb2Nrcy9fcGhvdG8td2FsbC5zY3NzIiwiZ3V0ZW5iZXJnL19ndXRlbmJlcmcuc2NzcyIsImd1dGVuYmVyZy9fYmFzZS5zY3NzIiwiZ3V0ZW5iZXJnL19jbGFzc2VzLnNjc3MiLCJndXRlbmJlcmcvYmxvY2tzL3dwL193cC1ibG9jay5zY3NzIiwiZ3V0ZW5iZXJnL2Jsb2Nrcy93cC9fd3AtYmxvY2stY29sdW1ucy5zY3NzIiwiZ3V0ZW5iZXJnL2Jsb2Nrcy93cC9fd3AtYmxvY2stZ3JvdXAuc2NzcyIsImd1dGVuYmVyZy9ibG9ja3Mvd3AvX3dwLWJsb2NrLWJ1dHRvbi5zY3NzIiwiZ3V0ZW5iZXJnL2Jsb2Nrcy93cC9fd3AtYmxvY2stY29kZS5zY3NzIiwiZ3V0ZW5iZXJnL2Jsb2Nrcy93cC9fd3AtYmxvY2staW1hZ2Uuc2NzcyIsImd1dGVuYmVyZy9ibG9ja3Mvd3AvX3dwLWJsb2NrLXF1b3RlLnNjc3MiLCJndXRlbmJlcmcvYmxvY2tzL3ZvL19saW5rZWQtYXJ0aWNsZXMuc2NzcyIsImd1dGVuYmVyZy9ibG9ja3Mvdm8vX2xpbmtlZC1hcnRpY2xlLnNjc3MiLCJndXRlbmJlcmcvYmxvY2tzL3ZvL19saXN0LWl0ZW0uc2NzcyIsImd1dGVuYmVyZy9ibG9ja3Mvdm8vX2N0YS5zY3NzIiwiZ3V0ZW5iZXJnL2Jsb2Nrcy92by9fZ2FsbGVyeS5zY3NzIiwiZ3V0ZW5iZXJnL19wbGFjZWhvbGRlci5zY3NzIiwiX3NoYW1lLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiJGVkaXRvcjogZmFsc2U7XG5cbi8qXG4gKiBJbXBvcnRhbnQhXG4gKlxuICogQXJlIHlvdSB3b3JraW5nIHdpdGggdGhlIEd1dGVuYmVyZyBCYXNlIENTUyBmb3IgdGhlXG4gKiBmaXJzdCB0aW1lPyBSZWFkIHRoZSBkb2N1bWVudGF0aW9uIGZpcnN0OlxuICogaHR0cHM6Ly9oYW5kYm9lay52YW4tb25zLm5sL2tub3dsZWRnZS1iYXNlL2RldmVsb3BlcnMvc3RhbmRhYXJkZW4tZW4tYWZzcHJha2VuL2d1dGVuYmVyZy1iYXNlLWNzcy1zdGFydGVyLXRoZW1lL1xuICovXG5cbi8qIFNldHRpbmdzICovXG5AaW1wb3J0ICdzZXR0aW5ncy9jb2xvcnMnO1xuQGltcG9ydCAnc2V0dGluZ3Mvc2V0dGluZ3MnO1xuQGltcG9ydCAnc2V0dGluZ3MvdmFyaWFibGVzJztcbkBpbXBvcnQgJ3NldHRpbmdzL21peGlucyc7XG5cbi8qIE5vcm1hbGl6ZSAqL1xuQGltcG9ydCAnbm9ybWFsaXplJztcblxuLyogR2xvYmFsICovXG5AaW1wb3J0ICdnbG9iYWwvcmVzZXQnO1xuQGltcG9ydCAnZ2xvYmFsL3ByaW50JztcbkBpbXBvcnQgJ2dsb2JhbC9zY3JlZW4tcmVhZGVyLXRleHQnO1xuQGltcG9ydCAnZ2xvYmFsL2FuaW1hdGlvbnMnO1xuQGltcG9ydCAnZ2xvYmFsL2ZvbnRzJztcbkBpbXBvcnQgJ2dsb2JhbC93b3JkcHJlc3MnO1xuQGltcG9ydCAnZ2xvYmFsL2dsb2JhbCc7XG5AaW1wb3J0ICdnbG9iYWwvdHlwb2dyYXBoeSc7XG5cbi8qIEZvdW5kYXRpb247IFRoZSBYWSBHcmlkIGlzIGluY2x1ZGVkIGJ5IGRlZmF1bHQ7IERvY3VtZW50YXRpb24gYXQgPGh0dHA6Ly9mb3VuZGF0aW9uLnp1cmIuY29tL3NpdGVzL2RvY3MvPiAqL1xuQGltcG9ydCAnZm91bmRhdGlvbic7XG5AaW1wb3J0ICdleHRlcm5hbC9leHRlcm5hbC13aWRnZXQnO1xuQGltcG9ydCAnZXh0ZXJuYWwvZXh0ZXJuYWwtd2lkZ2V0LWhlYWRlcic7XG5AaW1wb3J0ICdleHRlcm5hbC9leHRlcm5hbC13aWRnZXQtMy1jb2x1bW4nO1xuQGltcG9ydCAnZXh0ZXJuYWwvZXh0ZXJuYWwtd2lkZ2V0LTItY29sdW1uJztcbkBpbXBvcnQgJ2V4dGVybmFsL2V4dGVybmFsLXdpZGdldC1wb3N0LWl0ZW0nO1xuQGltcG9ydCAnZXh0ZXJuYWwvZXh0ZXJuYWwtd2lkZ2V0LXRhYnMnO1xuXG4vKiBTaGFyZWQgKHN0eWxlcyB1c2VkIGluIGJvdGggd2Vic2l0ZSBhbmQgZWRpdG9yKSAqL1xuQGltcG9ydCAnc2hhcmVkJztcbkBpbXBvcnQgJ3NoYW1lJztcbiIsIi8qKlxuICogQ29sb3Igc2NoZW1lXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuJGNvbG9yLWxpZ2h0LWdyYXk6ICNGNEY0RjQ7XG4kY29sb3ItbWVkaXVtLWdyYXk6ICNEOEQ4RDg7XG4kY29sb3ItZGFyay1ncmF5OiAjNzk3OTc5O1xuJGNvbG9yLWRhcmtlci1ncmF5OiAjNTM1MzUzO1xuJGNvbG9yLWRhcmtlc3QtZ3JheTogIzFFMUUxRTtcbiRjb2xvci1idXR0b24tZ3JheTogI0FEQURBRDtcbiRjb2xvci1ibGFjazogIzAwMDAwMDtcbiRjb2xvci13aGl0ZTogI2ZmZmZmZjtcblxuJGNvbG9yLXJlZDogI0Y5MDAyMztcbiRjb2xvci1ncmVlbjogIzIzOTUyNTtcbiRjb2xvci1vcmFuZ2U6ICNGRjdFMUY7XG5cbiRjb2xvci1wcmltYXJ5OiAkY29sb3ItcmVkO1xuJGNvbG9yLXNlY29uZGFyeTogIzc2NzY3NjtcbiRjb2xvci1zdWNjZXNzOiAjM2FkYjc2O1xuJGNvbG9yLXdhcm5pbmc6ICNmZmFlMDA7XG4kY29sb3ItYWxlcnQ6ICNFMzAyMjM7XG5cbiIsIi8qKlxuICogU2V0dGluZ3NcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5AaW1wb3J0ICd1dGlsL3V0aWwnO1xuXG4vKiBHbG9iYWwgKi9cbiRnbG9iYWwtd2lkdGg6IHJlbS1jYWxjKDE0NDApOyAvLyAxNDAwICsgKDIgKiAoMjAgc3BhY2luZykpXG5cbi8qIEJyZWFrcG9pbnRzICovXG4kYnJlYWtwb2ludHM6IChcbiAgICBzbWFsbDogMCxcbiAgICBtZWRpdW06IDY0MHB4LFxuICAgIGxhcmdlOiAxMTI0cHgsXG4gICAgeGxhcmdlOiAxMjAwcHgsXG4gICAgeHhsYXJnZTogMTQ0MHB4XG4pO1xuJHByaW50LWJyZWFrcG9pbnQ6IGxhcmdlO1xuJGJyZWFrcG9pbnQtY2xhc3NlczogKHNtYWxsIG1lZGl1bSBsYXJnZSk7XG5cbi8qIFR5cG9ncmFwaHkgKi9cbiRnbG9iYWwtZm9udC1zaXplOiAxMDAlO1xuJGZvbnQtb3Blbi1zYW5zOiAnT3BlbiBTYW5zJywgJ0hlbHZldGljYScsIEFyaWFsLCBzYW5zLXNlcmlmO1xuJGZvbnQtbW9udHNlcnJhdDogJ01vbnRzZXJyYXQnLCAnVmVyZGFuYScsIEFyaWFsLCBzYW5zLXNlcmlmO1xuJGJvZHktZm9udC1mYW1pbHk6ICRmb250LW9wZW4tc2FucztcbiRoZWFkaW5nLWZvbnQtZmFtaWx5OiAkZm9udC1tb250c2VycmF0O1xuXG4vKiBYWSBHcmlkICovXG4keHktZ3JpZDogdHJ1ZTtcbiRncmlkLWNvbnRhaW5lcjogJGdsb2JhbC13aWR0aDtcbiRncmlkLWNvbHVtbnM6IDEyO1xuJGdyaWQtbWFyZ2luLWd1dHRlcnM6IHJlbS1jYWxjKDQwKTtcbiRncmlkLW1hcmdpbi1ndXR0ZXJzOiAoXG4gICAgc21hbGw6IHJlbS1jYWxjKDEwKSxcbiAgICBtZWRpdW06IHJlbS1jYWxjKDEwKSxcbiAgICBsYXJnZTogcmVtLWNhbGMoNDApXG4pO1xuJGdyaWQtcGFkZGluZy1ndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycztcbiRncmlkLWNvbnRhaW5lci1wYWRkaW5nOiByZW0tY2FsYygzMCk7XG4kZ3JpZC1jb250YWluZXItcGFkZGluZzogKFxuICAgIHNtYWxsOiByZW0tY2FsYygzMCksXG4gICAgbWVkaXVtOiByZW0tY2FsYygzMCksXG4gICAgbGFyZ2U6IHJlbS1jYWxjKDQwKVxuKTtcbiRncmlkLWNvbnRhaW5lci1tYXg6ICRnbG9iYWwtd2lkdGg7XG4keHktYmxvY2stZ3JpZC1tYXg6IDg7XG5cbi8qIEd1dGVuYmVyZyBTZXR0aW5ncyAqL1xuJGJsb2NrLXNwYWNpbmc6IHJlbS1jYWxjKDIwKTtcbiRibG9jay1ndXR0ZXI6IHJlbS1jYWxjKDIwKTtcbiRibG9jay13aWR0aDogcmVtLWNhbGMoODAwKTtcbiRibG9jay13aWR0aC1zOiByZW0tY2FsYyg2ODApO1xuJGJsb2NrLXdpZHRoLXdpZGU6IHJlbS1jYWxjKDEwMDApO1xuXG4vLyBBY3Rpb25zID4gdm9fcmVnaXN0ZXJfY29sb3JzIChlZGl0b3ItZ3JhZGllbnQtcHJlc2V0cylcbiRndXRlbmJlcmctY29sb3JzOiAoXG4gICAgJ2JsYWNrJzogJGNvbG9yLWJsYWNrLFxuICAgICd3aGl0ZSc6ICRjb2xvci13aGl0ZSxcbiAgICAncmVkJzogJGNvbG9yLXByaW1hcnksXG4gICAgJ29yYW5nZSc6ICRjb2xvci1vcmFuZ2UsXG4gICAgJ2dyZWVuJzogJGNvbG9yLWdyZWVuLFxuICAgICdsaWdodC1ncmF5JzogJGNvbG9yLWxpZ2h0LWdyYXksXG4gICAgJ21lZGl1bS1ncmF5JzogJGNvbG9yLW1lZGl1bS1ncmF5LFxuICAgICdkYXJrLWdyYXknOiAkY29sb3ItZGFyay1ncmF5LFxuICAgICdkYXJrZXN0LWdyYXknOiAkY29sb3ItZGFya2VzdC1ncmF5XG4pO1xuXG4vLyBBY3Rpb25zID4gdm9fcmVnaXN0ZXJfZ3JhZGllbnRzIChlZGl0b3ItZ3JhZGllbnQtcHJlc2V0cylcbiRndXRlbmJlcmctZ3JhZGllbnRzOiAoXG4gICAgJ2JsYWNrLXRvLXdoaXRlJyAkY29sb3ItYmxhY2sgJGNvbG9yLXdoaXRlLFxuKTtcblxuLy8gQWN0aW9ucyA+IHZvX3JlZ2lzdGVyX2VkaXRvcl9mb250X3NpemVzIChlZGl0b3ItZm9udC1zaXplcylcbiRndXRlbmJlcmctZm9udC1zaXplczogKFxuICAgICdzbWFsbCc6IHJlbS1jYWxjKDEyKSxcbiAgICAnbm9ybWFsJzogcmVtLWNhbGMoMTYpLFxuICAgICdtZWRpdW0nOiByZW0tY2FsYygyMiksXG4gICAgJ2xhcmdlJzogcmVtLWNhbGMoMjYpLFxuICAgICdodWdlJzogcmVtLWNhbGMoMzIpLFxuICAgICdleHRyYS1odWdlJzogcmVtLWNhbGMoNDIpXG4pO1xuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG5AaW1wb3J0ICdtYXRoJztcbkBpbXBvcnQgJ3VuaXQnO1xuQGltcG9ydCAndmFsdWUnO1xuQGltcG9ydCAnZGlyZWN0aW9uJztcbkBpbXBvcnQgJ2NvbG9yJztcbkBpbXBvcnQgJ3NlbGVjdG9yJztcbkBpbXBvcnQgJ2ZsZXgnO1xuQGltcG9ydCAnYnJlYWtwb2ludCc7XG5AaW1wb3J0ICdtaXhpbnMnO1xuQGltcG9ydCAndHlwb2dyYXBoeSc7XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbi8vLyBGaW5kcyB0aGUgZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3Igb2YgdHdvIGludGVnZXJzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRhIC0gRmlyc3QgbnVtYmVyIHRvIGNvbXBhcmUuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiIC0gU2Vjb25kIG51bWJlciB0byBjb21wYXJlLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIGdyZWF0ZXN0IGNvbW1vbiBkaXZpc29yLlxuQGZ1bmN0aW9uIGdjZCgkYSwgJGIpIHtcbiAgLy8gRnJvbTogaHR0cDovL3Jvc2V0dGFjb2RlLm9yZy93aWtpL0dyZWF0ZXN0X2NvbW1vbl9kaXZpc29yI0phdmFTY3JpcHRcbiAgQGlmICgkYiAhPSAwKSB7XG4gICAgQHJldHVybiBnY2QoJGIsICRhICUgJGIpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGFicygkYSk7XG4gIH1cbn1cblxuLy8vIEhhbmRsZXMgZGVjaW1hbCBleHBvbmVudHMgYnkgdHJ5aW5nIHRvIGNvbnZlcnQgdGhlbSBpbnRvIGEgZnJhY3Rpb24gYW5kIHRoZW4gdXNlIGEgbnRoLXJvb3QtYWxnb3JpdGhtIGZvciBwYXJ0cyBvZiB0aGUgY2FsY3VsYXRpb25cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSAtIFRoZSBiYXNlIG51bWJlci5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGV4cG9uZW50IC0gVGhlIGV4cG9uZW50LlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIHByb2R1Y3Qgb2YgdGhlIGV4cG9uZW50aWF0aW9uLlxuQGZ1bmN0aW9uIHBvdygkYmFzZSwgJGV4cG9uZW50LCAkcHJlYzogMTYpIHtcbiAgQGlmIChmbG9vcigkZXhwb25lbnQpICE9ICRleHBvbmVudCkge1xuICAgICRwcmVjMiA6IHBvdygxMCwgJHByZWMpO1xuICAgICRleHBvbmVudDogcm91bmQoJGV4cG9uZW50ICogJHByZWMyKTtcbiAgICAkZGVub21pbmF0b3I6IGdjZCgkZXhwb25lbnQsICRwcmVjMik7XG4gICAgQHJldHVybiBudGgtcm9vdChwb3coJGJhc2UsIGRpdmlkZSgkZXhwb25lbnQsICRkZW5vbWluYXRvcikpLCBkaXZpZGUoJHByZWMyLCAkZGVub21pbmF0b3IpLCAkcHJlYyk7XG4gIH1cblxuICAkdmFsdWU6ICRiYXNlO1xuICBAaWYgJGV4cG9uZW50ID4gMSB7XG4gICAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkZXhwb25lbnQge1xuICAgICAgJHZhbHVlOiAkdmFsdWUgKiAkYmFzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGV4cG9uZW50IDwgMSB7XG4gICAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAtJGV4cG9uZW50IHtcbiAgICAgICR2YWx1ZTogZGl2aWRlKCR2YWx1ZSwgJGJhc2UpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuXG5AZnVuY3Rpb24gbnRoLXJvb3QoJG51bSwgJG46IDIsICRwcmVjOiAxMikge1xuICAvLyBGcm9tOiBodHRwOi8vcm9zZXR0YWNvZGUub3JnL3dpa2kvTnRoX3Jvb3QjSmF2YVNjcmlwdFxuICAkeDogMTtcblxuICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRwcmVjIHtcbiAgICAkeDogZGl2aWRlKDEsICRuKSAqICgoJG4gLSAxKSAqICR4ICsgZGl2aWRlKCRudW0sIHBvdygkeCwgJG4gLSAxKSkpO1xuICB9XG5cbiAgQHJldHVybiAkeDtcbn1cblxuLy8vIENhbGN1bGF0ZXMgdGhlIGhlaWdodCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIHdpZHRoIGZvciBhIGdpdmVuIHJhdGlvLlxuLy8vIEBwYXJhbSB7TGlzdH0gJHJhdGlvIC0gUmF0aW8gdG8gdXNlIHRvIGNhbGN1bGF0ZSB0aGUgaGVpZ2h0LCBmb3JtYXR0ZWQgYXMgYHggYnkgeWAuXG4vLy8gQHJldHVybiB7TnVtYmVyfSBBIHBlcmNlbnRhZ2UgdmFsdWUgZm9yIHRoZSBoZWlnaHQgcmVsYXRpdmUgdG8gdGhlIHdpZHRoIG9mIGEgcmVzcG9uc2l2ZSBjb250YWluZXIuXG5AZnVuY3Rpb24gcmF0aW8tdG8tcGVyY2VudGFnZSgkcmF0aW8pIHtcbiAgJHc6IG50aCgkcmF0aW8sIDEpO1xuICAkaDogbnRoKCRyYXRpbywgMyk7XG4gIEByZXR1cm4gZGl2aWRlKCRoLCAkdykgKiAxMDAlO1xufVxuXG4vLy8gUGFyc2UgdGhlIGdpdmVuIGAkZnJhY3Rpb25gIHRvIG51bWVyYXRvcnMgYW5kIGRlbnVtZXJhdG9ycy5cbi8vL1xuLy8vIEBwYXJhbSB7Kn0gJGZyYWN0aW9uIC0gVmFsdWUgcmVwcmVzZW50aW5nIGEgZnJhY3Rpb24gdG8gcGFyc2UuIEl0IGNhbiBiZSBmb3JtYXR0ZWQgYXMgYDUwJWAsIGAxIG9mIDJgLCBgMS8yYCBvciBgNTBgIChubyBkZW5vbWluYXRvciB3b3VsZCBiZSByZXR1cm5lZCkuXG4vLy9cbi8vLyBAcmV0dXJuIHtMaXN0fSBMaXN0IG9mIHBhcnNlZCB2YWx1ZXMgd2l0aCBudW1lcmF0b3IgYXQgZmlyc3QgcG9zaXRpb24gYW5kIGRlbnVtZXJhdG9yIGFzIHNlY29uZC4gVGhlc2UgdmFsdWVzIG1heSBiZSBudWxsLlxuQGZ1bmN0aW9uIHpmLXBhcnNlLWZyYWN0aW9uKCRmcmFjdGlvbikge1xuXG4gIEBpZiB0eXBlLW9mKCRmcmFjdGlvbikgPT0gJ251bWJlcicge1xuICAgIC8vIFwiNTAlXCJcbiAgICBAaWYgdW5pdCgkZnJhY3Rpb24pID09ICclJyB7XG4gICAgICBAcmV0dXJuIChzdHJpcC11bml0KCRmcmFjdGlvbiksIDEwMCk7XG4gICAgfVxuICAgIEBlbHNlIGlmICh1bml0KCRmcmFjdGlvbikgPT0gJycpIHtcbiAgICAgIC8vIFwiMC41XCJcbiAgICAgIEBpZiAkZnJhY3Rpb24gPCAxIHtcbiAgICAgICAgQHJldHVybiAoJGZyYWN0aW9uICogMTAwLCAxMDApO1xuICAgICAgfVxuICAgICAgLy8gXCI1MFwiXG4gICAgICBAZWxzZSB7XG4gICAgICAgIEByZXR1cm4gKCRmcmFjdGlvbiwgbnVsbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgdHlwZS1vZigkZnJhY3Rpb24pID09ICdsaXN0JyB7XG4gICAgLy8gXCI1MCBvZiAxMDBcIiwgXCI1MC8xMDBcIi4uLlxuICAgIEBpZiBsZW5ndGgoJGZyYWN0aW9uKSA9PSAzXG4gICAgICBhbmQgdHlwZS1vZihudGgoJGZyYWN0aW9uLCAxKSA9PSAnbnVtYmVyJylcbiAgICAgIGFuZCB0eXBlLW9mKG50aCgkZnJhY3Rpb24sIDMpID09ICdudW1iZXInKSB7XG4gICAgICBAcmV0dXJuIChudGgoJGZyYWN0aW9uLCAxKSwgbnRoKCRmcmFjdGlvbiwgMykpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gKG51bGwsIG51bGwpO1xufVxuXG4vLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBnaXZlbiBgJHZhbHVlYCByZXByZXNlbnRzIGEgZnJhY3Rpb24uIFN1cHBvcnRzIGZvcm1hdHMgbGlrZSBgNTAlYCwgYDEgb2YgMmAsIGAxIHBlciAyYCBvciBgMS8yYC5cbi8vL1xuLy8vIEBwYXJhbSB7Kn0gJHZhbHVlIC0gVmFsdWUgdG8gdGVzdC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRhbGxvdy1uby1kZW5vbWluYXRvciBbZmFsc2VdIC0gSWYgYHRydWVgLCBzaW1wbGUgbnVtYmVycyB3aXRob3V0IGRlbm9taW5hdG9ycyBsaWtlIGA1MGAgYXJlIHN1cHBvcnRlZC5cbi8vL1xuLy8vIEByZXR1cm4ge0Jvb2xlYW59IGB0cnVlYCBpZiBgJHZhbHVlYCByZXByZXNlbnRzIGEgZnJhY3Rpb24sIGBmYWxzZWAgb3RoZXJ3aXNlLlxuQGZ1bmN0aW9uIHpmLWlzLWZyYWN0aW9uKCR2YWx1ZSwgJGFsbG93LW5vLWRlbm9taW5hdG9yOiBmYWxzZSkge1xuICAkcGFyc2VkOiB6Zi1wYXJzZS1mcmFjdGlvbigkdmFsdWUpO1xuICBAcmV0dXJuIG5vdChudGgoJHBhcnNlZCwgMSkgPT0gbnVsbFxuICAgIG9yIChudGgoJHBhcnNlZCwgMikgPT0gbnVsbCBhbmQgJGFsbG93LW5vLWRlbm9taW5hdG9yID09IGZhbHNlKSk7XG59XG5cbi8vLyBDYWxjdWxhdGUgYSBwZXJjZW50YWdlIGZyb20gYSBnaXZlbiBmcmFjdGlvbi5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICRmcmFjdGlvbiAtIFZhbHVlIHJlcHJlc2VudGluZyBhIGZyYWN0aW9uIHRvIHVzZSB0byBjYWxjdWxhdGUgdGhlIHBlcmNlbnRhZ2UsIGZvcm1hdHRlZCBhcyBgNTBgIChyZWxhdGl2ZSB0byBgJGRlbm9taW5hdG9yYCksIGA1MCVgLCBgMSBvZiAyYCBvciBgMS8yYC5cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkZGVub21pbmF0b3IgLSBEZWZhdWx0IHZhbHVlIHRvIHVzZSBhcyBkZW5vbWluYXRvciB3aGVuIGAkZnJhY3Rpb25gIHJlcHJlc2VudHMgYW4gYWJzb2x1dGUgdmFsdWUuXG5AZnVuY3Rpb24gZnJhY3Rpb24tdG8tcGVyY2VudGFnZShcbiAgJGZyYWN0aW9uLFxuICAkZGVub21pbmF0b3I6IG51bGxcbikge1xuICAkcGFyc2VkOiB6Zi1wYXJzZS1mcmFjdGlvbigkZnJhY3Rpb24pO1xuICAkcGFyc2VkLW5vbWluYXRvcjogbnRoKCRwYXJzZWQsIDEpO1xuICAkcGFyc2VkLWRlbm9taW5hdG9yOiBudGgoJHBhcnNlZCwgMik7XG5cbiAgQGlmICRwYXJzZWQtbm9taW5hdG9yID09IG51bGwge1xuICAgIEBlcnJvciAnV3Jvbmcgc3ludGF4IGZvciBcImZyYWN0aW9uLXRvLXBlcmNlbnRhZ2UoKVwiLiBVc2UgYSBudW1iZXIsIGRlY2ltYWwsIHBlcmNlbnRhZ2UsIG9yIFwibiBvZiBuXCIgLyBcIm4vblwiLic7XG4gIH1cbiAgQGlmICRwYXJzZWQtZGVub21pbmF0b3IgPT0gbnVsbCB7XG4gICAgQGlmIHR5cGUtb2YoJGRlbm9taW5hdG9yKSA9PSAnbnVtYmVyJyB7XG4gICAgICAkcGFyc2VkLWRlbm9taW5hdG9yOiAkZGVub21pbmF0b3I7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBlcnJvciAnRXJyb3Igd2l0aCBcImZyYWN0aW9uLXRvLXBlcmNlbnRhZ2UoKVwiLiBBIGRlZmF1bHQgXCIkZGVub21pbmF0b3JcIiBpcyByZXF1aXJlZCB0byBzdXBwb3J0IGFic29sdXRlIHZhbHVlcyc7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBwZXJjZW50YWdlKGRpdmlkZSgkcGFyc2VkLW5vbWluYXRvciwgJHBhcnNlZC1kZW5vbWluYXRvcikpO1xufVxuXG4vLy8gRGl2aWRlIHRoZSBnaXZlbiBgJGRpdmlkZW50YCBieSB0aGUgZ2l2ZW4gYCRkaXZpc29yYC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZGl2aWRlbnQgLSBUaGUgZGl2aWRlbnQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRkaXZpc29yIC0gVGhlIGRpdmlzb3IuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRwcmVjaXNpb24gLSBUaGUgcHJlY2lzaW9uIGRlY2ltYWxzIGZvciB0aGUgZGl2aXNpb24uXG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IFRoZSBwcm9kdWN0IG9mIHRoZSBkaXZpc2lvbi5cbkBmdW5jdGlvbiBkaXZpZGUoJGRpdmlkZW5kLCAkZGl2aXNvciwgJHByZWNpc2lvbjogMTIpIHtcbiAgJHNpZ246IGlmKCRkaXZpZGVuZCA+IDAgYW5kICRkaXZpc29yID4gMCBvciAkZGl2aWRlbmQgPCAwIGFuZCAkZGl2aXNvciA8IDAsIDEsIC0xKTtcbiAgJGRpdmlkZW5kOiBhYnMoJGRpdmlkZW5kKTtcbiAgJGRpdmlzb3I6IGFicygkZGl2aXNvcik7XG4gIEBpZiAkZGl2aWRlbmQgPT0gMCB7XG4gICAgQHJldHVybiAwO1xuICB9XG4gIEBpZiAkZGl2aXNvciA9PSAwIHtcbiAgICBAZXJyb3IgXCJDYW5ub3QgZGl2aWRlIGJ5IDBcIjtcbiAgfVxuICAkcmVtYWluZGVyOiAkZGl2aWRlbmQ7XG4gICRyZXN1bHQ6IDA7XG4gICRmYWN0b3I6IDEwO1xuICBAd2hpbGUgKCRyZW1haW5kZXIgPiAwIGFuZCAkcHJlY2lzaW9uID49IDApIHtcbiAgICAkcXVvdGllbnQ6IDA7XG4gICAgQHdoaWxlICgkcmVtYWluZGVyID49ICRkaXZpc29yKSB7XG4gICAgICAkcmVtYWluZGVyOiAkcmVtYWluZGVyIC0gJGRpdmlzb3I7XG4gICAgICAkcXVvdGllbnQ6ICRxdW90aWVudCArIDE7XG4gICAgfVxuICAgICRyZXN1bHQ6ICRyZXN1bHQgKiAxMCArICRxdW90aWVudDtcbiAgICAkZmFjdG9yOiAkZmFjdG9yICogLjE7XG4gICAgJHJlbWFpbmRlcjogJHJlbWFpbmRlciAqIDEwO1xuICAgICRwcmVjaXNpb246ICRwcmVjaXNpb24gLSAxO1xuICAgIEBpZiAoJHByZWNpc2lvbiA8IDAgYW5kICRyZW1haW5kZXIgPj0gJGRpdmlzb3IgKiA1KSB7XG4gICAgICAkcmVzdWx0OiAkcmVzdWx0ICsgMTtcbiAgICB9XG4gIH1cbiAgJHJlc3VsdDogJHJlc3VsdCAqICRmYWN0b3IgKiAkc2lnbjtcbiAgJGRpdmlkZW5kLXVuaXQ6IHVuaXQoJGRpdmlkZW5kKTtcbiAgJGRpdmlzb3ItdW5pdDogdW5pdCgkZGl2aXNvcik7XG4gICR1bml0LW1hcDogKFxuICAgIFwicHhcIjogMXB4LFxuICAgIFwicmVtXCI6IDFyZW0sXG4gICAgXCJlbVwiOiAxZW0sXG4gICAgXCIlXCI6IDElXG4gICk7XG4gIEBpZiAoJGRpdmlkZW5kLXVuaXQgIT0gJGRpdmlzb3ItdW5pdCBhbmQgbWFwLWhhcy1rZXkoJHVuaXQtbWFwLCAkZGl2aWRlbmQtdW5pdCkpIHtcbiAgICAkcmVzdWx0OiAkcmVzdWx0ICogbWFwLWdldCgkdW5pdC1tYXAsICRkaXZpZGVuZC11bml0KTtcbiAgfVxuXG4gIEByZXR1cm4gJHJlc3VsdDtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuQGltcG9ydCAnbWF0aCc7XG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbiRnbG9iYWwtZm9udC1zaXplOiAxMDAlICFkZWZhdWx0O1xuXG4vLy8gUmVtb3ZlcyB0aGUgdW5pdCAoZS5nLiBweCwgZW0sIHJlbSkgZnJvbSBhIHZhbHVlLCByZXR1cm5pbmcgdGhlIG51bWJlciBvbmx5LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW0gLSBOdW1iZXIgdG8gc3RyaXAgdW5pdCBmcm9tLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIHNhbWUgbnVtYmVyLCBzYW5zIHVuaXQuXG5AZnVuY3Rpb24gc3RyaXAtdW5pdCgkbnVtKSB7XG4gIEByZXR1cm4gZGl2aWRlKCRudW0sICRudW0gKiAwICsgMSk7XG59XG5cbi8vLyBDb252ZXJ0cyBvbmUgb3IgbW9yZSBwaXhlbCB2YWx1ZXMgaW50byBtYXRjaGluZyByZW0gdmFsdWVzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJHZhbHVlcyAtIE9uZSBvciBtb3JlIHZhbHVlcyB0byBjb252ZXJ0LiBCZSBzdXJlIHRvIHNlcGFyYXRlIHRoZW0gd2l0aCBzcGFjZXMgYW5kIG5vdCBjb21tYXMuIElmIHlvdSBuZWVkIHRvIGNvbnZlcnQgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCwgd3JhcCB0aGUgbGlzdCBpbiBwYXJlbnRoZXNlcy5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhc2UgW251bGxdIC0gVGhlIGJhc2UgdmFsdWUgdG8gdXNlIHdoZW4gY2FsY3VsYXRpbmcgdGhlIGByZW1gLiBJZiB5b3UncmUgdXNpbmcgRm91bmRhdGlvbiBvdXQgb2YgdGhlIGJveCwgdGhpcyBpcyAxNnB4LiBJZiB0aGlzIHBhcmFtZXRlciBpcyBgbnVsbGAsIHRoZSBmdW5jdGlvbiB3aWxsIHJlZmVyZW5jZSB0aGUgYCRnbG9iYWwtZm9udC1zaXplYCB2YXJpYWJsZSBhcyB0aGUgYmFzZS5cbi8vL1xuLy8vIEByZXR1cm5zIHtMaXN0fSBBIGxpc3Qgb2YgY29udmVydGVkIHZhbHVlcy5cbkBmdW5jdGlvbiByZW0tY2FsYygkdmFsdWVzLCAkYmFzZTogbnVsbCkge1xuICAkcmVtLXZhbHVlczogKCk7XG4gICRjb3VudDogbGVuZ3RoKCR2YWx1ZXMpO1xuXG4gIC8vIElmIG5vIGJhc2UgaXMgZGVmaW5lZCwgZGVmZXIgdG8gdGhlIGdsb2JhbCBmb250IHNpemVcbiAgQGlmICRiYXNlID09IG51bGwge1xuICAgICRiYXNlOiAkZ2xvYmFsLWZvbnQtc2l6ZTtcbiAgfVxuXG4gIC8vIElmIHRoZSBiYXNlIGZvbnQgc2l6ZSBpcyBhICUsIHRoZW4gbXVsdGlwbHkgaXQgYnkgMTZweFxuICAvLyBUaGlzIGlzIGJlY2F1c2UgMTAwJSBmb250IHNpemUgPSAxNnB4IGluIG1vc3QgYWxsIGJyb3dzZXJzXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAnJScge1xuICAgICRiYXNlOiBkaXZpZGUoJGJhc2UsIDEwMCUpICogMTZweDtcbiAgfVxuXG4gIC8vIFVzaW5nIHJlbSBhcyBiYXNlIGFsbG93cyBjb3JyZWN0IHNjYWxpbmdcbiAgQGlmIHVuaXQoJGJhc2UpID09ICdyZW0nIHtcbiAgICAkYmFzZTogc3RyaXAtdW5pdCgkYmFzZSkgKiAxNnB4O1xuICB9XG5cbiAgQGlmICRjb3VudCA9PSAxIHtcbiAgICBAcmV0dXJuIC16Zi10by1yZW0oJHZhbHVlcywgJGJhc2UpO1xuICB9XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkY291bnQge1xuICAgICRyZW0tdmFsdWVzOiBhcHBlbmQoJHJlbS12YWx1ZXMsIC16Zi10by1yZW0obnRoKCR2YWx1ZXMsICRpKSwgJGJhc2UpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHJlbS12YWx1ZXM7XG59XG5cbi8vIENvbnZlcnRzIGEgdW5pdGxlc3MsIHBpeGVsLCBvciByZW0gdmFsdWUgdG8gZW0sIGZvciB1c2UgaW4gYnJlYWtwb2ludHMuXG5AZnVuY3Rpb24gLXpmLWJwLXRvLWVtKCR2YWx1ZSkge1xuICAvLyBQaXhlbCBhbmQgdW5pdGxlc3MgdmFsdWVzIGFyZSBjb252ZXJ0ZWQgdG8gcmVtc1xuICBAaWYgdW5pdCgkdmFsdWUpID09ICdweCcgb3IgdW5pdGxlc3MoJHZhbHVlKSB7XG4gICAgJHZhbHVlOiByZW0tY2FsYygkdmFsdWUsICRiYXNlOiAxNnB4KTtcbiAgfVxuXG4gIC8vIFRoZW4gdGhlIHZhbHVlIGlzIGNvbnZlcnRlZCB0byBlbXNcbiAgQHJldHVybiBzdHJpcC11bml0KCR2YWx1ZSkgKiAxZW07XG59XG5cbi8vLyBDb252ZXJ0cyBhIHBpeGVsIHZhbHVlIHRvIG1hdGNoaW5nIHJlbSB2YWx1ZS4gKkFueSogdmFsdWUgcGFzc2VkLCByZWdhcmRsZXNzIG9mIHVuaXQsIGlzIGFzc3VtZWQgdG8gYmUgYSBwaXhlbCB2YWx1ZS4gQnkgZGVmYXVsdCwgdGhlIGJhc2UgcGl4ZWwgdmFsdWUgdXNlZCB0byBjYWxjdWxhdGUgdGhlIHJlbSB2YWx1ZSBpcyB0YWtlbiBmcm9tIHRoZSBgJGdsb2JhbC1mb250LXNpemVgIHZhcmlhYmxlLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZSAtIFBpeGVsIHZhbHVlIHRvIGNvbnZlcnQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlIFtudWxsXSAtIEJhc2UgZm9yIHBpeGVsIGNvbnZlcnNpb24uXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBBIG51bWJlciBpbiByZW1zLCBjYWxjdWxhdGVkIGJhc2VkIG9uIHRoZSBnaXZlbiB2YWx1ZSBhbmQgdGhlIGJhc2UgcGl4ZWwgdmFsdWUuIHJlbSB2YWx1ZXMgYXJlIHBhc3NlZCB0aHJvdWdoIGFzIGlzLlxuQGZ1bmN0aW9uIC16Zi10by1yZW0oJHZhbHVlLCAkYmFzZTogbnVsbCkge1xuICAvLyBDaGVjayBpZiB0aGUgdmFsdWUgaXMgYSBudW1iZXJcbiAgQGlmIHR5cGUtb2YoJHZhbHVlKSAhPSAnbnVtYmVyJyB7XG4gICAgQHdhcm4gaW5zcGVjdCgkdmFsdWUpICsgJyB3YXMgcGFzc2VkIHRvIHJlbS1jYWxjKCksIHdoaWNoIGlzIG5vdCBhIG51bWJlci4nO1xuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG5cbiAgLy8gVHJhbnNmb3JtIGVtIGludG8gcmVtIGlmIHNvbWVvbmUgaGFuZHMgb3ZlciAnZW0nc1xuICBAaWYgdW5pdCgkdmFsdWUpID09ICdlbScge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpICogMXJlbTtcbiAgfVxuXG4gIC8vIENhbGN1bGF0ZSByZW0gaWYgdW5pdHMgZm9yICR2YWx1ZSBpcyBub3QgcmVtIG9yIGVtXG4gIEBpZiB1bml0KCR2YWx1ZSkgIT0gJ3JlbScge1xuICAgICR2YWx1ZTogZGl2aWRlKHN0cmlwLXVuaXQoJHZhbHVlKSwgc3RyaXAtdW5pdCgkYmFzZSkpICogMXJlbTtcbiAgfVxuXG4gIC8vIFR1cm4gMHJlbSBpbnRvIDBcbiAgQGlmICR2YWx1ZSA9PSAwcmVtIHtcbiAgICAkdmFsdWU6IDA7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cblxuLy8vIENvbnZlcnRzIGEgcGl4ZWwsIHBlcmNlbnRhZ2UsIHJlbSBvciBlbSB2YWx1ZSB0byBhIHVuaXRsZXNzIHZhbHVlIGJhc2VkIG9uIGEgZ2l2ZW4gZm9udCBzaXplLiBJZGVhbCBmb3Igd29ya2luZyBvdXQgdW5pdGxlc3MgbGluZSBoZWlnaHRzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZSAtIFZhbHVlIHRvIGNvbnZlcnQgdG8gYSB1bml0bGVzcyBsaW5lIGhlaWdodFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSAtIFRoZSBmb250IHNpemUgdG8gdXNlIHRvIHdvcmsgb3V0IHRoZSBsaW5lIGhlaWdodCAtIGRlZmF1bHRzIHRvICRnbG9iYWwtZm9udC1zaXplXG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IC0gVW5pdGxlc3MgbnVtYmVyXG5AZnVuY3Rpb24gdW5pdGxlc3MtY2FsYygkdmFsdWUsICRiYXNlOiBudWxsKSB7XG5cbiAgLy8gSWYgbm8gYmFzZSBpcyBkZWZpbmVkLCBkZWZlciB0byB0aGUgZ2xvYmFsIGZvbnQgc2l6ZVxuICBAaWYgJGJhc2UgPT0gbnVsbCB7XG4gICAgJGJhc2U6ICRnbG9iYWwtZm9udC1zaXplO1xuICB9XG5cbiAgLy8gRmlyc3QsIGxldHMgY29udmVydCBvdXIgJGJhc2UgdG8gcGl4ZWxzXG5cbiAgLy8gSWYgdGhlIGJhc2UgZm9udCBzaXplIGlzIGEgJSwgdGhlbiBtdWx0aXBseSBpdCBieSAxNnB4XG4gIEBpZiB1bml0KCRiYXNlKSA9PSAnJScge1xuICAgICRiYXNlOiBkaXZpZGUoJGJhc2UsIDEwMCUpICogMTZweDtcbiAgfVxuXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAncmVtJyB7XG4gICAgJGJhc2U6IHN0cmlwLXVuaXQoJGJhc2UpICogMTZweDtcbiAgfVxuXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAnZW0nIHtcbiAgICAkYmFzZTogc3RyaXAtdW5pdCgkYmFzZSkgKiAxNnB4O1xuICB9XG5cbiAgLy8gTm93IGxldCdzIGNvbnZlcnQgb3VyIHZhbHVlIHRvIHBpeGVscyB0b29cbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnJScge1xuICAgICR2YWx1ZTogZGl2aWRlKCR2YWx1ZSwgMTAwJSkgKiAkYmFzZTtcbiAgfVxuXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ3JlbScge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpICogJGJhc2U7XG4gIH1cblxuICBAaWYgdW5pdCgkdmFsdWUpID09ICdlbScge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpICogJGJhc2U7XG4gIH1cblxuICAvLyAncHgnXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ3B4JyB7XG4gICAgQHJldHVybiBkaXZpZGUoc3RyaXAtdW5pdCgkdmFsdWUpLCBzdHJpcC11bml0KCRiYXNlKSk7XG4gIH1cblxuICAvLyBhc3N1bWUgdGhhdCBsaW5lLWhlaWdodHMgZ3JlYXRlciB0aGFuIDEwIGFyZSBtZWFudCB0byBiZSBhYnNvbHV0ZSBpbiAncHgnXG4gIEBpZiB1bml0bGVzcygkdmFsdWUpIGFuZCAoJHZhbHVlID4gMTApIHtcbiAgICBAcmV0dXJuIGRpdmlkZSgkdmFsdWUsIHN0cmlwLXVuaXQoJGJhc2UpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4vLy8gRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgbm90IGZhbHNleSwgaW4gQ1NTIHRlcm1zLiBGYWxzZXkgdmFsdWVzIGFyZSBgbnVsbGAsIGBub25lYCwgYDBgIHdpdGggYW55IHVuaXQsIG9yIGFuIGVtcHR5IGxpc3QuXG4vLy9cbi8vLyBAcGFyYW0ge01peGVkfSAkdmFsIC0gVmFsdWUgdG8gY2hlY2suXG4vLy9cbi8vLyBAcmV0dXJucyB7Qm9vbGVhbn0gYHRydWVgIGlmIGAkdmFsYCBpcyBub3QgZmFsc2V5LlxuQGZ1bmN0aW9uIGhhcy12YWx1ZSgkdmFsKSB7XG4gIEBpZiAkdmFsID09IG51bGwgb3IgJHZhbCA9PSBub25lIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG4gIEBpZiB0eXBlLW9mKCR2YWwpID09ICdudW1iZXInIGFuZCBzdHJpcC11bml0KCR2YWwpID09IDAge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbiAgQGlmIHR5cGUtb2YoJHZhbCkgPT0gJ2xpc3QnIGFuZCBsZW5ndGgoJHZhbCkgPT0gMCB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxuICBAcmV0dXJuIHRydWU7XG59XG5cbi8vLyBEZXRlcm1pbmUgYSB0b3AvcmlnaHQvYm90dG9tL3JpZ2h0IHZhbHVlIG9uIGEgcGFkZGluZywgbWFyZ2luLCBldGMuIHByb3BlcnR5LCBubyBtYXR0ZXIgaG93IG1hbnkgdmFsdWVzIHdlcmUgcGFzc2VkIGluLiBVc2UgdGhpcyBmdW5jdGlvbiBpZiB5b3UgbmVlZCB0byBrbm93IHRoZSBzcGVjaWZpYyBzaWRlIG9mIGEgdmFsdWUsIGJ1dCBkb24ndCBrbm93IGlmIHRoZSB2YWx1ZSBpcyB1c2luZyBhIHNob3J0aGFuZCBmb3JtYXQuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R8TnVtYmVyfSAkdmFsIC0gVmFsdWUgdG8gYW5hbHl6ZS4gU2hvdWxkIGJlIGEgc2hvcnRoYW5kIHNpemluZyBwcm9wZXJ0eSwgZS5nLiBcIjFlbSAyZW0gMWVtXCJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaWRlIC0gU2lkZSB0byByZXR1cm4uIFNob3VsZCBiZSBgdG9wYCwgYHJpZ2h0YCwgYGJvdHRvbWAsIG9yIGBsZWZ0YC5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IEEgc2luZ2xlIHZhbHVlIGJhc2VkIG9uIGAkdmFsYCBhbmQgYCRzaWRlYC5cbkBmdW5jdGlvbiBnZXQtc2lkZSgkdmFsLCAkc2lkZSkge1xuICAkbGVuZ3RoOiBsZW5ndGgoJHZhbCk7XG5cbiAgQGlmICRsZW5ndGggPT0gMSB7XG4gICAgQHJldHVybiAkdmFsO1xuICB9XG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgIEByZXR1cm4gbWFwLWdldCgoXG4gICAgICB0b3A6IG50aCgkdmFsLCAxKSxcbiAgICAgIGJvdHRvbTogbnRoKCR2YWwsIDEpLFxuICAgICAgbGVmdDogbnRoKCR2YWwsIDIpLFxuICAgICAgcmlnaHQ6IG50aCgkdmFsLCAyKSxcbiAgICApLCAkc2lkZSk7XG4gIH1cbiAgQGlmICRsZW5ndGggPT0gMyB7XG4gICAgQHJldHVybiBtYXAtZ2V0KChcbiAgICAgIHRvcDogbnRoKCR2YWwsIDEpLFxuICAgICAgbGVmdDogbnRoKCR2YWwsIDIpLFxuICAgICAgcmlnaHQ6IG50aCgkdmFsLCAyKSxcbiAgICAgIGJvdHRvbTogbnRoKCR2YWwsIDMpLFxuICAgICksICRzaWRlKTtcbiAgfVxuICBAaWYgJGxlbmd0aCA9PSA0IHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoKFxuICAgICAgdG9wOiBudGgoJHZhbCwgMSksXG4gICAgICByaWdodDogbnRoKCR2YWwsIDIpLFxuICAgICAgYm90dG9tOiBudGgoJHZhbCwgMyksXG4gICAgICBsZWZ0OiBudGgoJHZhbCwgNCksXG4gICAgKSwgJHNpZGUpO1xuICB9XG59XG5cbi8vLyBHaXZlbiBib3JkZXIgJHZhbCwgZmluZCBhIHNwZWNpZmljIGVsZW1lbnQgb2YgdGhlIGJvcmRlciwgd2hpY2ggaXMgJGVsZW0uIFRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yICRlbGVtIGFyZSB3aWR0aCwgc3R5bGUsIGFuZCBjb2xvci5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHZhbCAtIEJvcmRlciB2YWx1ZSB0byBmaW5kIGEgdmFsdWUgaW4uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZWxlbSAtIEJvcmRlciBjb21wb25lbnQgdG8gZXh0cmFjdC5cbi8vL1xuLy8vIEByZXR1cm5zIHtNaXhlZH0gSWYgdGhlIHZhbHVlIGV4aXN0cywgcmV0dXJucyB0aGUgdmFsdWUuIElmIHRoZSB2YWx1ZSBpcyBub3QgaW4gdGhlIGJvcmRlciBkZWZpbml0aW9uLCB0aGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gYSAwcHggd2lkdGgsIHNvbGlkIHN0eWxlLCBvciBibGFjayBib3JkZXIuXG5AZnVuY3Rpb24gZ2V0LWJvcmRlci12YWx1ZSgkdmFsLCAkZWxlbSkge1xuICAvLyBGaW5kIHRoZSB3aWR0aCwgc3R5bGUsIG9yIGNvbG9yIGFuZCByZXR1cm4gaXRcbiAgQGVhY2ggJHYgaW4gJHZhbCB7XG4gICAgJHR5cGU6IHR5cGUtb2YoJHYpO1xuICAgIEBpZiAkZWxlbSA9PSB3aWR0aCBhbmQgJHR5cGUgPT0gJ251bWJlcicge1xuICAgICAgQHJldHVybiAkdjtcbiAgICB9XG4gICAgQGlmICRlbGVtID09IHN0eWxlIGFuZCAkdHlwZSA9PSAnc3RyaW5nJyB7XG4gICAgICBAcmV0dXJuICR2O1xuICAgIH1cbiAgICBAaWYgJGVsZW0gPT0gY29sb3IgYW5kICR0eXBlID09ICdjb2xvcicge1xuICAgICAgQHJldHVybiAkdjtcbiAgICB9XG4gIH1cblxuICAvLyBEZWZhdWx0c1xuICAkZGVmYXVsdHM6IChcbiAgICB3aWR0aDogMCxcbiAgICBzdHlsZTogc29saWQsXG4gICAgY29sb3I6ICMwMDAsXG4gICk7XG5cbiAgQHJldHVybiBtYXAtZ2V0KCRkZWZhdWx0cywgJGVsZW0pO1xufVxuXG4vLy8gRmluZHMgYSB2YWx1ZSBpbiBhIG5lc3RlZCBtYXAuXG4vLy8gQGxpbmsgaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9zbmlwcGV0cy9zYXNzL2RlZXAtZ2V0c2V0LW1hcHMvIERlZXAgR2V0L1NldCBpbiBNYXBzXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byBwdWxsIGEgdmFsdWUgZnJvbS5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGtleXMuLi4gLSBLZXlzIHRvIHVzZSB3aGVuIGxvb2tpbmcgZm9yIGEgdmFsdWUuXG4vLy8gQHJldHVybnMge01peGVkfSBUaGUgdmFsdWUgZm91bmQgaW4gdGhlIG1hcC5cbkBmdW5jdGlvbiBtYXAtZGVlcC1nZXQoJG1hcCwgJGtleXMuLi4pIHtcbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgJG1hcDogbWFwLWdldCgkbWFwLCAka2V5KTtcbiAgfVxuICBAcmV0dXJuICRtYXA7XG59XG5cbi8vLyBDYXN0cyBhIG1hcCBpbnRvIGEgbGlzdC5cbi8vLyBAbGluayBodHRwOi8vaHVnb2dpcmF1ZGVsLmNvbS8yMDE0LzA0LzI4L2Nhc3RpbmctbWFwLWludG8tbGlzdC9cbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHB1bGwgYSB2YWx1ZSBmcm9tLlxuLy8vXG4vLy8gQHJldHVybnMge0xpc3R9IERlcGVuZGluZyBvbiB0aGUgZmxhZywgcmV0dXJucyBlaXRoZXIgJGtleXMgb3IgJHZhbHVlcyBvciBib3RoLlxuQGZ1bmN0aW9uIG1hcC10by1saXN0KCRtYXAsICRrZWVwOiAnYm90aCcpIHtcbiAgJGtlZXA6IGlmKGluZGV4KCdrZXlzJyAndmFsdWVzJywgJGtlZXApLCAka2VlcCwgJ2JvdGgnKTtcblxuICBAaWYgdHlwZS1vZigkbWFwKSA9PSAnbWFwJyB7XG4gICAgJGtleXM6ICgpO1xuICAgICR2YWx1ZXM6ICgpO1xuXG4gICAgQGVhY2ggJGtleSwgJHZhbCBpbiAkbWFwIHtcbiAgICAgICRrZXlzOiBhcHBlbmQoJGtleXMsICRrZXkpO1xuICAgICAgJHZhbHVlczogYXBwZW5kKCR2YWx1ZXMsICR2YWwpO1xuICAgIH1cblxuICAgIEBpZiAka2VlcCA9PSAna2V5cycge1xuICAgICAgQHJldHVybiAka2V5cztcbiAgICB9XG4gICAgQGVsc2UgaWYgJGtlZXAgPT0gJ3ZhbHVlcycge1xuICAgICAgQHJldHVybiAkdmFsdWVzO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuIHppcCgka2V5cywgJHZhbHVlcyk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBpZih0eXBlLW9mKCRtYXApICE9ICdsaXN0JywgKCR2YWx1ZSwpLCAkbWFwKTtcblxufVxuXG4vLy8gUmV0dXJuIGEgam9pbiBvZiB0aGUgdHdvIGdpdmVuIHN0cmluZ3MgYCRzdHIxYCBhbmQgYCRzdHIyYC5cbi8vLyBJZiB0aGUgdHdvIHN0cmluZ3MgYXJlIG5vdCBlbXB0eSwgdGhleSBhcmUgc2VwYXJhdGVkIGJ5IGAkZGVsaW1pdGVyYC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3RyMSBbbnVsbF0gLSBGaXJzdCBzdHJpbmcgdG8gam9pbi5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN0cjEgW251bGxdIC0gU2Vjb25kIHN0cmluZyB0byBqb2luLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZGVsaW1pdGVyIFtudWxsXSAtIERlbGltaWV0ZXIgYmV0d2VlbiBgJHN0cjFgIGFuZCBgJHN0cjJgLlxuLy8vXG4vLy8gQHJldHVybnMge1N0cmluZ30gSm9pbiBvZiBgJHN0cjFgLCBgJGRlbGltaXRlcmAgYW5kIGAkc3RyMmAuXG5AZnVuY3Rpb24gemYtc3RyLWpvaW4oXG4gICRzdHIxOiBudWxsLFxuICAkc3RyMjogbnVsbCxcbiAgJGRlbGltaXRlcjogbnVsbFxuKSB7XG4gICRyZXQ6ICcnO1xuXG4gIEBpZiAkc3RyMSBhbmQgc3RyLWxlbmd0aCgkc3RyMSkgPiAwIHtcbiAgICAkcmV0OiAkcmV0ICsgJHN0cjE7XG5cbiAgICBAaWYgJGRlbGltaXRlciBhbmQgc3RyLWxlbmd0aCgkZGVsaW1pdGVyKSA+IDAgYW5kICRzdHIyIGFuZCBzdHItbGVuZ3RoKCRzdHIyKSA+IDAge1xuICAgICAgJHJldDogJHJldCArICRkZWxpbWl0ZXI7XG4gICAgfVxuICB9XG4gIEBpZiAkc3RyMiBhbmQgc3RyLWxlbmd0aCgkc3RyMikgPiAwIHtcbiAgICAkcmV0OiAkcmV0ICsgJHN0cjI7XG4gIH1cblxuICBAcmV0dXJuICRyZXQ7XG59XG5cbi8vLyBTYWZlbHkgcmV0dXJuIGEgdmFsdWUgZnJvbSBhIG1hcC5cbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHJldHJpZXZlIGEgdmFsdWUgZnJvbS5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGtleSAtIE5hbWUgb2YgdGhlIG1hcCBrZXkuXG4vLy9cbi8vLyBAcmV0dXJucyB7TGlzdH0gRm91bmQgdmFsdWUuXG5AZnVuY3Rpb24gbWFwLXNhZmUtZ2V0KCRtYXAsICRrZXkpIHtcbiAgQGlmICh0eXBlLW9mKCRtYXApID09ICdtYXAnIG9yICh0eXBlLW9mKCRtYXApID09ICdsaXN0JyBhbmQgbGVuZ3RoKCRtYXApID09IDApKSB7XG4gICAgQGlmIChtYXAtaGFzLWtleSgkbWFwLCAka2V5KSkge1xuICAgICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsICRrZXkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAZXJyb3IgJ0tleTogYCN7JGtleX1gIGlzIG5vdCBhdmFpbGFibGUgaW4gYCN7JG1hcH1gJztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBlcnJvciAnYCN7JG1hcH1gIGlzIG5vdCBhIHZhbGlkIG1hcCc7XG4gIH1cbn1cblxuLy8vIENvbnZlcnQgdGhlIGdpdmVuIGAkdmFsYCB0byBhIEJvb2xlYW4uIEVtcHR5IHZhbHVlcyBhcmUgY29uc2lkZXJlZCBhcyBmYWxzZS5cbi8vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7Kn0gJHZhbCAtIFZhbHVlIHRvIGNvbnZlcnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7Qm9vbGVhbn0gQ29udmVydGVkIEJvb2xlYW4gdmFsdWUuXG5AZnVuY3Rpb24gLXpmLWJvb2woJHZhbCkge1xuICBAcmV0dXJuICR2YWwgIT0gZmFsc2UgYW5kIGhhcy12YWx1ZSgkdmFsKTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuLy8vIFJldHVybnMgdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiBvZiAkZGlyXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXIgLSBVc2VkIGRpcmVjdGlvbiBiZXR3ZWVuIFwidG9wXCIsIFwicmlnaHRcIiwgXCJib3R0b21cIiBhbmQgXCJsZWZ0XCIuXG4vLy8gQHJldHVybiB7S2V5d29yZH0gT3Bwb3NpdGUgZGlyZWN0aW9uIG9mICRkaXJcbkBmdW5jdGlvbiBkaXJlY3Rpb24tb3Bwb3NpdGUoXG4gICRkaXJcbikge1xuICAkZGlyczogKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7XG4gICRwbGFjZTogaW5kZXgoJGRpcnMsICRkaXIpO1xuXG4gIEBpZiAkcGxhY2UgPT0gbnVsbCB7XG4gICAgQGVycm9yICdkaXJlY3Rpb24tb3Bwb3NpdGU6IEludmFsaWQgJGRpciBwYXJhbWV0ZXIsIGV4cGVjdGVkIGEgdmFsdWUgZnJvbSBcIiN7JGRpcnN9XCIsIGZvdW5kIFwiI3skZGlyfVwiLic7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gQ2FsY3VsYXRlIHRoZSBvcHBvc2l0ZSBwbGFjZSBpbiBhIGNpcmNsZSwgd2l0aCBhIHN0YXJ0aW5nIGluZGV4IG9mIDFcbiAgJGxlbmd0aDogbGVuZ3RoKCRkaXJzKTtcbiAgJGRlbWk6ICRsZW5ndGggKiAwLjU7XG4gICRvcHBvc2l0ZS1wbGFjZTogKCgkcGxhY2UgKyAkZGVtaSAtIDEpICUgJGxlbmd0aCkgKyAxO1xuXG4gIEByZXR1cm4gbnRoKCRkaXJzLCAkb3Bwb3NpdGUtcGxhY2UpO1xufVxuXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbkBpbXBvcnQgJ21hdGgnO1xuXG4kY29udHJhc3Qtd2FybmluZ3M6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLy9cbi8vLyBQYXRjaCB0byBmaXggaXNzdWUgIzEyMDgwXG5cbiRwcmltYXJ5LWNvbG9yOiBudWxsO1xuJHNlY29uZGFyeS1jb2xvcjogbnVsbDtcbiR3YXJuaW5nLWNvbG9yOiBudWxsO1xuJGFsZXJ0LWNvbG9yOiBudWxsO1xuJHN1Y2Nlc3MtY29sb3I6bnVsbDtcbi8vLy9cblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuLy8vIENoZWNrcyB0aGUgbHVtaW5hbmNlIG9mIGAkY29sb3JgLlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gQ29sb3IgdG8gY2hlY2sgdGhlIGx1bWluYW5jZSBvZi5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBsdW1pbmFuY2Ugb2YgYCRjb2xvcmAuXG5AZnVuY3Rpb24gY29sb3ItbHVtaW5hbmNlKCRjb2xvcikge1xuICAvLyBBZGFwdGVkIGZyb206IGh0dHBzOi8vZ2l0aHViLmNvbS9MZWFWZXJvdS9jb250cmFzdC1yYXRpby9ibG9iL2doLXBhZ2VzL2NvbG9yLmpzXG4gIC8vIEZvcm11bGE6IGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDgvUkVDLVdDQUcyMC0yMDA4MTIxMS8jcmVsYXRpdmVsdW1pbmFuY2VkZWZcbiAgJHJnYmE6IHJlZCgkY29sb3IpLCBncmVlbigkY29sb3IpLCBibHVlKCRjb2xvcik7XG4gICRyZ2JhMjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAzIHtcbiAgICAkcmdiOiBudGgoJHJnYmEsICRpKTtcbiAgICAkcmdiOiBkaXZpZGUoJHJnYiwgMjU1KTtcblxuICAgICRyZ2I6IGlmKCRyZ2IgPCAwLjAzOTI4LCBkaXZpZGUoJHJnYiwgMTIuOTIpLCBwb3coZGl2aWRlKCRyZ2IgKyAwLjA1NSwgMS4wNTUpLCAyLjQpKTtcblxuICAgICRyZ2JhMjogYXBwZW5kKCRyZ2JhMiwgJHJnYik7XG4gIH1cblxuICBAcmV0dXJuIDAuMjEyNiAqIG50aCgkcmdiYTIsIDEpICsgMC43MTUyICogbnRoKCRyZ2JhMiwgMikgKyAwLjA3MjIgKiBudGgoJHJnYmEyLCAzKTtcbn1cblxuLy8vIENoZWNrcyB0aGUgY29udHJhc3QgcmF0aW8gb2YgdHdvIGNvbG9ycy5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvcjEgLSBGaXJzdCBjb2xvciB0byBjb21wYXJlLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvcjIgLSBTZWNvbmQgY29sb3IgdG8gY29tcGFyZS5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBjb250cmFzdCByYXRpbyBvZiB0aGUgY29tcGFyZWQgY29sb3JzLlxuQGZ1bmN0aW9uIGNvbG9yLWNvbnRyYXN0KCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgLy8gQWRhcHRlZCBmcm9tOiBodHRwczovL2dpdGh1Yi5jb20vTGVhVmVyb3UvY29udHJhc3QtcmF0aW8vYmxvYi9naC1wYWdlcy9jb2xvci5qc1xuICAvLyBGb3JtdWxhOiBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA4L1JFQy1XQ0FHMjAtMjAwODEyMTEvI2NvbnRyYXN0LXJhdGlvZGVmXG4gICRsdW1pbmFuY2UxOiBjb2xvci1sdW1pbmFuY2UoJGNvbG9yMSkgKyAwLjA1O1xuICAkbHVtaW5hbmNlMjogY29sb3ItbHVtaW5hbmNlKCRjb2xvcjIpICsgMC4wNTtcbiAgJHJhdGlvOiBkaXZpZGUoJGx1bWluYW5jZTEsICRsdW1pbmFuY2UyKTtcblxuICBAaWYgJGx1bWluYW5jZTIgPiAkbHVtaW5hbmNlMSB7XG4gICAgJHJhdGlvOiBkaXZpZGUoMSwgJHJhdGlvKTtcbiAgfVxuXG4gICRyYXRpbzogcm91bmQoJHJhdGlvICogMTApICogMC4xO1xuXG4gIEByZXR1cm4gJHJhdGlvO1xufVxuXG4vLy8gQ2hlY2tzIHRoZSBsdW1pbmFuY2Ugb2YgYCRiYXNlYCwgYW5kIHJldHVybnMgdGhlIGNvbG9yIGZyb20gYCRjb2xvcnNgIChsaXN0IG9mIGNvbG9ycykgdGhhdCBoYXMgdGhlIG1vc3QgY29udHJhc3QuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFzZSAtIENvbG9yIHRvIGNoZWNrIGx1bWluYW5jZS5cbi8vLyBAcGFyYW0ge0xpc3R9ICRjb2xvcnMgWygkd2hpdGUsICRibGFjayldIC0gQ29sb3JzIHRvIGNvbXBhcmUuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0b2xlcmFuY2UgWyRnbG9iYWwtY29sb3ItcGljay1jb250cmFzdC10b2xlcmFuY2VdIC0gQ29udHJhc3QgdG9sZXJhbmNlLlxuLy8vXG4vLy8gQHJldHVybnMge0NvbG9yfSB0aGUgY29sb3IgZnJvbSBgJGNvbG9yc2AgKGxpc3Qgb2YgY29sb3JzKSB0aGF0IGhhcyB0aGUgbW9zdCBjb250cmFzdC5cbkBmdW5jdGlvbiBjb2xvci1waWNrLWNvbnRyYXN0KCRiYXNlLCAkY29sb3JzOiAoJHdoaXRlLCAkYmxhY2spLCAkdG9sZXJhbmNlOiAkZ2xvYmFsLWNvbG9yLXBpY2stY29udHJhc3QtdG9sZXJhbmNlKSB7XG4gICRjb250cmFzdDogY29sb3ItY29udHJhc3QoJGJhc2UsIG50aCgkY29sb3JzLCAxKSk7XG4gICRiZXN0OiBudGgoJGNvbG9ycywgMSk7XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCBsZW5ndGgoJGNvbG9ycykge1xuICAgICRjdXJyZW50LWNvbnRyYXN0OiBjb2xvci1jb250cmFzdCgkYmFzZSwgbnRoKCRjb2xvcnMsICRpKSk7XG4gICAgQGlmICgkY3VycmVudC1jb250cmFzdCAtICRjb250cmFzdCA+ICR0b2xlcmFuY2UpIHtcbiAgICAgICRjb250cmFzdDogY29sb3ItY29udHJhc3QoJGJhc2UsIG50aCgkY29sb3JzLCAkaSkpO1xuICAgICAgJGJlc3Q6IG50aCgkY29sb3JzLCAkaSk7XG4gICAgfVxuICB9XG5cbiAgQGlmICgkY29udHJhc3Qtd2FybmluZ3MgYW5kICRjb250cmFzdCA8IDMpIHtcbiAgICBAd2FybiBcIkNvbnRyYXN0IHJhdGlvIG9mICN7JGJlc3R9IG9uICN7JGJhc2V9IGlzIHByZXR0eSBiYWQsIGp1c3QgI3skY29udHJhc3R9XCI7XG4gIH1cblxuICBAcmV0dXJuICRiZXN0O1xufVxuXG4vLy8gU2NhbGVzIGEgY29sb3IgdG8gYmUgZGFya2VyIGlmIGl0J3MgbGlnaHQsIG9yIGxpZ2h0ZXIgaWYgaXQncyBkYXJrLiBVc2UgdGhpcyBmdW5jdGlvbiB0byB0aW50IGEgY29sb3IgYXBwcm9wcmlhdGUgdG8gaXRzIGxpZ2h0bmVzcy5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIENvbG9yIHRvIHNjYWxlLlxuLy8vIEBwYXJhbSB7UGVyY2VudGFnZX0gJHNjYWxlIFs1JV0gLSBBbW91bnQgdG8gc2NhbGUgdXAgb3IgZG93bi5cbi8vLyBAcGFyYW0ge1BlcmNlbnRhZ2V9ICR0aHJlc2hvbGQgWzQwJV0gLSBUaHJlc2hvbGQgb2YgbGlnaHRuZXNzIHRvIGNoZWNrIGFnYWluc3QuXG4vLy9cbi8vLyBAcmV0dXJucyB7Q29sb3J9IEEgc2NhbGVkIGNvbG9yLlxuQGZ1bmN0aW9uIHNtYXJ0LXNjYWxlKCRjb2xvciwgJHNjYWxlOiA1JSwgJHRocmVzaG9sZDogNDAlKSB7XG4gIEBpZiBsaWdodG5lc3MoJGNvbG9yKSA+ICR0aHJlc2hvbGQge1xuICAgICRzY2FsZTogLSRzY2FsZTtcbiAgfVxuICBAcmV0dXJuIHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJHNjYWxlKTtcbn1cblxuLy8vIEdldCBjb2xvciBmcm9tIGZvdW5kYXRpb24tcGFsZXR0ZVxuLy8vXG4vLy8gQHBhcmFtIHtrZXl9IGNvbG9yIGtleSBmcm9tIGZvdW5kYXRpb24tcGFsZXR0ZVxuLy8vXG4vLy8gQHJldHVybnMge0NvbG9yfSBjb2xvciBmcm9tIGZvdW5kYXRpb24tcGFsZXR0ZVxuQGZ1bmN0aW9uIGdldC1jb2xvcigka2V5KSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCAka2V5KSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsICRrZXkpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAZXJyb3IgJ2dpdmVuICRrZXkgaXMgbm90IGF2YWlsYWJsZSBpbiAkZm91bmRhdGlvbi1wYWxldHRlJztcbiAgfVxufVxuXG4vLy8gVHJhbnNmZXJzIHRoZSBjb2xvcnMgaW4gdGhlIGAkZm91bmRhdGlvbi1wYWxldHRlYCBtYXAgaW50byB2YXJpYWJsZXMsIHN1Y2ggYXMgYCRwcmltYXJ5LWNvbG9yYCBhbmQgYCRzZWNvbmRhcnktY29sb3JgLiBDYWxsIHRoaXMgbWl4aW4gYmVsb3cgdGhlIEdsb2JhbCBzZWN0aW9uIG9mIHlvdXIgc2V0dGluZ3MgZmlsZSB0byBwcm9wZXJseSBtaWdyYXRlIHlvdXIgY29kZWJhc2UuXG5AbWl4aW4gYWRkLWZvdW5kYXRpb24tY29sb3JzKCkge1xuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgcHJpbWFyeSkge1xuICAgICRwcmltYXJ5LWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHByaW1hcnkpICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICRwcmltYXJ5LWNvbG9yOiAjMTc3OWJhICFnbG9iYWw7XG4gIH1cbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHNlY29uZGFyeSkge1xuICAgICRzZWNvbmRhcnktY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgc2Vjb25kYXJ5KSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkc2Vjb25kYXJ5LWNvbG9yOiAjNzY3Njc2ICFnbG9iYWw7XG4gIH1cbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHN1Y2Nlc3MpIHtcbiAgICAkc3VjY2Vzcy1jb2xvcjogbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCBzdWNjZXNzKSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkc3VjY2Vzcy1jb2xvcjogIzNhZGI3NiAhZ2xvYmFsO1xuICB9XG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCB3YXJuaW5nKSB7XG4gICAgJHdhcm5pbmctY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgd2FybmluZykgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJHdhcm5pbmctY29sb3I6ICNmZmFlMDAgIWdsb2JhbDtcbiAgfVxuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgYWxlcnQpIHtcbiAgICAkYWxlcnQtY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgYWxlcnQpICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICRhbGVydC1jb2xvcjogI2NjNGIzNyAhZ2xvYmFsO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbi8vLyBHZW5lcmF0ZXMgYSBzZWxlY3RvciB3aXRoIGV2ZXJ5IHRleHQgaW5wdXQgdHlwZS4gWW91IGNhbiBhbHNvIGZpbHRlciB0aGUgbGlzdCB0byBvbmx5IG91dHB1dCBhIHN1YnNldCBvZiB0aG9zZSBzZWxlY3RvcnMuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R8S2V5d29yZH0gJHR5cGVzIFsoKV0gLSBBIGxpc3Qgb2YgdGV4dCBpbnB1dCB0eXBlcyB0byB1c2UuIExlYXZlIGJsYW5rIHRvIHVzZSBhbGwgb2YgdGhlbS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRtb2RpZmllciBbJyddIC0gQSBtb2RpZmllciB0byBiZSBhcHBsaWVkIHRvIGVhY2ggdGV4dCBpbnB1dCB0eXBlIChlLmcuIGEgY2xhc3Mgb3IgYSBwc2V1ZG8tY2xhc3MpLiBMZWF2ZSBibGFuayB0byBpZ25vcmUuXG5AZnVuY3Rpb24gdGV4dC1pbnB1dHMoJHR5cGVzOiAoKSwgJG1vZGlmaWVyOiAnJykge1xuICAkcmV0dXJuOiAoKTtcblxuICAkYWxsLXR5cGVzOlxuICAgIHRleHRcbiAgICBwYXNzd29yZFxuICAgIGRhdGVcbiAgICBkYXRldGltZVxuICAgIGRhdGV0aW1lLWxvY2FsXG4gICAgbW9udGhcbiAgICB3ZWVrXG4gICAgZW1haWxcbiAgICBudW1iZXJcbiAgICBzZWFyY2hcbiAgICB0ZWxcbiAgICB0aW1lXG4gICAgdXJsXG4gICAgY29sb3I7XG5cbiAgQGlmIG5vdCBoYXMtdmFsdWUoJHR5cGVzKSB7XG4gICAgJHR5cGVzOiAkYWxsLXR5cGVzO1xuICB9XG5cbiAgQGVhY2ggJHR5cGUgaW4gJHR5cGVzIHtcbiAgICAkcmV0dXJuOiBhcHBlbmQoJHJldHVybiwgdW5xdW90ZSgnW3R5cGU9XFwnI3skdHlwZX1cXCddI3skbW9kaWZpZXJ9JyksIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIkBmdW5jdGlvbiAtemYtZmxleC1qdXN0aWZ5KCR0ZXh0LWRpcmVjdGlvbil7XG4gICQtemYtZmxleC1qdXN0aWZ5OiAoXG4gICAgJ2xlZnQnOiBpZigkdGV4dC1kaXJlY3Rpb24gPT0gcnRsLCBmbGV4LWVuZCwgZmxleC1zdGFydCksXG4gICAgJ3JpZ2h0JzogaWYoJHRleHQtZGlyZWN0aW9uID09IHJ0bCwgZmxleC1zdGFydCwgZmxleC1lbmQpLFxuICAgICdjZW50ZXInOiBjZW50ZXIsXG4gICAgJ2p1c3RpZnknOiBzcGFjZS1iZXR3ZWVuLFxuICAgICdzcGFjZWQnOiBzcGFjZS1hcm91bmQsXG4gICk7XG5cbiAgQHJldHVybiAkLXpmLWZsZXgtanVzdGlmeTtcbn1cblxuXG4kLXpmLWZsZXgtYWxpZ246IChcbiAgJ3RvcCc6IGZsZXgtc3RhcnQsXG4gICdib3R0b20nOiBmbGV4LWVuZCxcbiAgJ21pZGRsZSc6IGNlbnRlcixcbiAgJ3N0cmV0Y2gnOiBzdHJldGNoLFxuKTtcblxuJC16Zi1mbGV4LWRpcmVjdGlvbjogKFxuICAncm93Jzogcm93LFxuICAncm93LXJldmVyc2UnOiByb3ctcmV2ZXJzZSxcbiAgJ2NvbHVtbic6IGNvbHVtbixcbiAgJ2NvbHVtbi1yZXZlcnNlJzogY29sdW1uLXJldmVyc2UsXG4pO1xuXG4vLy8gRW5hYmxlcyBmbGV4Ym94IGJ5IGFkZGluZyBgZGlzcGxheTogZmxleGAgdG8gdGhlIGVsZW1lbnQuXG5AbWl4aW4gZmxleCB7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG5cbi8vLyBIb3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBhbGlnbnMgdGhlIGl0ZW1zIHdpdGhpbiBhIGZsZXggY29udGFpbmVyLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkeCBbbnVsbF0gLSBIb3Jpem9udGFsIGFsaWdubWVudCB0byB1c2UuIENhbiBiZSBgbGVmdGAsIGByaWdodGAsIGBjZW50ZXJgLCBganVzdGlmeWAsIG9yIGBzcGFjZWRgLiBPciwgc2V0IGl0IHRvIGBudWxsYCAodGhlIGRlZmF1bHQpIHRvIG5vdCBzZXQgaG9yaXpvbnRhbCBhbGlnbm1lbnQuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkeSBbbnVsbF0gLSBWZXJ0aWNhbCBhbGlnbm1lbnQgdG8gdXNlLiBDYW4gYmUgYHRvcGAsIGBib3R0b21gLCBgbWlkZGxlYCwgb3IgYHN0cmV0Y2hgLiBPciwgc2V0IGl0IHRvIGBudWxsYCAodGhlIGRlZmF1bHQpIHRvIG5vdCBzZXQgdmVydGljYWwgYWxpZ25tZW50LlxuQG1peGluIGZsZXgtYWxpZ24oJHg6IG51bGwsICR5OiBudWxsKSB7XG4gIEBpZiAkeCB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCQtemYtZmxleC1qdXN0aWZ5LCAkeCkge1xuICAgICAgJHg6IG1hcC1nZXQoJC16Zi1mbGV4LWp1c3RpZnksICR4KTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJ2ZsZXgtZ3JpZC1yb3ctYWxpZ24oKTogI3skeH0gaXMgbm90IGEgdmFsaWQgdmFsdWUgZm9yIGhvcml6b250YWwgYWxpZ25tZW50LiBVc2UgbGVmdCwgcmlnaHQsIGNlbnRlciwganVzdGlmeSwgb3Igc3BhY2VkLic7XG4gICAgfVxuICB9XG5cbiAgQGlmICR5IHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJC16Zi1mbGV4LWFsaWduLCAkeSkge1xuICAgICAgJHk6IG1hcC1nZXQoJC16Zi1mbGV4LWFsaWduLCAkeSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICdmbGV4LWdyaWQtcm93LWFsaWduKCk6ICN7JHl9IGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciB2ZXJ0aWNhbCBhbGlnbm1lbnQuIFVzZSB0b3AsIGJvdHRvbSwgbWlkZGxlLCBvciBzdHJldGNoLic7XG4gICAgfVxuICB9XG5cbiAganVzdGlmeS1jb250ZW50OiAkeDtcbiAgYWxpZ24taXRlbXM6ICR5O1xufVxuXG4vLy8gVmVydGljYWxseSBhbGlnbiBhIHNpbmdsZSBjb2x1bW4gd2l0aGluIGEgZmxleCByb3cuIEFwcGx5IHRoaXMgbWl4aW4gdG8gYSBmbGV4IGNvbHVtbi5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHkgW251bGxdIC0gVmVydGljYWwgYWxpZ25tZW50IHRvIHVzZS4gQ2FuIGJlIGB0b3BgLCBgYm90dG9tYCwgYG1pZGRsZWAsIG9yIGBzdHJldGNoYC4gT3IsIHNldCBpdCB0byBgbnVsbGAgKHRoZSBkZWZhdWx0KSB0byBub3Qgc2V0IHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiBmbGV4LWFsaWduLXNlbGYoJHk6IG51bGwpIHtcbiAgQGlmICR5IHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJC16Zi1mbGV4LWFsaWduLCAkeSkge1xuICAgICAgJHk6IG1hcC1nZXQoJC16Zi1mbGV4LWFsaWduLCAkeSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICdmbGV4LWdyaWQtY29sdW1uLWFsaWduKCk6ICN7JHl9IGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciBhbGlnbm1lbnQuIFVzZSB0b3AsIGJvdHRvbSwgbWlkZGxlLCBvciBzdHJldGNoLic7XG4gICAgfVxuICB9XG5cbiAgYWxpZ24tc2VsZjogJHk7XG59XG5cbi8vLyBDaGFuZ2VzIHRoZSBzb3VyY2Ugb3JkZXIgb2YgYSBmbGV4IGNoaWxkLiBDaGlsZHJlbiB3aXRoIGxvd2VyIG51bWJlcnMgYXBwZWFyIGZpcnN0IGluIHRoZSBsYXlvdXQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRvcmRlciBbMF0gLSBPcmRlciBudW1iZXIgdG8gYXBwbHkuXG5AbWl4aW4gZmxleC1vcmRlcigkb3JkZXI6IDApIHtcbiAgb3JkZXI6ICRvcmRlcjtcbn1cblxuLy8vIENoYW5nZSBmbGV4LWRpcmVjdGlvblxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGRpcmVjdGlvbiBbcm93XSAtIEZsZXggZGlyZWN0aW9uIHRvIHVzZS4gQ2FuIGJlXG4vLy8gICAtIHJvdyAoZGVmYXVsdCk6IHNhbWUgYXMgdGV4dCBkaXJlY3Rpb25cbi8vLyAgIC0gcm93LXJldmVyc2U6IG9wcG9zaXRlIHRvIHRleHQgZGlyZWN0aW9uXG4vLy8gICAtIGNvbHVtbjogc2FtZSBhcyByb3cgYnV0IHRvcCB0byBib3R0b21cbi8vLyAgIC0gY29sdW1uLXJldmVyc2U6IHNhbWUgYXMgcm93LXJldmVyc2UgdG9wIHRvIGJvdHRvbVxuQG1peGluIGZsZXgtZGlyZWN0aW9uKCRkaXJlY3Rpb246IHJvdykge1xuICBmbGV4LWRpcmVjdGlvbjogJGRpcmVjdGlvbjtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBicmVha3BvaW50c1xuLy8vL1xuXG4vLy8vXG4vLy8gUGF0Y2ggdG8gZml4IGlzc3VlICMxMjA4MFxuXG4kLXpmLXNpemU6IG51bGw7XG4vLy8vXG5cbi8vLyBBIGxpc3Qgb2YgbmFtZWQgYnJlYWtwb2ludHMuIFlvdSBjYW4gdXNlIHRoZXNlIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRvIHF1aWNrbHkgY3JlYXRlIG1lZGlhIHF1ZXJpZXMuXG4vLy8gQHR5cGUgTWFwXG4kYnJlYWtwb2ludHM6IChcbiAgc21hbGw6IDAsXG4gIG1lZGl1bTogNjQwcHgsXG4gIGxhcmdlOiAxMDI0cHgsXG4gIHhsYXJnZTogMTIwMHB4LFxuICB4eGxhcmdlOiAxNDQwcHgsXG4pICFkZWZhdWx0O1xuXG4vLy8gQSBsaXN0IG9mIG5hbWVkIEhpRFBJIGJyZWFrcG9pbnRzLiBZb3UgY2FuIHVzZSB0aGVzZSB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0byBxdWlja2x5IGNyZWF0ZSBtZWRpYSBxdWVyaWVzIGZvciByZXNvbHV0aW9ucy5cbi8vLyBWYWx1ZXMgbXVzdCByZXByZXNlbnQgdGhlIGRldmljZSBwaXhlbHMgLyB3ZWIgcGl4ZWxzIHJhdGlvbiBhbmQgYmUgdW5pdGxlc3Mgb3IgaW4gRFBQWC5cbi8vLyBAdHlwZSBNYXBcbiRicmVha3BvaW50cy1oaWRwaTogKFxuICBoaWRwaS0xOiAxLFxuICBoaWRwaS0xLTU6IDEuNSxcbiAgaGlkcGktMjogMixcbiAgcmV0aW5hOiAyLFxuICBoaWRwaS0zOiAzXG4pICFkZWZhdWx0O1xuXG4vLy8gVGhlIGxhcmdlc3QgbmFtZWQgYnJlYWtwb2ludCBpbiB3aGljaCB0byBpbmNsdWRlIHByaW50IGFzIGEgbWVkaWEgdHlwZVxuLy8vIEB0eXBlIEtleXdvcmRcbiRwcmludC1icmVha3BvaW50OiBsYXJnZSAhZGVmYXVsdDtcblxuJC16Zi16ZXJvLWJyZWFrcG9pbnQ6IHNtYWxsICFkZWZhdWx0O1xuXG4kLXpmLWJyZWFrcG9pbnRzLWtleXM6IG1hcC10by1saXN0KCRicmVha3BvaW50cywgJ2tleXMnKTtcblxuQGlmIG50aChtYXAtdmFsdWVzKCRicmVha3BvaW50cyksIDEpICE9IDAge1xuICBAZXJyb3IgJ1RoZSBmaXJzdCBrZXkgaW4gdGhlICRicmVha3BvaW50cyBtYXAgbXVzdCBoYXZlIGEgdmFsdWUgb2YgXCIwXCIuJztcbn1cbkBlbHNlIHtcbiAgJC16Zi16ZXJvLWJyZWFrcG9pbnQ6IG50aChtYXAta2V5cygkYnJlYWtwb2ludHMpLCAxKTtcbn1cblxuLy8vIEFsbCBvZiB0aGUgbmFtZXMgaW4gdGhpcyBsaXN0IHdpbGwgYmUgb3V0cHV0IGFzIGNsYXNzZXMgaW4geW91ciBDU1MsIGxpa2UgYC5zbWFsbC0xMmAsIGAubWVkaXVtLTZgLCBhbmQgc28gb24uIEVhY2ggdmFsdWUgaW4gdGhpcyBsaXN0IG11c3QgYWxzbyBiZSBpbiB0aGUgYCRicmVha3BvaW50c2AgbWFwLlxuLy8vIEB0eXBlIExpc3RcbiRicmVha3BvaW50LWNsYXNzZXM6IChzbWFsbCBtZWRpdW0gbGFyZ2UpICFkZWZhdWx0O1xuXG4vLy8gR2VuZXJhdGVzIGEgbWVkaWEgcXVlcnkgc3RyaW5nIG1hdGNoaW5nIHRoZSBpbnB1dCB2YWx1ZS4gUmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0byBzZWUgd2hhdCB0aGUgcG9zc2libGUgaW5wdXRzIGFyZS5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICR2YWwgW3NtYWxsXSAtIEJyZWFrcG9pbnQgbmFtZSwgb3IgcHgsIHJlbSwgb3IgZW0gdmFsdWUgdG8gcHJvY2Vzcy5cbkBmdW5jdGlvbiBicmVha3BvaW50KCR2YWw6ICQtemYtemVyby1icmVha3BvaW50KSB7XG4gIC8vIFdlYiBzdGFuZGFyZCBQaXhlbHMgcGVyIGluY2guICgxZGRweCAvICRzdGQtd2ViLWRwaSkgPSAxZHBpXG4gIC8vIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXZhbHVlcy0zLyNhYnNvbHV0ZS1sZW5ndGhzXG4gICRzdGQtd2ViLWRwaTogOTY7XG5cbiAgLy8gU2l6ZSBvciBrZXl3b3JkXG4gICRicDogbnRoKCR2YWwsIDEpO1xuICAvLyBWYWx1ZSBvZiB0aGUgZm9sbG93aW5nIGJyZWFrcG9pbnRcbiAgJGJwLW5leHQ6IG51bGw7XG4gIC8vIFZhbHVlIGZvciBtYXgtd2lkdGggbWVkaWEgcXVlcmllc1xuICAkYnAtbWluOiBudWxsO1xuICAvLyBWYWx1ZSBmb3IgbWluLXdpZHRoIG1lZGlhIHF1ZXJpZXNcbiAgJGJwLW1heDogbnVsbDtcbiAgLy8gRGlyZWN0aW9uIG9mIG1lZGlhIHF1ZXJ5ICh1cCwgZG93biwgb3Igb25seSlcbiAgJGRpcjogaWYobGVuZ3RoKCR2YWwpID4gMSwgbnRoKCR2YWwsIDIpLCB1cCk7XG4gIC8vIElmIG5hbWVkLCBuYW1lIG9mIHRoZSBicmVha3BvaW50XG4gICRuYW1lOiBudWxsO1xuICAvLyBJZiB0aGUgYnJlYWtwb2ludCBpcyBhIEhpRFBJIGJyZWFrcG9pbnRcbiAgJGhpZHBpOiBmYWxzZTtcblxuICAvLyBPcmllbnRhdGlvbiBtZWRpYSBxdWVyaWVzIGhhdmUgYSB1bmlxdWUgc3ludGF4XG4gIEBpZiAkYnAgPT0gJ2xhbmRzY2FwZScgb3IgJGJwID09ICdwb3J0cmFpdCcge1xuICAgIEByZXR1cm4gJyhvcmllbnRhdGlvbjogI3skYnB9KSc7XG4gIH1cblxuICAvLyBJZiBhIGJyZWFrcG9pbnQgbmFtZSBpcyBnaXZlbiwgZ2V0IGl0cyB2YWx1ZSBmcm9tIHRoZSAkYnJlYWtwb2ludHMvJGJyZWFrcG9pbnRzLWhpZHBpIG1hcC5cbiAgQGlmIHR5cGUtb2YoJGJwKSA9PSAnc3RyaW5nJyB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJGJwKSB7XG4gICAgICAkbmFtZTogJGJwO1xuICAgICAgJGJwOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICAgICAgJGJwLW5leHQ6IC16Zi1tYXAtbmV4dCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgICB9XG4gICAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLWhpZHBpLCAkYnApIHtcbiAgICAgICRuYW1lOiAkYnA7XG4gICAgICAkYnA6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLWhpZHBpLCAkbmFtZSk7XG4gICAgICAkYnAtbmV4dDogLXpmLW1hcC1uZXh0LW51bWJlcigkYnJlYWtwb2ludHMtaGlkcGksICRicCk7XG4gICAgICAkaGlkcGk6IHRydWU7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRicDogMDtcbiAgICAgIEB3YXJuICdicmVha3BvaW50KCk6IFwiI3skdmFsfVwiIGlzIG5vdCBkZWZpbmVkIGluIHlvdXIgYCRicmVha3BvaW50c2Agb3IgYCRicmVha3BvaW50cy1oaWRwaWAgc2V0dGluZy4nO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBub3QgJG5hbWUgYW5kICRkaXIgPT0gJ29ubHknIHtcbiAgICBAd2FybiAnYnJlYWtwb2ludCgpOiBPbmx5IG5hbWVkIG1lZGlhIHF1ZXJpZXMgY2FuIGhhdmUgYW4gYG9ubHlgIHJhbmdlLic7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gT25seSAnb25seScgYW5kICd1cCcgaGF2ZSBhIG1pbiBsaW1pdC5cbiAgQGlmICRkaXIgPT0gJ29ubHknIG9yICRkaXIgPT0gJ3VwJyB7XG4gICAgJGJwLW1pbjogaWYoJGhpZHBpLCBzdHJpcC11bml0KCRicCksIC16Zi1icC10by1lbSgkYnApKTtcbiAgfVxuICAvLyBPbmx5ICdvbmx5JyBhbmQgJ2Rvd24nIGhhdmUgYSBtYXggbGltaXQuXG4gIEBpZiAkZGlyID09ICdvbmx5JyBvciAkZGlyID09ICdkb3duJyB7XG4gICAgLy8gSWYgdGhlIGJyZWFrcG9pbnQgaXMgYSB2YWx1ZSwgdXNlIGl0IGFzIG1heCBsaW1pdC5cbiAgICBAaWYgbm90ICRuYW1lIHtcbiAgICAgICRicC1tYXg6IGlmKCRoaWRwaSwgc3RyaXAtdW5pdCgkYnApLCAtemYtYnAtdG8tZW0oJGJwKSk7XG4gICAgfVxuICAgIC8vIElmIHRoZSBicmVha3BvaW50IGlzIG5hbWVkLCB0aGUgbWF4IGxpbWl0IGlzIHRoZSBmb2xsb3dpbmcgYnJlYWtwb2ludCAtIDFweC5cbiAgICBAZWxzZSBpZiAkYnAtbmV4dCB7XG4gICAgICAvLyBNYXggdmFsdWUgaXMgMC4ycHggdW5kZXIgdGhlIG5leHQgYnJlYWtwb2ludCAoMC4wMiAvIDE2ID0gMC4wMDEyNSkuXG4gICAgICAvLyBVc2UgYSBwcmVjaXNpb24gdW5kZXIgMXB4IHRvIHN1cHBvcnQgYnJvd3NlciB6b29tLCBidXQgbm90IHRvIGxvdyB0byBhdm9pZCByb3VuZGluZy5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZm91bmRhdGlvbi9mb3VuZGF0aW9uLXNpdGVzL2lzc3Vlcy8xMTMxM1xuICAgICAgJGJwLW1heDogaWYoJGhpZHBpLCAkYnAtbmV4dCAtIGRpdmlkZSgxLCAkc3RkLXdlYi1kcGkpLCAtemYtYnAtdG8tZW0oJGJwLW5leHQpIC0gMC4wMDEyNSk7XG4gICAgfVxuICB9XG5cbiAgLy8gR2VuZXJhdGUgdGhlIG1lZGlhIHF1ZXJ5IHN0cmluZyBmcm9tIG1pbiBhbmQgbWF4IGxpbWl0cy5cbiAgQGlmICRoaWRwaSB7XG4gICAgLy8gR2VuZXJhdGUgdmFsdWVzIGluIERQSSBpbnN0ZWFkIG9mIERQUFggZm9yIGFuIElFOS0xMS9PcGVyYSBtaW5pIGNvbXBhdGliaWxpdHkuXG4gICAgLy8gU2VlIGh0dHBzOi8vY2FuaXVzZS5jb20vI2ZlYXQ9Y3NzLW1lZGlhLXJlc29sdXRpb25cbiAgICAkYnAtbWluLWRwaTogaWYoJGJwLW1pbiwgJGJwLW1pbiAqICRzdGQtd2ViLWRwaSAqIDFkcGksICRicC1taW4pO1xuICAgICRicC1tYXgtZHBpOiBpZigkYnAtbWF4LCAkYnAtbWF4ICogJHN0ZC13ZWItZHBpICogMWRwaSwgJGJwLW1heCk7XG4gICAgQHJldHVybiB6Zi1zdHItam9pbihcbiAgICAgIC16Zi1icC1qb2luKCRicC1taW4sICRicC1tYXgsICctd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW8nLCAnLXdlYmtpdC1tYXgtZGV2aWNlLXBpeGVsLXJhdGlvJyksXG4gICAgICAtemYtYnAtam9pbigkYnAtbWluLWRwaSwgJGJwLW1heC1kcGksICdtaW4tcmVzb2x1dGlvbicsICdtYXgtcmVzb2x1dGlvbicpLFxuICAgICAgJywgJyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gLXpmLWJwLWpvaW4oJGJwLW1pbiwgJGJwLW1heCk7XG4gIH1cbn1cblxuLy8vIFdyYXBzIGEgbWVkaWEgcXVlcnkgYXJvdW5kIHRoZSBjb250ZW50IHlvdSBwdXQgaW5zaWRlIHRoZSBtaXhpbi4gVGhpcyBtaXhpbiBhY2NlcHRzIGEgbnVtYmVyIG9mIHZhbHVlczpcbi8vLyAgLSBJZiBhIHN0cmluZyBpcyBwYXNzZWQsIHRoZSBtaXhpbiB3aWxsIGxvb2sgZm9yIGl0IGluIHRoZSBgJGJyZWFrcG9pbnRzYCBhbmQgYCRicmVha3BvaW50cy1oaWRwaWAgbWFwcywgYW5kIHVzZSBhIG1lZGlhIHF1ZXJ5IHRoZXJlLlxuLy8vICAtIElmIGEgcGl4ZWwgdmFsdWUgaXMgcGFzc2VkLCBpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhbiBlbSB2YWx1ZSB1c2luZyBgJGdsb2JhbC1mb250LXNpemVgIGFzIHRoZSBiYXNlLlxuLy8vICAtIElmIGEgcmVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHVuaXQgd2lsbCBiZSBjaGFuZ2VkIHRvIGVtLlxuLy8vICAtIElmIGFuIGVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHZhbHVlIHdpbGwgYmUgdXNlZCBhcy1pcy5cbi8vL1xuLy8vIElmIG11bHRpcGxlIHZhbHVlcyBhcmUgcGFzc2VkLCB0aGUgbWl4aW4gd2lsbCBnZW5lcmF0ZSBhIG1lZGlhIHF1ZXJ5IGZvciBlYWNoIG9mIHRoZW0gYXMgZGVzY3JpYmVkIGFib3ZlLlxuLy8vIFNpbmNlIHRoZSBjb250ZW50IGlzIGR1cGxpY2F0ZWQgZm9yIGVhY2ggYnJlYWtwb2ludCwgdGhpcyBtaXhpbiBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggcHJvcGVydGllcyB0aGF0XG4vLy8gY2hhbmdlIGFjcm9zcyBicmVha3BvaW50cy5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICR2YWx1ZXMuLi4gLSBCcmVha3BvaW50IG5hbWUgb3IgcHgvcmVtL2VtIHZhbHVlIHRvIHByb2Nlc3MuXG4vLy9cbi8vLyBAb3V0cHV0IElmIHRoZSBicmVha3BvaW50IGlzIFwiMHB4IGFuZCBsYXJnZXJcIiwgb3V0cHV0cyB0aGUgY29udGVudCBhcy1pcy4gT3RoZXJ3aXNlLCBvdXRwdXRzIHRoZSBjb250ZW50IHdyYXBwZWQgaW4gYSBtZWRpYSBxdWVyeS5cbkBtaXhpbiBicmVha3BvaW50KCR2YWx1ZXMuLi4pIHtcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHZhbHVlcykge1xuICAgICR2YWx1ZTogbnRoKCR2YWx1ZXMsICRpKTtcbiAgICAkc3RyOiBicmVha3BvaW50KCR2YWx1ZSk7XG4gICAgJGJwOiBpbmRleCgkLXpmLWJyZWFrcG9pbnRzLWtleXMsIG50aCgkdmFsdWUsIDEpKTtcbiAgICAkcGJwOiBpbmRleCgkLXpmLWJyZWFrcG9pbnRzLWtleXMsICRwcmludC1icmVha3BvaW50KTtcbiAgICAvLyBEaXJlY3Rpb24gb2YgbWVkaWEgcXVlcnkgKHVwLCBkb3duLCBvciBvbmx5KVxuICAgICRkaXI6IGlmKGxlbmd0aCgkdmFsdWUpID4gMSwgbnRoKCR2YWx1ZSwgMiksIHVwKTtcblxuICAgICRvbGQtemYtc2l6ZTogbnVsbDtcblxuICAgIC8vIE1ha2UgYnJlYWtwb2ludCBzaXplIGF2YWlsYWJsZSBhcyBhIHZhcmlhYmxlXG4gICAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoLXpmLXNpemUpIHtcbiAgICAgICRvbGQtemYtc2l6ZTogJC16Zi1zaXplO1xuICAgIH1cbiAgICAkLXpmLXNpemU6IG50aCgkdmFsdWUsIDEpICFnbG9iYWw7IC8vIGdldCB0aGUgZmlyc3QgdmFsdWUgdG8gYWNjb3VudCBmb3IgYG9ubHlgIGFuZCBgZG93bmAga2V5d29yZHNcblxuICAgIC8vIElmICRzdHIgaXMgc3RpbGwgYW4gZW1wdHkgc3RyaW5nLCBubyBtZWRpYSBxdWVyeSBpcyBuZWVkZWRcbiAgICBAaWYgJHN0ciA9PSAnJyB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UsIHdyYXAgdGhlIGNvbnRlbnQgaW4gYSBtZWRpYSBxdWVyeVxuICAgIEBlbHNlIHtcbiAgICAgIC8vIEZvciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJHByaW50LWJyZWFrcG9pbnQsIGFkZCBwcmludCB0byB0aGUgbWVkaWEgdHlwZXNcbiAgICAgIC8vIGdlbmVyYXRlIHByaW50IGlmIHRoZSBicmVha3BvaW50IGFmZmVjdHMgdGhlIHByaW50LWJyZWFrcG9pbnQgKG9yIHNtYWxsZXIpLlxuICAgICAgLy8gVGhpcyBtZWFucyB0aGUgY3VycmVudCBjb25kaXRpb24gb25seSBuZWVkcyB0byBiZSBleHRlbmRlZCBzbyAnZG93bicgYWx3YXlzIGdlbmVyYXRlcyBwcmludC5cbiAgICAgIEBpZiAkYnAgIT0gbnVsbCBhbmQgKCRicCA8PSAkcGJwIG9yICRkaXIgPT0gZG93bikge1xuICAgICAgICBAbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgI3skc3RyfSB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgI3skc3RyfSB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkLXpmLXNpemU6ICRvbGQtemYtc2l6ZSAhZ2xvYmFsO1xuICB9XG59XG5cbi8vLyBDb252ZXJ0cyB0aGUgYnJlYWtwb2ludHMgbWFwIHRvIGEgVVJMLWVuY29kZWQgc3RyaW5nLCBsaWtlIHRoaXM6IGBrZXkxPXZhbHVlMSZrZXkyPXZhbHVlMmAuIFRoZSB2YWx1ZSBpcyB0aGVuIGRyb3BwZWQgaW50byB0aGUgQ1NTIGZvciBhIHNwZWNpYWwgYDxtZXRhPmAgdGFnLCB3aGljaCBpcyByZWFkIGJ5IHRoZSBGb3VuZGF0aW9uIEphdmFTY3JpcHQuIFRoaXMgaXMgaG93IHdlIHRyYW5zZmVyIHZhbHVlcyBmcm9tIFNhc3MgdG8gSmF2YVNjcmlwdCwgc28gdGhleSBjYW4gYmUgZGVmaW5lZCBpbiBvbmUgcGxhY2UuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byBjb252ZXJ0LlxuLy8vXG4vLy8gQHJldHVybnMge1N0cmluZ30gQSBzdHJpbmcgY29udGFpbmluZyB0aGUgbWFwJ3MgY29udGVudHMuXG5AZnVuY3Rpb24gLXpmLWJwLXNlcmlhbGl6ZSgkbWFwKSB7XG4gICRzdHI6ICcnO1xuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcCB7XG4gICAgJHN0cjogJHN0ciArICRrZXkgKyAnPScgKyAtemYtYnAtdG8tZW0oJHZhbHVlKSArICcmJztcbiAgfVxuICAkc3RyOiBzdHItc2xpY2UoJHN0ciwgMSwgLTIpO1xuXG4gIEByZXR1cm4gJHN0cjtcbn1cblxuLy8vIEZpbmQgdGhlIG5leHQga2V5IGluIGEgbWFwLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gdHJhdmVyc2UuXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGtleSAtIEtleSB0byB1c2UgYXMgYSBzdGFydGluZyBwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtNaXhlZH0gVGhlIHZhbHVlIGZvciB0aGUga2V5IGFmdGVyIGAka2V5YCwgaWYgYCRrZXlgIHdhcyBmb3VuZC4gSWYgYCRrZXlgIHdhcyBub3QgZm91bmQsIG9yIGAka2V5YCB3YXMgdGhlIGxhc3QgdmFsdWUgaW4gdGhlIG1hcCwgcmV0dXJucyBgbnVsbGAuXG5AZnVuY3Rpb24gLXpmLW1hcC1uZXh0KCRtYXAsICRrZXkpIHtcblxuICAvLyBTdG9yZSB0aGUga2V5cyBvZiB0aGUgbWFwIGFzIGEgbGlzdFxuICAkdmFsdWVzOiBtYXAta2V5cygkbWFwKTtcblxuICAkaTogMDtcblxuICAvLyBJZiB0aGUgS2V5IEV4aXN0cywgR2V0IHRoZSBpbmRleCBvZiB0aGUga2V5IHdpdGhpbiB0aGUgbWFwIGFuZCBhZGQgMSB0byBpdCBmb3IgdGhlIG5leHQgYnJlYWtwb2ludCBpbiB0aGUgbWFwXG4gIEBpZiAobWFwLWhhcy1rZXkoJG1hcCwgJGtleSkpIHtcbiAgICAkaTogaW5kZXgoJHZhbHVlcywgJGtleSkgKyAxO1xuICB9XG5cbiAgLy8gSWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0LCBvciBpdCdzIHRoZSBsYXN0IGtleSBpbiB0aGUgbWFwLCByZXR1cm4gbnVsbFxuICBAaWYgKCRpID4gbGVuZ3RoKCRtYXApIG9yICRpID09IDApIHtcbiAgICBAcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gdGhlIHZhbHVlXG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgbnRoKCR2YWx1ZXMsICRpKSk7XG4gIH1cblxufVxuXG4vLy8gRmluZCB0aGUgbmV4dCBudW1iZXIgaW4gYSBtYXAuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byB0cmF2ZXJzZS5cbi8vLyBAcGFyYW0ge01peGVkfSAkbnVtYmVyIC0gTnVtYmVyIHRvIHVzZSBhcyBhIHN0YXJ0aW5nIHBvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge01peGVkfSBUaGUgbnVtYmVyIGZvbGxvd2luZyBgJG51bWJlcmAsIGlmIGAkbnVtYmVyYCB3YXMgZm91bmQuIElmIGAkbnVtYmVyYCB3YXMgbm90IGZvdW5kLCBvciBgJG51bWJlcmAgd2FzIHRoZSBiaWdnZXN0IG51bWJlciBpbiB0aGUgbWFwLCByZXR1cm5zIGBudWxsYC5cbkBmdW5jdGlvbiAtemYtbWFwLW5leHQtbnVtYmVyKCRtYXAsICRudW1iZXIpIHtcblxuICAkbmV4dF9udW1iZXI6IG51bGw7XG5cbiAgQGVhY2ggJGssICR2IGluICRtYXAge1xuICAgIEBpZiB0eXBlLW9mKCR2KSA9PSAnbnVtYmVyJyBhbmQgJHYgPiAkbnVtYmVyIGFuZCAoJG5leHRfbnVtYmVyID09IG51bGwgb3IgJHYgPCAkbmV4dF9udW1iZXIpIHtcbiAgICAgICRuZXh0X251bWJlcjogJHY7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmV4dF9udW1iZXI7XG59XG5cbi8vLyBSZXR1cm4gYSBsaXN0IG9mIG91ciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gJGtleS4gVXNlZnVsIGZvciBkZWFsaW5nIHdpdGhcbi8vLyByZXNwb25zaXZlIGd1dHRlcnMgZm9yIHRoZSBncmlkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRrZXkgLSBLZXkgdG8gdXNlIGFzIGxhc3QgYnJlYWtwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtBcnJheX0gVGhlIGxpc3Qgb2YgYnJlYWtwb2ludHMgdXAgdG8gYW5kLiBJZiAka2V5IGlzIGF1dG8sIHJldHVybnMgYnJlYWtwb2ludHMgYWJvdmUgdGhlIHplcm9cbkBmdW5jdGlvbiAtemYtYnJlYWtwb2ludHMtbGVzcy10aGFuKCRrZXkpIHtcbiAgJGxpc3Q6ICgpO1xuICAkZm91bmRfa2V5OiBmYWxzZTtcblxuICBAZWFjaCAkbmFtZSBpbiAkLXpmLWJyZWFrcG9pbnRzLWtleXMge1xuICAgIEBpZiAoJG5hbWUgPT0gJGtleSkge1xuICAgICAgJGZvdW5kX2tleTogdHJ1ZTtcbiAgICB9XG4gICAgQGlmIG5vdCAkZm91bmRfa2V5IHtcbiAgICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICRuYW1lKTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiAkbGlzdDtcbn1cblxuLy8vIFJldHVybiBhIGxpc3Qgb2Ygb3VyIG5hbWVkIGJyZWFrcG9pbnRzIGxlc3MgdGhhbiAka2V5LiBVc2VmdWwgZm9yIGRlYWxpbmcgd2l0aFxuLy8vIHJlc3BvbnNpdmUgZ3V0dGVycyBmb3IgdGhlIGdyaWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgLSBhIG5hbWVkIG9yIG5vbi1uYW1lZCBicmVha3BvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge0FycmF5fSBUaGUgbGlzdCBvZiBicmVha3BvaW50cyB1cCB0byBhbmQuIElmICRrZXkgaXMgYXV0bywgcmV0dXJucyBicmVha3BvaW50cyBhYm92ZSB0aGUgemVyb1xuQGZ1bmN0aW9uIC16Zi1jbG9zZXN0LW5hbWVkLWJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpIHtcbiAgJGxhc3Q6ICQtemYtemVyby1icmVha3BvaW50O1xuICAkZm91bmQ6IGZhbHNlO1xuXG4gICR2YWx1ZTogdW5pdGxlc3MtY2FsYygkYnJlYWtwb2ludCwgMXB4KTtcbiAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnJlYWtwb2ludHMge1xuICAgIEBpZiBub3QgJGZvdW5kIHtcbiAgICAgIEBpZiB1bml0bGVzcy1jYWxjKCR2YWwpID4gJHZhbHVlIHtcbiAgICAgICAgJGZvdW5kOiB0cnVlO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRsYXN0OiAka2V5O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGxhc3Q7XG59XG5cbi8vLyBHZXQgYSB2YWx1ZSBmb3IgYSBicmVha3BvaW50IGZyb20gYSByZXNwb25zaXZlIGNvbmZpZyBtYXAgb3Igc2luZ2xlIHZhbHVlLlxuLy8vIC0gSWYgdGhlIGNvbmZpZyBpcyBhIHNpbmdsZSB2YWx1ZSwgcmV0dXJuIGl0IHJlZ2FyZGxlc3Mgb2YgYCR2YWx1ZWAuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBoYXMgdGhlIGtleSBgJHZhbHVlYCwgdGhlIGV4YWN0IGJyZWFrcG9pbnQgdmFsdWUgaXMgcmV0dXJuZWQuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBkb2VzICpub3QqIGhhdmUgdGhlIGJyZWFrcG9pbnQsIHRoZSB2YWx1ZSBtYXRjaGluZyB0aGUgbmV4dCBsb3dlc3QgYnJlYWtwb2ludCBpbiB0aGUgY29uZmlnIG1hcCBpcyByZXR1cm5lZC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJG1hcCAtIFJlc3BvbnNpdmUgY29uZmlnIG1hcCBvciBzaW5nbGUgdmFsdWUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkdmFsdWUgLSBCcmVha3BvaW50IG5hbWUgdG8gdXNlLlxuLy8vXG4vLy8gQHJldHVybiB7TWl4ZWR9IFRoZSBjb3JyZXNwb25kaW5nIGJyZWFrcG9pbnQgdmFsdWUuXG5AZnVuY3Rpb24gLXpmLWdldC1icC12YWwoJG1hcCwgJHZhbHVlKSB7XG4gIC8vIElmIHRoZSBnaXZlbiBtYXAgaXMgYSBzaW5nbGUgdmFsdWUsIHJldHVybiBpdFxuICBAaWYgdHlwZS1vZigkbWFwKSA9PSAnbnVtYmVyJyB7XG4gICAgQHJldHVybiAkbWFwO1xuICB9XG5cblxuICAvLyBDaGVjayBpZiB0aGUgYnJlYWtwb2ludCBuYW1lIGV4aXN0cyBnbG9iYWxseVxuICBAaWYgbm90IG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJHZhbHVlKSB7XG4gICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSAnbnVtYmVyJyB7XG4gICAgICAkdmFsdWU6IC16Zi1jbG9zZXN0LW5hbWVkLWJyZWFrcG9pbnQoJHZhbHVlKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgaWYgdGhlIGJyZWFrcG9pbnQgbmFtZSBleGlzdHMgaW4gdGhlIGxvY2FsIGNvbmZpZyBtYXBcbiAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJG1hcCwgJHZhbHVlKSB7XG4gICAgLy8gSWYgaXQgZG9lcywganVzdCByZXR1cm4gdGhlIHZhbHVlXG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsICR2YWx1ZSk7XG4gIH1cbiAgLy8gT3RoZXJ3aXNlLCBmaW5kIHRoZSBuZXh0IGxvd2VzdCBicmVha3BvaW50IGFuZCByZXR1cm4gdGhhdCB2YWx1ZVxuICBAZWxzZSB7XG4gICAgJGFuY2hvcjogbnVsbDtcbiAgICAkZm91bmQ6IGZhbHNlO1xuXG4gICAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnJlYWtwb2ludHMge1xuICAgICAgQGlmIG5vdCAkZm91bmQge1xuICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJG1hcCwgJGtleSkge1xuICAgICAgICAgICRhbmNob3I6ICRrZXk7XG4gICAgICAgIH1cbiAgICAgICAgQGlmICRrZXkgPT0gJHZhbHVlIHtcbiAgICAgICAgICAkZm91bmQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgJGFuY2hvcik7XG4gIH1cbn1cblxuLy8vIFJldHVybiB0aGUgYmVzdCBicmVha3BvaW50IHRvIHVzZSBhY2NvcmRpbmcgdG8gdGhlIGNhbGxpbmcgY29udGV4dC4gSXQgcmV0dXJucyBpbiBvcmRlcjpcbi8vLyAxLiB0aGUgZ2l2ZW4gYCR2YWx1ZWAgYXJndW1lbnQgaWYgaXQgaXMgbm90IG51bGwuXG4vLy8gMi4gdGhlIGdsb2JhbCBicmVha3BvaW50IGNvbnRleHQgYCQtemYtc2l6ZWAgaWYgaXQgaXMgbm90IG51bGwgKGxpa2UgaWYgY2FsbGVkIGluc2lkZSB0aGVuIGBicmVha3BvaW50KClgIG1peGluKVxuLy8vIDMuIHRoZSBnaXZlbiBgJGRlZmF1bHRgIGFyZ3VtZW50LlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkdmFsdWUgW251bGxdIC0gQnJlYWtwb2ludCB0byB1c2UgaW4gcHJpb3JpdHkgaWYgbm9uLW51bGwuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGVmYXVsdCBbbnVsbF0gLSBCcmVha3BvaW50IHRvIHVzZSBieSBkZWZhdWx0IGlmIG5vIG90aGVyIHZhbHVlIGNhbiBiZSB1c2VkLlxuLy8vXG4vLy8gQHJldHVybiB7S2V5d29yZH0gVGhlIHJlc29sdmVkIGJyZWFrcG9pbnQuXG5AZnVuY3Rpb24gLXpmLWN1cnJlbnQtYnJlYWtwb2ludCgkdmFsdWU6IG51bGwsICRkZWZhdWx0OiBudWxsKSB7XG4gIEBpZiAoJHZhbHVlICE9IG51bGwpIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfVxuICBAZWxzZSBpZiAodmFyaWFibGUtZXhpc3RzKC16Zi1zaXplKSBhbmQgdHlwZS1vZigkLXpmLXNpemUpICE9ICdudW1iZXInKSBhbmQgJC16Zi1zaXplICE9IG51bGwge1xuICAgIEByZXR1cm4gJC16Zi1zaXplO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRkZWZhdWx0O1xuICB9XG59XG5cbi8vLyBSZXR1cm4gbWVkaWEgcXVlcnkgc3RyaW5nIGZyb20gdGhlIGdpdmVuIG1pbiBhbmQvb3IgbWF4IGxpbWl0cy5cbi8vLyBJZiBhIGxpbWl0IGlzIGVxdWFsIHRvIGBudWxsYCBvciBgMGAsIGl0IGlzIGlnbm9yZWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1pbiBbMF0gLSBNaW4gbWVkaWEgcXVlcnkgbGltaXQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtYXggWzBdIC0gTWF4IG1lZGlhIHF1ZXJ5IGxpbWl0LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWluLW5hbWUgWydtaW4td2lkdGgnXSAtIE5hbWUgb2YgdGhlIG1pbiBtZWRpYSBxdWVyeSBsaW1pdC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRlbGltaXRlciBbJ21heC13aWR0aCddIC0gTmFtZSBvZiB0aGUgbWF4IG1lZGlhIHF1ZXJ5IGxpbWl0LlxuLy8vXG4vLy8gQHJldHVybnMge1N0cmluZ30gTWVkaWEgUXVlcnkgc3RyaW5nLlxuQGZ1bmN0aW9uIC16Zi1icC1qb2luKFxuICAkbWluOiAwLFxuICAkbWF4OiAwLFxuICAkbWluLW5hbWU6ICdtaW4td2lkdGgnLFxuICAkbWF4LW5hbWU6ICdtYXgtd2lkdGgnXG4pIHtcbiAgQHJldHVybiB6Zi1zdHItam9pbihcbiAgICBpZigkbWluIGFuZCAkbWluID4gMCwgJygjeyRtaW4tbmFtZX06ICN7JG1pbn0pJywgbnVsbCksXG4gICAgaWYoJG1heCBhbmQgJG1heCA+IDAsICcoI3skbWF4LW5hbWV9OiAjeyRtYXh9KScsIG51bGwpLFxuICAgICcgYW5kICcpO1xufVxuXG4kc21hbGwtdXA6ICcnO1xuJHNtYWxsLW9ubHk6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBzbWFsbCkge1xuICAkc21hbGwtdXA6IHNjcmVlbjtcbiAgJHNtYWxsLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHNtYWxsIG9ubHkpfScpO1xufVxuXG4kbWVkaXVtLXVwOiAnJztcbiRtZWRpdW0tb25seTogJyc7XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIG1lZGl1bSkge1xuICAkbWVkaXVtLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChtZWRpdW0pfScpO1xuICAkbWVkaXVtLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KG1lZGl1bSBvbmx5KX0nKTtcbn1cblxuJGxhcmdlLXVwOiAnJztcbiRsYXJnZS1vbmx5OiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgbGFyZ2UpIHtcbiAgJGxhcmdlLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChsYXJnZSl9Jyk7XG4gICRsYXJnZS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChsYXJnZSBvbmx5KX0nKTtcbn1cblxuJHhsYXJnZS11cDogJyc7XG4keGxhcmdlLW9ubHk6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCB4bGFyZ2UpIHtcbiAgJHhsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeGxhcmdlKX0nKTtcbiAgJHhsYXJnZS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludCh4bGFyZ2Ugb25seSl9Jyk7XG59XG5cbiR4eGxhcmdlLXVwOiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgeHhsYXJnZSkge1xuICAkeHhsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeHhsYXJnZSl9Jyk7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbi8vLy9cbi8vLyBQYXRjaCB0byBmaXggaXNzdWUgIzEyMDgwXG4kLXpmLXBiLXZhbHVlOiBudWxsO1xuXG4vLy8vXG4vLy8gQ3JlYXRlcyBhbiBpbm5lciBib3gtc2hhZG93IGZvciBvbmx5IG9uZSBzaWRlXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaWRlIC0gU2lkZSB0aGUgc2hhZG93IGlzIHN1cHBvc2VkIHRvIGFwcGVhci4gQ2FuIGJlIGB0b3BgLCBgbGVmdGAsIGByaWdodGAgb3IgYGJvdHRvbWAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzaXplIC0gV2lkdGggZm9yIHRoZSB0YXJnZXQgc2lkZS5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBDb2xvciBvZiB0aGUgc2hhZG93LlxuQG1peGluIGlubmVyLXNpZGUtc2hhZG93KFxuICAkc2lkZTogYm90dG9tLFxuICAkc2l6ZTogMjBweCxcbiAgJGNvbG9yOiByZ2JhKCRibGFjaywgMC4yNSlcbikge1xuXG4gICRoZWxwZXI6IHJvdW5kKCRzaXplICogMC42NSk7XG5cbiAgQGlmICgkc2lkZSA9PSB0b3ApIHtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwICRoZWxwZXIgJHNpemUgKC0xKSokaGVscGVyICRjb2xvcjtcbiAgfSBAZWxzZSBpZiAoJHNpZGUgPT0gbGVmdCkge1xuICAgIGJveC1zaGFkb3c6IGluc2V0ICRoZWxwZXIgMCAkc2l6ZSAoLTEpKiRoZWxwZXIgJGNvbG9yO1xuICB9IEBlbHNlIGlmICgkc2lkZSA9PSByaWdodCkge1xuICAgIGJveC1zaGFkb3c6IGluc2V0ICgtMSkqJGhlbHBlciAwICRzaXplICgtMSkqJGhlbHBlciAkY29sb3I7XG4gIH0gQGVsc2UgaWYgKCRzaWRlID09IGJvdHRvbSkge1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgKC0xKSokaGVscGVyICRzaXplICgtMSkqJGhlbHBlciAkY29sb3I7XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBDU1MgdHJpYW5nbGUsIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBkcm9wZG93biBhcnJvd3MsIGRyb3Bkb3duIHBpcHMsIGFuZCBtb3JlLiBVc2UgdGhpcyBtaXhpbiBpbnNpZGUgYSBgJjo6YmVmb3JlYCBvciBgJjo6YWZ0ZXJgIHNlbGVjdG9yLCB0byBhdHRhY2ggdGhlIHRyaWFuZ2xlIHRvIGFuIGV4aXN0aW5nIGVsZW1lbnQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHRyaWFuZ2xlLXNpemUgLSBXaWR0aCBvZiB0aGUgdHJpYW5nbGUuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJHRyaWFuZ2xlLWNvbG9yIC0gQ29sb3Igb2YgdGhlIHRyaWFuZ2xlLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHRyaWFuZ2xlLWRpcmVjdGlvbiAtIERpcmVjdGlvbiB0aGUgdHJpYW5nbGUgcG9pbnRzLiBDYW4gYmUgYHVwYCwgYHJpZ2h0YCwgYGRvd25gLCBvciBgbGVmdGAuXG5AbWl4aW4gY3NzLXRyaWFuZ2xlKFxuICAkdHJpYW5nbGUtc2l6ZSxcbiAgJHRyaWFuZ2xlLWNvbG9yLFxuICAkdHJpYW5nbGUtZGlyZWN0aW9uXG4pIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG5cbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgYm9yZGVyLXdpZHRoOiAkdHJpYW5nbGUtc2l6ZTtcblxuICBjb250ZW50OiAnJztcblxuICBAaWYgKCR0cmlhbmdsZS1kaXJlY3Rpb24gPT0gZG93bikge1xuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7XG4gICAgYm9yZGVyLWNvbG9yOiAkdHJpYW5nbGUtY29sb3IgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gIH1cbiAgQGlmICgkdHJpYW5nbGUtZGlyZWN0aW9uID09IHVwKSB7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogMDtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICR0cmlhbmdsZS1jb2xvcjtcbiAgfVxuICBAaWYgKCR0cmlhbmdsZS1kaXJlY3Rpb24gPT0gcmlnaHQpIHtcbiAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAkdHJpYW5nbGUtY29sb3I7XG4gIH1cbiAgQGlmICgkdHJpYW5nbGUtZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICR0cmlhbmdsZS1jb2xvciB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIG1lbnUgaWNvbiB3aXRoIGEgc2V0IHdpZHRoLCBoZWlnaHQsIG51bWJlciBvZiBiYXJzLCBhbmQgY29sb3JzLiBUaGUgbWl4aW4gdXNlcyB0aGUgaGVpZ2h0IG9mIHRoZSBpY29uIGFuZCB0aGUgd2VpZ2h0IG9mIHRoZSBiYXJzIHRvIGRldGVybWluZSBzcGFjaW5nLiA8ZGl2IGNsYXNzPVwiZG9jcy1leGFtcGxlLWJ1cmdlclwiPjwvZGl2PlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYmxhY2tdIC0gQ29sb3IgdG8gdXNlIGZvciB0aGUgaWNvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3ItaG92ZXIgWyRkYXJrLWdyYXldIC0gQ29sb3IgdG8gdXNlIHdoZW4gdGhlIGljb24gaXMgaG92ZXJlZCBvdmVyLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggWzIwcHhdIC0gV2lkdGggb2YgdGhlIGljb24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRoZWlnaHQgWzE2cHhdIC0gSGVpZ2h0IG9mIHRoZSBpY29uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2VpZ2h0IFsycHhdIC0gSGVpZ2h0IG9mIGluZGl2aWR1YWwgYmFycyBpbiB0aGUgaWNvbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhcnMgWzNdIC0gTnVtYmVyIG9mIGJhcnMgaW4gdGhlIGljb24uXG5AbWl4aW4gaGFtYnVyZ2VyKFxuICAkY29sb3I6ICRibGFjayxcbiAgJGNvbG9yLWhvdmVyOiAkZGFyay1ncmF5LFxuICAkd2lkdGg6IDIwcHgsXG4gICRoZWlnaHQ6IDE2cHgsXG4gICR3ZWlnaHQ6IDJweCxcbiAgJGJhcnM6IDNcbikge1xuICAvLyBib3gtc2hhZG93IENTUyBvdXRwdXRcbiAgJHNoYWRvdzogKCk7XG4gICRob3Zlci1zaGFkb3c6ICgpO1xuXG4gIC8vIFNwYWNpbmcgYmV0d2VlbiBiYXJzIGlzIGNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIHRvdGFsIGhlaWdodCBvZiB0aGUgaWNvbiBhbmQgdGhlIHdlaWdodCBvZiBlYWNoIGJhclxuICAkc3BhY2luZzogZGl2aWRlKCRoZWlnaHQgLSAoJHdlaWdodCAqICRiYXJzKSwgJGJhcnMgLSAxKTtcblxuICBAaWYgdW5pdCgkc3BhY2luZykgPT0gJ3B4JyB7XG4gICAgJHNwYWNpbmc6IGZsb29yKCRzcGFjaW5nKTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJGJhcnMge1xuICAgICRvZmZzZXQ6ICgkd2VpZ2h0ICsgJHNwYWNpbmcpICogKCRpIC0gMSk7XG4gICAgJHNoYWRvdzogYXBwZW5kKCRzaGFkb3csIDAgJG9mZnNldCAwICRjb2xvciwgY29tbWEpO1xuICB9XG5cbiAgLy8gSWNvbiBjb250YWluZXJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHdpZHRoOiAkd2lkdGg7XG4gIGhlaWdodDogJGhlaWdodDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gIC8vIEljb24gYmFyc1xuICAmOjphZnRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAkd2VpZ2h0O1xuXG4gICAgYmFja2dyb3VuZDogJGNvbG9yO1xuICAgIGJveC1zaGFkb3c6ICRzaGFkb3c7XG5cbiAgICBjb250ZW50OiAnJztcbiAgfVxuXG4gIC8vIEhvdmVyIHN0YXRlXG4gIEBpZiAkY29sb3ItaG92ZXIge1xuICAgIC8vIEdlbmVyYXRlIENTU1xuICAgIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJGJhcnMge1xuICAgICAgJG9mZnNldDogKCR3ZWlnaHQgKyAkc3BhY2luZykgKiAoJGkgLSAxKTtcbiAgICAgICRob3Zlci1zaGFkb3c6IGFwcGVuZCgkaG92ZXItc2hhZG93LCAwICRvZmZzZXQgMCAkY29sb3ItaG92ZXIsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAmOmhvdmVyOjphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItaG92ZXI7XG4gICAgICBib3gtc2hhZG93OiAkaG92ZXItc2hhZG93O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBhIGRvd253YXJkLWZhY2luZyB0cmlhbmdsZSBhcyBhIGJhY2tncm91bmQgaW1hZ2UgdG8gYW4gZWxlbWVudC4gVGhlIGltYWdlIGlzIGZvcm1hdHRlZCBhcyBhbiBTVkcsIG1ha2luZyBpdCBlYXN5IHRvIGNoYW5nZSB0aGUgY29sb3IuIEJlY2F1c2UgSW50ZXJuZXQgRXhwbG9yZXIgZG9lc24ndCBzdXBwb3J0IGVuY29kZWQgU1ZHcyBhcyBiYWNrZ3JvdW5kIGltYWdlcywgYSBQTkcgZmFsbGJhY2sgaXMgYWxzbyBpbmNsdWRlZC5cbi8vLyBUaGVyZSBhcmUgdHdvIFBORyBmYWxsYmFja3M6IGEgYmxhY2sgdHJpYW5nbGUgYW5kIGEgd2hpdGUgdHJpYW5nbGUuIFRoZSBvbmUgdXNlZCBkZXBlbmRzIG9uIHRoZSBsaWdodG5lc3Mgb2YgdGhlIGlucHV0IGNvbG9yLlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYmxhY2tdIC0gQ29sb3IgdG8gdXNlIGZvciB0aGUgdHJpYW5nbGUuXG5AbWl4aW4gYmFja2dyb3VuZC10cmlhbmdsZSgkY29sb3I6ICRibGFjaykge1xuICAkcmdiOiAncmdiJTI4I3tyb3VuZChyZWQoJGNvbG9yKSl9LCAje3JvdW5kKGdyZWVuKCRjb2xvcikpfSwgI3tyb3VuZChibHVlKCRjb2xvcikpfSUyOSc7XG5cbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZlcnNpb249JzEuMScgd2lkdGg9JzMyJyBoZWlnaHQ9JzI0JyB2aWV3Qm94PScwIDAgMzIgMjQnPjxwb2x5Z29uIHBvaW50cz0nMCwwIDMyLDAgMTYsMjQnIHN0eWxlPSdmaWxsOiAjeyRyZ2J9Jz48L3BvbHlnb24+PC9zdmc+XCIpO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MFxcMCkge1xuICAgIEBpZiBsaWdodG5lc3MoJGNvbG9yKSA8IDYwJSB7XG4gICAgICAvLyBXaGl0ZSB0cmlhbmdsZVxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQVlDQVlBQUFDYlUvODBBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQUlwSlJFRlVlTnJFa2NrTmdEQU1CQmZSa0V0ME9iUkJCZHNHWFVEZ21RZks0WGhIMm04Y3pRQUF5MjdSM3RzdzRRZmUyeDh1T082b1lMYjZHbE9vcjNHRitzd1VSQU9tVUorUnd0RUpzOVd2VEdFWXhCWHFJMU1RQVpoQ2ZVUUtSekRNVmorVHdyQUlWNmp2U1VFa1lBcjFMU2tjeVRCYi9WK0tZZlg3eEFldXNxM3NMRHRHSDNrRUdBQ1BXSWZsTlpmaFJRQUFBQUJKUlU1RXJrSmdnZz09Jyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIC8vIEJsYWNrIHRyaWFuZ2xlXG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBWUNBWUFBQUNiVS84MEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBTUJKUkVGVWVOckVsbHNPaENBTVJWc3pDOUlselU3S0NtVkhUSnNvTVdZTVV0cHl2OUJnYnVYUUI1WlNkZ0JZWVk0eWNnQml2azhLWUZzUU1mTWlUVEJQNG8zblV6Q0t6T2FiTEpiTHkyL2czMWV2R2tBZ2luUjQvWmVnS0g1cVgzYkpDc2NBM3QweDNrZ081dFFGeWhoRmY1MHhScUZMYnlNVU5KUXpneWpHUy93Z0Nwdktxa1JCcHVXckU0VjlkKzFFNGRQVVhxSWcxMDdTUU9FLzJEUlF4TXdURHlnSUluVkRFVDlUM2xDb2ovNmovVkNtR2paT2wybEtwWjhBQXdEUVA3eklpbURHRlFBQUFBQkpSVTVFcmtKZ2dnPT0nKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFwcGxpZXMgdGhlIG1pY3JvIGNsZWFyZml4IGhhY2sgcG9wdWxhcml6ZWQgYnkgTmljb2xhcyBHYWxsYWdoZXIuIEluY2x1ZGUgdGhpcyBtaXhpbiBvbiBhIGNvbnRhaW5lciBpZiBpdHMgY2hpbGRyZW4gYXJlIGFsbCBmbG9hdGVkLCB0byBnaXZlIHRoZSBjb250YWluZXIgYSBwcm9wZXIgaGVpZ2h0LlxuLy8vIFRoZSBjbGVhcmZpeCBpcyBhdWdtZW50ZWQgd2l0aCBzcGVjaWZpYyBzdHlsZXMgdG8gcHJldmVudCBib3JkZXJzIGluIGZsZXhib3ggZW52aXJvbm1lbnRzXG4vLy8gQGxpbmsgaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svIE1pY3JvIENsZWFyZml4IEhhY2tcbi8vLyBAbGluayBodHRwOi8vZGFuaXNhZGVzaWduZXIuY29tL2Jsb2cvZmxleGJveC1jbGVhci1maXgtcHNldWRvLWVsZW1lbnRzLyBGbGV4Ym94IGZpeFxuQG1peGluIGNsZWFyZml4IHtcbiAgJjo6YmVmb3JlLFxuICAmOjphZnRlciB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY29udGVudDogJyAnO1xuXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBmbGV4LWJhc2lzOiAwO1xuICAgICAgb3JkZXI6IDE7XG4gICAgfVxuICB9XG5cbiAgJjo6YWZ0ZXIge1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG59XG5cbi8vLyBBZGRzIENTUyBmb3IgYSBcInF1YW50aXR5IHF1ZXJ5XCIgc2VsZWN0b3IgdGhhdCBhdXRvbWF0aWNhbGx5IHNpemVzIGVsZW1lbnRzIGJhc2VkIG9uIGhvdyBtYW55IHRoZXJlIGFyZSBpbnNpZGUgYSBjb250YWluZXIuXG4vLy8gQGxpbmsgaHR0cDovL2FsaXN0YXBhcnQuY29tL2FydGljbGUvcXVhbnRpdHktcXVlcmllcy1mb3ItY3NzIFF1YW50aXR5IFF1ZXJpZXMgZm9yIENTU1xuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtYXggLSBNYXhpbXVtIG51bWJlciBvZiBpdGVtcyB0byBkZXRlY3QuIFRoZSBoaWdoZXIgdGhpcyBudW1iZXIgaXMsIHRoZSBtb3JlIENTUyB0aGF0J3MgcmVxdWlyZWQgdG8gY292ZXIgZWFjaCBudW1iZXIgb2YgaXRlbXMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZWxlbSBbbGldIC0gVGFnIHRvIHVzZSBmb3Igc2libGluZyBzZWxlY3RvcnMuXG5AbWl4aW4gYXV0by13aWR0aCgkbWF4LCAkZWxlbTogbGkpIHtcbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkbWF4IHtcbiAgICAmOm50aC1sYXN0LWNoaWxkKCN7JGl9KTpmaXJzdC1jaGlsZCxcbiAgICAmOm50aC1sYXN0LWNoaWxkKCN7JGl9KTpmaXJzdC1jaGlsZCB+ICN7JGVsZW19IHtcbiAgICAgIHdpZHRoOiBwZXJjZW50YWdlKGRpdmlkZSgxLCAkaSkpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gUmVtb3ZlcyB0aGUgZm9jdXMgcmluZyBhcm91bmQgYW4gZWxlbWVudCB3aGVuIGEgbW91c2UgaW5wdXQgaXMgZGV0ZWN0ZWQuXG5AbWl4aW4gZGlzYWJsZS1tb3VzZS1vdXRsaW5lIHtcbiAgW2RhdGEtd2hhdGlucHV0PSdtb3VzZSddICYge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cbn1cblxuLy8vIE1ha2VzIGFuIGVsZW1lbnQgdmlzdWFsbHkgaGlkZGVuLCBidXQgc3RpbGwgYWNjZXNzaWJsZSB0byBrZXlib2FyZHMgYW5kIGFzc2lzdGl2ZSBkZXZpY2VzLlxuLy8vIEBsaW5rIGh0dHA6Ly9zbm9vay5jYS9hcmNoaXZlcy9odG1sX2FuZF9jc3MvaGlkaW5nLWNvbnRlbnQtZm9yLWFjY2Vzc2liaWxpdHkgSGlkaW5nIENvbnRlbnQgZm9yIEFjY2Vzc2liaWxpdHlcbi8vLyBAbGluayBodHRwOi8vaHVnb2dpcmF1ZGVsLmNvbS8yMDE2LzEwLzEzL2Nzcy1oaWRlLWFuZC1zZWVrL1xuLy8vXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZW5mb3JjZSAtIElmIGB0cnVlYCwgdXNlIGAhaW1wb3J0YW50YCBvbiBhcHBsaWVkIHByb3BlcnRpZXNcbkBtaXhpbiBlbGVtZW50LWludmlzaWJsZShcbiAgJGVuZm9yY2U6IHRydWVcbikge1xuICAkaW1wb3J0YW50OiBpZigkZW5mb3JjZSwgJyFpbXBvcnRhbnQnLCBudWxsKTtcblxuICBwb3NpdGlvbjogYWJzb2x1dGUgI3skaW1wb3J0YW50fTtcbiAgd2lkdGg6IDFweCAjeyRpbXBvcnRhbnR9O1xuICBoZWlnaHQ6IDFweCAjeyRpbXBvcnRhbnR9O1xuICBwYWRkaW5nOiAwICN7JGltcG9ydGFudH07XG4gIG92ZXJmbG93OiBoaWRkZW4gI3skaW1wb3J0YW50fTtcbiAgY2xpcDogcmVjdCgwLDAsMCwwKSAjeyRpbXBvcnRhbnR9O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwICN7JGltcG9ydGFudH07XG4gIGJvcmRlcjogMCAjeyRpbXBvcnRhbnR9O1xufVxuXG4vLy8gUmV2ZXJzZXMgdGhlIENTUyBvdXRwdXQgY3JlYXRlZCBieSB0aGUgYGVsZW1lbnQtaW52aXNpYmxlKClgIG1peGluLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGVuZm9yY2UgLSBJZiBgdHJ1ZWAsIHVzZSBgIWltcG9ydGFudGAgb24gYXBwbGllZCBwcm9wZXJ0aWVzXG5AbWl4aW4gZWxlbWVudC1pbnZpc2libGUtb2ZmKFxuICAkZW5mb3JjZTogdHJ1ZVxuKSB7XG4gICRpbXBvcnRhbnQ6IGlmKCRlbmZvcmNlLCAnIWltcG9ydGFudCcsIG51bGwpO1xuXG4gIHBvc2l0aW9uOiBzdGF0aWMgI3skaW1wb3J0YW50fTtcbiAgd2lkdGg6IGF1dG8gI3skaW1wb3J0YW50fTtcbiAgaGVpZ2h0OiBhdXRvICN7JGltcG9ydGFudH07XG4gIG92ZXJmbG93OiB2aXNpYmxlICN7JGltcG9ydGFudH07XG4gIGNsaXA6IGF1dG8gI3skaW1wb3J0YW50fTtcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbCAjeyRpbXBvcnRhbnR9O1xufVxuXG4vLy8gVmVydGljYWxseSBjZW50ZXJzIHRoZSBlbGVtZW50IGluc2lkZSBvZiBpdHMgZmlyc3Qgbm9uLXN0YXRpYyBwYXJlbnQsXG4vLy8gQGxpbmsgaHR0cDovL3d3dy5zaXRlcG9pbnQuY29tL2NlbnRlcmluZy13aXRoLXNhc3MvIENlbnRlcmluZyBXaXRoIFNhc3NcbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG5cbi8vLyBIb3Jpem9udGFsbHkgY2VudGVycyB0aGUgZWxlbWVudCBpbnNpZGUgb2YgaXRzIGZpcnN0IG5vbi1zdGF0aWMgcGFyZW50LFxuLy8vIEBsaW5rIGh0dHA6Ly93d3cuc2l0ZXBvaW50LmNvbS9jZW50ZXJpbmctd2l0aC1zYXNzLyBDZW50ZXJpbmcgV2l0aCBTYXNzXG5AbWl4aW4gaG9yaXpvbnRhbC1jZW50ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xufVxuXG4vLy8gQWJzb2x1dGVseSBjZW50ZXJzIHRoZSBlbGVtZW50IGluc2lkZSBvZiBpdHMgZmlyc3Qgbm9uLXN0YXRpYyBwYXJlbnQsXG4vLy8gQGxpbmsgaHR0cDovL3d3dy5zaXRlcG9pbnQuY29tL2NlbnRlcmluZy13aXRoLXNhc3MvIENlbnRlcmluZyBXaXRoIFNhc3NcbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xufVxuXG4vLy8gSXRlcmF0ZXMgdGhyb3VnaCBicmVha3BvaW50cyBkZWZpbmVkIGluIGAkYnJlYWtwb2ludC1jbGFzc2VzYCBhbmQgcHJpbnRzIHRoZSBDU1MgaW5zaWRlIHRoZSBtaXhpbiBhdCBlYWNoIGJyZWFrcG9pbnQncyBtZWRpYSBxdWVyeS4gVXNlIHRoaXMgd2l0aCB0aGUgZ3JpZCwgb3IgYW55IG90aGVyIGNvbXBvbmVudCB0aGF0IGhhcyByZXNwb25zaXZlIGNsYXNzZXMuXG4vLy9cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRzbWFsbCBbdHJ1ZV0gLSBJZiBgZmFsc2VgLCB0aGUgbWl4aW4gd2lsbCBza2lwIHRoZSBgc21hbGxgIGJyZWFrcG9pbnQuIFVzZSB0aGlzIHdpdGggY29tcG9uZW50cyB0aGF0IGRvbid0IHByZWZpeCBjbGFzc2VzIHdpdGggYHNtYWxsLWAsIG9ubHkgYG1lZGl1bS1gIGFuZCB1cC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRhdXRvLWluc2VydC1icmVha3BvaW50cyBbdHJ1ZV0gLSBJZiBgZmFsc2VgLCB0aGUgbWl4aW4gd2lsbCBpdGVyYXRlIG92ZXIgYnJlYWtwb2ludHMgd2l0aG91dCBkb2luZyB0aGUgbWVkaWEgcXVlcnkgaXRzZWxmLiBVc2VmdWwgZm9yIG1vcmUgY29tcGxleCBtZWRpYSBxdWVyeSBnZW5lcmF0aW9uIGFzIGluIHRoZSBtYXJnaW4gZ3JpZC5cbkBtaXhpbiAtemYtZWFjaC1icmVha3BvaW50KFxuICAkc21hbGw6IHRydWUsXG4gICRhdXRvLWluc2VydC1icmVha3BvaW50czogdHJ1ZVxuKSB7XG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQtaW4oYXV0bywgLXpmLWJvb2woJHNtYWxsKSwgLXpmLWJvb2woJGF1dG8taW5zZXJ0LWJyZWFrcG9pbnRzKSkge1xuICAgIEBjb250ZW50XG4gIH07XG59XG5cbi8vLyBJdGVyYXRlcyB3aXRoIGBAY29udGVudGAgdGhyb3VnaCB0aGUgZ2l2ZW4gbGlzdCBvZiBicmVha3BvaW50cyBgJGJyZWFrcG9pbnRzYC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfExpc3R9ICRicmVha3BvaW50cyBbYXV0b10gLSBCcmVha3BvaW50cyB0byBpdGVyYXRlcyBvbi4gSXQgY2FuIGJlIGEgYnJlYWtwb2ludCBuYW1lLCBsaXN0IG9mIGJyZWFrcG9pbnRzIG9yIGBhdXRvYCBmb3IgYWxsIGJyZWFrcG9pbnRzLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbnxOdWxsfSAkemVyby1icmVha3BvaW50IFtudWxsXSAtIFdoZXRoZXIgdGhlIHplcm8tYnJlYWtwb2ludCAob2Z0ZW4gYHNtYWxsYCkgbXVzdCBiZSBpbmNsdWRlZC4gSWYgYHRydWVgLCBpdCB3aWxsIGFsd2F5cyBiZSBhZGRlZCB0byB0aGUgbGlzdCBpZiBub3QgYWxyZWFkeSB0aGVyZS4gSWYgYGZhbHNlYCwgaXQgd2lsbCBhbHdheXMgYmUgcmVtb3ZlZC4gRG9lcyBub3RoaW5nIGJ5IGRlZmF1bHQuXG4vLy8gQHBhcmFtIHtCb29sZWFufEtleXdvcmR9ICRtZWRpYS1xdWVyaWVzIFt0cnVlXSAtIFdoZXRoZXIgbWVkaWEtcXVlcmllcyBtdXN0IGJlIGdlbmVyYXRlZC4gSWYgYGZvci1saXN0c2AsIG9ubHkgZ2VuZXJhdGUgbWVkaWEtcXVlcmllcyB3aGVuIGAkYnJlYWtwb2ludHNgIGlzIGEgbGlzdC5cbkBtaXhpbiAtemYtZWFjaC1icmVha3BvaW50LWluKFxuICAkYnJlYWtwb2ludHM6IGF1dG8sXG4gICR6ZXJvLWJyZWFrcG9pbnQ6IG51bGwsXG4gICRtZWRpYS1xdWVyaWVzOiB0cnVlXG4pIHtcbiAgJC1saXN0OiAoKTtcbiAgJC1icmVha3BvaW50cy1pcy1hLWxpc3Q6IHRydWU7XG5cbiAgLy8gUmV0cmlldmUgdGhlIGxpc3Qgb2YgYnJlYWtwb2ludChzKSB0byBpdGVyYXRlIG9uLlxuICBAaWYgJGJyZWFrcG9pbnRzID09IGF1dG8ge1xuICAgICQtbGlzdDogJGJyZWFrcG9pbnQtY2xhc3NlcztcbiAgfVxuICBAZWxzZSBpZiB0eXBlLW9mKCRicmVha3BvaW50cykgPT0gJ2xpc3QnIHtcbiAgICAkLWxpc3Q6ICRicmVha3BvaW50cztcbiAgfVxuICBAZWxzZSBpZiB0eXBlLW9mKCRicmVha3BvaW50cykgPT0gJ3N0cmluZycge1xuICAgICQtbGlzdDogKCRicmVha3BvaW50cyk7XG4gICAgJC1icmVha3BvaW50cy1pcy1hLWxpc3Q6IGZhbHNlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAZXJyb3IgJ1dyb25nIHN5bnRheCBmb3IgXCIkYnJlYWtwb2ludHNcIiBpbiBcIi16Zi1lYWNoLWJyZWFrcG9pbnQtaW4oKVwiLiBHb3QgXCIjeyRicmVha3BvaW50c31cIiAoI3t0eXBlLW9mKCRicmVha3BvaW50cyl9KS4gRXhwZWN0ZWQgYSBicmVha3BvaW50IG5hbWUsIGEgbGlzdCBvZiBicmVha3BvaW50cyBvciBcImF1dG9cIic7XG4gIH1cblxuICAvLyBBZGQgb3IgcmVtb3ZlIHRoZSB6ZXJvIGJyZWFrcG9pbnQgYWNjb3JkaW5nIHRvIGAkemVyby1icmVha3BvaW50YFxuICBAaWYgJHplcm8tYnJlYWtwb2ludCA9PSB0cnVlIHtcbiAgICAkLWxpc3Q6IGpvaW4oKCQtemYtemVyby1icmVha3BvaW50KSwgc2wtcmVtb3ZlKCQtbGlzdCwgJC16Zi16ZXJvLWJyZWFrcG9pbnQpKTtcbiAgfVxuICBAZWxzZSBpZiAkemVyby1icmVha3BvaW50ID09IGZhbHNlIHtcbiAgICAkLWxpc3Q6IHNsLXJlbW92ZSgkLWxpc3QsICQtemYtemVyby1icmVha3BvaW50KTtcbiAgfVxuXG4gIC8vIEl0ZXJhdGUgb24gYnJlYWtwb2ludChzKVxuICBAZWFjaCAkYnAgaW4gJC1saXN0IHtcbiAgICAkb2xkLXpmLXNpemU6IG51bGw7XG4gICAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoLXpmLXNpemUpIHtcbiAgICAgICRvbGQtemYtc2l6ZTogJC16Zi1zaXplO1xuICAgIH1cbiAgICAkLXpmLXNpemU6ICRicCAhZ2xvYmFsO1xuXG4gICAgQGlmICgkbWVkaWEtcXVlcmllcyA9PSB0cnVlXG4gICAgICBvciAoJG1lZGlhLXF1ZXJpZXMgPT0gJ2Zvci1saXN0cycgYW5kICQtYnJlYWtwb2ludHMtaXMtYS1saXN0KSkge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYnApIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgICQtemYtc2l6ZTogJG9sZC16Zi1zaXplICFnbG9iYWw7XG4gIH1cbn1cblxuLy8vIEdlbmVyYXRlIHRoZSBgQGNvbnRlbnRgIHBhc3NlZCB0byB0aGUgbWl4aW4gd2l0aCBhIHZhbHVlIGAkLXpmLWJwLXZhbHVlYCByZWxhdGVkIHRvIGEgYnJlYWtwb2ludCwgZGVwZW5kaW5nIG9uIHRoZSBgJG5hbWVgIHBhcmFtZXRlcjpcbi8vLyAtIEZvciBhIHNpbmdsZSB2YWx1ZSwgYCQtemYtYnAtdmFsdWVgIGlzIHRoaXMgdmFsdWUuXG4vLy8gLSBGb3IgYSBicmVha3BvaW50IG5hbWUsIGAkLXpmLWJwLXZhbHVlYCBpcyB0aGUgY29ycmVzcG9uZGluZyBicmVha3BvaW50IHZhbHVlIGluIGAkbWFwYC5cbi8vLyAtIEZvciBcImF1dG9cIiwgYCQtemYtYnAtdmFsdWVgIGlzIHRoZSBjb3JyZXNwb25kaW5nIGJyZWFrcG9pbnQgdmFsdWUgaW4gYCRtYXBgIGFuZCBpcyBwYXNzZWQgdG8gYEBjb250ZW50YCwgd2hpY2ggaXMgbWFkZSByZXNwb25zaXZlIGZvciBlYWNoIGJyZWFrcG9pbnQgb2YgYCRtYXBgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfEFycmF5fEtleXdvcmR9ICRuYW1lIFthdXRvXSAtIFNpbmdsZSB2YWx1ZSwgYnJlYWtwb2ludCBuYW1lLCBvciBsaXN0IG9mIGJyZWFrcG9pbnQgbmFtZXMgdG8gdXNlLiBcImF1dG9cIiBieSBkZWZhdWx0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJG1hcCAtIE1hcCBvZiBicmVha3BvaW50cyBhbmQgdmFsdWVzIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2UuXG5AbWl4aW4gLXpmLWJyZWFrcG9pbnQtdmFsdWUoXG4gICRuYW1lOiBhdXRvLFxuICAkbWFwOiBudWxsXG4pIHtcbiAgQGlmICRuYW1lID09IGF1dG8gYW5kIHR5cGUtb2YoJG1hcCkgPT0gJ21hcCcge1xuICAgIC8vIFwiYXV0b1wiXG4gICAgQGVhY2ggJGssICR2IGluICRtYXAge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkaykge1xuICAgICAgICBAaW5jbHVkZSAtemYtYnJlYWtwb2ludC12YWx1ZSgkdiwgJG1hcCkge1xuICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBicmVha3BvaW50IG5hbWVcbiAgICBAaWYgdHlwZS1vZigkbmFtZSkgPT0gJ3N0cmluZycge1xuICAgICAgJGJwLXZhbHVlOiAtemYtZ2V0LWJwLXZhbCgkbWFwLCAkbmFtZSk7XG4gICAgICBAaWYgJGJwLXZhbHVlICE9IG51bGwge1xuICAgICAgICAkbmFtZTogJGJwLXZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGJyZWFrcG9pbnQgdmFsdWVcbiAgICAkLXpmLWJwLXZhbHVlOiAkbmFtZSAhZ2xvYmFsO1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbiQtemYtZm9udC1zdGFjazogKFxuICAnZ2VvcmdpYSc6IChHZW9yZ2lhLCBcIlVSVyBCb29rbWFuIExcIiwgc2VyaWYpLFxuICAnaGVsdmV0aWNhJzogKEhlbHZldGljYSwgQXJpYWwsIFwiTmltYnVzIFNhbnMgTFwiLCBzYW5zLXNlcmlmKSxcbiAgJ2x1Y2lkYS1ncmFuZGUnOiAoXCJMdWNpZGEgR3JhbmRlXCIsIFwiTHVjaWRhIFNhbnMgVW5pY29kZVwiLCBcIkJpdHN0cmVhbSBWZXJhIFNhbnNcIiwgc2Fucy1zZXJpZiksXG4gICdtb25vc3BhY2UnOiAoXCJDb3VyaWVyIE5ld1wiLCBDb3VyaWVyLCBcIk5pbWJ1cyBTYW5zIExcIiwgbW9ub3NwYWNlKSxcbiAgJ3N5c3RlbSc6ICgtYXBwbGUtc3lzdGVtLCBzeXN0ZW0tdWksIEJsaW5rTWFjU3lzdGVtRm9udCwgXCJTZWdvZSBVSVwiLCBcIlJvYm90b1wiLCBcIk94eWdlblwiLCBcIlVidW50dVwiLCBcIkNhbnRhcmVsbFwiLCBcIkZpcmEgU2Fuc1wiLCBcIkhlbHZldGljYSBOZXVlXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWYpLFxuICAndmVyZGFuYSc6IChWZXJkYW5hLCBHZW5ldmEsIFwiRGVqYVZ1IFNhbnNcIiwgc2Fucy1zZXJpZiksXG4pO1xuXG4vLy8gUmV0dXJuIGEgZm9udCBzdGFjayBsaXN0IGZyb20gYSBtYXAuIEVxdWl2YWxlbnQgdG8gYG1hcC1zYWZlLWdldCgkbmFtZSwgJC16Zi1mb250LXN0YWNrKWAuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN0YWNrIC0gTmFtZSBvZiB0aGUgZm9udCBzdGFjay5cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCBbJC16Zi1mb250LXN0YWNrXSAtIE1hcCBvZiBmb250IHN0YWNrcyB0byByZXRyaWV2ZSBhIGxpc3QgZnJvbS5cbi8vL1xuLy8vIEByZXR1cm5zIHtMaXN0fSBGb3VuZCBmb250IHN0YWNrLlxuQGZ1bmN0aW9uIGZvbnQtc3RhY2soJHN0YWNrLCAkbWFwOiAkLXpmLWZvbnQtc3RhY2spIHtcbiAgQHJldHVybiBtYXAtc2FmZS1nZXQoJG1hcCwgJHN0YWNrKTtcbn1cbiIsIi8qKlxuICogQ3VzdG9tIHZhcmlhYmxlc1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbi8qIFNwYWNpbmcgKi9cbiRzcGFjaW5nOiByZW0tY2FsYygyMCk7XG4kc3BhY2luZy14czogJHNwYWNpbmcgKiAwLjI1O1xuJHNwYWNpbmctczogJHNwYWNpbmcgKiAwLjU7XG4kc3BhY2luZy1zbTogJHNwYWNpbmcgKiAwLjg7IC8vIE5vcm1hbGx5IDE2cHhcbiRzcGFjaW5nLW06ICRzcGFjaW5nICogMS41O1xuJHNwYWNpbmctbDogJHNwYWNpbmcgKiAyO1xuJHNwYWNpbmcteGw6ICRzcGFjaW5nICogNDtcbiRzcGFjaW5nLXh4bDogJHNwYWNpbmcgKiA4O1xuXG4kc3BhY2luZy1pbmNyZW1lbnQ6IHJlbS1jYWxjKDEwKTtcblxuLyogVHJhbnNpdGlvbnMgKi9cbiRkdXJhdGlvbjogMC41cztcbiRkdXJhdGlvbi1mYXN0OiAwLjI1cztcbiRlYXNpbmc6IGN1YmljLWJlemllcigwLCAwLjYsIDAuNywgMSk7XG4kdHJhbnNpdGlvbjogJGR1cmF0aW9uICRlYXNpbmc7XG4kdHJhbnNpdGlvbi1mYXN0OiAkZHVyYXRpb24tZmFzdCAkZWFzaW5nO1xuXG4vKiB6LWluZGV4ICovXG4kei1pbmRleC1uZWdhdGl2ZTogLTE7XG4kei1pbmRleC1kZWZhdWx0OiAwO1xuJHotaW5kZXgtb3ZlcmxheTogMTtcbiR6LWluZGV4LXNjcmVlbi1yZWFkZXI6IDEwMDA7XG5cbi8qIEZvbnRBd2Vzb21lICovXG4kZmEtZm9udC1wYXRoOiAnYXNzZXRzL2ZvbnRzJztcbiRmYS1mb250LWRpc3BsYXk6IHN3YXA7XG5cbi8qIEJvcmRlciByYWRpdXMgKi9cbiRib3JkZXItcmFkaXVzOiAzcHg7XG4kYm9yZGVyLXJhZGl1cy1tZWRpdW06IDVweDtcblxuLyogQm94IHNoYWRvdyAqL1xuJGJveC1zaGFkb3c6IDAgMTBweCAxNXB4IHJnYmEoJGNvbG9yLWJsYWNrLCAuMik7XG4kYm94LXNoYWRvdy1zOiAwIDVweCAxMHB4IHJnYmEoJGNvbG9yLWJsYWNrLCAuMDUpO1xuXG4vKiBEcm9wIHNoYWRvdyAqL1xuJGRyb3Atc2hhZG93OiBkcm9wLXNoYWRvdygwIDAgMS41cHggcmdiYSgkY29sb3ItYmxhY2ssIC42KSk7XG5cbi8qIEltYWdlIGdyYWRpYW50ICovXG4kaW1hZ2UtZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHJnYmEoMCwwLDAsMC4wMCkgLTI1JSwgcmdiYSgwLDAsMCwxKSAxMDAlKTtcbiRpbWFnZS1ncmFkaWVudC1vcGFjaXR5OiAuMzU7XG5cbi8qIFdQIGFkbWluIGJhciAqL1xuJHdwLWFkbWluLWJhci1oZWlnaHQtbW9iaWxlOiByZW0tY2FsYyg0Nik7XG4kd3AtYWRtaW4tYmFyLWhlaWdodC1kZXNrdG9wOiByZW0tY2FsYygzMik7XG4kd3AtYnJlYWtwb2ludC1hZG1pbi1iYXI6IDc4MztcbiIsIi8qKlxuICogQ3VzdG9tIGZ1bmN0aW9uc1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5AZnVuY3Rpb24gdm8tcGVyY2VudGFnZSgkeCwgJHkpIHtcbiAgICBAcmV0dXJuICgkeSAvICR4KSAqIDEwMCU7XG59XG5cbi8qKlxuICogQ3VzdG9tIG1peGluc1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbi8qKlxuICogVXNlZCB0byBjb21waWxlIENTUyB0byBkaXNwbGF5IHJldGluYSBpbWFnZXMuXG4gKlxuICogRXhhbXBsZTpcbiAqIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UtcmV0aW5hKGxvZ28sIHBuZywgMjEwcHgsIDcwcHgpO1xuICpcbiAqL1xuQG1peGluIGJhY2tncm91bmQtaW1hZ2UtcmV0aW5hKCRmaWxlLCAkdHlwZSwgJHdpZHRoLCAkaGVpZ2h0KSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiYXNzZXRzL2ltYWdlcy9cIiArICRmaWxlICsgXCIuXCIgKyAkdHlwZSk7XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgb25seSBzY3JlZW4gYW5kICgtbW96LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLCBvbmx5IHNjcmVlbiBhbmQgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIgLyAxKSwgb25seSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgb25seSBzY3JlZW4gYW5kIChtaW4tcmVzb2x1dGlvbjogMTkyZHBpKSwgb25seSBzY3JlZW4gYW5kIChtaW4tcmVzb2x1dGlvbjogMmRwcHgpIHtcbiAgICAgICAgJiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJhc3NldHMvaW1hZ2VzL1wiICsgJGZpbGUgKyBcIkAyeC5cIiArICR0eXBlKTtcbiAgICAgICAgICAgIC13ZWJraXQtYmFja2dyb3VuZC1zaXplOiAkd2lkdGggJGhlaWdodDtcbiAgICAgICAgICAgIC1tb3otYmFja2dyb3VuZC1zaXplOiAkd2lkdGggJGhlaWdodDtcbiAgICAgICAgICAgIC1vLWJhY2tncm91bmQtc2l6ZTogJHdpZHRoICRoZWlnaHQ7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6ICR3aWR0aCAkaGVpZ2h0O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIEN1c3RvbSBwbGFjZWhvbGRlcnNcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG4ldW5zdHlsZWQtbGlzdCB7XG4gICAgbWFyZ2luOiB7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICB9O1xuICAgIHBhZGRpbmc6IHtcbiAgICAgICAgbGVmdDogMDtcbiAgICB9O1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbiVvcmRlcmVkLWxpc3Qge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgcGFkZGluZy1sZWZ0OiByZW0tY2FsYygyNyk7XG4gICAgY291bnRlci1yZXNldDogbGk7XG5cbiAgICA+IGxpIHtcbiAgICAgICAgY291bnRlci1pbmNyZW1lbnQ6IGxpO1xuICAgIH1cblxuICAgID4gbGk6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICBcIlwiY291bnRlcihsaSlcIi5cIjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgY29sb3I6ICRjb2xvci1wcmltYXJ5O1xuICAgICAgICB3aWR0aDogcmVtLWNhbGMoMjcpO1xuICAgICAgICBtYXJnaW4tbGVmdDogcmVtLWNhbGMoLTI3KTtcbiAgICB9XG5cbiAgICAmW3JldmVyc2VkXVtkYXRhLXZhbHVlXSB7XG4gICAgICAgIGNvdW50ZXItcmVzZXQ6IGxpIDtcblxuICAgICAgICA+IGxpIHtcbiAgICAgICAgICAgIGNvdW50ZXItaW5jcmVtZW50OiBsaSAtMTtcbiAgICAgICAgfVxuXG4gICAgICAgID4gbGk6OmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiAgXCJcImNvdW50ZXIobGkpXCIuXCI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbiV1bm9yZGVyZWQtbGlzdCB7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICBwYWRkaW5nLWxlZnQ6IHJlbS1jYWxjKDI3KTtcblxuICAgIGxpOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBcIlxcMjVDRlwiO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIHdpZHRoOiByZW0tY2FsYygyNyk7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiByZW0tY2FsYygtMjcpO1xuICAgIH1cbn1cblxuQG1peGluIHZvLXVub3JkZXJlZC1saXN0KCkge1xuICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgIG1hcmdpbi1sZWZ0OiByZW0tY2FsYygyNyk7XG5cbiAgIGxpOjpiZWZvcmUge1xuICAgICAgIGNvbnRlbnQ6IFwiXFwyNUNGXCI7XG4gICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgY29sb3I6ICRjb2xvci1wcmltYXJ5O1xuICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgd2lkdGg6IHJlbS1jYWxjKDI3KTtcbiAgICAgICBtYXJnaW4tbGVmdDogcmVtLWNhbGMoLTI3KTtcbiAgIH1cbn1cblxuQG1peGluIGhpZGUtc2Nyb2xsYmFyIHtcbiAgICAtbXMtb3ZlcmZsb3ctc3R5bGU6IG5vbmU7XG4gICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lO1xuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuQG1peGluIGgxIHtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDIwKTtcbiAgICBsaW5lLWhlaWdodDogKDI0IC8gMjApO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDQyKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICg0NiAvIDQyKTtcbiAgICB9XG59XG5cbkBtaXhpbiBoMiB7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygyMCk7XG4gICAgbGluZS1oZWlnaHQ6ICgyNCAvIDIwKTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygzMik7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAoMzQgLyAzMik7XG4gICAgfVxufVxuXG5AbWl4aW4gaDMge1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTgpO1xuICAgIGxpbmUtaGVpZ2h0OiAoMjAgLyAxOCk7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjQpO1xuICAgICAgICBsaW5lLWhlaWdodDogKDMwIC8gMjQpO1xuICAgIH1cbn1cblxuQG1peGluIGg0IHtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDE4KTtcbiAgICBsaW5lLWhlaWdodDogKDIwIC8gMTgpO1xufVxuXG5AbWl4aW4gaDUge1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTgpO1xuICAgIGxpbmUtaGVpZ2h0OiAoMjAgLyAxOCk7XG59XG5cbkBtaXhpbiBoNiB7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygxNik7XG4gICAgbGluZS1oZWlnaHQ6ICgyMCAvIDE4KTtcbn1cblxuQG1peGluIHRleHQteHMge1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpO1xufVxuXG5AbWl4aW4gdGV4dC1zIHtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbiAgICBsaW5lLWhlaWdodDogKDIyIC8gMTQpO1xufVxuXG5AbWl4aW4gdGV4dCB7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygxNik7XG4gICAgbGluZS1oZWlnaHQ6ICgyOCAvIDE2KTtcbn1cblxuQG1peGluIHRleHQtbCB7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygxOCk7XG4gICAgbGluZS1oZWlnaHQ6ICgzMCAvIDE4KTtcbn1cblxuQG1peGluIHRleHQteGwge1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjApO1xufVxuXG5AbWl4aW4gdGV4dC14eGwge1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjIpO1xufVxuXG5AbWl4aW4gdGV4dC14eHhsIHtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDI0KTtcbn1cblxuJWZvbnQtd2VpZ2h0LWxpZ2h0IHtcbiAgICBmb250LXdlaWdodDogMzAwO1xufVxuXG4lZm9udC13ZWlnaHQtbm9ybWFsIHtcbiAgICBmb250LXdlaWdodDogNDAwO1xufVxuXG4lZm9udC13ZWlnaHQtbWVkaXVtIHtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG4lZm9udC13ZWlnaHQtc2VtaWJvbGQge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbiVmb250LXdlaWdodC1ib2xkIHtcbiAgICBmb250LXdlaWdodDogNzAwO1xufVxuXG4vKipcbiAqIEFkZCBzdHlsaW5nIHRvIHJvb3QgKG9wdGlvbmFsKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbkBtaXhpbiBvcHRpb25hbC1hdC1yb290KCRzZWwpIHtcbiAgICBAYXQtcm9vdCAje2lmKG5vdCAmLCAkc2VsLCBzZWxlY3Rvci1hcHBlbmQoJiwgJHNlbCkpfSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuLyoqXG4gKiBGb3JtIHBsYWNlaG9sZGVyIHN0eWxpbmdcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5AbWl4aW4gcGxhY2Vob2xkZXIge1xuICAgIEBpbmNsdWRlIG9wdGlvbmFsLWF0LXJvb3QoJzo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcicpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgb3B0aW9uYWwtYXQtcm9vdCgnOi1tb3otcGxhY2Vob2xkZXInKSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIG9wdGlvbmFsLWF0LXJvb3QoJzo6LW1vei1wbGFjZWhvbGRlcicpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgb3B0aW9uYWwtYXQtcm9vdCgnOi1tcy1pbnB1dC1wbGFjZWhvbGRlcicpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG4vKipcbiAqIEF1dG9tYXRpY2FsbHkgaW5jbHVkZSBmb2N1cyBzdHlsZXMgd2l0aCBob3ZlclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbkBtaXhpbiBob2N1cyB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG5cbi8qKlxuICogQnV0dG9uXG4gKi9cbkBtaXhpbiB2by1idXR0b24oXG4gICAgJGNvbG9yOiAkY29sb3Itd2hpdGUsXG4gICAgJGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1idXR0b24tZ3JheSxcbiAgICAkY29sb3ItaG92ZXI6ICRjb2xvci13aGl0ZSxcbiAgICAkYmFja2dyb3VuZC1jb2xvci1ob3ZlcjogJGNvbG9yLXByaW1hcnksXG4gICAgJGNvbG9yLW91dGxpbmU6ICRiYWNrZ3JvdW5kLWNvbG9yXG4pIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGNvbG9yOiAkY29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgdHJhbnNpdGlvbjogYWxsICR0cmFuc2l0aW9uO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIHBhZGRpbmc6IHJlbS1jYWxjKDkgMTMpO1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTApO1xuICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygxMyk7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygpO1xuXG4gICAgJi5idXR0b24tLW1lZGl1bSB7XG4gICAgICAgIHBhZGRpbmc6IHJlbS1jYWxjKDExIDIwKTtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxNCk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygyNCk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoMTEgMjApO1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IHJlbS1jYWxjKDI0KTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgIHBhZGRpbmc6IHJlbS1jYWxjKDExKSByZW0tY2FsYygyMCk7XG4gICAgfVxuXG4gICAgJi5idXR0b24tLW91dGxpbmUsIC5pcy1zdHlsZS1vdXRsaW5lICYge1xuICAgICAgICAmOm5vdCg6aG92ZXIpLFxuICAgICAgICAmOm5vdCg6Zm9jdXMpIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gICAgICAgICAgICBAaWYgKCRlZGl0b3IpIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlcixcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtY29sb3ItaG92ZXI7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yLWhvdmVyO1xuXG4gICAgICAgICAgICBAaWYgKCRlZGl0b3IpIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvci1ob3ZlciAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgICAgQGluY2x1ZGUgZWxlbWVudC1ob3ZlcigpO1xuICAgICAgICBjb2xvcjogJGNvbG9yLWhvdmVyO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oJGJhY2tncm91bmQtY29sb3IsIDEwJSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogZGFya2VuKCRiYWNrZ3JvdW5kLWNvbG9yLCAxMCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICBAaWYgKCRlZGl0b3IpIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yLWhvdmVyICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBtaXhpbiB2by1idXR0b24tdmFyaWF0aW9uKFxuICAgICRjb2xvcjogJGNvbG9yLXdoaXRlLFxuICAgICRiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYnV0dG9uLWdyYXksXG4gICAgJGNvbG9yLWhvdmVyOiAkY29sb3Itd2hpdGUsXG4gICAgJGJhY2tncm91bmQtY29sb3ItaG92ZXI6ICRjb2xvci1wcmltYXJ5LFxuICAgICRjb2xvci1vdXRsaW5lOiAkYmFja2dyb3VuZC1jb2xvclxuKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtY29sb3I7XG4gICAgY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yO1xuXG4gICAgJi5idXR0b24tLW91dGxpbmUsIC5pcy1zdHlsZS1vdXRsaW5lICYge1xuICAgICAgICAmOm5vdCg6aG92ZXIpLFxuICAgICAgICAmOm5vdCg6Zm9jdXMpIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gICAgICAgICAgICBAaWYgKCRlZGl0b3IpIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlcixcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLWhvdmVyO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtY29sb3ItaG92ZXI7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yLWhvdmVyO1xuXG4gICAgICAgICAgICBAaWYgKCRlZGl0b3IpIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvci1ob3ZlciAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1ob3ZlcjtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKCRiYWNrZ3JvdW5kLWNvbG9yLCAxMCUpO1xuICAgICAgICBib3JkZXItY29sb3I6IGRhcmtlbigkYmFja2dyb3VuZC1jb2xvciwgMTAlKTtcblxuICAgICAgICBAaWYgKCRlZGl0b3IpIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbigkYmFja2dyb3VuZC1jb2xvciwgMTAlKSAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBJY29uIEJ1dHRvblxuXG5AbWl4aW4gdm8taWNvbi1idXR0b24oXG4gICAgJGNvbG9yOiAkY29sb3Itd2hpdGUsXG4gICAgJGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5LFxuICAgICRjb2xvci1ob3ZlcjogJGNvbG9yLXdoaXRlLFxuICAgICRiYWNrZ3JvdW5kLWNvbG9yLWhvdmVyOiAkY29sb3ItYmxhY2ssXG4gICAgJGNvbG9yLW91dGxpbmU6ICRiYWNrZ3JvdW5kLWNvbG9yXG4pIHtcbiAgICBjb2xvcjogJGNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTgpO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHdpZHRoOiByZW0tY2FsYygzNSk7XG4gICAgaGVpZ2h0OiByZW0tY2FsYygzNSk7XG4gICAgYm9yZGVyLXJhZGl1czogcmVtLWNhbGMoMTAwKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgJHRyYW5zaXRpb247XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjIpO1xuICAgICAgICB3aWR0aDogcmVtLWNhbGMoNDgpO1xuICAgICAgICBoZWlnaHQ6IHJlbS1jYWxjKDQ4KTtcbiAgICB9XG5cbiAgICBzdmcgcGF0aCB7XG4gICAgICAgIGZpbGw6ICRjb2xvcjtcbiAgICB9XG5cbiAgICAmLmljb24tYnV0dG9uLS1vdXRsaW5lIHtcbiAgICAgICAgJjpub3QoOmhvdmVyKSxcbiAgICAgICAgJjpub3QoOmZvY3VzKSB7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLW91dGxpbmU7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIsXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvci1ob3ZlcjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yLWhvdmVyO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvci1ob3ZlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItaG92ZXI7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yLWhvdmVyO1xuICAgICAgICBib3JkZXItY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yLWhvdmVyO1xuICAgICAgICBAaW5jbHVkZSBlbGVtZW50LWhvdmVyKCk7XG4gICAgfVxufVxuXG4vLyBJY29uIEJ1dHRvbiBWYXJpYXRpb25cblxuQG1peGluIHZvLWljb24tYnV0dG9uLXZhcmlhdGlvbihcbiAgICAkY29sb3I6ICRjb2xvci13aGl0ZSxcbiAgICAkYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXByaW1hcnksXG4gICAgJGNvbG9yLWhvdmVyOiAkY29sb3Itd2hpdGUsXG4gICAgJGJhY2tncm91bmQtY29sb3ItaG92ZXI6ICRjb2xvci1ibGFjayxcbiAgICAkY29sb3Itb3V0bGluZTogJGJhY2tncm91bmQtY29sb3Jcbikge1xuICAgIGNvbG9yOiAkY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtY29sb3I7XG4gICAgYm9yZGVyOiAycHggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG5cbiAgICBzdmcgcGF0aCB7XG4gICAgICAgIGZpbGw6ICRjb2xvcjtcbiAgICB9XG5cbiAgICAmLmljb24tYnV0dG9uLS1vdXRsaW5lIHtcbiAgICAgICAgJjpub3QoOmhvdmVyKSxcbiAgICAgICAgJjpub3QoOmZvY3VzKSB7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLW91dGxpbmU7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyLFxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3ItaG92ZXI7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvci1ob3ZlcjtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGJhY2tncm91bmQtY29sb3ItaG92ZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgICBjb2xvcjogJGNvbG9yLWhvdmVyO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvci1ob3ZlcjtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvci1ob3ZlcjtcbiAgICB9XG59XG5cbi8vIExpbmtcblxuQG1peGluIHZvLWxpbmsoXG4gICAgJGNvbG9yOiAkY29sb3ItcHJpbWFyeSxcbiAgICAkY29sb3ItaG92ZXI6IGRhcmtlbigkY29sb3IsIDEwJSkpIHtcbiAgICBjb2xvcjogJGNvbG9yO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgIEBpbmNsdWRlIGhvY3VzIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1ob3ZlcjtcbiAgICB9XG59XG5cbi8vIE9wZW4gU3RhdHVzXG5cbkBtaXhpbiB2by1vcGVuLXN0YXR1cyhcbiAgICAkYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWdyZWVuLFxuICAgICRjb2xvci1vdXRsaW5lOiAkYmFja2dyb3VuZC1jb2xvclxuKSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpO1xuICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygxNik7XG4gICAgcGFkZGluZzogcmVtLWNhbGMoNiAxMCk7XG4gICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAycHg7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IHJlbS1jYWxjKDE4KTtcbiAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoNyAxMSk7XG4gICAgfVxuXG4gICAgJi5vcGVuLXN0YXR1cy0tb3V0bGluZSB7XG4gICAgICAgIGNvbG9yOiAkY29sb3Itb3V0bGluZTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxufVxuXG4vLyBPcGVuIFN0YXR1cyBWYXJpYXRpb25cblxuQG1peGluIHZvLW9wZW4tc3RhdHVzLXZhcmlhdGlvbihcbiAgICAkYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWdyZWVuLFxuICAgICRjb2xvci1vdXRsaW5lOiAkYmFja2dyb3VuZC1jb2xvclxuKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtY29sb3I7XG4gICAgYm9yZGVyLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvcjtcblxuICAgICYub3Blbi1zdGF0dXMtLW91dGxpbmUge1xuICAgICAgICBjb2xvcjogJGNvbG9yLW91dGxpbmU7XG4gICAgfVxufVxuXG4vKipcbiAgKiBIZWFkaW5nc1xuICovXG5cbkBtaXhpbiBoZWFkaW5nKCRzaXplOiAnaDEnKSB7XG4gICAgQGlmICRzaXplID09ICdoMScge1xuICAgICAgICBAaW5jbHVkZSBoMTtcbiAgICB9IEBlbHNlIGlmICRzaXplID09ICdoMicge1xuICAgICAgICBAaW5jbHVkZSBoMjtcbiAgICB9IEBlbHNlIGlmICRzaXplID09ICdoMycge1xuICAgICAgICBAaW5jbHVkZSBoMztcbiAgICB9IEBlbHNlIGlmICRzaXplID09ICdoNCcge1xuICAgICAgICBAaW5jbHVkZSBoNDtcbiAgICB9IEBlbHNlIGlmICRzaXplID09ICdoNScge1xuICAgICAgICBAaW5jbHVkZSBoNTtcbiAgICB9IEBlbHNlIGlmICRzaXplID09ICdoNicge1xuICAgICAgICBAaW5jbHVkZSBoNjtcbiAgICB9XG59XG5cbi8vIFRleHQgU3R5bGVzXG5cbkBtaXhpbiB0ZXh0LWludHJvKCkge1xuICAgIEBpbmNsdWRlIHRleHQtcygpO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICBAaW5jbHVkZSB0ZXh0LWwoKTtcbiAgICB9XG59XG5cbkBtaXhpbiB0ZXh0LWJvZHkoKSB7XG4gICAgQGluY2x1ZGUgdGV4dC1zKCk7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgIEBpbmNsdWRlIHRleHQoKTtcbiAgICB9XG59XG5cbi8vIFBhZGRpbmdcblxuQG1peGluIHZvLXBhZGRpbmcoJHNtYWxsLCAkaW5jcmVtZW50KSB7XG4gICAgcGFkZGluZzogcmVtLWNhbGMoJHNtYWxsKTtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBwYWRkaW5nOiByZW0tY2FsYygkc21hbGwgKyAkaW5jcmVtZW50KTtcbiAgICB9XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICBwYWRkaW5nOiByZW0tY2FsYygkc21hbGwgKyAoJGluY3JlbWVudCAqIDIpKTtcbiAgICB9XG59XG5cbkBtaXhpbiBwYWRkaW5nLXRvcCgkc21hbGwsICRpbmNyZW1lbnQpIHtcbiAgICBwYWRkaW5nLXRvcDogcmVtLWNhbGMoJHNtYWxsKTtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBwYWRkaW5nLXRvcDogcmVtLWNhbGMoJHNtYWxsICsgJGluY3JlbWVudCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgcGFkZGluZy10b3A6IHJlbS1jYWxjKCRzbWFsbCArICgkaW5jcmVtZW50ICogMikpO1xuICAgIH1cbn1cblxuQG1peGluIHBhZGRpbmctYm90dG9tKCRzbWFsbCwgJGluY3JlbWVudCkge1xuICAgIHBhZGRpbmctYm90dG9tOiByZW0tY2FsYygkc21hbGwpO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiByZW0tY2FsYygkc21hbGwgKyAkaW5jcmVtZW50KTtcbiAgICB9XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogcmVtLWNhbGMoJHNtYWxsICsgKCRpbmNyZW1lbnQgKiAyKSk7XG4gICAgfVxufVxuXG5AbWl4aW4gcGFkZGluZy1sZWZ0KCRzbWFsbCwgJGluY3JlbWVudCkge1xuICAgIHBhZGRpbmctbGVmdDogcmVtLWNhbGMoJHNtYWxsKTtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IHJlbS1jYWxjKCRzbWFsbCArICRpbmNyZW1lbnQpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogcmVtLWNhbGMoJHNtYWxsICsgKCRpbmNyZW1lbnQgKiAyKSk7XG4gICAgfVxufVxuXG5AbWl4aW4gcGFkZGluZy1yaWdodCgkc21hbGwsICRpbmNyZW1lbnQpIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiByZW0tY2FsYygkc21hbGwpO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IHJlbS1jYWxjKCRzbWFsbCArICRpbmNyZW1lbnQpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IHJlbS1jYWxjKCRzbWFsbCArICgkaW5jcmVtZW50ICogMikpO1xuICAgIH1cbn1cblxuLy8gTWFyZ2luXG5cbkBtaXhpbiBtYXJnaW4oJHNtYWxsLCAkaW5jcmVtZW50KSB7XG4gICAgbWFyZ2luOiByZW0tY2FsYygkc21hbGwpO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIG1hcmdpbjogcmVtLWNhbGMoJHNtYWxsICsgJGluY3JlbWVudCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgbWFyZ2luOiByZW0tY2FsYygkc21hbGwgKyAoJGluY3JlbWVudCAqIDIpKTtcbiAgICB9XG59XG5cbkBtaXhpbiBtYXJnaW4tdG9wKCRzbWFsbCwgJGluY3JlbWVudCkge1xuICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKCRzbWFsbCk7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoJHNtYWxsICsgJGluY3JlbWVudCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoJHNtYWxsICsgKCRpbmNyZW1lbnQgKiAyKSk7XG4gICAgfVxufVxuXG5AbWl4aW4gbWFyZ2luLWJvdHRvbSgkc21hbGwsICRpbmNyZW1lbnQpIHtcbiAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYygkc21hbGwpO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKCRzbWFsbCArICRpbmNyZW1lbnQpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKCRzbWFsbCArICgkaW5jcmVtZW50ICogMikpO1xuICAgIH1cbn1cblxuQG1peGluIG1hcmdpbi1sZWZ0KCRzbWFsbCwgJGluY3JlbWVudCkge1xuICAgIG1hcmdpbi1sZWZ0OiByZW0tY2FsYygkc21hbGwpO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiByZW0tY2FsYygkc21hbGwgKyAkaW5jcmVtZW50KTtcbiAgICB9XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICBtYXJnaW4tbGVmdDogcmVtLWNhbGMoJHNtYWxsICsgKCRpbmNyZW1lbnQgKiAyKSk7XG4gICAgfVxufVxuXG5AbWl4aW4gbWFyZ2luLXJpZ2h0KCRzbWFsbCwgJGluY3JlbWVudCkge1xuICAgIG1hcmdpbi1yaWdodDogcmVtLWNhbGMoJHNtYWxsKTtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IHJlbS1jYWxjKCRzbWFsbCArICRpbmNyZW1lbnQpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogcmVtLWNhbGMoJHNtYWxsICsgKCRpbmNyZW1lbnQgKiAyKSk7XG4gICAgfVxufVxuXG4vLyBCb3JkZXIgcmFkaXVzXG5cbkBtaXhpbiBib3JkZXItcmFkaXVzKCkge1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1lZGl1bTtcbiAgICB9XG59XG5cbi8vIEhvdmVyXG5cbkBtaXhpbiBlbGVtZW50LWhvdmVyKCRzaXplOiAnc21hbGwnKSB7XG4gICAgYm94LXNoYWRvdzogJGJveC1zaGFkb3c7XG4gICAgQGlmICRzaXplID09ICdzbWFsbCcge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweClcbiAgICB9XG5cbiAgICBAaWYgJHNpemUgPT0gJ2xhcmdlJyB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtN3B4KTtcbiAgICB9XG59XG5cbi8vIFJhbmdlIFNsaWRlclxuXG5AbWl4aW4gcmFuZ2UtdHJhY2soJHRyYWNrLXcsICR0cmFjay1oKSB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgd2lkdGg6ICR0cmFjay13OyBoZWlnaHQ6ICR0cmFjay1oO1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci1idXR0b24tZ3JheTtcbn1cblxuQG1peGluIHJhbmdlLXRodW1iKCR0aHVtYi1kKSB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgd2lkdGg6ICR0aHVtYi1kOyBoZWlnaHQ6ICR0aHVtYi1kO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItcHJpbWFyeTtcbn1cblxuQG1peGluIHJhbmdlLXNsaWRlcigkdHJhY2stdzogMTAwJSwgJHRyYWNrLWg6IHJlbS1jYWxjKDIpLCAkdGh1bWItZDogcmVtLWNhbGMoMTIpKSB7XG4gICAgJiwgJjo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xuICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgfVxuXG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgd2lkdGg6ICR0cmFjay13OyBoZWlnaHQ6ICR0aHVtYi1kO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGZvbnQ6IDFlbS8xIGFyaWFsLCBzYW5zLXNlcmlmO1xuXG4gICAgJjo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2sge1xuICAgICAgICBAaW5jbHVkZSByYW5nZS10cmFjaygkdHJhY2stdywgJHRyYWNrLWgpO1xuICAgIH1cblxuICAgICY6Oi1tb3otcmFuZ2UtdHJhY2sge1xuICAgICAgICBAaW5jbHVkZSByYW5nZS10cmFjaygkdHJhY2stdywgJHRyYWNrLWgpO1xuICAgIH1cblxuICAgICY6Oi1tcy10cmFjayB7XG4gICAgICAgIEBpbmNsdWRlIHJhbmdlLXRyYWNrKCR0cmFjay13LCAkdHJhY2staCk7XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xuICAgICAgICBtYXJnaW4tdG9wOiAuNSooJHRyYWNrLWggLSAkdGh1bWItZCk7XG4gICAgICAgIEBpbmNsdWRlIHJhbmdlLXRodW1iKCR0aHVtYi1kKTtcbiAgICB9XG5cbiAgICAmOjotbW96LXJhbmdlLXRodW1iIHtcbiAgICAgICAgQGluY2x1ZGUgcmFuZ2UtdGh1bWIoJHRodW1iLWQpO1xuICAgIH1cblxuICAgICY6Oi1tcy10aHVtYiB7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIEBpbmNsdWRlIHJhbmdlLXRodW1iKCR0aHVtYi1kKTtcbiAgICB9XG5cbiAgICAmOjotbXMtdG9vbHRpcCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmVcbiAgICB9XG59XG5cbkBtaXhpbiB2by1pY29uLXRleHQoJGNvbG9yOiAkY29sb3ItZGFya2VyLWdyYXksICRpY29uLWNvbG9yOiAkY29sb3IpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpO1xuICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygyMik7XG4gICAgY29sb3I6ICRjb2xvcjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgd29yZC1icmVhazogYnJlYWstd29yZDtcblxuICAgICYgPiBzcGFuOmZpcnN0LWNoaWxkLFxuICAgICYgPiBkaXY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBvcmRlcjogMjtcbiAgICB9XG5cbiAgICAmID4gc3BhbjpsYXN0LWNoaWxkIHtcbiAgICAgICAgb3JkZXI6IDE7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBjb2xvcjogJGljb24tY29sb3I7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTgpO1xuICAgICAgICB3aWR0aDogcmVtLWNhbGMoMTgpO1xuICAgICAgICBoZWlnaHQ6IHJlbS1jYWxjKDIyKTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiByZW0tY2FsYygxMik7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgQGlmIGlzLXN1cGVyc2VsZWN0b3IoJ2EnLCAmKSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXG4gICAgICAgIEBpbmNsdWRlIGhvY3VzIHtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbiAgICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgICBAYXQtcm9vdCBhI3smfSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcblxuICAgICAgICAgICAgQGluY2x1ZGUgaG9jdXMge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxNik7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygyOCk7XG5cbiAgICAgICAgPiBzcGFuOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygyMik7XG4gICAgICAgICAgICB3aWR0aDogcmVtLWNhbGMoMjIpO1xuICAgICAgICAgICAgaGVpZ2h0OiByZW0tY2FsYygyOCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIERlZmF1bHQgYmFja2dyb3VuZCBpbWFnZVxuXG5AbWl4aW4gdm8tZGVmYXVsdC1iYWNrZ3JvdW5kLWltYWdlKCRzaXplOiByZW0tY2FsYygyNCkpIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMyAzNicgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZD0nTTE2Ljc1IDYuMzk3YzguNzggMCA5Ljc0NCA4LjI2NiA5Ljc1MSAxMS44MjFsLjAwNiAzLjc4NXYxLjE3NWwuMDAxLjI3djIuOTQxbC0uMDAxLjJ2LjRsLS4wNCA4LjY2NmgtMy4zMzRsLS4wMDUtMy43MzR2LTMuOTktLjk5bC4wMDEtLjI0NnYtLjc0NmwuMDAxLS4yNTV2LTIuOTktLjM2NWwtLjAwMS0uNzc3LS4wMDUtMy4zMzdjLS4wMS01LjI3OS0xLjgxNy04LjQwMy02LjM3My04LjQwM2gtLjEwMmMtNC44NTcuMDUtNi44NDcgMy4yMTgtNi44NiA4LjQ3MmwuMDMxIDE3LjM2MUg2LjQxM3YtOC4xMzNsLS4wMDUtMS43ODZ2LS40NzJsLS4wMDItLjc0NlYyMS44N3YtLjM0NGwuMDAxLS43MjYuMDA1LTIuNTEzQzYuNDM4IDcuNjQ4IDEzLjU1NiA2LjQyOCAxNi42MTYgNi4zOTd6TTE3Ljc0OSAwYzIuNzQuMDE3IDE1LjIuOTkgMTUuMiAxNy4yODF2MS42OTJjLjAwNCAzLjMwNy4wMTYgNS4xMS4wMiA4LjU4NHYxLjE1N2wuMDMgNi45NDFIMjkuNTl2LTcuNDNjLjAwMi0xLjQ0LjAxLTIuNTk2LjAxNy0zLjY1Ny4wMTYtMi4yNi0uMDM2LTQuMDQ2LS4wMzYtNy4yMTYgMC0xMy4wMzMtOS41NjUtMTMuOTA1LTExLjg2MS0xMy45MjZoLS4xNDVjLS4yMjMgMC0uMzQ2LjAxLS4zNDYuMDEtLjI3Ni0uMDMtMTMuODQxLTEuNDQ3LTEzLjg0MSAxNC44NFYyNi41OWwtLjAwMS4wNDN2LjIyN2wtLjAwMi41NzgtLjAwNCAxLjgwOXYuNjY0bC0uMDAxLjM1djEuOTgxbC0uMDIzIDMuNDE0SDB2LTE3LjM3QzAgMy45NDUgOC4xMTEuMDExIDE3LjIxOS4wMTFjMCAwIC4xMjctLjAwOS4zNi0uMDF6JyBmaWxsPSclMjNGRkYnIGZpbGwtcnVsZT0nZXZlbm9kZCcvJTNFJTNDL3N2ZyUzRVwiKTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1tZWRpdW0tZ3JheTtcbn1cblxuQG1peGluIHZvLWFkLWNvbG9ycygpIHtcbiAgICBjb2xvcjogJGNvbG9yLWRhcmstZ3JheTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIxMCwgNzUsIDM5LCAwLjA1KTtcbn1cblxuQG1peGluIHZvLWJsb2NrLXdyYXBwZXIoJHRleHQpIHtcbiAgICBwYWRkaW5nOiByZW0tY2FsYygxNSk7XG4gICAgYm9yZGVyOiAycHggZGFzaGVkICRjb2xvci1tZWRpdW0tZ3JheTtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICR0ZXh0O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgY29sb3I6ICRjb2xvci1kYXJrZXItZ3JheTtcbiAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yLW1lZGl1bS1ncmF5O1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoNSAyMCk7XG4gICAgICAgIHRvcDogLTE2cHg7XG4gICAgICAgIGxlZnQ6IC0xNnB4O1xuICAgIH1cblxuICAgIC53cC1ibG9jayB7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICB9XG59XG5cbkBtaXhpbiB2by1ibG9jay13cmFwcGVyLWFsdCgkdGV4dCkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiByZW0tY2FsYygxNSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvci1wcmltYXJ5O1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJHRleHQ7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItcHJpbWFyeTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIHBhZGRpbmc6IHJlbS1jYWxjKDUgMjApO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkY29sb3ItcHJpbWFyeTtcbiAgICAgICAgdG9wOiAtMTZweDtcbiAgICAgICAgbGVmdDogLTE2cHg7XG4gICAgfVxufVxuIiwiLyohIG5vcm1hbGl6ZS5jc3MgdjguMC4xIHwgTUlUIExpY2Vuc2UgfCBnaXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcyAqL1xuXG4vKiBEb2N1bWVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBsaW5lIGhlaWdodCBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluIGlPUy5cbiAqL1xuXG5odG1sIHtcbiAgbGluZS1oZWlnaHQ6IDEuMTU7IC8qIDEgKi9cbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG59XG5cbi8qIFNlY3Rpb25zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSB0aGUgbWFyZ2luIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5ib2R5IHtcbiAgbWFyZ2luOiAwO1xufVxuXG4vKipcbiAqIFJlbmRlciB0aGUgYG1haW5gIGVsZW1lbnQgY29uc2lzdGVudGx5IGluIElFLlxuICovXG5cbm1haW4ge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBmb250IHNpemUgYW5kIG1hcmdpbiBvbiBgaDFgIGVsZW1lbnRzIHdpdGhpbiBgc2VjdGlvbmAgYW5kXG4gKiBgYXJ0aWNsZWAgY29udGV4dHMgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgU2FmYXJpLlxuICovXG5cbmgxIHtcbiAgZm9udC1zaXplOiAyZW07XG4gIG1hcmdpbjogMC42N2VtIDA7XG59XG5cbi8qIEdyb3VwaW5nIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cbiAqIDIuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UgYW5kIElFLlxuICovXG5cbmhyIHtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7IC8qIDEgKi9cbiAgaGVpZ2h0OiAwOyAvKiAxICovXG4gIG92ZXJmbG93OiB2aXNpYmxlOyAvKiAyICovXG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5wcmUge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IC8qIDEgKi9cbiAgZm9udC1zaXplOiAxZW07IC8qIDIgKi9cbn1cblxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgb24gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxuICovXG5cbmEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLyoqXG4gKiAxLiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgaW4gQ2hyb21lIDU3LVxuICogMi4gQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaS5cbiAqL1xuXG5hYmJyW3RpdGxlXSB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7IC8qIDEgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC8qIDIgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkOyAvKiAyICovXG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgd2VpZ2h0IGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cbiAqL1xuXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbmNvZGUsXG5rYmQsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvKiAxICovXG4gIGZvbnQtc2l6ZTogMWVtOyAvKiAyICovXG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc21hbGwge1xuICBmb250LXNpemU6IDgwJTtcbn1cblxuLyoqXG4gKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW5cbiAqIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zdWIsXG5zdXAge1xuICBmb250LXNpemU6IDc1JTtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG5zdWIge1xuICBib3R0b206IC0wLjI1ZW07XG59XG5cbnN1cCB7XG4gIHRvcDogLTAuNWVtO1xufVxuXG4vKiBFbWJlZGRlZCBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSB0aGUgYm9yZGVyIG9uIGltYWdlcyBpbnNpZGUgbGlua3MgaW4gSUUgMTAuXG4gKi9cblxuaW1nIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xufVxuXG4vKiBGb3Jtc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBDaGFuZ2UgdGhlIGZvbnQgc3R5bGVzIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIFJlbW92ZSB0aGUgbWFyZ2luIGluIEZpcmVmb3ggYW5kIFNhZmFyaS5cbiAqL1xuXG5idXR0b24sXG5pbnB1dCxcbm9wdGdyb3VwLFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICBmb250LWZhbWlseTogaW5oZXJpdDsgLyogMSAqL1xuICBmb250LXNpemU6IDEwMCU7IC8qIDEgKi9cbiAgbGluZS1oZWlnaHQ6IDEuMTU7IC8qIDEgKi9cbiAgbWFyZ2luOiAwOyAvKiAyICovXG59XG5cbi8qKlxuICogU2hvdyB0aGUgb3ZlcmZsb3cgaW4gSUUuXG4gKiAxLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlLlxuICovXG5cbmJ1dHRvbixcbmlucHV0IHsgLyogMSAqL1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEVkZ2UsIEZpcmVmb3gsIGFuZCBJRS5cbiAqIDEuIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRmlyZWZveC5cbiAqL1xuXG5idXR0b24sXG5zZWxlY3QgeyAvKiAxICovXG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG4gKi9cblxuYnV0dG9uLFxuW3R5cGU9XCJidXR0b25cIl0sXG5bdHlwZT1cInJlc2V0XCJdLFxuW3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBpbiBGaXJlZm94LlxuICovXG5cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwiYnV0dG9uXCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJyZXNldFwiXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwic3VibWl0XCJdOjotbW96LWZvY3VzLWlubmVyIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xuICBwYWRkaW5nOiAwO1xufVxuXG4vKipcbiAqIFJlc3RvcmUgdGhlIGZvY3VzIHN0eWxlcyB1bnNldCBieSB0aGUgcHJldmlvdXMgcnVsZS5cbiAqL1xuXG5idXR0b246LW1vei1mb2N1c3JpbmcsXG5bdHlwZT1cImJ1dHRvblwiXTotbW96LWZvY3VzcmluZyxcblt0eXBlPVwicmVzZXRcIl06LW1vei1mb2N1c3JpbmcsXG5bdHlwZT1cInN1Ym1pdFwiXTotbW96LWZvY3VzcmluZyB7XG4gIG91dGxpbmU6IDFweCBkb3R0ZWQgQnV0dG9uVGV4dDtcbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBwYWRkaW5nIGluIEZpcmVmb3guXG4gKi9cblxuZmllbGRzZXQge1xuICBwYWRkaW5nOiAwLjM1ZW0gMC43NWVtIDAuNjI1ZW07XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cbiAqIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cbiAqIDMuIFJlbW92ZSB0aGUgcGFkZGluZyBzbyBkZXZlbG9wZXJzIGFyZSBub3QgY2F1Z2h0IG91dCB3aGVuIHRoZXkgemVybyBvdXRcbiAqICAgIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbmxlZ2VuZCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgY29sb3I6IGluaGVyaXQ7IC8qIDIgKi9cbiAgZGlzcGxheTogdGFibGU7IC8qIDEgKi9cbiAgbWF4LXdpZHRoOiAxMDAlOyAvKiAxICovXG4gIHBhZGRpbmc6IDA7IC8qIDMgKi9cbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDsgLyogMSAqL1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG4gKi9cblxucHJvZ3Jlc3Mge1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRSAxMCsuXG4gKi9cblxudGV4dGFyZWEge1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuLyoqXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBJRSAxMC5cbiAqIDIuIFJlbW92ZSB0aGUgcGFkZGluZyBpbiBJRSAxMC5cbiAqL1xuXG5bdHlwZT1cImNoZWNrYm94XCJdLFxuW3R5cGU9XCJyYWRpb1wiXSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgcGFkZGluZzogMDsgLyogMiAqL1xufVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZS5cbiAqL1xuXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIG9kZCBhcHBlYXJhbmNlIGluIENocm9tZSBhbmQgU2FmYXJpLlxuICogMi4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXG4gKi9cblxuW3R5cGU9XCJzZWFyY2hcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLyogMSAqL1xuICBvdXRsaW5lLW9mZnNldDogLTJweDsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgaW5uZXIgcGFkZGluZyBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBtYWNPUy5cbiAqL1xuXG5bdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICogMi4gQ2hhbmdlIGZvbnQgcHJvcGVydGllcyB0byBgaW5oZXJpdGAgaW4gU2FmYXJpLlxuICovXG5cbjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMSAqL1xuICBmb250OiBpbmhlcml0OyAvKiAyICovXG59XG5cbi8qIEludGVyYWN0aXZlXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gRWRnZSwgSUUgMTArLCBhbmQgRmlyZWZveC5cbiAqL1xuXG5kZXRhaWxzIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc3VtbWFyeSB7XG4gIGRpc3BsYXk6IGxpc3QtaXRlbTtcbn1cblxuLyogTWlzY1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAxMCsuXG4gKi9cblxudGVtcGxhdGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwLlxuICovXG5cbltoaWRkZW5dIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbiIsIi8qKlxuICogUmVzZXQuXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuLyoqXG4gKiBBIHZlcnkgc2ltcGxlIHJlc2V0IHRoYXQgc2l0cyBvbiB0b3Agb2YgTm9ybWFsaXplLmNzcy5cbiAqL1xuXG5ib2R5LFxuaDEsXG5oMixcbmgzLFxuaDQsXG5oNSxcbmg2LFxuYmxvY2txdW90ZSxcbnAsXG5wcmUsXG5kbCxcbmRkLFxub2wsXG51bCxcbmZpZ3VyZSxcbmhyLFxuZmllbGRzZXQsXG5sZWdlbmQge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG4vKipcbiAqIFJlbW92ZSB0cmFpbGluZyBtYXJnaW5zIGZyb20gbmVzdGVkIGxpc3RzLlxuICovXG5cbmxpID4ge1xuICAgIG9sLFxuICAgIHVsIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG59XG5cbi8qKlxuICogUmVtb3ZlIGRlZmF1bHQgdGFibGUgc3BhY2luZy5cbiAqL1xuXG50YWJsZSB7XG4gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgICBib3JkZXItc3BhY2luZzogMDtcbn1cblxuLyoqXG4gKiAxLiBSZXNldCBDaHJvbWUgYW5kIEZpcmVmb3ggYmVoYXZpb3VyIHdoaWNoIHNldHMgYSBgbWluLXdpZHRoOiBtaW4tY29udGVudDtgXG4gKiAgICBvbiBmaWVsZHNldHMuXG4gKi9cblxuZmllbGRzZXQge1xuICAgIG1pbi13aWR0aDogMDsgLyogWzFdICovXG4gICAgYm9yZGVyOiAwO1xufVxuXG4vKipcbiAqIE1vcmUgc2Vuc2libGUgZGVmYXVsdCBib3gtc2l6aW5nLlxuICogQHNlZSBjc3MtdHJpY2tzLmNvbS9pbmhlcml0aW5nLWJveC1zaXppbmctcHJvYmFibHktc2xpZ2h0bHktYmV0dGVyLWJlc3QtcHJhY3RpY2VcbiAqL1xuXG5odG1sIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4qIHtcbiAgICAmLFxuICAgICY6YmVmb3JlLFxuICAgICY6YWZ0ZXIge1xuICAgICAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICAgIH1cbn1cblxuLyoqXG4gKiBSZXNldCBidXR0b24gc3R5bGVzXG4gKi9cblxuYnV0dG9uLFxuW3R5cGU9J2J1dHRvbiddLFxuW3R5cGU9J3Jlc2V0J10sXG5bdHlwZT0nc3VibWl0J10ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgYm9yZGVyOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGZvbnQ6IGluaGVyaXQ7XG59XG4iLCIvKipcbiAqIFByaW50LlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbi8qKlxuICogVmVyeSBjcnVkZSwgcmVzZXQtbGlrZSBzdHlsZXMgdGFrZW4gZnJvbSB0aGUgSFRNTDUgQm9pbGVycGxhdGU6XG4gKiBodHRwczovL2dpdGh1Yi5jb20vaDVicC9odG1sNS1ib2lsZXJwbGF0ZS9ibG9iLzUuMy4wL2Rpc3QvZG9jL2Nzcy5tZCNwcmludC1zdHlsZXNcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9oNWJwL2h0bWw1LWJvaWxlcnBsYXRlL2Jsb2IvbWFzdGVyL2Rpc3QvY3NzL21haW4uY3NzI0wyMDUtTDI4MlxuICovXG5cbkBtZWRpYSBwcmludCB7XG4gICAgLyoqXG4gICAgICogMS4gQmxhY2sgcHJpbnRzIGZhc3RlcjogaHR0cDovL3d3dy5zYW5iZWlqaS5jb20vYXJjaGl2ZXMvOTUzXG4gICAgICoqL1xuXG4gICAgKixcbiAgICAqOmJlZm9yZSxcbiAgICAqOmFmdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgICAgY29sb3I6ICMwMDAgIWltcG9ydGFudDsgLyogWzFdICovXG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBhLFxuICAgIGE6dmlzaXRlZCB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cblxuICAgIGFbaHJlZl06YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnICgnIGF0dHIoaHJlZikgJyknO1xuICAgIH1cblxuICAgIGFiYnJbdGl0bGVdOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyAoJyBhdHRyKHRpdGxlKSAnKSc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAqIERvbuKAmXQgc2hvdyBsaW5rcyB0aGF0IGFyZSBmcmFnbWVudCBpZGVudGlmaWVycywgb3IgdXNlIHRoZSBgamF2YXNjcmlwdDpgXG4gICAqIHBzZXVkbyBwcm90b2NvbC5cbiAgICovXG5cbiAgICBhW2hyZWZePScjJ106YWZ0ZXIsXG4gICAgYVtocmVmXj0namF2YXNjcmlwdDonXTphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgIH1cblxuICAgIHByZSxcbiAgICBibG9ja3F1b3RlIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTtcbiAgICAgICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuICAgIH1cblxuICAgIC8qKlxuICAgKiBQcmludGluZyBUYWJsZXM6IGh0dHA6Ly9jc3MtZGlzY3Vzcy5pbmN1dGlvLmNvbS93aWtpL1ByaW50aW5nX1RhYmxlc1xuICAgKi9cblxuICAgIHRoZWFkIHtcbiAgICAgICAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwO1xuICAgIH1cblxuICAgIHRyLFxuICAgIGltZyB7XG4gICAgICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICB9XG5cbiAgICBpbWcge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBwLFxuICAgIGgyLFxuICAgIGgzIHtcbiAgICAgICAgb3JwaGFuczogMztcbiAgICAgICAgd2lkb3dzOiAzO1xuICAgIH1cblxuICAgIGgyLFxuICAgIGgzIHtcbiAgICAgICAgcGFnZS1icmVhay1hZnRlcjogYXZvaWQ7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBTY3JlZW4gUmVhZGVyIFRleHRcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG4uc2NyZWVuLXJlYWRlci10ZXh0IHtcbiAgICBAaW5jbHVkZSBlbGVtZW50LWludmlzaWJsZTtcbn1cbiIsIi8qKlxuICogQW5pbWF0aW9ucy5cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5Aa2V5ZnJhbWVzIGZhZGUtaW4ge1xuICAgIDAlIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGUtZG93biB7XG4gICAgMCUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTMwcHgpO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIGJsaW5rIHtcbiAgICAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuXG4gICAgNTAlIHtcbiAgICAgICAgb3BhY2l0eTogLjY7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxufVxuXG5bZGF0YS1hbmltYXRpb25dIHtcbiAgICBvcGFjaXR5OiAwO1xuXG4gICAgJltkYXRhLWFuaW1hdGlvbi1hcHBlYXJpbmddIHtcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGZhZGUtaW47XG4gICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogJGR1cmF0aW9uO1xuICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiAkZWFzaW5nO1xuICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcblxuICAgICAgICAmW2RhdGEtYW5pbWF0aW9uPSdzbGlkZS1kb3duJ10ge1xuICAgICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlLWRvd247XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIDQwIHtcbiAgICAgICAgW2RhdGEtYW5pbWF0aW9uXVtkYXRhLWFuaW1hdGlvbi1kZWxheT0nI3skaSAqIDEwMH0nXVtkYXRhLWFuaW1hdGlvbi1kZWxheT0nI3skaSAqIDEwMH0nXSB7XG4gICAgICAgICAgICBhbmltYXRpb24tZGVsYXk6ICN7JGkgLyAxMH1zO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAgIFtkYXRhLWFuaW1hdGlvbl0ge1xuICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDAuMDAxcyAhaW1wb3J0YW50O1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuMDAxcyAhaW1wb3J0YW50O1xuICAgIH1cbn1cbiIsIi8qKlxuICogQ3VzdG9tIGZvbnRzXG4gKlxuICogRm9udHMgdXNlZCBieSBJbmRlYnV1cnRcbiAqIE1vbnRzZXJyYXQgLSBGb3IgdGl0bGVzXG4gKiBGb250IHdlaWdodHM6IEJvbGRcbiAqIExpbms6IGh0dHBzOi8vZm9udHMuZ29vZ2xlLmNvbS9zcGVjaW1lbi9Nb250c2VycmF0XG4gKlxuICogT3BlbiBTYW5zIC0gRm9yIGJvZHkgdGV4dHNcbiAqIEZvbnQgd2VpZ2h0czogcmVndWxhciwgcmVndWxhciBpdGFsaWMsIGJvbGQsIGJvbGQgaXRhbGljXG4gKiBMaW5rOiBodHRwczovL2ZvbnRzLmdvb2dsZS5jb20vc3BlY2ltZW4vT3BlbitTYW5zXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JztcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBmb250LWRpc3BsYXk6IHN3YXA7XG4gICAgc3JjOiBsb2NhbCgnTW9udHNlcnJhdCBCb2xkJyksIGxvY2FsKCdNb250c2VycmF0LUJvbGQnKSxcbiAgICAgICAgICAgIHVybCgnYXNzZXRzL2ZvbnRzL21vbnRzZXJyYXQtYm9sZC53b2ZmMicpIGZvcm1hdCgnd29mZjInKSxcbiAgICAgICAgICAgIHVybCgnYXNzZXRzL2ZvbnRzL21vbnRzZXJyYXQtYm9sZC53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG59XG5cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICAgIHNyYzogbG9jYWwoJ01vbnRzZXJyYXQgTWVkaXVtJyksIGxvY2FsKCdNb250c2VycmF0LU1lZGl1bScpLFxuICAgICAgICAgICAgdXJsKCdhc3NldHMvZm9udHMvbW9udHNlcnJhdC1tZWRpdW0ud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksXG4gICAgICAgICAgICB1cmwoJ2Fzc2V0cy9mb250cy9tb250c2VycmF0LW1lZGl1bS53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG59XG5cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJztcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBmb250LWRpc3BsYXk6IHN3YXA7XG4gICAgc3JjOiBsb2NhbCgnT3BlbiBTYW5zIFJlZ3VsYXInKSwgbG9jYWwoJ09wZW5TYW5zLVJlZ3VsYXInKSxcbiAgICAgICAgICAgIHVybCgnYXNzZXRzL2ZvbnRzL29wZW4tc2Fucy1yZWd1bGFyLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLFxuICAgICAgICAgICAgdXJsKCdhc3NldHMvZm9udHMvb3Blbi1zYW5zLXJlZ3VsYXIud29mZicpIGZvcm1hdCgnd29mZicpO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICAgIHNyYzogbG9jYWwoJ09wZW4gU2FucyBJdGFsaWMnKSwgbG9jYWwoJ09wZW5TYW5zLUl0YWxpYycpLFxuICAgICAgICAgICAgdXJsKCdhc3NldHMvZm9udHMvb3Blbi1zYW5zLXJlZ3VsYXItaXRhbGljLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLFxuICAgICAgICAgICAgdXJsKCdhc3NldHMvZm9udHMvb3Blbi1zYW5zLXJlZ3VsYXItaXRhbGljLndvZmYnKSBmb3JtYXQoJ3dvZmYnKTtcbn1cblxuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbiAgICBzcmM6IGxvY2FsKCdPcGVuIFNhbnMgQm9sZCcpLCBsb2NhbCgnT3BlblNhbnMtQm9sZCcpLFxuICAgICAgICAgICAgdXJsKCdhc3NldHMvZm9udHMvb3Blbi1zYW5zLWJvbGQud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksXG4gICAgICAgICAgICB1cmwoJ2Fzc2V0cy9mb250cy9vcGVuLXNhbnMtYm9sZC53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG59XG5cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJztcbiAgICBmb250LXN0eWxlOiBJdGFsaWM7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBmb250LWRpc3BsYXk6IHN3YXA7XG4gICAgc3JjOiBsb2NhbCgnT3BlbiBTYW5zIEJvbGQgSXRhbGljJyksIGxvY2FsKCdPcGVuU2Fucy1Cb2xkSXRhbGljJyksXG4gICAgICAgICAgICB1cmwoJ2Fzc2V0cy9mb250cy9vcGVuLXNhbnMtYm9sZC1pdGFsaWMud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksXG4gICAgICAgICAgICB1cmwoJ2Fzc2V0cy9mb250cy9vcGVuLXNhbnMtYm9sZC1pdGFsaWMud29mZicpIGZvcm1hdCgnd29mZicpO1xufVxuIiwiLyoqXG4gKiBXb3JkUHJlc3Mtc3BlY2lmaWMgc3R5bGVzLlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbi5hbGlnbm5vbmUge1xuICAgIG1hcmdpbjogNXB4IDIwcHggMjBweCAwO1xufVxuXG4uYWxpZ25jZW50ZXIsXG5kaXYuYWxpZ25jZW50ZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbjogNXB4IGF1dG8gNXB4IGF1dG87XG59XG5cbi5hbGlnbnJpZ2h0IHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgbWFyZ2luOiA1cHggMCAyMHB4IDIwcHg7XG59XG5cbi5hbGlnbmxlZnQge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbjogNXB4IDIwcHggMjBweCAwO1xufVxuXG5hIGltZy5hbGlnbnJpZ2h0IHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgbWFyZ2luOiA1cHggMCAyMHB4IDIwcHg7XG59XG5cbmEgaW1nLmFsaWdubm9uZSB7XG4gICAgbWFyZ2luOiA1cHggMjBweCAyMHB4IDA7XG59XG5cbmEgaW1nLmFsaWdubGVmdCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luOiA1cHggMjBweCAyMHB4IDA7XG59XG5cbmEgaW1nLmFsaWduY2VudGVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG59XG5cbi53cC1jYXB0aW9uIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNmMGYwZjA7XG4gICAgbWF4LXdpZHRoOiA5NiU7XG4gICAgLyogSW1hZ2UgZG9lcyBub3Qgb3ZlcmZsb3cgdGhlIGNvbnRlbnQgYXJlYSAqL1xuICAgIHBhZGRpbmc6IDVweCAzcHggMTBweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi53cC1jYXB0aW9uLmFsaWdubm9uZSB7XG4gICAgbWFyZ2luOiA1cHggMjBweCAyMHB4IDA7XG59XG5cbi53cC1jYXB0aW9uLmFsaWdubGVmdCB7XG4gICAgbWFyZ2luOiA1cHggMjBweCAyMHB4IDA7XG59XG5cbi53cC1jYXB0aW9uLmFsaWducmlnaHQge1xuICAgIG1hcmdpbjogNXB4IDAgMjBweCAyMHB4O1xufVxuXG4ud3AtY2FwdGlvbiBpbWcge1xuICAgIGJvcmRlcjogMCBub25lO1xuICAgIGhlaWdodDogYXV0bztcbiAgICBtYXJnaW46IDA7XG4gICAgbWF4LXdpZHRoOiA5OC41JTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiBhdXRvO1xufVxuXG4ud3AtY2FwdGlvbiBwLndwLWNhcHRpb24tdGV4dCB7XG4gICAgZm9udC1zaXplOiAxMXB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxN3B4O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwIDRweCA1cHg7XG59XG5cbi5nYWxsZXJ5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogY2FsYygxLjUgKiAxcmVtKTtcbn1cblxuLmdhbGxlcnktaXRlbSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbi1yaWdodDogMTZweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4uZ2FsbGVyeS1jb2x1bW5zLTIgLmdhbGxlcnktaXRlbSB7XG4gICAgbWF4LXdpZHRoOiBjYWxjKCgxMDAlIC0gMTZweCAqIDEpIC8gMik7XG59XG5cbi5nYWxsZXJ5LWNvbHVtbnMtMiAuZ2FsbGVyeS1pdGVtOm50aC1vZi10eXBlKDJuICsgMikge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbn1cblxuLmdhbGxlcnktY29sdW1ucy0zIC5nYWxsZXJ5LWl0ZW0ge1xuICAgIG1heC13aWR0aDogY2FsYygoMTAwJSAtIDE2cHggKiAyKSAvIDMpO1xufVxuXG4uZ2FsbGVyeS1jb2x1bW5zLTMgLmdhbGxlcnktaXRlbTpudGgtb2YtdHlwZSgzbiArIDMpIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG59XG5cbi5nYWxsZXJ5LWNvbHVtbnMtNCAuZ2FsbGVyeS1pdGVtIHtcbiAgICBtYXgtd2lkdGg6IGNhbGMoKDEwMCUgLSAxNnB4ICogMykgLyA0KTtcbn1cblxuLmdhbGxlcnktY29sdW1ucy00IC5nYWxsZXJ5LWl0ZW06bnRoLW9mLXR5cGUoNG4gKyA0KSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xufVxuXG4uZ2FsbGVyeS1jb2x1bW5zLTUgLmdhbGxlcnktaXRlbSB7XG4gICAgbWF4LXdpZHRoOiBjYWxjKCgxMDAlIC0gMTZweCAqIDQpIC8gNSk7XG59XG5cbi5nYWxsZXJ5LWNvbHVtbnMtNSAuZ2FsbGVyeS1pdGVtOm50aC1vZi10eXBlKDVuICsgNSkge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbn1cblxuLmdhbGxlcnktY29sdW1ucy02IC5nYWxsZXJ5LWl0ZW0ge1xuICAgIG1heC13aWR0aDogY2FsYygoMTAwJSAtIDE2cHggKiA1KSAvIDYpO1xufVxuXG4uZ2FsbGVyeS1jb2x1bW5zLTYgLmdhbGxlcnktaXRlbTpudGgtb2YtdHlwZSg2biArIDYpIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG59XG5cbi5nYWxsZXJ5LWNvbHVtbnMtNyAuZ2FsbGVyeS1pdGVtIHtcbiAgICBtYXgtd2lkdGg6IGNhbGMoKDEwMCUgLSAxNnB4ICogNikgLyA3KTtcbn1cblxuLmdhbGxlcnktY29sdW1ucy03IC5nYWxsZXJ5LWl0ZW06bnRoLW9mLXR5cGUoN24gKyA3KSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xufVxuXG4uZ2FsbGVyeS1jb2x1bW5zLTggLmdhbGxlcnktaXRlbSB7XG4gICAgbWF4LXdpZHRoOiBjYWxjKCgxMDAlIC0gMTZweCAqIDcpIC8gOCk7XG59XG5cbi5nYWxsZXJ5LWNvbHVtbnMtOCAuZ2FsbGVyeS1pdGVtOm50aC1vZi10eXBlKDhuICsgOCkge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbn1cblxuLmdhbGxlcnktY29sdW1ucy05IC5nYWxsZXJ5LWl0ZW0ge1xuICAgIG1heC13aWR0aDogY2FsYygoMTAwJSAtIDE2cHggKiA4KSAvIDkpO1xufVxuXG4uZ2FsbGVyeS1jb2x1bW5zLTkgLmdhbGxlcnktaXRlbTpudGgtb2YtdHlwZSg5biArIDkpIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG59XG5cbi5nYWxsZXJ5LWl0ZW06bGFzdC1vZi10eXBlIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xufVxuXG4uZ2FsbGVyeS1jYXB0aW9uIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAwLjVyZW07XG59XG5cbi5nYWxsZXJ5LWl0ZW0gPiBkaXYgPiBhIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjAwcHgpIHtcbiAgICAjd3BhZG1pbmJhciB7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB9XG59XG4iLCIvKipcbiAqIEdsb2JhbCBzdHlsZXMgYW5kIGVsZW1lbnRzIHVzZWQgdGhyb3VnaG91dCB0aGUgc2l0ZS5cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG46Oi1tb3otc2VsZWN0aW9uIHtcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItcHJpbWFyeTtcbiAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xufVxuXG46OnNlbGVjdGlvbiB7XG4gICAgYmFja2dyb3VuZDogJGNvbG9yLXByaW1hcnk7XG4gICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbn1cblxuaHRtbCB7XG4gICAgQGlmICgkZWRpdG9yID09IGZhbHNlKSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsOyAvLyBUaGlzIHdvdWxkIGJyZWFrIEd1dGVuYmVyZyBibG9jayB0b29sYmFyIHBvc2l0aW9uaW5nIGluIGFkbWluXG5cbiAgICAgICAgJi5zY3JvbGwtZGlzYWJsZWQge1xuICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5hIHtcbiAgICB0cmFuc2l0aW9uOiBhbGwgJHRyYW5zaXRpb247XG59XG5cbnAge1xuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG5mb3JtIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4udmlkZW8tY29udGFpbmVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzoge1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGJvdHRvbTogNTYuMjUlO1xuICAgIH1cbiAgICBoZWlnaHQ6IDA7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICR0cmFuc2l0aW9uO1xuXG4gICAgaWZyYW1lIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICB9XG5cbiAgICAmLmFjdGl2ZSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxufVxuXG5idXR0b24ge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuXG4ubXljaGFubmVscyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDE7XG59XG5cbi5sb2NhbGZvY3VzdmlzdWFsLFxuW3NyYyo9J2xvY2FsZm9jdXN3aWRnZXRzLm5ldCdde1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogcmVtLWNhbGMoNTUwcHgpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYm9yZGVyOiAwO1xufVxuXG4uZW50cnlfX2NvbnRlbnQgaWZyYW1lOm5vdChbc3JjKj0neW91dHViZS5jb20nXSk6bm90KFtzcmMqPSd2aW1lby5jb20nXSkge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlcjogMDtcbiAgICBtaW4taGVpZ2h0OiByZW0tY2FsYygzMDBweCk7XG59XG5cbi5jb2xvci1wcmltYXJ5IHtcbiAgICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XG59XG4iLCIvKipcbiAqIFR5cG9ncmFwaHlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5ib2R5IHtcbiAgICBmb250LWZhbWlseTogJGJvZHktZm9udC1mYW1pbHk7XG4gICAgZm9udC1zaXplOiAkZ2xvYmFsLWZvbnQtc2l6ZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xufVxuXG5cbmgxLCAuaDEsXG5oMiwgLmgyLFxuaDMsIC5oMyxcbmg0LCAuaDQsXG5oNSwgLmg1LFxuaDYsIC5oNiB7XG4gICAgQGV4dGVuZCAlZm9udC13ZWlnaHQtYm9sZDtcbiAgICBmb250LWZhbWlseTogJGhlYWRpbmctZm9udC1mYW1pbHk7XG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xufVxuXG5oMSxcbi5oMSB7XG4gICAgQGluY2x1ZGUgaDE7XG59XG5cbmgyLFxuLmgyIHtcbiAgICBAaW5jbHVkZSBoMjtcbn1cblxuaDMsXG4uaDMge1xuICAgIEBpbmNsdWRlIGgzO1xufVxuXG5oNCxcbi5oNCB7XG4gICAgQGluY2x1ZGUgaDQ7XG59XG5cbmg1LFxuLmg1IHtcbiAgICBAaW5jbHVkZSBoNTtcbn1cblxuaDYsXG4uaDYge1xuICAgIEBpbmNsdWRlIGg2O1xufVxuXG5wIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG59XG5cbnVsLFxub2wge1xuICAgIG1hcmdpbjogMCAwIDFyZW0gMXJlbTtcbn1cblxuYmxvY2txdW90ZSB7XG4gICAgcCB7XG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICfigJwnO1xuICAgICAgICB9XG5cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiAn4oCdJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNpdGUge1xuICAgICAgICBjb2xvcjogJGNvbG9yLWRhcmstZ3JheTtcbiAgICB9XG59XG4iLCIvKipcbiAqIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4gKiBWZXJzaW9uIDYuNy4xXG4gKiBodHRwczovL2dldC5mb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcbiAqL1xuXG4vLyAtLS0gRGVwZW5kZW5jaWVzIC0tLVxuQGltcG9ydCAndmVuZG9yL25vcm1hbGl6ZSc7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2hlbHBlcnMvbWlzc2luZy1kZXBlbmRlbmNpZXMnO1xuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL3RydWUnO1xuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvY29udGFpbic7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9wdXJnZSc7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9yZW1vdmUnO1xuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvcmVwbGFjZSc7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy90by1saXN0JztcblxuLy8gLS0tIFNldHRpbmdzIC0tLVxuLy8gaW1wb3J0IHlvdXIgb3duIGBzZXR0aW5nc2AgaGVyZSBvclxuLy8gaW1wb3J0IGFuZCBtb2RpZnkgdGhlIGRlZmF1bHQgc2V0dGluZ3MgdGhyb3VnaFxuLy8gQGltcG9ydCAnc2V0dGluZ3Mvc2V0dGluZ3MnO1xuXG4vLyAtLS0gQ29tcG9uZW50cyAtLS1cbi8vIFV0aWxpdGllc1xuQGltcG9ydCAndXRpbC91dGlsJztcbi8vIEdsb2JhbCBzdHlsZXNcbkBpbXBvcnQgJ2dsb2JhbCc7XG5AaW1wb3J0ICdmb3Jtcy9mb3Jtcyc7XG5AaW1wb3J0ICd0eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuXG4vLyBHcmlkc1xuQGltcG9ydCAnZ3JpZC9ncmlkJztcbkBpbXBvcnQgJ3h5LWdyaWQveHktZ3JpZCc7XG4vLyBHZW5lcmljIGNvbXBvbmVudHNcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYnV0dG9uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYnV0dG9uLWdyb3VwJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvY2xvc2UtYnV0dG9uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbGFiZWwnO1xuQGltcG9ydCAnY29tcG9uZW50cy9wcm9ncmVzcy1iYXInO1xuQGltcG9ydCAnY29tcG9uZW50cy9zbGlkZXInO1xuQGltcG9ydCAnY29tcG9uZW50cy9zd2l0Y2gnO1xuQGltcG9ydCAnY29tcG9uZW50cy90YWJsZSc7XG4vLyBCYXNpYyBjb21wb25lbnRzXG5AaW1wb3J0ICdjb21wb25lbnRzL2JhZGdlJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYnJlYWRjcnVtYnMnO1xuQGltcG9ydCAnY29tcG9uZW50cy9jYWxsb3V0JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvY2FyZCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2Ryb3Bkb3duJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcGFnaW5hdGlvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3Rvb2x0aXAnO1xuXG4vLyBDb250YWluZXJzXG5AaW1wb3J0ICdjb21wb25lbnRzL2FjY29yZGlvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL21lZGlhLW9iamVjdCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL29yYml0JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcmVzcG9uc2l2ZS1lbWJlZCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RhYnMnO1xuQGltcG9ydCAnY29tcG9uZW50cy90aHVtYm5haWwnO1xuLy8gTWVudS1iYXNlZCBjb250YWluZXJzXG5AaW1wb3J0ICdjb21wb25lbnRzL21lbnUnO1xuQGltcG9ydCAnY29tcG9uZW50cy9tZW51LWljb24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9hY2NvcmRpb24tbWVudSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2RyaWxsZG93bic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2Ryb3Bkb3duLW1lbnUnO1xuXG4vLyBMYXlvdXQgY29tcG9uZW50c1xuQGltcG9ydCAnY29tcG9uZW50cy9vZmYtY2FudmFzJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcmV2ZWFsJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvc3RpY2t5JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdGl0bGUtYmFyJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdG9wLWJhcic7XG5cbi8vIEhlbHBlcnNcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZmxvYXQnO1xuQGltcG9ydCAnY29tcG9uZW50cy9mbGV4JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdmlzaWJpbGl0eSc7XG5AaW1wb3J0ICdwcm90b3R5cGUvcHJvdG90eXBlJztcblxuXG5AbWl4aW4gZm91bmRhdGlvbi1ldmVyeXRoaW5nKFxuICAkZmxleDogdHJ1ZSxcbiAgJHByb3RvdHlwZTogZmFsc2UsXG4gICR4eS1ncmlkOiAkeHktZ3JpZFxuKSB7XG4gIEBpZiAkZmxleCB7XG4gICAgJGdsb2JhbC1mbGV4Ym94OiB0cnVlICFnbG9iYWw7XG4gIH1cblxuICBAaWYgJHh5LWdyaWQge1xuICAgICR4eS1ncmlkOiB0cnVlICFnbG9iYWw7XG4gIH1cblxuICAvLyBHbG9iYWwgc3R5bGVzXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZ2xvYmFsLXN0eWxlcztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtcztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10eXBvZ3JhcGh5O1xuXG4gIC8vIEdyaWRzXG4gIEBpZiBub3QgJGZsZXgge1xuICAgIEBpbmNsdWRlIGZvdW5kYXRpb24tZ3JpZDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICR4eS1ncmlkIHtcbiAgICAgIEBpbmNsdWRlIGZvdW5kYXRpb24teHktZ3JpZC1jbGFzc2VzO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZsZXgtZ3JpZDtcbiAgICB9XG4gIH1cblxuICAvLyBHZW5lcmljIGNvbXBvbmVudHNcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1idXR0b247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYnV0dG9uLWdyb3VwO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWNsb3NlLWJ1dHRvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1sYWJlbDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm9ncmVzcy1iYXI7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tc2xpZGVyO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXN3aXRjaDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10YWJsZTtcbiAgLy8gQmFzaWMgY29tcG9uZW50c1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWJhZGdlO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWJyZWFkY3J1bWJzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWNhbGxvdXQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tY2FyZDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1kcm9wZG93bjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wYWdpbmF0aW9uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRvb2x0aXA7XG5cbiAgLy8gQ29udGFpbmVyc1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWFjY29yZGlvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1tZWRpYS1vYmplY3Q7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tb3JiaXQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcmVzcG9uc2l2ZS1lbWJlZDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10YWJzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRodW1ibmFpbDtcbiAgLy8gTWVudS1iYXNlZCBjb250YWluZXJzXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tbWVudTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1tZW51LWljb247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYWNjb3JkaW9uLW1lbnU7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZHJpbGxkb3duLW1lbnU7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZHJvcGRvd24tbWVudTtcblxuICAvLyBMYXlvdXQgY29tcG9uZW50c1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW9mZi1jYW52YXM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcmV2ZWFsO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXN0aWNreTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10aXRsZS1iYXI7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdG9wLWJhcjtcblxuICAvLyBIZWxwZXJzXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZmxvYXQtY2xhc3NlcztcbiAgQGlmICRmbGV4IHsgQGluY2x1ZGUgZm91bmRhdGlvbi1mbGV4LWNsYXNzZXM7IH1cbiAgQGluY2x1ZGUgZm91bmRhdGlvbi12aXNpYmlsaXR5LWNsYXNzZXM7XG4gIEBpZiAkcHJvdG90eXBlIHsgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtY2xhc3NlczsgfVxufVxuIiwiQG1peGluIGZvdW5kYXRpb24tbm9ybWFsaXplKCkge1xuICAvKiEgbm9ybWFsaXplLmNzcyB2OC4wLjAgfCBNSVQgTGljZW5zZSB8IGdpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzICovXG5cbiAgLy8gRG9jdW1lbnRcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvLyAxLiBDb3JyZWN0IHRoZSBsaW5lIGhlaWdodCBpbiBhbGwgYnJvd3NlcnMuXG4gIC8vIDIuIFByZXZlbnQgYWRqdXN0bWVudHMgb2YgZm9udCBzaXplIGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZXMgaW4gaU9TLlxuXG4gIGh0bWwge1xuICAgIGxpbmUtaGVpZ2h0OiAxLjE1OyAvLyAxXG4gICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvLyAyXG4gIH1cblxuICAvLyBTZWN0aW9uc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8vIFJlbW92ZSB0aGUgbWFyZ2luIGluIGFsbCBicm93c2Vycy5cblxuICBib2R5IHtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICAvLyBDb3JyZWN0IHRoZSBmb250IHNpemUgYW5kIG1hcmdpbiBvbiBgaDFgIGVsZW1lbnRzIHdpdGhpbiBgc2VjdGlvbmAgYW5kXG4gIC8vIGBhcnRpY2xlYCBjb250ZXh0cyBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBTYWZhcmkuXG5cbiAgaDEge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xuICAgIG1hcmdpbjogMC42N2VtIDA7XG4gIH1cblxuICAvLyBHcm91cGluZyBjb250ZW50XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLy8gMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cbiAgLy8gMi4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZSBhbmQgSUUuXG5cbiAgaHIge1xuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvLyAxXG4gICAgaGVpZ2h0OiAwOyAvLyAxXG4gICAgb3ZlcmZsb3c6IHZpc2libGU7IC8vIDJcbiAgfVxuXG4gIC8vIDEuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIGFuZCBzY2FsaW5nIG9mIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gIC8vIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cblxuICBwcmUge1xuICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTsgLy8gMVxuICAgIGZvbnQtc2l6ZTogMWVtOyAvLyAyXG4gIH1cblxuICAvLyBUZXh0LWxldmVsIHNlbWFudGljc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8vIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIG9uIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cblxuICBhIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuXG4gIC8vIDEuIFJlbW92ZSB0aGUgYm90dG9tIGJvcmRlciBpbiBDaHJvbWUgNTctXG4gIC8vIDIuIEFkZCB0aGUgY29ycmVjdCB0ZXh0IGRlY29yYXRpb24gaW4gQ2hyb21lLCBFZGdlLCBJRSwgT3BlcmEsIGFuZCBTYWZhcmkuXG5cbiAgYWJiclt0aXRsZV0ge1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7IC8vIDFcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgLy8gMlxuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsgLy8gMlxuICB9XG5cbiAgLy8gQWRkIHRoZSBjb3JyZWN0IGZvbnQgd2VpZ2h0IGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cblxuICBiLFxuICBzdHJvbmcge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG4gIH1cblxuICAvLyAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICAvLyAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG5cbiAgY29kZSxcbiAga2JkLFxuICBzYW1wIHtcbiAgICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IC8vIDFcbiAgICBmb250LXNpemU6IDFlbTsgLy8gMlxuICB9XG5cbiAgLy8gQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG5cbiAgc21hbGwge1xuICAgIGZvbnQtc2l6ZTogODAlO1xuICB9XG5cbiAgLy8gUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgZWxlbWVudHMgZnJvbSBhZmZlY3RpbmcgdGhlIGxpbmUgaGVpZ2h0IGluXG4gIC8vIGFsbCBicm93c2Vycy5cblxuICBzdWIsXG4gIHN1cCB7XG4gICAgZm9udC1zaXplOiA3NSU7XG4gICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgfVxuXG4gIHN1YiB7XG4gICAgYm90dG9tOiAtMC4yNWVtO1xuICB9XG5cbiAgc3VwIHtcbiAgICB0b3A6IC0wLjVlbTtcbiAgfVxuXG4gIC8vIEVtYmVkZGVkIGNvbnRlbnRcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvLyBSZW1vdmUgdGhlIGJvcmRlciBvbiBpbWFnZXMgaW5zaWRlIGxpbmtzIGluIElFIDEwLlxuXG4gIGltZyB7XG4gICAgYm9yZGVyLXN0eWxlOiBub25lO1xuICB9XG5cbiAgLy8gRm9ybXNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvLyAxLiBDaGFuZ2UgdGhlIGZvbnQgc3R5bGVzIGluIGFsbCBicm93c2Vycy5cbiAgLy8gMi4gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpLlxuXG4gIGJ1dHRvbixcbiAgaW5wdXQsXG4gIG9wdGdyb3VwLFxuICBzZWxlY3QsXG4gIHRleHRhcmVhIHtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDsgLy8gMVxuICAgIGZvbnQtc2l6ZTogMTAwJTsgLy8gMVxuICAgIGxpbmUtaGVpZ2h0OiAxLjE1OyAvLyAxXG4gICAgbWFyZ2luOiAwOyAvLyAyXG4gIH1cblxuICAvLyBTaG93IHRoZSBvdmVyZmxvdyBpbiBJRS5cbiAgLy8gMS4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZS5cblxuICBidXR0b24sXG4gIGlucHV0IHsgLy8gMVxuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICB9XG5cbiAgLy8gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBFZGdlLCBGaXJlZm94LCBhbmQgSUUuXG4gIC8vIDEuIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRmlyZWZveC5cblxuICBidXR0b24sXG4gIHNlbGVjdCB7IC8vIDFcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgfVxuXG4gIC8vIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG5cbiAgYnV0dG9uLFxuICBbdHlwZT1cImJ1dHRvblwiXSxcbiAgW3R5cGU9XCJyZXNldFwiXSxcbiAgW3R5cGU9XCJzdWJtaXRcIl0ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xuICB9XG5cbiAgLy8gUmVtb3ZlIHRoZSBpbm5lciBib3JkZXIgYW5kIHBhZGRpbmcgaW4gRmlyZWZveC5cblxuICBidXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG4gIFt0eXBlPVwiYnV0dG9uXCJdOjotbW96LWZvY3VzLWlubmVyLFxuICBbdHlwZT1cInJlc2V0XCJdOjotbW96LWZvY3VzLWlubmVyLFxuICBbdHlwZT1cInN1Ym1pdFwiXTo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgYm9yZGVyLXN0eWxlOiBub25lO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAvLyBSZXN0b3JlIHRoZSBmb2N1cyBzdHlsZXMgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXG5cbiAgYnV0dG9uOi1tb3otZm9jdXNyaW5nLFxuICBbdHlwZT1cImJ1dHRvblwiXTotbW96LWZvY3VzcmluZyxcbiAgW3R5cGU9XCJyZXNldFwiXTotbW96LWZvY3VzcmluZyxcbiAgW3R5cGU9XCJzdWJtaXRcIl06LW1vei1mb2N1c3Jpbmcge1xuICAgIG91dGxpbmU6IDFweCBkb3R0ZWQgQnV0dG9uVGV4dDtcbiAgfVxuXG4gIC8vIENvcnJlY3QgdGhlIHBhZGRpbmcgaW4gRmlyZWZveC5cblxuICBmaWVsZHNldCB7XG4gICAgcGFkZGluZzogMC4zNWVtIDAuNzVlbSAwLjYyNWVtO1xuICB9XG5cbiAgLy8gMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cbiAgLy8gMi4gQ29ycmVjdCB0aGUgY29sb3IgaW5oZXJpdGFuY2UgZnJvbSBgZmllbGRzZXRgIGVsZW1lbnRzIGluIElFLlxuICAvLyAzLiBSZW1vdmUgdGhlIHBhZGRpbmcgc28gZGV2ZWxvcGVycyBhcmUgbm90IGNhdWdodCBvdXQgd2hlbiB0aGV5IHplcm8gb3V0XG4gIC8vICAgIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gYWxsIGJyb3dzZXJzLlxuXG4gIGxlZ2VuZCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLy8gMVxuICAgIGNvbG9yOiBpbmhlcml0OyAvLyAyXG4gICAgZGlzcGxheTogdGFibGU7IC8vIDFcbiAgICBtYXgtd2lkdGg6IDEwMCU7IC8vIDFcbiAgICBwYWRkaW5nOiAwOyAvLyAzXG4gICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsgLy8gMVxuICB9XG5cbiAgLy8gQWRkIHRoZSBjb3JyZWN0IHZlcnRpY2FsIGFsaWdubWVudCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cblxuICBwcm9ncmVzcyB7XG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICB9XG5cbiAgLy8gUmVtb3ZlIHRoZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRSAxMCsuXG5cbiAgdGV4dGFyZWEge1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICB9XG5cbiAgLy8gMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gSUUgMTAuXG4gIC8vIDIuIFJlbW92ZSB0aGUgcGFkZGluZyBpbiBJRSAxMC5cblxuICBbdHlwZT1cImNoZWNrYm94XCJdLFxuICBbdHlwZT1cInJhZGlvXCJdIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvLyAxXG4gICAgcGFkZGluZzogMDsgLy8gMlxuICB9XG5cbiAgLy8gQ29ycmVjdCB0aGUgY3Vyc29yIHN0eWxlIG9mIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGJ1dHRvbnMgaW4gQ2hyb21lLlxuXG4gIFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuICBbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG5cbiAgLy8gMS4gQ29ycmVjdCB0aGUgb2RkIGFwcGVhcmFuY2UgaW4gQ2hyb21lIGFuZCBTYWZhcmkuXG4gIC8vIDIuIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpLlxuXG4gIFt0eXBlPVwic2VhcmNoXCJdIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLy8gMVxuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4OyAvLyAyXG4gIH1cblxuICAvLyBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gbWFjT1MuXG5cbiAgW3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuXG4gIC8vIDEuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG4gIC8vIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cblxuICA6Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLy8gMVxuICAgIGZvbnQ6IGluaGVyaXQ7IC8vIDJcbiAgfVxuXG4gIC8vIEludGVyYWN0aXZlXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLy8gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gRWRnZSwgSUUgMTArLCBhbmQgRmlyZWZveC5cblxuICBkZXRhaWxzIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIC8vIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIGFsbCBicm93c2Vycy5cblxuICBzdW1tYXJ5IHtcbiAgICBkaXNwbGF5OiBsaXN0LWl0ZW07XG4gIH1cblxuICAvLyBNaXNjXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLy8gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTArLlxuXG4gIHRlbXBsYXRlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLy8gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTAuXG5cbiAgW2hpZGRlbl0ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiIsIi8vL1xuLy8vIENoZWNrcyB3aGV0aGVyIGAkZnVuY3Rpb25zYCBleGlzdCBpbiBnbG9iYWwgc2NvcGUuXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7QXJnTGlzdH0gJGZ1bmN0aW9ucyAtIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIGNoZWNrIGZvclxuLy8vXG4vLy8gQHJldHVybiB7Qm9vbH0gV2hldGhlciBvciBub3QgdGhlcmUgYXJlIG1pc3NpbmcgZGVwZW5kZW5jaWVzXG4vLy9cbiBcbkBmdW5jdGlvbiBzbC1taXNzaW5nLWRlcGVuZGVuY2llcygkZnVuY3Rpb25zLi4uKSB7XG4gICRtaXNzaW5nLWRlcGVuZGVuY2llczogKCk7XG4gIFxuICBAZWFjaCAkZnVuY3Rpb24gaW4gJGZ1bmN0aW9ucyB7XG4gICAgQGlmIG5vdCBmdW5jdGlvbi1leGlzdHMoJGZ1bmN0aW9uKSB7XG4gICAgICAkbWlzc2luZy1kZXBlbmRlbmNpZXM6IGFwcGVuZCgkbWlzc2luZy1kZXBlbmRlbmNpZXMsICRmdW5jdGlvbiwgY29tbWEpO1xuICAgIH1cbiAgfVxuICBcbiAgQGlmIGxlbmd0aCgkbWlzc2luZy1kZXBlbmRlbmNpZXMpID4gMCB7XG4gICAgQGVycm9yICdVbm1ldCBkZXBlbmRlbmNpZXMhIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSByZXF1aXJlZDogI3skbWlzc2luZy1kZXBlbmRlbmNpZXN9Lic7XG4gIH1cblxuICBAcmV0dXJuIGxlbmd0aCgkbWlzc2luZy1kZXBlbmRlbmNpZXMpID4gMDtcbn1cbiIsIi8vL1xuLy8vIFJldHVybnMgdHJ1dGhpbmVzcyBvZiBgJHZhbHVlYC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHsqfSAkdmFsdWUgLSB2YWx1ZSB0byBjaGVja1xuLy8vXG4vLy8gQHJldHVybiB7Qm9vbH1cbi8vL1xuIFxuQGZ1bmN0aW9uIHNsLWlzLXRydWUoJHZhbHVlKSB7XG4gIEByZXR1cm4gaWYoJHZhbHVlID09IG51bGwsIGZhbHNlLCAkdmFsdWUgYW5kICR2YWx1ZSAhPSBudWxsIGFuZCAkdmFsdWUgIT0gJycgYW5kICR2YWx1ZSAhPSAoKSk7XG59XG4iLCIvLy9cbi8vLyBSZXR1cm5zIHdoZXRoZXIgYCRsaXN0YCBjb250YWlucyBgJHZhbHVlYC5cbi8vL1xuLy8vIEBpZ25vcmUgRG9jdW1lbnRhdGlvbjogaHR0cDovL2F0LWltcG9ydC5naXRodWIuaW8vU2Fzc3lMaXN0cy9kb2N1bWVudGF0aW9uLyNmdW5jdGlvbi1zbC1jb250YWluXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICAgICRsaXN0ICAtIGxpc3QgdG8gY2hlY2tcbi8vLyBAcGFyYW0geyp9ICAgICAgICR2YWx1ZSAtIHZhbHVlIHRvIGxvb2sgZm9yXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vIHNsLWNvbnRhaW4oYSBiIGMsIGEpXG4vLy8gLy8gdHJ1ZVxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyBzbC1jb250YWluKGEgYiBjLCB6KVxuLy8vIC8vIGZhbHNlXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sfVxuLy8vXG5cbkBmdW5jdGlvbiBzbC1jb250YWluKCRsaXN0LCAkdmFsdWUpIHtcbiAgQHJldHVybiBub3Qgbm90IGluZGV4KCRsaXN0LCAkdmFsdWUpO1xufVxuXG4vLy9cbi8vLyBAcmVxdWlyZXMgc2wtY29udGFpblxuLy8vIEBhbGlhcyBzbC1jb250YWluXG4vLy9cbiBcbkBmdW5jdGlvbiBzbC1pbmNsdWRlKCRsaXN0LCAkdmFsdWUpIHtcbiAgQHJldHVybiBzbC1jb250YWluKCRsaXN0LCAkdmFsdWUpO1xufVxuIiwiLy8vIFJlbW92ZXMgYWxsIGZhbHNlIGFuZCBudWxsIHZhbHVlcyBmcm9tIGAkbGlzdGAuXG4vLy9cbi8vLyBAaWdub3JlIERvY3VtZW50YXRpb246IGh0dHA6Ly9hdC1pbXBvcnQuZ2l0aHViLmlvL1Nhc3N5TGlzdHMvZG9jdW1lbnRhdGlvbi8jZnVuY3Rpb24tc2wtcHVyZ2Vcbi8vL1xuLy8vIEByZXF1aXJlcyBzbC1pcy10cnVlXG4vLy8gQHJlcXVpcmVzIHNsLXRvLWxpc3Rcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3QgLSBsaXN0IHRvIHB1cmdlXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vIHNsLXB1cmdlKG51bGwgYSBmYWxzZSBiKVxuLy8vIC8vIGEgYlxuLy8vXG4vLy8gQHJldHVybiB7TGlzdH1cbi8vL1xuXG5AZnVuY3Rpb24gc2wtcHVyZ2UoJGxpc3QpIHtcbiAgJF86IHNsLW1pc3NpbmctZGVwZW5kZW5jaWVzKCdzbC1pcy10cnVlJywgJ3NsLXRvLWxpc3QnKTtcbiAgXG4gICRyZXN1bHQ6ICgpO1xuXG4gIEBlYWNoICRpdGVtIGluICRsaXN0IHtcbiAgICBAaWYgc2wtaXMtdHJ1ZSgkaXRlbSkge1xuICAgICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRpdGVtLCBsaXN0LXNlcGFyYXRvcigkbGlzdCkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gc2wtdG8tbGlzdCgkcmVzdWx0KTtcbn1cblxuLy8vXG4vLy8gQHJlcXVpcmVzIHNsLXB1cmdlXG4vLy8gQGFsaWFzIHNsLXB1cmdlXG4vLy9cbiBcbkBmdW5jdGlvbiBzbC1jbGVhbigkbGlzdCkge1xuICBAcmV0dXJuIHNsLXB1cmdlKCRsaXN0KTtcbn1cbiIsIi8vL1xuLy8vIFJlbW92ZXMgdmFsdWUocykgYCR2YWx1ZWAgZnJvbSBgJGxpc3RgLlxuLy8vXG4vLy8gQGlnbm9yZSBEb2N1bWVudGF0aW9uOiBodHRwOi8vYXQtaW1wb3J0LmdpdGh1Yi5pby9TYXNzeUxpc3RzL2RvY3VtZW50YXRpb24vI2Z1bmN0aW9uLXNsLXJlbW92ZVxuLy8vXG4vLy8gQHJlcXVpcmVzIHNsLXJlcGxhY2Vcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gICAgJGxpc3QgICAgICAtIGxpc3QgdG8gdXBkYXRlXG4vLy8gQHBhcmFtIHsqfSAgICAgICAkdmFsdWUgICAgIC0gdmFsdWUgdG8gcmVtb3ZlXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vIHNsLXJlbW92ZShhIGIgYywgYSlcbi8vLyAvLyBiIGNcbi8vL1xuLy8vIEByZXR1cm4ge0xpc3R9XG4vLy9cblxuQGZ1bmN0aW9uIHNsLXJlbW92ZSgkbGlzdCwgJHZhbHVlKSB7XG4gICRfOiBzbC1taXNzaW5nLWRlcGVuZGVuY2llcygnc2wtcmVwbGFjZScpO1xuXG4gIEByZXR1cm4gc2wtcmVwbGFjZSgkbGlzdCwgJHZhbHVlLCBudWxsKTtcbn1cblxuLy8vXG4vLy8gQHJlcXVpcmVzIHNsLXJlbW92ZVxuLy8vIEBhbGlhcyBzbC1yZW1vdmVcbi8vL1xuXG5AZnVuY3Rpb24gc2wtd2l0aG91dCgkbGlzdCwgJHZhbHVlKSB7XG4gIEByZXR1cm4gc2wtcmVtb3ZlKCRsaXN0LCAkdmFsdWUpO1xufVxuIiwiLy8vXG4vLy8gUmVwbGFjZXMgYCRvbGRgIGJ5IGAkbmV3YCBpbiBgJGxpc3RgLlxuLy8vXG4vLy8gQGlnbm9yZSBEb2N1bWVudGF0aW9uOiBodHRwOi8vYXQtaW1wb3J0LmdpdGh1Yi5pby9TYXNzeUxpc3RzL2RvY3VtZW50YXRpb24vI2Z1bmN0aW9uLXNsLXJlcGxhY2Vcbi8vL1xuLy8vIEByZXF1aXJlcyBzbC1pcy10cnVlXG4vLy8gQHJlcXVpcmVzIHNsLXB1cmdlXG4vLy8gQHJlcXVpcmVzIHNsLXRvLWxpc3Rcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gICAgJGxpc3QgIC0gbGlzdCB0byB1cGRhdGVcbi8vLyBAcGFyYW0geyp9ICAgICAgICRvbGQgICAtIHZhbHVlIHRvIHJlcGxhY2Vcbi8vLyBAcGFyYW0geyp9ICAgICAgICR2YWx1ZSAtIG5ldyB2YWx1ZSBmb3IgJG9sZFxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyBzbC1yZXBsYWNlKGEgYiBjLCBiLCB6KVxuLy8vIC8vIGEgeiBjXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vIHNsLXJlcGxhY2UoYSBiIGMsIHksIHopXG4vLy8gLy8gYSBiIGNcbi8vLyBcbi8vLyBAcmV0dXJuIHtMaXN0fVxuLy8vXG4gXG5AZnVuY3Rpb24gc2wtcmVwbGFjZSgkbGlzdCwgJG9sZCwgJHZhbHVlKSB7XG4gICRfOiBzbC1taXNzaW5nLWRlcGVuZGVuY2llcygnc2wtaXMtdHJ1ZScsICdzbC1wdXJnZScsICdzbC10by1saXN0Jyk7XG5cbiAgJHJ1bm5pbmc6IHRydWU7XG5cbiAgQHdoaWxlICRydW5uaW5nIHtcbiAgICAkaW5kZXg6IGluZGV4KCRsaXN0LCAkb2xkKTtcblxuICAgIEBpZiBub3QgJGluZGV4IHtcbiAgICAgICRydW5uaW5nOiBmYWxzZTtcbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICAkbGlzdDogc2V0LW50aCgkbGlzdCwgJGluZGV4LCAkdmFsdWUpO1xuICAgIH1cblxuICB9XG5cbiAgJGxpc3Q6IGlmKHNsLWlzLXRydWUoJHZhbHVlKSwgJGxpc3QsIHNsLXB1cmdlKCRsaXN0KSk7XG4gIFxuICBAcmV0dXJuIHNsLXRvLWxpc3QoJGxpc3QpO1xufVxuIiwiLy8vXG4vLy8gQ2FzdHMgYCR2YWx1ZWAgaW50byBhIGxpc3QuXG4vLy9cbi8vLyBAaWdub3JlIERvY3VtZW50YXRpb246IGh0dHA6Ly9hdC1pbXBvcnQuZ2l0aHViLmlvL1Nhc3N5TGlzdHMvZG9jdW1lbnRhdGlvbi8jZnVuY3Rpb24tc2wtdG8tbGlzdFxuLy8vXG4vLy8gQHBhcmFtIHsqfSAkdmFsdWUgLSB2YWx1ZSB0byBjYXN0IHRvIGxpc3Rcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlcGFyYXRvciBbc3BhY2VdIC0gc2VwYXJhdG9yIHRvIHVzZVxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyBzbC10by1saXN0KGEgYiBjLCBjb21tYSlcbi8vLyAvLyBhLCBiLCBjXG4vLy8gXG4vLy8gQHJldHVybiB7TGlzdH1cbi8vL1xuXG5AZnVuY3Rpb24gc2wtdG8tbGlzdCgkdmFsdWUsICRzZXBhcmF0b3I6IGxpc3Qtc2VwYXJhdG9yKCR2YWx1ZSkpIHtcbiAgQHJldHVybiBqb2luKCgpLCAkdmFsdWUsICRzZXBhcmF0b3IpO1xufVxuXG4vLy9cbi8vLyBAcmVxdWlyZXMgc2wtdG8tbGlzdFxuLy8vIEBhbGlhcyBzbC10by1saXN0XG4vLy9cblxuQGZ1bmN0aW9uIHNsLWxpc3RpZnkoJHZhbHVlKSB7XG4gIEByZXR1cm4gc2wtdG8tbGlzdCgkdmFsdWUpO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLyBzYXNzLWxpbnQ6ZGlzYWJsZSBuby1jb2xvci1saXRlcmFscywgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuXG4vLy8vXG4vLy8gQGdyb3VwIGdsb2JhbFxuLy8vL1xuXG5AaW1wb3J0ICd1dGlsL3V0aWwnO1xuXG4vLy8gRm9udCBzaXplIGF0dHJpYnV0ZSBhcHBsaWVkIHRvIGA8aHRtbD5gIGFuZCBgPGJvZHk+YC4gV2UgdXNlIDEwMCUgYnkgZGVmYXVsdCBzbyB0aGUgdmFsdWUgaXMgaW5oZXJpdGVkIGZyb20gdGhlIHVzZXIncyBicm93c2VyIHNldHRpbmdzLlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1mb250LXNpemU6IDEwMCUgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgd2lkdGggb2YgeW91ciBzaXRlLiBVc2VkIGJ5IHRoZSBncmlkIHRvIGRldGVybWluZSByb3cgd2lkdGguXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLXdpZHRoOiByZW0tY2FsYygxMjAwKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbGluZSBoZWlnaHQgZm9yIGFsbCB0eXBlLiBgJGdsb2JhbC1saW5laGVpZ2h0YCBpcyAyNHB4IHdoaWxlIGAkZ2xvYmFsLWZvbnQtc2l6ZWAgaXMgMTZweFxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1saW5laGVpZ2h0OiAxLjUgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvcnMgdXNlZCBmb3IgYnV0dG9ucywgY2FsbG91dHMsIGxpbmtzLCBldGMuIFRoZXJlIG11c3QgYWx3YXlzIGJlIGEgY29sb3IgY2FsbGVkIGBwcmltYXJ5YC5cbi8vLyBAdHlwZSBNYXBcbiRmb3VuZGF0aW9uLXBhbGV0dGU6IChcbiAgcHJpbWFyeTogIzE3NzliYSxcbiAgc2Vjb25kYXJ5OiAjNzY3Njc2LFxuICBzdWNjZXNzOiAjM2FkYjc2LFxuICB3YXJuaW5nOiAjZmZhZTAwLFxuICBhbGVydDogI2NjNGIzNyxcbikgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB1c2VkIGZvciBsaWdodCBncmF5IFVJIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kbGlnaHQtZ3JheTogI2U2ZTZlNiAhZGVmYXVsdDtcblxuLy8vIENvbG9yIHVzZWQgZm9yIG1lZGl1bSBncmF5IFVJIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kbWVkaXVtLWdyYXk6ICNjYWNhY2EgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB1c2VkIGZvciBkYXJrIGdyYXkgVUkgaXRlbXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRkYXJrLWdyYXk6ICM4YThhOGEgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB1c2VkIGZvciBibGFjayB1aSBpdGVtcy5cbi8vLyBAdHlwZSBDb2xvclxuJGJsYWNrOiAjMGEwYTBhICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgdXNlZCBmb3Igd2hpdGUgdWkgaXRlbXMuXG4vLy8gQHR5cGUgQ29sb3JcbiR3aGl0ZTogI2ZlZmVmZSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJvZHkuXG4vLy8gQHR5cGUgQ29sb3JcbiRib2R5LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgdGhlIGJvZHkuXG4vLy8gQHR5cGUgQ29sb3JcbiRib2R5LWZvbnQtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc3RhY2sgb2YgdGhlIGJvZHkuXG4vLy8gQHR5cGUgTGlzdFxuJGJvZHktZm9udC1mYW1pbHk6ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgUm9ib3RvLCBBcmlhbCwgc2Fucy1zZXJpZiAhZGVmYXVsdDtcblxuLy8vIFNldCB0byBgdHJ1ZWAgdG8gZW5hYmxlIGFudGlhbGlhc2VkIHR5cGUsIHVzaW5nIHRoZSBgLXdlYmtpdC1mb250LXNtb290aGluZ2AgYW5kIGAtbW96LW9zeC1mb250LXNtb290aGluZ2AgQ1NTIHByb3BlcnRpZXMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGJvZHktYW50aWFsaWFzZWQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgbWFyZ2luIG9uIGNvbXBvbmVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLW1hcmdpbjogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEdsb2JhbCB2YWx1ZSB1c2VkIGZvciBwYWRkaW5nIG9uIGNvbXBvbmVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgcG9zaXRpb25pbmcgb24gY29tcG9uZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRnbG9iYWwtcG9zaXRpb246IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgZm9udCB3ZWlnaHQgdXNlZCBmb3Igbm9ybWFsIHR5cGUuXG4vLy8gQHR5cGUgS2V5d29yZCB8IE51bWJlclxuJGdsb2JhbC13ZWlnaHQtbm9ybWFsOiBub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgZm9udCB3ZWlnaHQgdXNlZCBmb3IgYm9sZCB0eXBlLlxuLy8vIEB0eXBlIEtleXdvcmQgfCBOdW1iZXJcbiRnbG9iYWwtd2VpZ2h0LWJvbGQ6IGJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgYWxsIGVsZW1lbnRzIHRoYXQgaGF2ZSBhIGJvcmRlciByYWRpdXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLXJhZGl1czogMCAhZGVmYXVsdDtcblxuLy8vIEdsb2JhbCB2YWx1ZSB1c2VkIGZvciBhbGwgbWVudSBzdHlsZXMuIENhbiBiZSBvdmVyd3JpdHRlbiBhdCBpbmRpdmlkdWFsIG1lbnUgY29tcG9uZW50IGxldmVsLlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1tZW51LXBhZGRpbmc6IDAuN3JlbSAxcmVtICFkZWZhdWx0O1xuXG4vLy8gR2xvYmFsIHZhbHVlIHVzZWQgZm9yIGFsbCBtZW51IHN0eWxlcy4gTmVzdGVkIG1hcmdpbiBmb3Igc3VibWVudS5cbiRnbG9iYWwtbWVudS1uZXN0ZWQtbWFyZ2luOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gU2V0cyB0aGUgdGV4dCBkaXJlY3Rpb24gb2YgdGhlIENTUy4gQ2FuIGJlIGVpdGhlciBgbHRyYCBvciBgcnRsYC5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kZ2xvYmFsLXRleHQtZGlyZWN0aW9uOiBsdHIgIWRlZmF1bHQ7XG5cbi8vLyBFbmFibGVzIGZsZXhib3ggZm9yIGNvbXBvbmVudHMgdGhhdCBzdXBwb3J0IGl0LlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRnbG9iYWwtZmxleGJveDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEVuYWJsZWQgcmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgcHJvdG90eXBlcyBpZiBhcHBsaWNhYmxlXG4vLy8gQHR5cGUgQm9vbGVhblxuJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM6IGZhbHNlICFkZWZhdWx0O1xuXG4vLy8gQnV0dG9uIGN1cnNvcidzIHZhbHVlLCBgYXV0b2AgYnkgZGVmYXVsdFxuLy8vIEB0eXBlIEtleXdvcmRcbiRnbG9iYWwtYnV0dG9uLWN1cnNvcjogYXV0byAhZGVmYXVsdDtcblxuQGlmIG5vdCBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCBwcmltYXJ5KSB7XG4gIEBlcnJvciAnSW4gJGZvdW5kYXRpb24tcGFsZXR0ZSwgeW91IG11c3QgaGF2ZSBhIGNvbG9yIG5hbWVkIFwicHJpbWFyeVwiLic7XG59XG5cbi8vIEludGVybmFsIHZhcmlhYmxlcyB1c2VkIGZvciB0ZXh0IGRpcmVjdGlvblxuJGdsb2JhbC1sZWZ0OiBpZigkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IHJ0bCwgcmlnaHQsIGxlZnQpO1xuJGdsb2JhbC1yaWdodDogaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBydGwsIGxlZnQsIHJpZ2h0KTtcblxuLy8gSW50ZXJuYWwgdmFyaWFibGUgdGhhdCBjb250YWlucyB0aGUgZmxleCBqdXN0aWZ5aW5nIG9wdGlvbnNcbiQtemYtZmxleC1qdXN0aWZ5OiAtemYtZmxleC1qdXN0aWZ5KCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24pO1xuXG4vLy8gR2xvYmFsIHRvbGVyYW5jZSBmb3IgY29sb3IgcGljayBjb250cmFzdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRnbG9iYWwtY29sb3ItcGljay1jb250cmFzdC10b2xlcmFuY2U6IDAgIWRlZmF1bHQ7XG5cbi8vIEludGVybmFsIHZhcmlhYmxlcyB1c2VkIGZvciBjb2xvcnNcbkBpbmNsdWRlIGFkZC1mb3VuZGF0aW9uLWNvbG9ycztcblxuQG1peGluIGZvdW5kYXRpb24tZ2xvYmFsLXN0eWxlcyB7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tbm9ybWFsaXplO1xuXG4gIC8vIFRoZXNlIHN0eWxlcyBhcmUgYXBwbGllZCB0byBhIDxtZXRhPiB0YWcsIHdoaWNoIGlzIHJlYWQgYnkgdGhlIEZvdW5kYXRpb24gSmF2YVNjcmlwdFxuICAuZm91bmRhdGlvbi1tcSB7XG4gICAgZm9udC1mYW1pbHk6ICcjey16Zi1icC1zZXJpYWxpemUoJGJyZWFrcG9pbnRzKX0nO1xuICB9XG5cbiAgaHRtbCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBmb250LXNpemU6ICRnbG9iYWwtZm9udC1zaXplO1xuICB9XG5cbiAgLy8gU2V0IGJveC1zaXppbmcgZ2xvYmFsbHkgdG8gaGFuZGxlIHBhZGRpbmcgYW5kIGJvcmRlciB3aWR0aHNcbiAgKixcbiAgKjo6YmVmb3JlLFxuICAqOjphZnRlciB7XG4gICAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgfVxuXG4gIC8vIERlZmF1bHQgYm9keSBzdHlsZXNcbiAgYm9keSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG5cbiAgICAvLyB1c2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gYWNjb3VudCBmb3Igbm9uLXJlY3Rhbmd1bGFyIGRpc3BsYXlzIGUuZy4gcGhvbmVzIHdpdGggbm90Y2hlc1xuICAgIHBhZGRpbmctdG9wOiBlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCk7XG4gICAgcGFkZGluZy1yaWdodDogZW52KHNhZmUtYXJlYS1pbnNldC1yaWdodCk7XG4gICAgcGFkZGluZy1ib3R0b206IGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKTtcbiAgICBwYWRkaW5nLWxlZnQ6IGVudihzYWZlLWFyZWEtaW5zZXQtbGVmdCk7XG5cbiAgICBiYWNrZ3JvdW5kOiAkYm9keS1iYWNrZ3JvdW5kO1xuXG4gICAgZm9udC1mYW1pbHk6ICRib2R5LWZvbnQtZmFtaWx5O1xuICAgIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XG4gICAgbGluZS1oZWlnaHQ6ICRnbG9iYWwtbGluZWhlaWdodDtcbiAgICBjb2xvcjogJGJvZHktZm9udC1jb2xvcjtcblxuICAgIEBpZiAoJGJvZHktYW50aWFsaWFzZWQpIHtcbiAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXZlbmRvci1wcmVmaXhlc1xuICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby12ZW5kb3ItcHJlZml4ZXNcbiAgICB9XG4gIH1cblxuICBpbWcge1xuICAgIC8vIEdldCByaWQgb2YgZ2FwIHVuZGVyIGltYWdlcyBieSBtYWtpbmcgdGhlbSBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJ5IGRlZmF1bHRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcblxuICAgIC8vIEdyaWQgZGVmYXVsdHMgdG8gZ2V0IGltYWdlcyBhbmQgZW1iZWRzIHRvIHdvcmsgcHJvcGVybHlcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IGJpY3ViaWM7XG4gIH1cblxuICAvLyBNYWtlIHN1cmUgdGV4dGFyZWEgdGFrZXMgb24gaGVpZ2h0IGF1dG9tYXRpY2FsbHlcbiAgdGV4dGFyZWEge1xuICAgIGhlaWdodDogYXV0bztcbiAgICBtaW4taGVpZ2h0OiA1MHB4O1xuICAgIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICB9XG5cbiAgLy8gTWFrZSBzZWxlY3QgZWxlbWVudHMgYXJlIDEwMCUgd2lkdGggYnkgZGVmYXVsdFxuICBzZWxlY3Qge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gIH1cblxuICAvLyBTdHlsZXMgR29vZ2xlIE1hcHMgYW5kIE1hcFF1ZXN0IGVtYmVkcyBwcm9wZXJseVxuICAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLWlkc1xuICAubWFwX2NhbnZhcyxcbiAgLm1xYS1kaXNwbGF5IHtcbiAgICBpbWcsXG4gICAgZW1iZWQsXG4gICAgb2JqZWN0IHtcbiAgICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gIC8vIFJlc2V0IDxidXR0b24+IHN0eWxlcyBjcmVhdGVkIGJ5IG1vc3QgYnJvd3NlcnNcbiAgYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gICAgcGFkZGluZzogMDtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIGJvcmRlcjogMDtcbiAgICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBjdXJzb3I6ICRnbG9iYWwtYnV0dG9uLWN1cnNvcjtcbiAgfVxuXG4gIC8vIFByZXZlbnQgdGV4dCBvdmVyZmxvdyBvbiBwcmVcbiAgcHJlIHtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgfVxuXG4gIC8vIE1ha2UgcmVzZXQgaW5oZXJpdCBmb250LWZhbWlseSBpbnN0ZWFkIG9mIHNldHRpbmdzIHNhbnMtc2VyaWZcbiAgYnV0dG9uLFxuICBpbnB1dCxcbiAgb3B0Z3JvdXAsXG4gIHNlbGVjdCxcbiAgdGV4dGFyZWEge1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgY2xhc3NlcyB0byBzaG93L2hpZGUgZWxlbWVudHMgaW4gSmF2YVNjcmlwdFxuICAuaXMtdmlzaWJsZSB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5pcy1oaWRkZW4ge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbi8vLyBHbG9iYWwgc3BhY2luZyBmb3IgZm9ybSBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmb3JtLXNwYWNpbmc6IHJlbS1jYWxjKDE2KSAhZGVmYXVsdDtcblxuQGltcG9ydCAndGV4dCc7XG5AaW1wb3J0ICdjaGVja2JveCc7XG5AaW1wb3J0ICdsYWJlbCc7XG5AaW1wb3J0ICdoZWxwLXRleHQnO1xuQGltcG9ydCAnaW5wdXQtZ3JvdXAnO1xuQGltcG9ydCAnZmllbGRzZXQnO1xuQGltcG9ydCAnc2VsZWN0JztcbkBpbXBvcnQgJ3JhbmdlJztcbkBpbXBvcnQgJ3Byb2dyZXNzJztcbkBpbXBvcnQgJ21ldGVyJztcbkBpbXBvcnQgJ2Vycm9yJztcblxuQG1peGluIGZvdW5kYXRpb24tZm9ybXMge1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tdGV4dDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLWNoZWNrYm94O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tbGFiZWw7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybS1oZWxwdGV4dDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLXByZXBvc3RmaXg7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybS1maWVsZHNldDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLXNlbGVjdDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLWVycm9yO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbi8vLyBGb250IGNvbG9yIG9mIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEZvbnQgY29sb3Igb2YgcGxhY2Vob2xkZXIgdGV4dCB3aXRoaW4gdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1wbGFjZWhvbGRlci1jb2xvcjogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRm9udCBmYW1pbHkgb2YgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgRm9udFxuJGlucHV0LWZvbnQtZmFtaWx5OiBpbmhlcml0ICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIG9mIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGlucHV0LWZvbnQtc2l6ZTogcmVtLWNhbGMoMTYpICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3ZWlnaHQgb2YgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgS2V5d29yZFxuJGlucHV0LWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBMaW5lIGhlaWdodCBvZiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kaW5wdXQtbGluZS1oZWlnaHQ6ICRnbG9iYWwtbGluZWhlaWdodCAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGZvY3VzZWQgb2YgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1iYWNrZ3JvdW5kLWZvY3VzOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGRpc2FibGVkIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtYmFja2dyb3VuZC1kaXNhYmxlZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgYXJvdW5kIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIEJvcmRlclxuJGlucHV0LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBhcm91bmQgZm9jdXNlZCB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LWJvcmRlci1mb2N1czogMXB4IHNvbGlkICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIG9mIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtcGFkZGluZzogJGZvcm0tc3BhY2luZyAqIDAuNSAhZGVmYXVsdDtcblxuLy8vIEJveCBzaGFkb3cgaW5zaWRlIHRleHQgaW5wdXRzIHdoZW4gbm90IGZvY3VzZWQuXG4vLy8gQHR5cGUgU2hhZG93XG4kaW5wdXQtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgkYmxhY2ssIDAuMSkgIWRlZmF1bHQ7XG5cbi8vLyBCb3ggc2hhZG93IG91dHNpZGUgdGV4dCBpbnB1dHMgd2hlbiBmb2N1c2VkLlxuLy8vIEB0eXBlIFNoYWRvd1xuJGlucHV0LXNoYWRvdy1mb2N1czogMCAwIDVweCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBDdXJzb3IgdG8gdXNlIHdoZW4gaG92ZXJpbmcgb3ZlciBhIGRpc2FibGVkIHRleHQgaW5wdXQuXG4vLy8gQHR5cGUgQ3Vyc29yXG4kaW5wdXQtY3Vyc29yLWRpc2FibGVkOiBub3QtYWxsb3dlZCAhZGVmYXVsdDtcblxuLy8vIFByb3BlcnRpZXMgdG8gdHJhbnNpdGlvbiBvbiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBUcmFuc2l0aW9uXG4kaW5wdXQtdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjVzLCBib3JkZXItY29sb3IgMC4yNXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XG5cbi8vLyBFbmFibGVzIHRoZSB1cC9kb3duIGJ1dHRvbnMgdGhhdCBDaHJvbWUgYW5kIEZpcmVmb3ggYWRkIHRvIGA8aW5wdXQgdHlwZT0nbnVtYmVyJz5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRpbnB1dC1udW1iZXItc3Bpbm5lcnM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBSYWRpdXMgZm9yIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIEJvcmRlclxuJGlucHV0LXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgcmFkaXVzIGZvciBmb3JtIGJ1dHRvbnMsIGRlZmF1bHRlZCB0byBnbG9iYWwtcmFkaXVzLlxuLy8vIEB0eXBlIE51bWJlclxuJGZvcm0tYnV0dG9uLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3JtLWVsZW1lbnQge1xuICAkaGVpZ2h0OiAoJGlucHV0LWZvbnQtc2l6ZSAqIHVuaXRsZXNzLWNhbGMoJGlucHV0LWxpbmUtaGVpZ2h0KSkgKyAoZ2V0LXNpZGUoJGlucHV0LXBhZGRpbmcsICd0b3AnKSArIGdldC1zaWRlKCRpbnB1dC1wYWRkaW5nLCAnYm90dG9tJykpIC0gcmVtLWNhbGMoMSk7XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIG1hcmdpbjogMCAwICRmb3JtLXNwYWNpbmc7XG4gIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nO1xuXG4gIGJvcmRlcjogJGlucHV0LWJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogJGlucHV0LXJhZGl1cztcbiAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJhY2tncm91bmQ7XG4gIGJveC1zaGFkb3c6ICRpbnB1dC1zaGFkb3c7XG5cbiAgZm9udC1mYW1pbHk6ICRpbnB1dC1mb250LWZhbWlseTtcbiAgZm9udC1zaXplOiAkaW5wdXQtZm9udC1zaXplO1xuICBmb250LXdlaWdodDogJGlucHV0LWZvbnQtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGlucHV0LWxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJGlucHV0LWNvbG9yO1xuXG4gIEBpZiBoYXMtdmFsdWUoJGlucHV0LXRyYW5zaXRpb24pIHtcbiAgICB0cmFuc2l0aW9uOiAkaW5wdXQtdHJhbnNpdGlvbjtcbiAgfVxuXG4gIC8vIEZvY3VzIHN0YXRlXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm9yZGVyOiAkaW5wdXQtYm9yZGVyLWZvY3VzO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1iYWNrZ3JvdW5kLWZvY3VzO1xuICAgIGJveC1zaGFkb3c6ICRpbnB1dC1zaGFkb3ctZm9jdXM7XG5cbiAgICBAaWYgaGFzLXZhbHVlKCRpbnB1dC10cmFuc2l0aW9uKSB7XG4gICAgICB0cmFuc2l0aW9uOiAkaW5wdXQtdHJhbnNpdGlvbjtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS10ZXh0IHtcbiAgLy8gVGV4dCBpbnB1dHNcbiAgI3t0ZXh0LWlucHV0cygpfSxcbiAgdGV4dGFyZWEge1xuICAgIEBpbmNsdWRlIGZvcm0tZWxlbWVudDtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgLy8gVGV4dCBhcmVhc1xuICB0ZXh0YXJlYSB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuXG4gICAgJltyb3dzXSB7XG4gICAgICBoZWlnaHQ6IGF1dG87XG4gICAgfVxuICB9XG5cbiAgaW5wdXQsXG4gIHRleHRhcmVhIHtcbiAgICAvLyBEaXNhYmxlZC9yZWFkb25seSBzdGF0ZVxuICAgICY6ZGlzYWJsZWQsXG4gICAgJltyZWFkb25seV0ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJhY2tncm91bmQtZGlzYWJsZWQ7XG4gICAgICBjdXJzb3I6ICRpbnB1dC1jdXJzb3ItZGlzYWJsZWQ7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzZXQgc3R5bGVzIG9uIGJ1dHRvbi1saWtlIGlucHV0c1xuICBbdHlwZT0nc3VibWl0J10sXG4gIFt0eXBlPSdidXR0b24nXSB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAkZm9ybS1idXR0b24tcmFkaXVzO1xuICB9XG5cbiAgLy8gUmVzZXQgTm9ybWFsaXplIHNldHRpbmcgY29udGVudC1ib3ggdG8gc2VhcmNoIGVsZW1lbnRzXG4gIGlucHV0W3R5cGU9J3NlYXJjaCddIHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuXG4gIC8vIE51bWJlciBpbnB1dCBzdHlsZXNcbiAgW3R5cGU9J251bWJlciddIHtcbiAgICBAaWYgbm90ICRpbnB1dC1udW1iZXItc3Bpbm5lcnMge1xuICAgICAgLW1vei1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tdmVuZG9yLXByZWZpeGVzXG5cbiAgICAgICY6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG4gICAgICAmOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXZlbmRvci1wcmVmaXhlc1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUGxhY2Vob2xkZXIgdGV4dFxuICA6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogJGlucHV0LXBsYWNlaG9sZGVyLWNvbG9yO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1jaGVja2JveCB7XG4gIFt0eXBlPSdmaWxlJ10sXG4gIFt0eXBlPSdjaGVja2JveCddLFxuICBbdHlwZT0ncmFkaW8nXSB7XG4gICAgbWFyZ2luOiAwIDAgJGZvcm0tc3BhY2luZztcbiAgfVxuXG4gIC8vIFN0eWxlcyBmb3IgaW5wdXQvbGFiZWwgc2libGluZ3NcbiAgW3R5cGU9J2NoZWNrYm94J10gKyBsYWJlbCxcbiAgW3R5cGU9J3JhZGlvJ10gKyBsYWJlbCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcblxuICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06ICRmb3JtLXNwYWNpbmcgKiAwLjU7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRmb3JtLXNwYWNpbmc7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgICZbZm9yXSB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuICB9XG5cbiAgLy8gU3R5bGVzIGZvciBpbnB1dHMgaW5zaWRlIGxhYmVsc1xuICBsYWJlbCA+IFt0eXBlPSdjaGVja2JveCddLFxuICBsYWJlbCA+IFt0eXBlPSdyYWRpbyddIHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJGZvcm0tc3BhY2luZyAqIDAuNTtcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSBmaWxlIGlucHV0IHdpZHRoXG4gIFt0eXBlPSdmaWxlJ10ge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIENvbG9yIGZvciBmb3JtIGxhYmVscy5cbi8vLyBAdHlwZSBDb2xvclxuJGZvcm0tbGFiZWwtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBmb3IgZm9ybSBsYWJlbHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZm9ybS1sYWJlbC1mb250LXNpemU6IHJlbS1jYWxjKDE0KSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgd2VpZ2h0IGZvciBmb3JtIGxhYmVscy5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kZm9ybS1sYWJlbC1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gTGluZSBoZWlnaHQgZm9yIGZvcm0gbGFiZWxzLiBUaGUgaGlnaGVyIHRoZSBudW1iZXIsIHRoZSBtb3JlIHNwYWNlIGJldHdlZW4gdGhlIGxhYmVsIGFuZCBpdHMgaW5wdXQgZmllbGQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZm9ybS1sYWJlbC1saW5lLWhlaWdodDogMS44ICFkZWZhdWx0O1xuXG5AbWl4aW4gZm9ybS1sYWJlbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IDA7XG5cbiAgZm9udC1zaXplOiAkZm9ybS1sYWJlbC1mb250LXNpemU7XG4gIGZvbnQtd2VpZ2h0OiAkZm9ybS1sYWJlbC1mb250LXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRmb3JtLWxhYmVsLWxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJGZvcm0tbGFiZWwtY29sb3I7XG59XG5cbkBtaXhpbiBmb3JtLWxhYmVsLW1pZGRsZSB7XG4gICRpbnB1dC1ib3JkZXItd2lkdGg6IGdldC1ib3JkZXItdmFsdWUoJGlucHV0LWJvcmRlciwgd2lkdGgpO1xuXG4gIG1hcmdpbjogMCAwICRmb3JtLXNwYWNpbmc7XG4gIGxpbmUtaGVpZ2h0OiAkZ2xvYmFsLWxpbmVoZWlnaHQ7XG4gIHBhZGRpbmc6ICgkZm9ybS1zcGFjaW5nICogMC41ICsgcmVtLWNhbGMoJGlucHV0LWJvcmRlci13aWR0aCkpIDA7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tbGFiZWwge1xuICBsYWJlbCB7XG4gICAgQGluY2x1ZGUgZm9ybS1sYWJlbDtcblxuICAgICYubWlkZGxlIHtcbiAgICAgIEBpbmNsdWRlIGZvcm0tbGFiZWwtbWlkZGxlO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGNvbG9yIGZvciBoZWxwIHRleHQuXG4vLy8gQHR5cGUgQ29sb3JcbiRoZWxwdGV4dC1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIGhlbHAgdGV4dC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRoZWxwdGV4dC1mb250LXNpemU6IHJlbS1jYWxjKDEzKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBzdHlsZSBmb3IgaGVscCB0ZXh0LlxuLy8vIEB0eXBlIEtleXdvcmRcbiRoZWxwdGV4dC1mb250LXN0eWxlOiBpdGFsaWMgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0taGVscHRleHQge1xuICAuaGVscC10ZXh0IHtcbiAgICAkbWFyZ2luLXRvcDogKCRmb3JtLXNwYWNpbmcgKiAwLjUpICogLTE7XG5cbiAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXRvcDtcbiAgICBmb250LXNpemU6ICRoZWxwdGV4dC1mb250LXNpemU7XG4gICAgZm9udC1zdHlsZTogJGhlbHB0ZXh0LWZvbnQtc3R5bGU7XG4gICAgY29sb3I6ICRoZWxwdGV4dC1jb2xvcjtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbi8vLyBDb2xvciBvZiBsYWJlbHMgcHJlZml4ZWQgdG8gYW4gaW5wdXQuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1wcmVmaXgtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgbGFiZWxzIHByZWZpeGVkIHRvIGFuIGlucHV0LlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtcHJlZml4LWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIGFyb3VuZCBsYWJlbHMgcHJlZml4ZWQgdG8gYW4gaW5wdXQuXG4vLy8gQHR5cGUgQm9yZGVyXG4kaW5wdXQtcHJlZml4LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIExlZnQvcmlnaHQgcGFkZGluZyBvZiBhbiBwcmUvcG9zdGZpeGVkIGlucHV0IGxhYmVsXG4kaW5wdXQtcHJlZml4LXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tcHJlcG9zdGZpeCB7XG4gICRoZWlnaHQ6ICgkaW5wdXQtZm9udC1zaXplICogJGlucHV0LWxpbmUtaGVpZ2h0KSArIChnZXQtc2lkZSgkaW5wdXQtcGFkZGluZywgJ3RvcCcpICsgZ2V0LXNpZGUoJGlucHV0LXBhZGRpbmcsICdib3R0b20nKSkgLSByZW0tY2FsYygxKTtcblxuICAuaW5wdXQtZ3JvdXAge1xuICAgIGRpc3BsYXk6IGlmKCRnbG9iYWwtZmxleGJveCwgZmxleCwgdGFibGUpO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206ICRmb3JtLXNwYWNpbmc7XG5cbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgIH1cblxuICAgID4gOmZpcnN0LWNoaWxkIHtcbiAgICAgICYsICYuaW5wdXQtZ3JvdXAtYnV0dG9uID4gKiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gcnRsLCAwICRpbnB1dC1yYWRpdXMgJGlucHV0LXJhZGl1cyAwLCAkaW5wdXQtcmFkaXVzIDAgMCAkaW5wdXQtcmFkaXVzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICA+IDpsYXN0LWNoaWxkIHtcbiAgICAgICYsICYuaW5wdXQtZ3JvdXAtYnV0dG9uID4gKiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gcnRsLCAkaW5wdXQtcmFkaXVzIDAgMCAkaW5wdXQtcmFkaXVzLCAwICRpbnB1dC1yYWRpdXMgJGlucHV0LXJhZGl1cyAwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAlaW5wdXQtZ3JvdXAtY2hpbGQge1xuICAgIG1hcmdpbjogMDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgQGlmIG5vdCAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICB9XG5cbiAgLmlucHV0LWdyb3VwLWxhYmVsIHtcbiAgICBAZXh0ZW5kICVpbnB1dC1ncm91cC1jaGlsZDtcbiAgICBwYWRkaW5nOiAwICRpbnB1dC1wcmVmaXgtcGFkZGluZztcbiAgICBib3JkZXI6ICRpbnB1dC1wcmVmaXgtYm9yZGVyO1xuICAgIGJhY2tncm91bmQ6ICRpbnB1dC1wcmVmaXgtYmFja2dyb3VuZDtcblxuICAgIGNvbG9yOiAkaW5wdXQtcHJlZml4LWNvbG9yO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICB3aWR0aDogMSU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuXG4gICAgQGlmIGhhcy12YWx1ZSgkaW5wdXQtcHJlZml4LWJvcmRlcikge1xuICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci0jeyRnbG9iYWwtcmlnaHR9OiAwO1xuICAgICAgfVxuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItI3skZ2xvYmFsLWxlZnR9OiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5pbnB1dC1ncm91cC1maWVsZCB7XG4gICAgQGV4dGVuZCAlaW5wdXQtZ3JvdXAtY2hpbGQ7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcblxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcbiAgICAgIG1pbi13aWR0aDogMDtcbiAgICB9XG4gIH1cblxuICAuaW5wdXQtZ3JvdXAtYnV0dG9uIHtcbiAgICBAZXh0ZW5kICVpbnB1dC1ncm91cC1jaGlsZDtcbiAgICBwYWRkaW5nLXRvcDogMDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgd2lkdGg6IDElO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cblxuICAgIGEsXG4gICAgaW5wdXQsXG4gICAgYnV0dG9uLFxuICAgIGxhYmVsIHtcbiAgICAgIEBleHRlbmQgJWlucHV0LWdyb3VwLWNoaWxkO1xuXG4gICAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgICB9XG4gICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgZm9udC1zaXplOiAkaW5wdXQtZm9udC1zaXplO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNwZWNpZmljaXR5IGJ1bXAgbmVlZGVkIHRvIHByZXZlbnQgb3ZlcnJpZGUgYnkgYnV0dG9uc1xuICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XG4gICAgLmlucHV0LWdyb3VwIHtcbiAgICAgIC5pbnB1dC1ncm91cC1idXR0b24ge1xuICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGJvcmRlciBhcm91bmQgY3VzdG9tIGZpZWxkc2V0cy5cbi8vLyBAdHlwZSBCb3JkZXJcbiRmaWVsZHNldC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgaW5zaWRlIGN1c3RvbSBmaWVsZHNldHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZmllbGRzZXQtcGFkZGluZzogcmVtLWNhbGMoMjApICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBtYXJnaW4gYXJvdW5kIGN1c3RvbSBmaWVsZHNldHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZmllbGRzZXQtbWFyZ2luOiByZW0tY2FsYygxOCAwKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBiZXR3ZWVuIHRoZSBsZWdlbmQgdGV4dCBhbmQgZmllbGRzZXQgYm9yZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJGxlZ2VuZC1wYWRkaW5nOiByZW0tY2FsYygwIDMpICFkZWZhdWx0O1xuXG5AbWl4aW4gZmllbGRzZXQge1xuICBtYXJnaW46ICRmaWVsZHNldC1tYXJnaW47XG4gIHBhZGRpbmc6ICRmaWVsZHNldC1wYWRkaW5nO1xuICBib3JkZXI6ICRmaWVsZHNldC1ib3JkZXI7XG5cbiAgbGVnZW5kIHtcbiAgICAvLyBDb3ZlcnMgdXAgdGhlIGZpZWxkc2V0J3MgYm9yZGVyIHRvIGNyZWF0ZSBhcnRpZmljaWFsIHBhZGRpbmdcbiAgICBtYXJnaW46IDA7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogcmVtLWNhbGMoLTMpO1xuICAgIHBhZGRpbmc6ICRsZWdlbmQtcGFkZGluZztcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLWZpZWxkc2V0IHtcbiAgZmllbGRzZXQge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJvcmRlcjogMDtcbiAgfVxuXG4gIGxlZ2VuZCB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206ICRmb3JtLXNwYWNpbmcgKiAwLjU7XG4gIH1cblxuICAuZmllbGRzZXQge1xuICAgIEBpbmNsdWRlIGZpZWxkc2V0O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIHNlbGVjdCBtZW51cy5cbi8vLyBAdHlwZSBDb2xvclxuJHNlbGVjdC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiB0aGUgZHJvcGRvd24gdHJpYW5nbGUgaW5zaWRlIHNlbGVjdCBtZW51cy4gU2V0IHRvIGB0cmFuc3BhcmVudGAgdG8gcmVtb3ZlIGl0IGVudGlyZWx5LlxuLy8vIEB0eXBlIENvbG9yXG4kc2VsZWN0LXRyaWFuZ2xlLWNvbG9yOiAkZGFyay1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIHNlbGVjdCBtZW51cy5cbi8vLyBAdHlwZSBDb2xvclxuJHNlbGVjdC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG5AbWl4aW4gZm9ybS1zZWxlY3Qge1xuICAkaGVpZ2h0OiAoJGlucHV0LWZvbnQtc2l6ZSAqIHVuaXRsZXNzLWNhbGMoJGlucHV0LWxpbmUtaGVpZ2h0KSkgKyAoZ2V0LXNpZGUoJGlucHV0LXBhZGRpbmcsICd0b3AnKSArIGdldC1zaWRlKCRpbnB1dC1wYWRkaW5nLCAnYm90dG9tJykpIC0gcmVtLWNhbGMoMSk7XG5cbiAgaGVpZ2h0OiAkaGVpZ2h0O1xuICBtYXJnaW46IDAgMCAkZm9ybS1zcGFjaW5nO1xuICBwYWRkaW5nOiAkaW5wdXQtcGFkZGluZztcblxuICBhcHBlYXJhbmNlOiBub25lO1xuICBib3JkZXI6ICRpbnB1dC1ib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6ICRzZWxlY3QtcmFkaXVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2VsZWN0LWJhY2tncm91bmQ7XG5cbiAgZm9udC1mYW1pbHk6ICRpbnB1dC1mb250LWZhbWlseTtcbiAgZm9udC1zaXplOiAkaW5wdXQtZm9udC1zaXplO1xuICBmb250LXdlaWdodDogJGlucHV0LWZvbnQtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGlucHV0LWxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJGlucHV0LWNvbG9yO1xuXG4gIEBpZiAkc2VsZWN0LXRyaWFuZ2xlLWNvbG9yICE9IHRyYW5zcGFyZW50IHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXRyaWFuZ2xlKCRzZWxlY3QtdHJpYW5nbGUtY29sb3IpO1xuICAgIGJhY2tncm91bmQtb3JpZ2luOiBjb250ZW50LWJveDtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAkZ2xvYmFsLXJpZ2h0ICgtJGZvcm0tc3BhY2luZykgY2VudGVyO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiA5cHggNnB4O1xuXG4gICAgcGFkZGluZy0jeyRnbG9iYWwtcmlnaHR9OiAoJGZvcm0tc3BhY2luZyAqIDEuNSk7XG4gIH1cblxuICBAaWYgaGFzLXZhbHVlKCRpbnB1dC10cmFuc2l0aW9uKSB7XG4gICAgdHJhbnNpdGlvbjogJGlucHV0LXRyYW5zaXRpb247XG4gIH1cblxuICAvLyBGb2N1cyBzdGF0ZVxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJvcmRlcjogJGlucHV0LWJvcmRlci1mb2N1cztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmFja2dyb3VuZC1mb2N1cztcbiAgICBib3gtc2hhZG93OiAkaW5wdXQtc2hhZG93LWZvY3VzO1xuXG4gICAgQGlmIGhhcy12YWx1ZSgkaW5wdXQtdHJhbnNpdGlvbikge1xuICAgICAgdHJhbnNpdGlvbjogJGlucHV0LXRyYW5zaXRpb247XG4gICAgfVxuICB9XG5cbiAgLy8gRGlzYWJsZWQgc3RhdGVcbiAgJjpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJhY2tncm91bmQtZGlzYWJsZWQ7XG4gICAgY3Vyc29yOiAkaW5wdXQtY3Vyc29yLWRpc2FibGVkO1xuICB9XG5cbiAgLy8gSGlkZSB0aGUgZHJvcGRvd24gYXJyb3cgc2hvd24gaW4gbmV3ZXIgSUUgdmVyc2lvbnNcbiAgJjo6LW1zLWV4cGFuZCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gICZbbXVsdGlwbGVdIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgfVxuICAmOm5vdChbbXVsdGlwbGVdKSB7XG4gICAgcGFkZGluZy10b3A6IDA7XG4gICAgcGFkZGluZy1ib3R0b206IDA7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1zZWxlY3Qge1xuICBzZWxlY3Qge1xuICAgIEBpbmNsdWRlIGZvcm0tc2VsZWN0O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgc2xpZGVyXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGhlaWdodCBvZiB0aGUgc2xpZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJHNsaWRlci1oZWlnaHQ6IDAuNXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgc2xpZGVyJ3MgdHJhY2suXG4vLy8gQHR5cGUgQ29sb3JcbiRzbGlkZXItYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHRoZSBhY3RpdmUgZmlsbCBjb2xvciBvZiB0aGUgc2xpZGVyLlxuLy8vIEB0eXBlIENvbG9yXG4kc2xpZGVyLWZpbGwtYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBoZWlnaHQgb2YgdGhlIGhhbmRsZSBvZiB0aGUgc2xpZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJHNsaWRlci1oYW5kbGUtaGVpZ2h0OiAxLjRyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHdpZHRoIG9mIHRoZSBoYW5kbGUgb2YgdGhlIHNsaWRlci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzbGlkZXItaGFuZGxlLXdpZHRoOiAxLjRyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHRoZSBoYW5kbGUgZm9yIHRoZSBzbGlkZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiRzbGlkZXItaGFuZGxlLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmYWRlIGFtb3VudCBvZiBhIGRpc2FibGVkIHNsaWRlci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzbGlkZXItb3BhY2l0eS1kaXNhYmxlZDogMC4yNSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcmFkaXVzIGZvciBzbGlkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc2xpZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXJhbmdlLWlucHV0IHtcbiAgaW5wdXRbdHlwZT0ncmFuZ2UnXSB7ICAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcbiAgICAkbWFyZ2luOiAoJHNsaWRlci1oYW5kbGUtaGVpZ2h0IC0gJHNsaWRlci1oZWlnaHQpICogMC41O1xuXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbi10b3A6ICRtYXJnaW47XG4gICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbjtcblxuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgYm9yZGVyOiAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgIEBpZiBoYXMtdmFsdWUoJHNsaWRlci1yYWRpdXMpIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6ICRzbGlkZXItcmFkaXVzO1xuICAgIH1cblxuICAgICY6Zm9jdXMge1xuICAgICAgb3V0bGluZTogMDtcbiAgICB9XG5cbiAgICAmW2Rpc2FibGVkXSB7XG4gICAgICBvcGFjaXR5OiAkc2xpZGVyLW9wYWNpdHktZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgLy8gc2Fzcy1saW50OmRpc2FibGUgbm8tdmVuZG9yLXByZWZpeFxuXG4gICAgLy8gQ2hyb21lL1NhZmFyaVxuICAgICY6Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrIHtcbiAgICAgIGhlaWdodDogJHNsaWRlci1oZWlnaHQ7XG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xuICAgICAgd2lkdGg6ICRzbGlkZXItaGFuZGxlLXdpZHRoO1xuICAgICAgaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XG4gICAgICBtYXJnaW4tdG9wOiAtJG1hcmdpbjtcblxuICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXZlbmRvci1wcmVmaXhlc1xuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1oYW5kbGUtYmFja2dyb3VuZDtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkc2xpZGVyLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkc2xpZGVyLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGaXJlZm94XG4gICAgJjo6LW1vei1yYW5nZS10cmFjayB7XG4gICAgICBoZWlnaHQ6ICRzbGlkZXItaGVpZ2h0O1xuICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lOyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXZlbmRvci1wcmVmaXhlc1xuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgICY6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICAgICAgd2lkdGg6ICRzbGlkZXItaGFuZGxlLXdpZHRoO1xuICAgICAgaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XG4gICAgICBtYXJnaW4tdG9wOiAtJG1hcmdpbjtcblxuICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lOyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXZlbmRvci1wcmVmaXhlc1xuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1oYW5kbGUtYmFja2dyb3VuZDtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkc2xpZGVyLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkc2xpZGVyLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJbnRlcm5ldCBFeHBsb3JlclxuICAgICY6Oi1tcy10cmFjayB7XG4gICAgICBoZWlnaHQ6ICRzbGlkZXItaGVpZ2h0O1xuXG4gICAgICBib3JkZXI6IDA7XG4gICAgICBib3JkZXItdG9wOiAkbWFyZ2luIHNvbGlkICRib2R5LWJhY2tncm91bmQ7XG4gICAgICBib3JkZXItYm90dG9tOiAkbWFyZ2luIHNvbGlkICRib2R5LWJhY2tncm91bmQ7XG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWJhY2tncm91bmQ7XG5cbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cblxuICAgICY6Oi1tcy10aHVtYiB7XG4gICAgICB3aWR0aDogJHNsaWRlci1oYW5kbGUtd2lkdGg7XG4gICAgICBoZWlnaHQ6ICRzbGlkZXItaGFuZGxlLWhlaWdodDtcbiAgICAgIGJvcmRlcjogMDtcbiAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItaGFuZGxlLWJhY2tncm91bmQ7XG5cbiAgICAgIEBpZiBoYXMtdmFsdWUoJHNsaWRlci1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHNsaWRlci1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjo6LW1zLWZpbGwtbG93ZXIge1xuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1maWxsLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgJjo6LW1zLWZpbGwtdXBwZXIge1xuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgIEBhdC1yb290IHtcbiAgICAgIG91dHB1dCB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwLjVlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRzbGlkZXItaGFuZGxlLWhlaWdodDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm9ncmVzcy1iYXJcbi8vLy9cblxuLy8vIEhlaWdodCBvZiBhIHByb2dyZXNzIGJhci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm9ncmVzcy1oZWlnaHQ6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGEgcHJvZ3Jlc3MgYmFyLlxuLy8vIEB0eXBlIENvbG9yXG4kcHJvZ3Jlc3MtYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQm90dG9tIG1hcmdpbiBvZiBhIHByb2dyZXNzIGJhci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm9ncmVzcy1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgYSBwcm9ncmVzcyBiYXIncyBtZXRlci5cbi8vLyBAdHlwZSBDb2xvclxuJHByb2dyZXNzLW1ldGVyLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgb2YgYSBwcm9ncmVzcyBiYXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvZ3Jlc3MtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tcHJvZ3Jlc3MtZWxlbWVudCB7XG4gIHByb2dyZXNzIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6ICRwcm9ncmVzcy1oZWlnaHQ7XG4gICAgbWFyZ2luLWJvdHRvbTogJHByb2dyZXNzLW1hcmdpbi1ib3R0b207XG5cbiAgICBhcHBlYXJhbmNlOiBub25lO1xuXG4gICAgQGlmIGhhcy12YWx1ZSgkcHJvZ3Jlc3MtcmFkaXVzKSB7XG4gICAgICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xuICAgIH1cblxuICAgIC8vIEZvciBGaXJlZm94XG4gICAgYm9yZGVyOiAwO1xuICAgIGJhY2tncm91bmQ6ICRwcm9ncmVzcy1iYWNrZ3JvdW5kO1xuXG4gICAgJjo6LXdlYmtpdC1wcm9ncmVzcy1iYXIge1xuICAgICAgYmFja2dyb3VuZDogJHByb2dyZXNzLWJhY2tncm91bmQ7XG5cbiAgICAgIEBpZiBoYXMtdmFsdWUoJHByb2dyZXNzLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWUge1xuICAgICAgYmFja2dyb3VuZDogJHByb2dyZXNzLW1ldGVyLWJhY2tncm91bmQ7XG5cbiAgICAgIEBpZiBoYXMtdmFsdWUoJHByb2dyZXNzLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6Oi1tb3otcHJvZ3Jlc3MtYmFyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRwcm9ncmVzcy1tZXRlci1iYWNrZ3JvdW5kO1xuXG4gICAgICBAaWYgaGFzLXZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRmb3VuZGF0aW9uLXBhbGV0dGUge1xuICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgIC8vIEludGVybmV0IEV4cGxvcmVyIHNldHMgdGhlIGZpbGwgd2l0aCBjb2xvclxuICAgICAgICBjb2xvcjogJGNvbG9yO1xuXG4gICAgICAgICY6Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWUge1xuICAgICAgICAgIGJhY2tncm91bmQ6ICRjb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Oi1tb3otcHJvZ3Jlc3MtYmFyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGb3IgSUUgYW5kIEVkZ2VcbiAgICAmOjotbXMtZmlsbCB7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tdmVuZG9yLXByZWZpeGVzXG4gICAgICBAaWYgaGFzLXZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcbiAgICAgIH1cblxuICAgICAgYm9yZGVyOiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIG1ldGVyXG4vLy8vXG5cbi8vLyBIZWlnaHQgb2YgYSBgPG1ldGVyPmAgZWxlbWVudC5cbi8vLyBAdHlwZSBMZW5ndGhcbiRtZXRlci1oZWlnaHQ6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgcmFkaXVzIG9mIGEgYDxtZXRlcj5gIGVsZW1lbnQuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kbWV0ZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYSBgPG1ldGVyPmAgZWxlbWVudC5cbi8vLyBAdHlwZSBDb2xvclxuJG1ldGVyLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIE1ldGVyIGZpbGwgZm9yIGFuIG9wdGltYWwgdmFsdWUgaW4gYSBgPG1ldGVyPmAgZWxlbWVudC5cbi8vLyBAdHlwZSBDb2xvclxuJG1ldGVyLWZpbGwtZ29vZDogJHN1Y2Nlc3MtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBNZXRlciBmaWxsIGZvciBhbiBhdmVyYWdlIHZhbHVlIGluIGEgYDxtZXRlcj5gIGVsZW1lbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiRtZXRlci1maWxsLW1lZGl1bTogJHdhcm5pbmctY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBNZXRlciBmaWxsIGZvciBhIHN1Ym9wdGltYWwgdmFsdWUgaW4gYSBgPG1ldGVyPmAgZWxlbWVudC5cbi8vLyBAdHlwZSBDb2xvclxuJG1ldGVyLWZpbGwtYmFkOiAkYWxlcnQtY29sb3IgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLW1ldGVyLWVsZW1lbnQge1xuICBtZXRlciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAkbWV0ZXItaGVpZ2h0O1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG5cbiAgICAvLyBEaXNhYmxlIGAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmVgIGZyb20gZ2V0dGluZyBwcmVmaXhlZCxcbiAgICAvLyBXZSBoYXZlIGRpc2FibGVkIGF1dG9wcmVmaXhlciBmaXJzdCBhbmQgYXJlIGp1c3Qgb25seSB1c2luZyBcbiAgICAvLyBgLW1vei1hcHBlYXJhbmNlOiBub25lYCBhcyBhIHByZWZpeCBhbmQgbmVnbGVjdGluZyB0aGUgd2Via2l0LlxuICAgIFxuICAgIC8qISBhdXRvcHJlZml4ZXI6IG9mZiAqL1xuICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby12ZW5kb3ItcHJlZml4ZXNcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuXG4gICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XG4gICAgICBib3JkZXItcmFkaXVzOiAkbWV0ZXItcmFkaXVzO1xuICAgIH1cblxuICAgIC8vIEZvciBGaXJlZm94XG4gICAgYm9yZGVyOiAwO1xuICAgIGJhY2tncm91bmQ6ICRtZXRlci1iYWNrZ3JvdW5kO1xuXG4gICAgLy8gQ2hyb21lL1NhZmFyaS9FZGdlXG4gICAgJjo6LXdlYmtpdC1tZXRlci1iYXIge1xuICAgICAgYm9yZGVyOiAwO1xuICAgICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XG4gICAgICB9XG5cbiAgICAgIGJhY2tncm91bmQ6ICRtZXRlci1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgICY6Oi13ZWJraXQtbWV0ZXItaW5uZXItZWxlbWVudCB7XG4gICAgICBAaWYgaGFzLXZhbHVlKCRtZXRlci1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJG1ldGVyLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOjotd2Via2l0LW1ldGVyLW9wdGltdW0tdmFsdWUge1xuICAgICAgYmFja2dyb3VuZDogJG1ldGVyLWZpbGwtZ29vZDtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1tZXRlci1zdWJvcHRpbXVtLXZhbHVlIHtcbiAgICAgIGJhY2tncm91bmQ6ICRtZXRlci1maWxsLW1lZGl1bTtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1tZXRlci1ldmVuLWxlc3MtZ29vZC12YWx1ZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItZmlsbC1iYWQ7XG5cbiAgICAgIEBpZiBoYXMtdmFsdWUoJG1ldGVyLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkbWV0ZXItcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6Oi1tb3otbWV0ZXItYmFyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xuXG4gICAgICBAaWYgaGFzLXZhbHVlKCRtZXRlci1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJG1ldGVyLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOi1tb3otbWV0ZXItb3B0aW11bTo6LW1vei1tZXRlci1iYXIge1xuICAgICAgYmFja2dyb3VuZDogJG1ldGVyLWZpbGwtZ29vZDtcbiAgICB9XG5cbiAgICAmOi1tb3otbWV0ZXItc3ViLW9wdGltdW06Oi1tb3otbWV0ZXItYmFyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRtZXRlci1maWxsLW1lZGl1bTtcbiAgICB9XG5cbiAgICAmOi1tb3otbWV0ZXItc3ViLXN1Yi1vcHRpbXVtOjotbW96LW1ldGVyLWJhciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItZmlsbC1iYWQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYWJpZGVcbi8vLy9cblxuLy8vIFNldHMgaWYgZXJyb3Igc3R5bGVzIHNob3VsZCBiZSBhZGRlZCB0byBpbnB1dHMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGFiaWRlLWlucHV0czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIFNldHMgaWYgZXJyb3Igc3R5bGVzIHNob3VsZCBiZSBhZGRlZCB0byBsYWJlbHMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGFiaWRlLWxhYmVsczogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgdG8gdXNlIGZvciBpbnZhbGlkIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtYmFja2dyb3VuZC1pbnZhbGlkOiBnZXQtY29sb3IoYWxlcnQpICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgdG8gdXNlIGZvciBsYWJlbHMgb2YgaW52YWxpZCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRmb3JtLWxhYmVsLWNvbG9yLWludmFsaWQ6IGdldC1jb2xvcihhbGVydCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIGZvcm0gZXJyb3IgdGV4dC5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LWVycm9yLWNvbG9yOiBnZXQtY29sb3IoYWxlcnQpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIGZvcm0gZXJyb3IgdGV4dC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRpbnB1dC1lcnJvci1mb250LXNpemU6IHJlbS1jYWxjKDEyKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCB3ZWlnaHQgZm9yIGZvcm0gZXJyb3IgdGV4dC5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kaW5wdXQtZXJyb3ItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBTdHlsZXMgdGhlIGJhY2tncm91bmQgYW5kIGJvcmRlciBvZiBhbiBpbnB1dCBmaWVsZCB0byBoYXZlIGFuIGVycm9yIHN0YXRlLlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgWyRhbGVydC1jb2xvcl0gLSBDb2xvciB0byB1c2UgZm9yIHRoZSBiYWNrZ3JvdW5kIGFuZCBib3JkZXIuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYWNrZ3JvdW5kLWxpZ2h0ZW4gWzEwJV0gLSBMaWdodG5lc3MgbGV2ZWwgb2YgdGhlIGJhY2tncm91bmQgY29sb3IuXG5AbWl4aW4gZm9ybS1pbnB1dC1lcnJvcihcbiAgJGJhY2tncm91bmQ6ICRpbnB1dC1iYWNrZ3JvdW5kLWludmFsaWQsXG4gICRiYWNrZ3JvdW5kLWxpZ2h0ZW46IDEwJVxuKSB7XG4gICY6bm90KDpmb2N1cykge1xuICAgIGJvcmRlci1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWl4KCRiYWNrZ3JvdW5kLCAkd2hpdGUsICRiYWNrZ3JvdW5kLWxpZ2h0ZW4pO1xuXG4gICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBlcnJvciBzdHlsZXMgdG8gYSBmb3JtIGVsZW1lbnQsIHVzaW5nIHRoZSB2YWx1ZXMgaW4gdGhlIHNldHRpbmdzIGZpbGUuXG5AbWl4aW4gZm9ybS1lcnJvciB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIG1hcmdpbi10b3A6ICRmb3JtLXNwYWNpbmcgKiAtMC41O1xuICBtYXJnaW4tYm90dG9tOiAkZm9ybS1zcGFjaW5nO1xuXG4gIGZvbnQtc2l6ZTogJGlucHV0LWVycm9yLWZvbnQtc2l6ZTtcbiAgZm9udC13ZWlnaHQ6ICRpbnB1dC1lcnJvci1mb250LXdlaWdodDtcbiAgY29sb3I6ICRpbnB1dC1lcnJvci1jb2xvcjtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1lcnJvciB7XG4gIEBpZiAkYWJpZGUtaW5wdXRzIHtcbiAgICAvLyBFcnJvciBjbGFzcyBmb3IgaW52YWxpZCBpbnB1dHNcbiAgICAuaXMtaW52YWxpZC1pbnB1dCB7XG4gICAgICBAaW5jbHVkZSBmb3JtLWlucHV0LWVycm9yO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkYWJpZGUtbGFiZWxzIHtcbiAgICAvLyBFcnJvciBjbGFzcyBmb3IgbGFiZWxzIG9mIGludmFsaWQgb3V0cHV0c1xuICAgIC5pcy1pbnZhbGlkLWxhYmVsIHtcbiAgICAgIGNvbG9yOiAkZm9ybS1sYWJlbC1jb2xvci1pbnZhbGlkO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZvcm0gZXJyb3IgZWxlbWVudFxuICAuZm9ybS1lcnJvciB7XG4gICAgQGluY2x1ZGUgZm9ybS1lcnJvcjtcblxuICAgICYuaXMtdmlzaWJsZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB0eXBvZ3JhcGh5XG4vLy8vXG5cbi8vIEJhc2UgdHlwb2dyYXBoeSBzdHlsZXMgKHRhZ3Mgb25seSlcbkBpbXBvcnQgJ2Jhc2UnO1xuXG4vLyBUeXBvZ3JhcGh5IGhlbHBlciBjbGFzc2VzIChjbGFzc2VzIG9ubHkpXG5AaW1wb3J0ICdoZWxwZXJzJztcblxuLy8gVGV4dCBhbGlnbm1lbnQgY2xhc3Nlc1xuQGltcG9ydCAnYWxpZ25tZW50JztcblxuLy8gUHJpbnQgc3R5bGVzXG5AaW1wb3J0ICdwcmludCc7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXR5cG9ncmFwaHkge1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXR5cG9ncmFwaHktYmFzZTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10eXBvZ3JhcGh5LWhlbHBlcnM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdGV4dC1hbGlnbm1lbnQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJpbnQtc3R5bGVzO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHR5cG9ncmFwaHktYmFzZVxuLy8vL1xuXG4vLyBCYXNlIFR5cG9ncmFwaHlcbi8vIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtXG4vLyBUaGVzZSBhcmUgc3R5bGVzIGFwcGxpZWQgdG8gYmFzaWMgSFRNTCB0YWdzLCBpbmNsdWRpbmc6XG4vLyAgIC0gUGFyYWdyYXBocyA8cD5cbi8vICAgLSBCb2xkL2l0YWxpY3MgPGI+IDxzdHJvbmc+IDxpPiA8ZW0+XG4vLyAgIC0gU21hbGwgdGV4dCA8c21hbGw+XG4vLyAgIC0gSGVhZGluZ3MgPGgxPi08aDY+XG4vLyAgIC0gQW5jaG9ycyA8YT5cbi8vICAgLSBEaXZpZGVycyA8aHI+XG4vLyAgIC0gTGlzdHMgPHVsPiA8b2w+IDxkbD5cbi8vICAgLSBCbG9ja3F1b3RlcyA8YmxvY2txdW90ZT5cbi8vICAgLSBDb2RlIGJsb2NrcyA8Y29kZT5cbi8vICAgLSBBYmJyZXZpYXRpb25zIDxhYmJyPlxuLy8gICAtIENpdGF0aW9ucyA8Y2l0ZT5cbi8vICAgLSBLZXlzdHJva2VzIDxrYmQ+XG5cbi8vLyBGb250IGZhbWlseSBmb3IgaGVhZGVyIGVsZW1lbnRzLlxuLy8vIEB0eXBlIFN0cmluZyB8IExpc3RcbiRoZWFkZXItZm9udC1mYW1pbHk6ICRib2R5LWZvbnQtZmFtaWx5ICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3ZWlnaHQgb2YgaGVhZGVycy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRoZWFkZXItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbCAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc3R5bGUgKGUuZy4gaXRhbGljaXplZCkgb2YgaGVhZGVycy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRoZWFkZXItZm9udC1zdHlsZTogbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzdGFjayB1c2VkIGZvciBlbGVtZW50cyB0aGF0IHVzZSBtb25vc3BhY2VkIHR5cGUsIHN1Y2ggYXMgY29kZSBzYW1wbGVzXG4vLy8gQHR5cGUgU3RyaW5nIHwgTGlzdFxuJGZvbnQtZmFtaWx5LW1vbm9zcGFjZTogQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCBDb3VyaWVyLCBtb25vc3BhY2UgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiBoZWFkZXJzLlxuLy8vIEB0eXBlIENvbG9yXG4kaGVhZGVyLWNvbG9yOiBpbmhlcml0ICFkZWZhdWx0O1xuXG4vLy8gTGluZSBoZWlnaHQgb2YgaGVhZGVycy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRoZWFkZXItbGluZWhlaWdodDogMS40ICFkZWZhdWx0O1xuXG4vLy8gQm90dG9tIG1hcmdpbiBvZiBoZWFkZXJzLlxuLy8vIEB0eXBlIE51bWJlclxuJGhlYWRlci1tYXJnaW4tYm90dG9tOiAwLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBTdHlsZXMgZm9yIGhlYWRpbmdzIGF0IHZhcmlvdXMgc2NyZWVuIHNpemVzLiBFYWNoIGtleSBpcyBhIGJyZWFrcG9pbnQsIGFuZCBlYWNoIHZhbHVlIGlzIGEgbWFwIG9mIGhlYWRpbmcgc3R5bGVzLlxuLy8vIEB0eXBlIE1hcFxuJGhlYWRlci1zdHlsZXM6IChcbiAgc21hbGw6IChcbiAgICAnaDEnOiAoJ2ZvbnQtc2l6ZSc6IDI0KSxcbiAgICAnaDInOiAoJ2ZvbnQtc2l6ZSc6IDIwKSxcbiAgICAnaDMnOiAoJ2ZvbnQtc2l6ZSc6IDE5KSxcbiAgICAnaDQnOiAoJ2ZvbnQtc2l6ZSc6IDE4KSxcbiAgICAnaDUnOiAoJ2ZvbnQtc2l6ZSc6IDE3KSxcbiAgICAnaDYnOiAoJ2ZvbnQtc2l6ZSc6IDE2KSxcbiAgKSxcbiAgbWVkaXVtOiAoXG4gICAgJ2gxJzogKCdmb250LXNpemUnOiA0OCksXG4gICAgJ2gyJzogKCdmb250LXNpemUnOiA0MCksXG4gICAgJ2gzJzogKCdmb250LXNpemUnOiAzMSksXG4gICAgJ2g0JzogKCdmb250LXNpemUnOiAyNSksXG4gICAgJ2g1JzogKCdmb250LXNpemUnOiAyMCksXG4gICAgJ2g2JzogKCdmb250LXNpemUnOiAxNiksXG4gICksXG4pICFkZWZhdWx0O1xuXG4vLyAkaGVhZGVyLXN0eWxlcyBtYXAgaXMgYnVpbHQgZnJvbSAkaGVhZGVyLXNpemVzIGluIG9yZGVyIHRvIGVuc3VyZSBkb3dud2FyZCBjb21wYXRpYmlsaXR5XG4vLyB3aGVuICRoZWFkZXItc2l6ZXMgaXMgZGVwcmVjaWF0ZWQsICRoZWFkZXItc3R5bGVzIG5lZWRzIHRvIGdldCAhZGVmYXVsdCB2YWx1ZXMgbGlrZSBzZXR0aW5ncy5zY3NzXG5AZnVuY3Rpb24gYnVpbGRfZnJvbV9oZWFkZXItc2l6ZXMoJGhlYWRlci1zaXplcykge1xuICBAd2FybiAnTm90ZSwgdGhhdCAkaGVhZGVyLXNpemVzIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggJGhlYWRlci1zdHlsZXMuICRoZWFkZXItc2l6ZXMgc3RpbGwgd29ya3MsIGJ1dCBpdCBpcyBnb2luZyB0byBiZSBkZXByZWNpYXRlZC4nO1xuICAkaGVhZGVyLXN0eWxlczogKCk7XG4gIEBlYWNoICRzaXplLCAkaGVhZGVycyBpbiAkaGVhZGVyLXNpemVzIHtcbiAgICAkaGVhZGVyLW1hcDogKCk7XG4gICAgQGVhY2ggJGhlYWRlciwgJGZvbnQtc2l6ZSBpbiAkaGVhZGVycyB7XG4gICAgICAkaGVhZGVyLW1hcDogbWFwLW1lcmdlKCRoZWFkZXItbWFwLCAoJGhlYWRlcjogKCdmb250LXNpemUnOiAkZm9udC1zaXplKSkpO1xuICAgIH1cbiAgICAkaGVhZGVyLXN0eWxlczogbWFwLW1lcmdlKCRoZWFkZXItc3R5bGVzLCAoJHNpemU6ICRoZWFkZXItbWFwKSk7XG4gIH1cbiAgQHJldHVybiAkaGVhZGVyLXN0eWxlcztcbn1cblxuLy8gSWYgaXQgZXhpc3RzICRoZWFkZXJzLXNpemVzIGlzIHVzZWQgdG8gYnVpbGQgJGhlYWRlci1zdHlsZXMuIFNlZSB0aGUgZG9jdW1lbnRhdGlvbi5cbkBpZiB2YXJpYWJsZS1leGlzdHMoaGVhZGVyLXNpemVzKSB7XG4gICRoZWFkZXItc3R5bGVzOiBidWlsZF9mcm9tX2hlYWRlci1zaXplcygkaGVhZGVyLXNpemVzKTtcbn1cblxuLy8vIFRleHQgcmVuZGVyaW5nIG1ldGhvZCBvZiBoZWFkZXJzLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGhlYWRlci10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5ICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIG9mIGA8c21hbGw+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzbWFsbC1mb250LXNpemU6IDgwJSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIGA8c21hbGw+YCBlbGVtZW50cyB3aGVuIHBsYWNlZCBpbnNpZGUgaGVhZGVycy5cbi8vLyBAdHlwZSBDb2xvclxuJGhlYWRlci1zbWFsbC1mb250LWNvbG9yOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBMaW5lIGhlaWdodCBvZiB0ZXh0IGluc2lkZSBgPHA+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwYXJhZ3JhcGgtbGluZWhlaWdodDogMS42ICFkZWZhdWx0O1xuXG4vLy8gQm90dG9tIG1hcmdpbiBvZiBwYXJhZ3JhcGhzLlxuLy8vIEB0eXBlIE51bWJlclxuJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gVGV4dCByZW5kZXJpbmcgbWV0aG9kIGZvciBwYXJhZ3JhcGggdGV4dC5cbi8vLyBAdHlwZSBTdHJpbmdcbiRwYXJhZ3JhcGgtdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eSAhZGVmYXVsdDtcblxuLy8vIFVzZSB0aGUgYC5jb2RlLWlubGluZWAgY29tcG9uZW50IGFzIGRlZmF1bHQgZm9yIGA8Y29kZT5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRlbmFibGUtY29kZS1pbmxpbmU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIGZvciBsaW5rcy5cbi8vLyBAdHlwZSBDb2xvclxuJGFuY2hvci1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIGZvciBsaW5rcyBvbiBob3Zlci5cbi8vLyBAdHlwZSBDb2xvclxuJGFuY2hvci1jb2xvci1ob3Zlcjogc2NhbGUtY29sb3IoJGFuY2hvci1jb2xvciwgJGxpZ2h0bmVzczogLTE0JSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgZGVjb3JhdGlvbiBmb3IgbGlua3MuXG4vLy8gQHR5cGUgU3RyaW5nXG4kYW5jaG9yLXRleHQtZGVjb3JhdGlvbjogbm9uZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdGV4dCBkZWNvcmF0aW9uIGZvciBsaW5rcyBvbiBob3Zlci5cbi8vLyBAdHlwZSBTdHJpbmdcbiRhbmNob3ItdGV4dC1kZWNvcmF0aW9uLWhvdmVyOiBub25lICFkZWZhdWx0O1xuXG4vLy8gTWF4aW11bSB3aWR0aCBvZiBhIGRpdmlkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kaHItd2lkdGg6ICRnbG9iYWwtd2lkdGggIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBmb3IgYSBkaXZpZGVyLlxuLy8vIEB0eXBlIExpc3RcbiRoci1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IG1hcmdpbiBmb3IgYSBkaXZpZGVyLlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiRoci1tYXJnaW46IHJlbS1jYWxjKDIwKSBhdXRvICFkZWZhdWx0O1xuXG4vLy8gTGluZSBoZWlnaHQgZm9yIGl0ZW1zIGluIGEgbGlzdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsaXN0LWxpbmVoZWlnaHQ6ICRwYXJhZ3JhcGgtbGluZWhlaWdodCAhZGVmYXVsdDtcblxuLy8vIEJvdHRvbSBtYXJnaW4gZm9yIGl0ZW1zIGluIGEgbGlzdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsaXN0LW1hcmdpbi1ib3R0b206ICRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbSAhZGVmYXVsdDtcblxuLy8vIEJ1bGxldCB0eXBlIHRvIHVzZSBmb3IgdW5vcmRlcmVkIGxpc3RzIChlLmcuLCBgc3F1YXJlYCwgYGNpcmNsZWAsIGBkaXNjYCkuXG4vLy8gQHR5cGUgU3RyaW5nXG4kbGlzdC1zdHlsZS10eXBlOiBkaXNjICFkZWZhdWx0O1xuXG4vLy8gUG9zaXRpb25pbmcgZm9yIGJ1bGxldHMgb24gdW5vcmRlcmVkIGxpc3QgaXRlbXMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kbGlzdC1zdHlsZS1wb3NpdGlvbjogb3V0c2lkZSAhZGVmYXVsdDtcblxuLy8vIExlZnQgKG9yIHJpZ2h0KSBtYXJnaW4gZm9yIGxpc3RzLlxuLy8vIEB0eXBlIE51bWJlclxuJGxpc3Qtc2lkZS1tYXJnaW46IDEuMjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBMZWZ0IChvciByaWdodCkgbWFyZ2luIGZvciBhIGxpc3QgaW5zaWRlIGEgbGlzdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsaXN0LW5lc3RlZC1zaWRlLW1hcmdpbjogMS4yNXJlbSAhZGVmYXVsdDtcblxuLy8vIEJvdHRvbSBtYXJnaW4gZm9yIGA8ZGw+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkZWZubGlzdC1tYXJnaW4tYm90dG9tOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3ZWlnaHQgZm9yIGA8ZHQ+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRkZWZubGlzdC10ZXJtLXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcblxuLy8vIFNwYWNpbmcgYmV0d2VlbiBgPGR0PmAgYW5kIGA8ZGQ+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkZWZubGlzdC10ZXJtLW1hcmdpbi1ib3R0b206IDAuM3JlbSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgYDxibG9ja3F1b3RlPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRibG9ja3F1b3RlLWNvbG9yOiAkZGFyay1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBpbnNpZGUgYSBgPGJsb2NrcXVvdGU+YCBlbGVtZW50LlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiRibG9ja3F1b3RlLXBhZGRpbmc6IHJlbS1jYWxjKDkgMjAgMCAxOSkgIWRlZmF1bHQ7XG5cbi8vLyBTaWRlIGJvcmRlciBmb3IgYDxibG9ja3F1b3RlPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTGlzdFxuJGJsb2NrcXVvdGUtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gVXNlIHRoZSBgLmNpdGUtYmxvY2tgIGNvbXBvbmVudCBhcyBkZWZhdWx0IGZvciBgPGNpdGU+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kZW5hYmxlLWNpdGUtYmxvY2s6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBGb250IGZhbWlseSBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBTdHJpbmcgfCBMaXN0XG4ka2V5c3Ryb2tlLWZvbnQ6ICRmb250LWZhbWlseS1tb25vc3BhY2UgIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIGZvciBgPGtiZD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIENvbG9yXG4ka2V5c3Ryb2tlLWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBgPGtiZD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIENvbG9yXG4ka2V5c3Ryb2tlLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4ka2V5c3Ryb2tlLXBhZGRpbmc6IHJlbS1jYWxjKDIgNCAwKSAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciByYWRpdXMgZm9yIGA8a2JkPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJGtleXN0cm9rZS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gQm90dG9tIGJvcmRlciBzdHlsZSBmb3IgYDxhYmJyPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTGlzdFxuJGFiYnItdW5kZXJsaW5lOiAxcHggZG90dGVkICRibGFjayAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tdHlwb2dyYXBoeS1iYXNlIHtcbiAgLy8gVHlwb2dyYXBoeSByZXNldHNcbiAgZGl2LFxuICBkbCxcbiAgZHQsXG4gIGRkLFxuICB1bCxcbiAgb2wsXG4gIGxpLFxuICBoMSxcbiAgaDIsXG4gIGgzLFxuICBoNCxcbiAgaDUsXG4gIGg2LFxuICBwcmUsXG4gIGZvcm0sXG4gIHAsXG4gIGJsb2NrcXVvdGUsXG4gIHRoLFxuICB0ZCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAvLyBQYXJhZ3JhcGhzXG4gIHAge1xuICAgIG1hcmdpbi1ib3R0b206ICRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTtcblxuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBsaW5lLWhlaWdodDogJHBhcmFncmFwaC1saW5laGVpZ2h0O1xuICAgIHRleHQtcmVuZGVyaW5nOiAkcGFyYWdyYXBoLXRleHQtcmVuZGVyaW5nO1xuICB9XG5cbiAgLy8gRW1waGFzaXplZCB0ZXh0XG4gIGVtLFxuICBpIHtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gIH1cblxuICAvLyBTdHJvbmcgdGV4dFxuICBzdHJvbmcsXG4gIGIge1xuICAgIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICB9XG5cbiAgLy8gU21hbGwgdGV4dFxuICBzbWFsbCB7XG4gICAgZm9udC1zaXplOiAkc21hbGwtZm9udC1zaXplO1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICB9XG5cbiAgLy8gSGVhZGluZ3NcbiAgaDEsIC5oMSxcbiAgaDIsIC5oMixcbiAgaDMsIC5oMyxcbiAgaDQsIC5oNCxcbiAgaDUsIC5oNSxcbiAgaDYsIC5oNiB7XG4gICAgZm9udC1mYW1pbHk6ICRoZWFkZXItZm9udC1mYW1pbHk7XG4gICAgZm9udC1zdHlsZTogJGhlYWRlci1mb250LXN0eWxlO1xuICAgIGZvbnQtd2VpZ2h0OiAkaGVhZGVyLWZvbnQtd2VpZ2h0O1xuICAgIGNvbG9yOiAkaGVhZGVyLWNvbG9yO1xuICAgIHRleHQtcmVuZGVyaW5nOiAkaGVhZGVyLXRleHQtcmVuZGVyaW5nO1xuXG4gICAgc21hbGwge1xuICAgICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgICBjb2xvcjogJGhlYWRlci1zbWFsbC1mb250LWNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC8vIEhlYWRpbmcgc3R5bGVzXG4gIEBlYWNoICRzaXplLCAkaGVhZGVycyBpbiAkaGVhZGVyLXN0eWxlcyB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgQGVhY2ggJGhlYWRlciwgJGhlYWRlci1kZWZzIGluICRoZWFkZXJzIHtcbiAgICAgICAgJGZvbnQtc2l6ZS10ZW1wOiAxcmVtO1xuICAgICAgICAjeyRoZWFkZXJ9LCAuI3skaGVhZGVyfSB7XG5cbiAgICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBmb250LXNpemUpIHtcbiAgICAgICAgICAgICRmb250LXNpemUtdGVtcDogcmVtLWNhbGMobWFwLWdldCgkaGVhZGVyLWRlZnMsIGZvbnQtc2l6ZSkpO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplLXRlbXA7XG4gICAgICAgICAgfSBAZWxzZSBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIGZzKSB7XG4gICAgICAgICAgICAkZm9udC1zaXplLXRlbXA6IHJlbS1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBmcykpO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplLXRlbXA7XG4gICAgICAgICAgfSBAZWxzZSBpZiAkc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LXNpemUtdGVtcDtcbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIG1hcC1oYXMta2V5KCRoZWFkZXItZGVmcywgbGluZS1oZWlnaHQpIHtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiB1bml0bGVzcy1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBsaW5lLWhlaWdodCksICRmb250LXNpemUtdGVtcCk7XG4gICAgICAgICAgfSBAZWxzZSBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIGxoKSB7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogdW5pdGxlc3MtY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgbGgpLCAkZm9udC1zaXplLXRlbXApO1xuICAgICAgICAgIH0gQGVsc2UgaWYgJHNpemUgPT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IHVuaXRsZXNzLWNhbGMoJGhlYWRlci1saW5laGVpZ2h0LCAkZm9udC1zaXplLXRlbXApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIG1hcmdpbi10b3ApIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBtYXJnaW4tdG9wKSk7XG4gICAgICAgICAgfSBAZWxzZSBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIG10KSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiByZW0tY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgbXQpKTtcbiAgICAgICAgICB9IEBlbHNlIGlmICRzaXplID09ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIG1hcmdpbi1ib3R0b20pIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBtYXJnaW4tYm90dG9tKSk7XG4gICAgICAgICAgfSBAZWxzZSBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIG1iKSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgbWIpKTtcbiAgICAgICAgICB9IEBlbHNlIGlmICRzaXplID09ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKCRoZWFkZXItbWFyZ2luLWJvdHRvbSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTGlua3NcbiAgYSB7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgY29sb3I6ICRhbmNob3ItY29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiAkYW5jaG9yLXRleHQtZGVjb3JhdGlvbjtcblxuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICBjb2xvcjogJGFuY2hvci1jb2xvci1ob3ZlcjtcbiAgICAgIEBpZiAkYW5jaG9yLXRleHQtZGVjb3JhdGlvbi1ob3ZlciAhPSAkYW5jaG9yLXRleHQtZGVjb3JhdGlvbiB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogJGFuY2hvci10ZXh0LWRlY29yYXRpb24taG92ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaW1nIHtcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gIH1cblxuICAvLyBIb3Jpem9udGFsIHJ1bGVcbiAgaHIge1xuICAgIGNsZWFyOiBib3RoO1xuXG4gICAgbWF4LXdpZHRoOiAkaHItd2lkdGg7XG4gICAgaGVpZ2h0OiAwO1xuICAgIG1hcmdpbjogJGhyLW1hcmdpbjtcblxuICAgIGJvcmRlci10b3A6IDA7XG4gICAgYm9yZGVyLXJpZ2h0OiAwO1xuICAgIGJvcmRlci1ib3R0b206ICRoci1ib3JkZXI7XG4gICAgYm9yZGVyLWxlZnQ6IDA7XG4gIH1cblxuICAvLyBMaXN0c1xuICB1bCxcbiAgb2wsXG4gIGRsIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkbGlzdC1tYXJnaW4tYm90dG9tO1xuICAgIGxpc3Qtc3R5bGUtcG9zaXRpb246ICRsaXN0LXN0eWxlLXBvc2l0aW9uO1xuICAgIGxpbmUtaGVpZ2h0OiAkbGlzdC1saW5laGVpZ2h0O1xuICB9XG5cbiAgLy8gTGlzdCBpdGVtc1xuICBsaSB7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICB9XG5cbiAgLy8gVW5vcmRlcmVkIGxpc3RzXG4gIHVsIHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkbGlzdC1zaWRlLW1hcmdpbjtcbiAgICBsaXN0LXN0eWxlLXR5cGU6ICRsaXN0LXN0eWxlLXR5cGU7XG4gIH1cblxuICAvLyBPcmRlcmVkIGxpc3RzXG4gIG9sIHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkbGlzdC1zaWRlLW1hcmdpbjtcbiAgfVxuXG4gIC8vIE5lc3RlZCB1bm9yZGVyZWQvb3JkZXJlZCBsaXN0c1xuICB1bCwgb2wge1xuICAgICYgJiB7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkbGlzdC1uZXN0ZWQtc2lkZS1tYXJnaW47XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbiAgfVxuXG4gIC8vIERlZmluaXRpb24gbGlzdHNcbiAgZGwge1xuICAgIG1hcmdpbi1ib3R0b206ICRkZWZubGlzdC1tYXJnaW4tYm90dG9tO1xuXG4gICAgZHQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJGRlZm5saXN0LXRlcm0tbWFyZ2luLWJvdHRvbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiAkZGVmbmxpc3QtdGVybS13ZWlnaHQ7XG4gICAgfVxuICB9XG5cbiAgLy8gQmxvY2txdW90ZXNcbiAgYmxvY2txdW90ZSB7XG4gICAgbWFyZ2luOiAwIDAgJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tO1xuICAgIHBhZGRpbmc6ICRibG9ja3F1b3RlLXBhZGRpbmc7XG4gICAgYm9yZGVyLSN7JGdsb2JhbC1sZWZ0fTogJGJsb2NrcXVvdGUtYm9yZGVyO1xuXG4gICAgJiwgcCB7XG4gICAgICBsaW5lLWhlaWdodDogJHBhcmFncmFwaC1saW5laGVpZ2h0O1xuICAgICAgY29sb3I6ICRibG9ja3F1b3RlLWNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC8vIElubGluZSBDaXRhdGlvbnNcbiAgQGlmICgkZW5hYmxlLWNpdGUtYmxvY2sgPT0gdHJ1ZSkge1xuICAgIGNpdGUge1xuICAgICAgLy8gRXh0ZW5kaW5nIGEgY2xhc3MgaXMgbm90IHJlY29tbWVuZGVkLlxuICAgICAgLy8gVE9ETzogQnJlYWsgdGhlIHR5cG9ncmFwaHktYmFzZS90eXBvZ3JhcGh5LWhlbHBlcnMgc2VwYXJhdGlvblxuICAgICAgQGV4dGVuZCAuY2l0ZS1ibG9jaztcbiAgICB9XG4gIH1cblxuICAvLyBBYmJyZXZpYXRpb25zXG4gIGFiYnIsIGFiYnJbdGl0bGVdIHtcbiAgICBib3JkZXItYm90dG9tOiAkYWJici11bmRlcmxpbmU7XG4gICAgY3Vyc29yOiBoZWxwO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgfVxuXG4gIC8vIEZpZ3VyZXNcbiAgZmlndXJlIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICAvLyBDb2RlXG4gIEBpZiAoJGVuYWJsZS1jb2RlLWlubGluZSA9PSB0cnVlKSB7XG4gICAgY29kZSB7XG4gICAgICBAZXh0ZW5kIC5jb2RlLWlubGluZTtcbiAgICB9XG4gIH1cblxuICAvLyBLZXlzdHJva2VzXG4gIGtiZCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6ICRrZXlzdHJva2UtcGFkZGluZztcblxuICAgIGJhY2tncm91bmQtY29sb3I6ICRrZXlzdHJva2UtYmFja2dyb3VuZDtcblxuICAgIGZvbnQtZmFtaWx5OiAka2V5c3Ryb2tlLWZvbnQ7XG4gICAgY29sb3I6ICRrZXlzdHJva2UtY29sb3I7XG5cbiAgICBAaWYgaGFzLXZhbHVlKCRrZXlzdHJva2UtcmFkaXVzKSB7XG4gICAgICBib3JkZXItcmFkaXVzOiAka2V5c3Ryb2tlLXJhZGl1cztcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB0eXBvZ3JhcGh5LWhlbHBlcnNcbi8vLy9cblxuLy8vIERlZmF1bHQgZm9udCBzaXplIGZvciBsZWFkIHBhcmFncmFwaHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGVhZC1mb250LXNpemU6ICRnbG9iYWwtZm9udC1zaXplICogMS4yNSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbGluZSBoZWlnaHQgZm9yIGxlYWQgcGFyYWdyYXBocy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRsZWFkLWxpbmVoZWlnaHQ6IDEuNiAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbGluZSBoZWlnaHQgZm9yIHN1YmhlYWRlcnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3ViaGVhZGVyLWxpbmVoZWlnaHQ6IDEuNCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3Igc3ViaGVhZGVycy5cbi8vLyBAdHlwZSBDb2xvclxuJHN1YmhlYWRlci1jb2xvcjogJGRhcmstZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCB3ZWlnaHQgZm9yIHN1YmhlYWRlcnMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kc3ViaGVhZGVyLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRvcCBtYXJnaW4gZm9yIHN1YmhlYWRlcnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3ViaGVhZGVyLW1hcmdpbi10b3A6IDAuMnJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm90dG9tIG1hcmdpbiBmb3Igc3ViaGVhZGVycy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzdWJoZWFkZXItbWFyZ2luLWJvdHRvbTogMC41cmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIHN0YXRpc3RpYyBudW1iZXJzLlxuLy8vIEB0eXBlIE51bWJlclxuJHN0YXQtZm9udC1zaXplOiAyLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIGZvciBgLmNpdGUtYmxvY2tgIGNvbXBvbmVudC5cbi8vLyBAdHlwZSBDb2xvclxuJGNpdGUtY29sb3I6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHNpemUgZm9yIGAuY2l0ZS1ibG9ja2AgY29tcG9uZW50LlxuLy8vIEB0eXBlIE51bWJlclxuJGNpdGUtZm9udC1zaXplOiByZW0tY2FsYygxMykgIWRlZmF1bHQ7XG5cbi8vLyBQc2V1ZG8gY29udGVudCBmb3IgYC5jaXRlLWJsb2NrYCBjb21wb25lbnQuXG4vLy8gQHR5cGUgU3RyaW5nXG4kY2l0ZS1wc2V1ZG8tY29udGVudDogJ1xcMjAxNCBcXDAwMjAnICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBjb2xvciBvZiBgLmNvZGUtaW5saW5lYCBhbmQgYC5jb2RlLWJsb2NrYCBjb21wb25lbnRzLlxuLy8vIEB0eXBlIENvbG9yXG4kY29kZS1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gRm9udCBmYW1pbHkgb2YgYC5jb2RlLWlubGluZWAgYW5kIGAuY29kZS1ibG9ja2AgY29tcG9uZW50cy5cbi8vLyBAdHlwZSBTdHJpbmcgfCBMaXN0XG4kY29kZS1mb250LWZhbWlseTogJGZvbnQtZmFtaWx5LW1vbm9zcGFjZSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgd2VpZ2h0IG9mIHRleHQgaW4gYC5jb2RlLWlubGluZWAgYW5kIGAuY29kZS1ibG9ja2AgY29tcG9uZW50cy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRjb2RlLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGAuY29kZS1pbmxpbmVgIGFuZCBgLmNvZGUtYmxvY2tgIGNvbXBvbmVudHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRjb2RlLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIGFyb3VuZCBgLmNvZGUtaW5saW5lYCBhbmQgYC5jb2RlLWJsb2NrYCBjb21wb25lbnRzLlxuLy8vIEB0eXBlIExpc3RcbiRjb2RlLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgYXJvdW5kIHRleHQgb2YgdGhlIGAuY29kZS1pbmxpbmVgIGNvbXBvbmVudC5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4kY29kZS1wYWRkaW5nOiByZW0tY2FsYygyIDUgMSkgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGFyb3VuZCB0ZXh0IG9mIHRoZSBgLmNvZGUtYmxvY2tgIGNvbXBvbmVudC5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4kY29kZS1ibG9jay1wYWRkaW5nOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gTWFyZ2luIHVuZGVyIHRoZSBgLmNvZGUtYmxvY2tgIGNvbXBvbmVudC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRjb2RlLWJsb2NrLW1hcmdpbi1ib3R0b206IDEuNXJlbSAhZGVmYXVsdDtcblxuQG1peGluIGNpdGUtYmxvY2sge1xuICBkaXNwbGF5OiBibG9jaztcbiAgY29sb3I6ICRjaXRlLWNvbG9yO1xuICBmb250LXNpemU6ICRjaXRlLWZvbnQtc2l6ZTtcblxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJGNpdGUtcHNldWRvLWNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIEFkZCBiYXNpYyBzdHlsZXMgZm9yIGEgY29kZSBoZWxwZXIuXG4vLy8gU2VlIGBjb2RlLWlubGluZWAgYW5kIGBjb2RlLWJsb2NrYCBtaXhpbnMuXG5AbWl4aW4gY29kZS1zdHlsZSB7XG4gIGJvcmRlcjogJGNvZGUtYm9yZGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29kZS1iYWNrZ3JvdW5kO1xuXG4gIGZvbnQtZmFtaWx5OiAkY29kZS1mb250LWZhbWlseTtcbiAgZm9udC13ZWlnaHQ6ICRjb2RlLWZvbnQtd2VpZ2h0O1xuICBjb2xvcjogJGNvZGUtY29sb3I7XG59XG5cbi8vLyBNYWtlIGNvZGUgaGVscGVyIGZyb20gdGhlIGBjb2RlLXN0eWxlYCBtaXhpbiBpbmxpbmUuXG4vLy8gVXNlZCB0byBnZW5lcmF0ZSBgLmNvZGUtaW5saW5lYFxuQG1peGluIGNvZGUtaW5saW5lIHtcbiAgZGlzcGxheTogaW5saW5lO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcblxuICBwYWRkaW5nOiAkY29kZS1wYWRkaW5nO1xufVxuXG4vLy8gTWFrZSBjb2RlIGhlbHBlciBmcm9tIHRoZSBgY29kZS1zdHlsZWAgbWl4aW4gYSBibG9jay5cbi8vLyBVc2VkIHRvIGdlbmVyYXRlIGAuY29kZS1ibG9ja2BcbkBtaXhpbiBjb2RlLWJsb2NrIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG92ZXJmbG93OiBhdXRvO1xuICB3aGl0ZS1zcGFjZTogcHJlO1xuXG4gIHBhZGRpbmc6ICRjb2RlLWJsb2NrLXBhZGRpbmc7XG4gIG1hcmdpbi1ib3R0b206ICRjb2RlLWJsb2NrLW1hcmdpbi1ib3R0b207XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXR5cG9ncmFwaHktaGVscGVycyB7XG4gIC8vIFVzZSB0byBjcmVhdGUgYSBzdWJoZWFkaW5nIHVuZGVyIGEgbWFpbiBoZWFkZXJcbiAgLy8gTWFrZSBzdXJlIHlvdSBwYWlyIHRoZSB0d28gZWxlbWVudHMgaW4gYSA8aGVhZGVyPiBlbGVtZW50LCBsaWtlIHRoaXM6XG4gIC8vIDxoZWFkZXI+XG4gIC8vICAgPGgxPkhlYWRpbmc8L2gxPlxuICAvLyAgIDxoMj5TdWJoZWFkaW5nPC9oMj5cbiAgLy8gPC9oZWFkZXI+XG4gIC5zdWJoZWFkZXIge1xuICAgIG1hcmdpbi10b3A6ICRzdWJoZWFkZXItbWFyZ2luLXRvcDtcbiAgICBtYXJnaW4tYm90dG9tOiAkc3ViaGVhZGVyLW1hcmdpbi1ib3R0b207XG5cbiAgICBmb250LXdlaWdodDogJHN1YmhlYWRlci1mb250LXdlaWdodDtcbiAgICBsaW5lLWhlaWdodDogJHN1YmhlYWRlci1saW5laGVpZ2h0O1xuICAgIGNvbG9yOiAkc3ViaGVhZGVyLWNvbG9yO1xuICB9XG5cbiAgLy8gVXNlIHRvIHN0eWxlIGFuIGludHJvZHVjdG9yeSBsZWFkLCBkZWNrLCBibHVyYiwgZXRjLlxuICAubGVhZCB7XG4gICAgZm9udC1zaXplOiAkbGVhZC1mb250LXNpemU7XG4gICAgbGluZS1oZWlnaHQ6ICRsZWFkLWxpbmVoZWlnaHQ7XG4gIH1cblxuICAvLyBVc2UgdG8gc3R5bGUgYSBsYXJnZSBudW1iZXIgdG8gZGlzcGxheSBhIHN0YXRpc3RpY1xuICAuc3RhdCB7XG4gICAgZm9udC1zaXplOiAkc3RhdC1mb250LXNpemU7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG5cbiAgICBwICsgJiB7XG4gICAgICBtYXJnaW4tdG9wOiAtMXJlbTtcbiAgICB9XG4gIH1cblxuICB1bCwgb2wge1xuICAgIC8vIFVzZSB0byByZW1vdmUgbnVtYmVycyBmcm9tIG9yZGVyZWQgbGlzdCAmIGJ1bGxldHMgZnJvbSB1bm9yZGVyZWQgbGlzdFxuICAgICYubm8tYnVsbGV0IHtcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IDA7XG4gICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC5jaXRlLWJsb2NrIHtcbiAgICBAaW5jbHVkZSBjaXRlLWJsb2NrO1xuICB9XG5cbiAgLmNvZGUtaW5saW5lIHtcbiAgICBAaW5jbHVkZSBjb2RlLXN0eWxlO1xuICAgIEBpbmNsdWRlIGNvZGUtaW5saW5lO1xuICB9XG5cbiAgLmNvZGUtYmxvY2sge1xuICAgIEBpbmNsdWRlIGNvZGUtc3R5bGU7XG4gICAgQGluY2x1ZGUgY29kZS1ibG9jaztcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG5AbWl4aW4gZm91bmRhdGlvbi10ZXh0LWFsaWdubWVudCB7XG4gIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgIEBlYWNoICRhbGlnbiBpbiAobGVmdCwgcmlnaHQsIGNlbnRlciwganVzdGlmeSkge1xuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgIC4jeyRzaXplfS10ZXh0LSN7JGFsaWdufSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiAkYWxpZ247XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAudGV4dC0jeyRhbGlnbn0ge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogJGFsaWduO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8gSWYgYHRydWVgLCBhbGwgZWxlbWVudHMgd2lsbCBoYXZlIHRyYW5zcGFyZW50IGJhY2tncm91bmRzIHdoZW4gcHJpbnRlZCwgdG8gc2F2ZSBvbiBpbmsuXG4vLy8gQHR5cGUgQm9vbGVhblxuLy8vIEBncm91cCBnbG9iYWxcbiRwcmludC10cmFuc3BhcmVudC1iYWNrZ3JvdW5kczogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgZGlzcGxheXMgbmV4dCB0byBhbGwgbGlua3MgdGhlaXIgXCJocmVmXCIgd2hlbiBwcmludGVkLlxuLy8vIEB0eXBlIEJvb2xlYW5cbi8vLyBAZ3JvdXAgZ2xvYmFsXG4kcHJpbnQtaHJlZnM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIHNhc3MtbGludDpkaXNhYmxlLWFsbFxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcmludC1zdHlsZXMge1xuICAuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cblxuICBAbWVkaWEgcHJpbnQge1xuICAgICoge1xuICAgICAgLy8gRW5zdXJlIGEgXCJibGFjay1vbi13aGl0ZVwiIHByaW50IGJ5IHJlbW92aW5nIGJhY2tncm91bmRzLFxuICAgICAgLy8gdXNpbmcgYmxhY2sgdGV4dCBldmVyeXdoZXJlIGFuZCBmb3JjaW5nIHRoZSBicm93c2VyIHRvIGVjb25vbWl6ZSBpbmsuXG4gICAgICBAaWYgJHByaW50LXRyYW5zcGFyZW50LWJhY2tncm91bmRzIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgICAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7IC8vIEJsYWNrIHByaW50cyBmYXN0ZXI6IGg1YnAuY29tL3NcbiAgICAgICAgY29sb3ItYWRqdXN0OiBlY29ub215O1xuICAgICAgfVxuICAgICAgLy8gT3RoZXJ3aXNlLCBwcmV2ZW50IGFueSBlY29ub215IGJ5IHRoZSBicm93c2VyLlxuICAgICAgQGVsc2Uge1xuICAgICAgICBjb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgICAgfVxuXG4gICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICB0ZXh0LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgICAuaGlkZS1mb3ItcHJpbnQgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cblxuICAgIHRhYmxlLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsgfVxuICAgIHRoZWFkLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwICFpbXBvcnRhbnQ7IH1cbiAgICB0Ym9keS5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlLXJvdy1ncm91cCAhaW1wb3J0YW50OyB9XG4gICAgdHIuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsgfVxuICAgIHRkLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OyB9XG4gICAgdGguc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7IH1cblxuICAgIC8vIERpc3BsYXkgdGhlIFVSTCBvZiBhIGxpbmsgYWZ0ZXIgdGhlIHRleHRcbiAgICBhLFxuICAgIGE6dmlzaXRlZCB7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO31cbiAgICBAaWYgJHByaW50LWhyZWZzIHtcbiAgICAgIGFbaHJlZl06YWZ0ZXIgeyBjb250ZW50OiAnICgnIGF0dHIoaHJlZikgJyknOyB9XG4gICAgfVxuXG4gICAgLy8gRG9uJ3QgZGlzcGxheSB0aGUgVVJMIGZvciBpbWFnZXMgb3IgSmF2YVNjcmlwdC9pbnRlcm5hbCBsaW5rc1xuICAgIC5pciBhOmFmdGVyLFxuICAgIGFbaHJlZl49J2phdmFzY3JpcHQ6J106YWZ0ZXIsXG4gICAgYVtocmVmXj0nIyddOmFmdGVyIHsgY29udGVudDogJyc7IH1cblxuICAgIC8vIERpc3BsYXkgd2hhdCBhbiBhYmJyZXZpYXRpb24gc3RhbmRzIGZvciBhZnRlciB0aGUgdGV4dFxuICAgIGFiYnJbdGl0bGVdOmFmdGVyIHsgY29udGVudDogJyAoJyBhdHRyKHRpdGxlKSAnKSc7IH1cblxuICAgIC8vIFByZXZlbnQgcGFnZSBicmVha3MgaW4gdGhlIG1pZGRsZSBvZiBhIGJsb2NrcXVvdGUgb3IgcHJlZm9ybWF0dGVkIHRleHQgYmxvY2tcbiAgICBwcmUsXG4gICAgYmxvY2txdW90ZSB7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAkZGFyay1ncmF5O1xuICAgICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuICAgIH1cblxuICAgIC8vIGg1YnAuY29tL3RcbiAgICB0aGVhZCB7IGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDsgfVxuXG4gICAgdHIsXG4gICAgaW1nIHsgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOyB9XG5cbiAgICBpbWcgeyBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfVxuXG4gICAgQHBhZ2UgeyBtYXJnaW46IDAuNWNtOyB9XG5cbiAgICBwLFxuICAgIGgyLFxuICAgIGgzIHtcbiAgICAgIG9ycGhhbnM6IDM7XG4gICAgICB3aWRvd3M6IDM7XG4gICAgfVxuXG4gICAgLy8gQXZvaWQgcGFnZSBicmVha3MgYWZ0ZXIgYSBoZWFkaW5nXG4gICAgaDIsXG4gICAgaDMgeyBwYWdlLWJyZWFrLWFmdGVyOiBhdm9pZDsgfVxuXG4gICAgLy8gSGVscGVyIHRvIHJlLWFsbG93IHBhZ2UgYnJlYWtzIGluIHRoZSBtaWRkbGUgb2YgY2VydGFpbiBlbGVtZW50cyAoZS5nLiBwcmUsIGJsb2NrcXVvdGUsIHRyKVxuICAgIC5wcmludC1icmVhay1pbnNpZGUge1xuICAgICAgcGFnZS1icmVhay1pbnNpZGU6IGF1dG87XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZ3JpZFxuLy8vL1xuXG4vLy8gVGhlIG1heGltdW0gd2lkdGggb2YgYSByb3cuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ3JpZC1yb3ctd2lkdGg6ICRnbG9iYWwtd2lkdGggIWRlZmF1bHQ7XG5cbi8vLyBUaGUgZGVmYXVsdCBjb2x1bW4gY291bnQgb2YgYSBncmlkLiBDaGFuZ2luZyB0aGlzIHZhbHVlIGFmZmVjdHMgdGhlIGxvZ2ljIG9mIHRoZSBncmlkIG1peGlucywgYW5kIHRoZSBudW1iZXIgb2YgQ1NTIGNsYXNzZXMgb3V0cHV0LlxuLy8vIEB0eXBlIE51bWJlclxuJGdyaWQtY29sdW1uLWNvdW50OiAxMiAhZGVmYXVsdDtcblxuLy8vIFRoZSBhbW91bnQgb2Ygc3BhY2UgYmV0d2VlbiBjb2x1bW5zIGF0IGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMuIFRvIHVzZSBqdXN0IG9uZSBzaXplLCBzZXQgdGhlIHZhcmlhYmxlIHRvIGEgbnVtYmVyIGluc3RlYWQgb2YgYSBtYXAuXG4vLy8gQHR5cGUgTWFwIHwgTGVuZ3RoXG4vLy8gQHNpbmNlIDYuMS4wXG4kZ3JpZC1jb2x1bW4tZ3V0dGVyOiAoXG4gIHNtYWxsOiAyMHB4LFxuICBtZWRpdW06IDMwcHgsXG4pICFkZWZhdWx0O1xuXG4vLy8gSWYgYHRydWVgLCB0aGUgbGFzdCBjb2x1bW4gaW4gYSByb3cgd2lsbCBhbGlnbiB0byB0aGUgb3Bwb3NpdGUgZWRnZSBvZiB0aGUgcm93LlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRncmlkLWNvbHVtbi1hbGlnbi1lZGdlOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gU2VsZWN0b3IgdXNlZCBmb3IgYW4gYWxpYXMgb2YgY29sdW1uICh3aXRoIEBleHRlbmQpLiBJZiBgZmFsc2VgLCBubyBhbGlhcyBpcyBjcmVhdGVkLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGdyaWQtY29sdW1uLWFsaWFzOiAnY29sdW1ucycgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgaGlnaGVzdCBudW1iZXIgb2YgYC54LXVwYCBjbGFzc2VzIGF2YWlsYWJsZSB3aGVuIHVzaW5nIHRoZSBibG9jayBncmlkIENTUy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRibG9jay1ncmlkLW1heDogOCAhZGVmYXVsdDtcblxuLy8gSW50ZXJuYWwgdmFsdWUgdG8gc3RvcmUgdGhlIGVuZCBjb2x1bW4gZmxvYXQgZGlyZWN0aW9uXG4kLXpmLWVuZC1mbG9hdDogaWYoJGdyaWQtY29sdW1uLWFsaWduLWVkZ2UsICRnbG9iYWwtcmlnaHQsICRnbG9iYWwtbGVmdCk7XG5cbkBpbXBvcnQgJ3Jvdyc7XG5AaW1wb3J0ICdjb2x1bW4nO1xuQGltcG9ydCAnc2l6ZSc7XG5AaW1wb3J0ICdwb3NpdGlvbic7XG5AaW1wb3J0ICdndXR0ZXInO1xuQGltcG9ydCAnY2xhc3Nlcyc7XG5AaW1wb3J0ICdsYXlvdXQnO1xuXG5AaW1wb3J0ICdmbGV4LWdyaWQnO1xuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIENoYW5nZSB0aGUgYmVoYXZpb3Igb2YgY29sdW1ucyBkZWZpbmVkIGluc2lkZSB0aGlzIG1peGluIHRvIHVzZSBhIGRpZmZlcmVudCBjb2x1bW4gY291bnQuXG4vLy8gQGNvbnRlbnRcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkY29sdW1ucyAtIE51bWJlciBvZiBjb2x1bW5zIHRvIHVzZS5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRyb290IFtmYWxzZV1cbi8vLyAgIElmIGBmYWxzZWAsIHNlbGVjdG9ycyBpbnNpZGUgdGhpcyBtaXhpbiB3aWxsIG5lc3QgaW5zaWRlIHRoZSBwYXJlbnQgc2VsZWN0b3IuXG4vLy8gICBJZiBgdHJ1ZWAsIHNlbGVjdG9ycyB3aWxsIG5vdCBuZXN0LlxuQG1peGluIGdyaWQtY29udGV4dChcbiAgJGNvbHVtbnMsXG4gICRyb290OiBmYWxzZVxuKSB7XG4gIC8vIFN0b3JlIHRoZSBjdXJyZW50IGNvbHVtbiBjb3VudCBzbyBpdCBjYW4gYmUgcmUtc2V0IGxhdGVyXG4gICRvbGQtZ3JpZC1jb2x1bW4tY291bnQ6ICRncmlkLWNvbHVtbi1jb3VudDtcbiAgJGdyaWQtY29sdW1uLWNvdW50OiAkY29sdW1ucyAhZ2xvYmFsO1xuXG4gIEBpZiAkcm9vdCB7XG4gICAgQGF0LXJvb3QgeyBAY29udGVudDsgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG4gIC8vIFJlc3RvcmUgdGhlIG9sZCBjb2x1bW4gY291bnRcbiAgJGdyaWQtY29sdW1uLWNvdW50OiAkb2xkLWdyaWQtY29sdW1uLWNvdW50ICFnbG9iYWw7XG59XG5cbi8vLyBDcmVhdGVzIGEgZ3JpZCByb3cuXG4vLy8gQGNvbnRlbnRcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkY29sdW1ucyBbbnVsbF0gLSBDb2x1bW4gY291bnQgZm9yIHRoaXMgcm93LiBgbnVsbGAgd2lsbCB1c2UgdGhlIGRlZmF1bHQgY29sdW1uIGNvdW50LlxuLy8vIEBwYXJhbSB7S2V5d29yZHN9ICRiZWhhdmlvciBbbnVsbF1cbi8vLyAgIE1vZGlmaWNhdGlvbnMgdG8gdGhlIGRlZmF1bHQgZ3JpZCBzdHlsZXMuIGBuZXN0YCBpbmRpY2F0ZXMgdGhlIHJvdyB3aWxsIGJlIHBsYWNlZCBpbnNpZGUgYW5vdGhlciByb3cuIGBjb2xsYXBzZWAgaW5kaWNhdGVzIHRoYXQgdGhlIGNvbHVtbnMgaW5zaWRlIHRoaXMgcm93IHdpbGwgbm90IGhhdmUgcGFkZGluZy4gYG5lc3QgY29sbGFwc2VgIGNvbWJpbmVzIGJvdGggYmVoYXZpb3JzLlxuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRzaXplIFskZ3JpZC1yb3ctd2lkdGhdIE1heGltdW0gc2l6ZSBvZiB0aGUgcm93LiBTZXQgdG8gYGV4cGFuZGAgdG8gbWFrZSB0aGUgcm93IHRha2luZyB0aGUgZnVsbCB3aWR0aC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRjZiBbdHJ1ZV0gLSBXaGV0aGVyIG9yIG5vdCB0byBpbmNsdWRlIGEgY2xlYXJmaXguXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBHdXR0ZXIgbWFwIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2Ugd2hlbiBpbnZlcnRpbmcgbWFyZ2lucy4gUmVzcG9uc2l2ZSBndXR0ZXIgc2V0dGluZ3MgYnkgZGVmYXVsdC5cbkBtaXhpbiBncmlkLXJvdyhcbiAgJGNvbHVtbnM6IG51bGwsXG4gICRiZWhhdmlvcjogbnVsbCxcbiAgJHNpemU6ICRncmlkLXJvdy13aWR0aCxcbiAgJGNmOiB0cnVlLFxuICAkZ3V0dGVyczogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gICRtYXJnaW46IGF1dG87XG5cbiAgQGlmIGluZGV4KCRiZWhhdmlvciwgbmVzdCkgIT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgZ3JpZC1yb3ctbmVzdCgkZ3V0dGVycyk7XG5cbiAgICBAaWYgaW5kZXgoJGJlaGF2aW9yLCBjb2xsYXBzZSkgIT0gbnVsbCB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIGdyaWQtcm93LXNpemUoJHNpemUpO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgfVxuXG4gIEBpZiAkY2Yge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9XG5cbiAgQGlmICRjb2x1bW5zICE9IG51bGwge1xuICAgIEBpbmNsdWRlIGdyaWQtY29udGV4dCgkY29sdW1ucykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBJbnZlcnRzIHRoZSBtYXJnaW5zIG9mIGEgcm93IHRvIG5lc3QgaXQgaW5zaWRlIG9mIGEgY29sdW1uLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBHdXR0ZXIgbWFwIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2Ugd2hlbiBpbnZlcnRpbmcgbWFyZ2lucy4gUmVzcG9uc2l2ZSBndXR0ZXIgc2V0dGluZ3MgYnkgZGVmYXVsdC5cbkBtaXhpbiBncmlkLXJvdy1uZXN0KCRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyKSB7XG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQge1xuICAgICRtYXJnaW46IHJlbS1jYWxjKC16Zi1nZXQtYnAtdmFsKCRndXR0ZXJzLCAkLXpmLXNpemUpKSAqIDAuNSAqIC0xO1xuXG4gICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luO1xuICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luO1xuICB9XG59XG5cbi8vLyBTZXQgYSBncmlkIHJvdyBzaXplXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkc2l6ZSBbJGdyaWQtcm93LXdpZHRoXSBNYXhpbXVtIHNpemUgb2YgdGhlIHJvdy4gU2V0IHRvIGBleHBhbmRgIHRvIG1ha2UgdGhlIHJvdyB0YWtpbmcgdGhlIGZ1bGwgd2lkdGguXG5AbWl4aW4gZ3JpZC1yb3ctc2l6ZSgkc2l6ZTogJGdyaWQtcm93LXdpZHRoKSB7XG4gIEBpZiAkc2l6ZSA9PSBleHBhbmQge1xuICAgICRzaXplOiBub25lO1xuICB9XG5cbiAgbWF4LXdpZHRoOiAkc2l6ZTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBncmlkXG4vLy8vXG5cbi8vLyBDYWxjdWxhdGVzIHRoZSB3aWR0aCBvZiBhIGNvbHVtbiBiYXNlZCBvbiBhIG51bWJlciBvZiBmYWN0b3JzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJGNvbHVtbnNcbi8vLyAgIFdpZHRoIG9mIHRoZSBjb2x1bW4uIEFjY2VwdHMgbXVsdGlwbGUgdmFsdWVzOlxuLy8vICAgLSBBIHBlcmNlbnRhZ2UgdmFsdWUgd2lsbCBtYWtlIHRoZSBjb2x1bW4gdGhhdCBleGFjdCBzaXplLlxuLy8vICAgLSBBIHNpbmdsZSBkaWdpdCB3aWxsIG1ha2UgdGhlIGNvbHVtbiBzcGFuIHRoYXQgbnVtYmVyIG9mIGNvbHVtbnMgd2lkZSwgdGFraW5nIGludG8gYWNjb3VudCB0aGUgY29sdW1uIGNvdW50IG9mIHRoZSBwYXJlbnQgcm93LlxuLy8vICAgLSBBIGxpc3Qgb2YgdGhlIGZvcm1hdCBcInggb2YgeVwiICh3aXRob3V0IHF1b3Rlcykgd2lsbCBtYWtlIGEgY29sdW1uIHRoYXQgaXMgKngqIGNvbHVtbnMgd2lkZSwgYXNzdW1pbmcgKnkqIHRvdGFsIGNvbHVtbnMgZm9yIHRoZSBwYXJlbnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBBIGNhbGN1bGF0ZWQgcGVyY2VudGFnZSB2YWx1ZS5cbkBmdW5jdGlvbiBncmlkLWNvbHVtbigkY29sdW1ucykge1xuICBAcmV0dXJuIGZyYWN0aW9uLXRvLXBlcmNlbnRhZ2UoJGNvbHVtbnMsICRkZW5vbWluYXRvcjogJGdyaWQtY29sdW1uLWNvdW50KTtcbn1cblxuLy8vIENyZWF0ZXMgYSBncmlkIGNvbHVtbi5cbi8vL1xuLy8vIEBwYXJhbSB7TWl4ZWR9ICRjb2x1bW5zIFskZ3JpZC1jb2x1bW4tY291bnRdIC0gV2lkdGggb2YgdGhlIGNvbHVtbi4gUmVmZXIgdG8gdGhlIGBncmlkLWNvbHVtbigpYCBmdW5jdGlvbiB0byBzZWUgcG9zc2libGUgdmFsdWVzLlxuLy8vIEBwYXJhbSB7TWl4ZWR9ICRndXR0ZXJzIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIFNwYWNpbmcgYmV0d2VlbiBjb2x1bW5zLiBSZWZlciB0byB0aGUgYGdyaWQtY29sdW1uLWd1dHRlcigpYCBmdW5jdGlvbiB0byBzZWUgcG9zc2libGUgdmFsdWVzLlxuQG1peGluIGdyaWQtY29sdW1uKFxuICAkY29sdW1uczogJGdyaWQtY29sdW1uLWNvdW50LFxuICAkZ3V0dGVyczogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLXNpemUoJGNvbHVtbnMpO1xuICBmbG9hdDogJGdsb2JhbC1sZWZ0O1xuXG4gIC8vIEd1dHRlcnNcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3V0dGVyKCRndXR0ZXJzOiAkZ3V0dGVycyk7XG5cbiAgLy8gUG9zaXRpb25cbiAgQGluY2x1ZGUgZ3JpZC1jb2wtcG9zKGF1dG8pO1xufVxuXG4vLy8gQ3JlYXRlcyBhIGdyaWQgY29sdW1uIHJvdy4gVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiBhZGRpbmcgYC5yb3dgIGFuZCBgLmNvbHVtbmAgdG8gdGhlIHNhbWUgZWxlbWVudC5cbi8vL1xuLy8vIEBwYXJhbSB7TWl4ZWR9ICRndXR0ZXJzIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIFdpZHRoIG9mIHRoZSBndXR0ZXJzIG9uIGVpdGhlciBzaWRlIG9mIHRoZSBjb2x1bW4gcm93LiBSZWZlciB0byB0aGUgYGdyaWQtY29sdW1uLWd1dHRlcigpYCBmdW5jdGlvbiB0byBzZWUgcG9zc2libGUgdmFsdWVzLlxuQG1peGluIGdyaWQtY29sdW1uLXJvdyhcbiAgJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICBAaW5jbHVkZSBncmlkLXJvdztcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4oJGd1dHRlcnM6ICRndXR0ZXJzKTtcblxuICAmLFxuICAmOmxhc3QtY2hpbGQge1xuICAgIGZsb2F0OiBub25lO1xuICB9XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbigpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW5cbkBmdW5jdGlvbiBncmlkLWNvbChcbiAgJGNvbHVtbnM6ICRncmlkLWNvbHVtbi1jb3VudFxuKSB7XG4gIEByZXR1cm4gZ3JpZC1jb2x1bW4oJGNvbHVtbnMpO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4oKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uXG5AbWl4aW4gZ3JpZC1jb2woXG4gICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW4tY291bnQsXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4oJGNvbHVtbnMsICRndXR0ZXJzKTtcbn1cblxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLXJvdygpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tcm93XG5AbWl4aW4gZ3JpZC1jb2wtcm93KFxuICAkZ3V0dGVyczogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLXJvdygkZ3V0dGVycyk7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZ3JpZFxuLy8vL1xuXG4vLy8gU2V0IHRoZSB3aWR0aCBvZiBhIGdyaWQgY29sdW1uLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJHdpZHRoIFskZ3JpZC1jb2x1bW4tY291bnRdIC0gV2lkdGggdG8gbWFrZSB0aGUgY29sdW1uLiBZb3UgY2FuIHBhc3MgaW4gYW55IHZhbHVlIGFjY2VwdGVkIGJ5IHRoZSBgZ3JpZC1jb2x1bW4oKWAgZnVuY3Rpb24sIHN1Y2ggYXMgYDZgLCBgNTAlYCwgb3IgYDEgb2YgMmAuXG5AbWl4aW4gZ3JpZC1jb2x1bW4tc2l6ZShcbiAgJGNvbHVtbnM6ICRncmlkLWNvbHVtbi1jb3VudFxuKSB7XG4gIHdpZHRoOiBncmlkLWNvbHVtbigkY29sdW1ucyk7XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi1zaXplKClgLlxuLy8vIEBhbGlhcyBncmlkLWNvbHVtbi1zaXplXG5AbWl4aW4gZ3JpZC1jb2wtc2l6ZShcbiAgJGNvbHVtbnM6ICRncmlkLWNvbHVtbi1jb3VudFxuKSB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLXNpemUoJGNvbHVtbnMpO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIFJlcG9zaXRpb24gYSBjb2x1bW4uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxLZXl3b3JkfSAkcG9zaXRpb24gLSBJdCBjYW4gYmU6XG4vLy8gICAqIEEgbnVtYmVyOiBUaGUgY29sdW1uIHdpbGwgbW92ZSBlcXVhbCB0byB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbiBjb3VudFxuLy8vICAgICBzcGVjaWZpZWQuIEEgcG9zaXRpdmUgbnVtYmVyIHdpbGwgcHVzaCB0aGUgY29sdW1uIHRvIHRoZSByaWdodCwgd2hpbGVcbi8vLyAgICAgYSBuZWdhdGl2ZSBudW1iZXIgd2lsbCBwdWxsIGl0IHRvIHRoZSBsZWZ0LlxuLy8vICAgKiBgY2VudGVyYDogQ29sdW1uIHdpbGwgYmUgY2VudGVyZWRcbi8vLyAgICogYGF1dG9gOiBDb2x1bW4gd2lsbCBiZSBwdXNoZWQgdG8gdGhlIGxlZnQgKG9yIHRvIHRoZSByaWdodCBmb3IgdGhlIGxhc3QgY29sdW1uKS5cbkBtaXhpbiBncmlkLWNvbHVtbi1wb3NpdGlvbigkcG9zaXRpb24pIHtcbiAgLy8gQXV0byBwb3NpdGlvbmluZ1xuICBAaWYgJHBvc2l0aW9uID09IGF1dG8ge1xuICAgICYsICY6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgICBmbG9hdDogJGdsb2JhbC1sZWZ0O1xuICAgICAgY2xlYXI6IG5vbmU7XG4gICAgfVxuXG4gICAgLy8gTGFzdCBjb2x1bW4gYWxpZ25tZW50XG4gICAgQGlmICRncmlkLWNvbHVtbi1hbGlnbi1lZGdlIHtcbiAgICAgICY6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgICAgIGZsb2F0OiAkZ2xvYmFsLXJpZ2h0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFB1c2gvcHVsbFxuICBAZWxzZSBpZiB0eXBlLW9mKCRwb3NpdGlvbikgPT0gJ251bWJlcicge1xuICAgICRvZmZzZXQ6IHBlcmNlbnRhZ2UoZGl2aWRlKCRwb3NpdGlvbiwgJGdyaWQtY29sdW1uLWNvdW50KSk7XG5cbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgI3skZ2xvYmFsLWxlZnR9OiAkb2Zmc2V0O1xuICB9XG5cbiAgLy8gQ2VudGVyIHBvc2l0aW9uaW5nXG4gIEBlbHNlIGlmICRwb3NpdGlvbiA9PSBjZW50ZXIge1xuICAgICYsICY6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgICBmbG9hdDogbm9uZTtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIH1cblxuICBAZWxzZSB7XG4gICAgQHdhcm4gJ1dyb25nIHN5bnRheCBmb3IgZ3JpZC1jb2x1bW4tcG9zaXRpb24oKS4gRW50ZXIgYSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBudW1iZXIsIFwiY2VudGVyXCIgb3IgXCJhdXRvXCIuJztcbiAgfVxufVxuXG4vLy8gUmVzZXQgYSBwb3NpdGlvbiBkZWZpbml0aW9uLlxuQG1peGluIGdyaWQtY29sdW1uLXVucG9zaXRpb24ge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1wb3NpdGlvbihhdXRvKTtcbiAgcG9zaXRpb246IHN0YXRpYztcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICBtYXJnaW4tbGVmdDogMDtcbn1cblxuLy8vIE9mZnNldHMgYSBjb2x1bW4gdG8gdGhlIHJpZ2h0IGJ5IGAkbmAgY29sdW1ucy5cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkbiAtIFdpZHRoIHRvIG9mZnNldCBieS4gWW91IGNhbiBwYXNzIGluIGFueSB2YWx1ZSBhY2NlcHRlZCBieSB0aGUgYGdyaWQtY29sdW1uKClgIG1peGluLCBzdWNoIGFzIGA2YCwgYDUwJWAsIG9yIGAxIG9mIDJgLlxuQG1peGluIGdyaWQtY29sdW1uLW9mZnNldCgkbikge1xuICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiBncmlkLWNvbHVtbigkbik7XG59XG5cbi8vLyBEaXNhYmxlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSBsYXN0IGNvbHVtbiBpbiBhIHJvdyBhbGlnbmluZyB0byB0aGUgb3Bwb3NpdGUgZWRnZS5cbkBtaXhpbiBncmlkLWNvbHVtbi1lbmQge1xuICAvLyBUaGlzIGV4dHJhIHNwZWNpZmljaXR5IGlzIHJlcXVpcmVkIGZvciB0aGUgcHJvcGVydHkgdG8gYmUgYXBwbGllZFxuICAmOmxhc3QtY2hpbGQ6bGFzdC1jaGlsZCB7XG4gICAgZmxvYXQ6ICRnbG9iYWwtbGVmdDtcbiAgfVxufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tcG9zaXRpb24oKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLXBvc2l0aW9uXG5AbWl4aW4gZ3JpZC1jb2wtcG9zKCRwb3NpdGlvbikge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1wb3NpdGlvbigkcG9zaXRpb24pO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tdW5wb3NpdGlvbigpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tdW5wb3NpdGlvblxuQG1peGluIGdyaWQtY29sLXVucG9zIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tdW5wb3NpdGlvbjtcbn1cblxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLW9mZnNldCgpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tb2Zmc2V0XG5AbWl4aW4gZ3JpZC1jb2wtb2ZmKCRuKSB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLW9mZnNldCgkbik7XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi1lbmQoKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLWVuZFxuQG1peGluIGdyaWQtY29sLWVuZCB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLWVuZDtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBncmlkXG4vLy8vXG5cbi8vLyBTZXQgdGhlIGd1dHRlcnMgb24gYSBjb2x1bW5cbi8vLyBAcGFyYW0ge051bWJlcnxLZXl3b3JkfSAkZ3V0dGVyIFthdXRvXVxuLy8vICAgU3BhY2luZyBiZXR3ZWVuIGNvbHVtbnMsIGFjY2VwdHMgbXVsdGlwbGUgdmFsdWVzOlxuLy8vICAgLSBBIHNpbmdsZSB2YWx1ZSB3aWxsIG1ha2UgdGhlIGd1dHRlciB0aGF0IGV4YWN0IHNpemUuXG4vLy8gICAtIEEgYnJlYWtwb2ludCBuYW1lIHdpbGwgbWFrZSB0aGUgZ3V0dGVyIHRoZSBjb3JyZXNwb25kaW5nIHNpemUgaW4gdGhlICRndXR0ZXJzIG1hcC5cbi8vLyAgIC0gXCJhdXRvXCIgd2lsbCBtYWtlIHRoZSBndXR0ZXIgcmVzcG9uc2l2ZSwgdXNpbmcgdGhlICRndXR0ZXJzIG1hcCB2YWx1ZXMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBHdXR0ZXIgbWFwIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2UuIFJlc3BvbnNpdmUgZ3V0dGVyIHNldHRpbmdzIGJ5IGRlZmF1bHQuXG5AbWl4aW4gZ3JpZC1jb2x1bW4tZ3V0dGVyKFxuICAkZ3V0dGVyOiBhdXRvLFxuICAkZ3V0dGVyczogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gIEBpbmNsdWRlIC16Zi1icmVha3BvaW50LXZhbHVlKCRndXR0ZXIsICRndXR0ZXJzKSB7XG4gICAgJHBhZGRpbmc6IHJlbS1jYWxjKCQtemYtYnAtdmFsdWUpICogMC41O1xuXG4gICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgfVxufVxuXG4vLy8gQ29sbGFwc2UgdGhlIGd1dHRlcnMgb24gYSBjb2x1bW4gYnkgcmVtb3ZpbmcgdGhlIHBhZGRpbmcuICoqTm90ZToqKiBvbmx5IHVzZSB0aGlzIG1peGluIHdpdGhpbiBhIGJyZWFrcG9pbnQuIFRvIGNvbGxhcHNlIGEgY29sdW1uJ3MgZ3V0dGVycyBvbiBhbGwgc2NyZWVuIHNpemVzLCB1c2UgdGhlIGAkZ3V0dGVyYCBwYXJhbWV0ZXIgb2YgdGhlIGBncmlkLWNvbHVtbigpYCBtaXhpbiBpbnN0ZWFkLlxuQG1peGluIGdyaWQtY29sdW1uLWNvbGxhcHNlIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3V0dGVyKDApO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tZ3V0dGVyKClgLlxuLy8vIEBhbGlhcyBncmlkLWNvbHVtbi1ndXR0ZXJcbkBtaXhpbiBncmlkLWNvbC1ndXR0ZXIoXG4gICRndXR0ZXI6IGF1dG8sXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3V0dGVyKCRndXR0ZXIsICRndXR0ZXJzKTtcbn1cblxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLWNvbGxhcHNlKClgLlxuLy8vIEBhbGlhcyBncmlkLWNvbHVtbi1jb2xsYXBzZVxuQG1peGluIGdyaWQtY29sLWNvbGxhcHNlIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tY29sbGFwc2U7XG59XG5cbi8vLyBTZXRzIGJvdHRvbSBtYXJnaW4gb24gZ3JpZCBjb2x1bW5zIHRvIG1hdGNoIGd1dHRlcnNcbi8vLyBAcGFyYW0ge051bWJlcnxLZXl3b3JkfSAkbWFyZ2luIFthdXRvXVxuLy8vICAgVGhlIGJvdHRvbSBtYXJnaW4gb24gZ3JpZCBjb2x1bW5zLCBhY2NlcHRzIG11bHRpcGxlIHZhbHVlczpcbi8vLyAgIC0gQSBzaW5nbGUgdmFsdWUgd2lsbCBtYWtlIHRoZSBtYXJnaW4gdGhhdCBleGFjdCBzaXplLlxuLy8vICAgLSBBIGJyZWFrcG9pbnQgbmFtZSB3aWxsIG1ha2UgdGhlIG1hcmdpbiB0aGUgY29ycmVzcG9uZGluZyBzaXplIGluIHRoZSAkbWFyZ2lucyBtYXAuXG4vLy8gICAtIFwiYXV0b1wiIHdpbGwgbWFrZSB0aGUgbWFyZ2luIHJlc3BvbnNpdmUsIHVzaW5nIHRoZSAkbWFyZ2lucyBtYXAgdmFsdWVzLlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJG1hcmdpbnMgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2UuIFJlc3BvbnNpdmUgZ3V0dGVyIHNldHRpbmdzIGJ5IGRlZmF1bHQuXG5AbWl4aW4gZ3JpZC1jb2x1bW4tbWFyZ2luIChcbiAgJG1hcmdpbjogYXV0byxcbiAgJG1hcmdpbnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICBAaW5jbHVkZSAtemYtYnJlYWtwb2ludC12YWx1ZSgkbWFyZ2luLCAkbWFyZ2lucykge1xuICAgICRtYXJnaW4tYm90dG9tOiByZW0tY2FsYygkLXpmLWJwLXZhbHVlKTtcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLWJvdHRvbTtcblxuICAgID4gOmxhc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBncmlkXG4vLy8vXG5cbi8vLyBPdXRwdXRzIENTUyBjbGFzc2VzIGZvciB0aGUgZ3JpZC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBmb3VuZGF0aW9uLWdyaWQoXG4gICRyb3c6ICdyb3cnLFxuICAkY29sdW1uOiAnY29sdW1uJyxcbiAgJGNvbHVtbi1yb3c6ICdjb2x1bW4tcm93JyxcbiAgJGd1dHRlcjogJ2d1dHRlcicsXG4gICRwdXNoOiAncHVzaCcsXG4gICRwdWxsOiAncHVsbCcsXG4gICRjZW50ZXI6ICdjZW50ZXJlZCcsXG4gICR1bmNlbnRlcjogJ3VuY2VudGVyZWQnLFxuICAkY29sbGFwc2U6ICdjb2xsYXBzZScsXG4gICR1bmNvbGxhcHNlOiAndW5jb2xsYXBzZScsXG4gICRvZmZzZXQ6ICdvZmZzZXQnLFxuICAkZW5kOiAnZW5kJyxcbiAgJGV4cGFuZGVkOiAnZXhwYW5kZWQnLFxuICAkYmxvY2s6ICdibG9jaydcbikge1xuICAvLyBSb3dcbiAgLiN7JHJvd30ge1xuICAgIEBpbmNsdWRlIGdyaWQtcm93O1xuXG4gICAgLy8gQ29sbGFwc2luZ1xuICAgICYuI3skY29sbGFwc2V9IHtcbiAgICAgID4gLiN7JGNvbHVtbn0ge1xuICAgICAgICBAaW5jbHVkZSBncmlkLWNvbC1jb2xsYXBzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBOZXN0aW5nXG4gICAgJiAuI3skcm93fSB7XG4gICAgICBAaW5jbHVkZSBncmlkLXJvdy1uZXN0KCRncmlkLWNvbHVtbi1ndXR0ZXIpO1xuXG4gICAgICAmLiN7JGNvbGxhcHNlfSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRXhwYW5kZWQgKGZ1bGwtd2lkdGgpIHJvd1xuICAgICYuI3skZXhwYW5kZWR9IHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtcm93LXNpemUoZXhwYW5kKTtcblxuICAgICAgLiN7JHJvd30ge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6bm90KC4jeyRleHBhbmRlZH0pIC4jeyRyb3d9IHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtcm93LXNpemUoZXhwYW5kKTtcbiAgICB9XG5cbiAgICBAaWYgdHlwZS1vZigkZ3JpZC1jb2x1bW4tZ3V0dGVyKSA9PSAnbWFwJyB7XG4gICAgICAvLyBTdGF0aWMgKHVucmVzcG9uc2l2ZSkgcm93IGd1dHRlcnNcbiAgICAgIC8vXG4gICAgICBAZWFjaCAkYnJlYWtwb2ludCwgJHZhbHVlIGluICRncmlkLWNvbHVtbi1ndXR0ZXIge1xuICAgICAgICAmLiN7JGd1dHRlcn0tI3skYnJlYWtwb2ludH0ge1xuICAgICAgICAgID4gLiN7JGNvbHVtbn0ge1xuICAgICAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtZ3V0dGVyKCR2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQ29sdW1uXG4gIC4jeyRjb2x1bW59IHtcbiAgICBAaW5jbHVkZSBncmlkLWNvbDtcblxuICAgIEBpZiAkZ3JpZC1jb2x1bW4tYWxpZ24tZWRnZSB7XG4gICAgICAmLiN7JGVuZH0ge1xuICAgICAgICBAaW5jbHVkZSBncmlkLWNvbC1lbmQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQ29sdW1uIHJvd1xuICAvLyBUaGUgZG91YmxlIC5yb3cgY2xhc3MgaXMgbmVlZGVkIHRvIGJ1bXAgdXAgdGhlIHNwZWNpZmljaXR5XG4gIC4jeyRjb2x1bW59LiN7JHJvd30uI3skcm93fSB7XG4gICAgZmxvYXQ6IG5vbmU7XG4gIH1cblxuICAvLyBUbyBwcm9wZXJseSBuZXN0IGEgY29sdW1uIHJvdywgcGFkZGluZyBhbmQgbWFyZ2luIGlzIHJlbW92ZWRcbiAgLiN7JHJvd30gLiN7JGNvbHVtbn0uI3skcm93fS4jeyRyb3d9IHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gIH1cblxuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50IHtcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbi1jb3VudCB7XG4gICAgICAvLyBDb2x1bW4gd2lkdGhcbiAgICAgIC4jeyQtemYtc2l6ZX0tI3skaX0ge1xuICAgICAgICBAaW5jbHVkZSBncmlkLWNvbC1zaXplKCRpKTtcbiAgICAgIH1cblxuICAgICAgLy8gU291cmNlIG9yZGVyaW5nXG4gICAgICBAaWYgJGkgPCAkZ3JpZC1jb2x1bW4tY291bnQge1xuICAgICAgICBAaWYgJHB1c2gge1xuICAgICAgICAgIC4jeyQtemYtc2l6ZX0tI3skcHVzaH0tI3skaX0ge1xuICAgICAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtcG9zKCRpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgJHB1bGwge1xuICAgICAgICAgIC4jeyQtemYtc2l6ZX0tI3skcHVsbH0tI3skaX0ge1xuICAgICAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtcG9zKC0kaSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE9mZnNldHNcbiAgICAgICRvOiAkaSAtIDE7XG5cbiAgICAgIEBpZiAkb2Zmc2V0IHtcbiAgICAgICAgLiN7JC16Zi1zaXplfS0jeyRvZmZzZXR9LSN7JG99IHtcbiAgICAgICAgICBAaW5jbHVkZSBncmlkLWNvbC1vZmYoJG8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQmxvY2sgZ3JpZFxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGJsb2NrLWdyaWQtbWF4IHtcbiAgICAgIC4jeyQtemYtc2l6ZX0tdXAtI3skaX0ge1xuICAgICAgICBAaW5jbHVkZSBncmlkLWxheW91dCgkaSwgJy4jeyRjb2x1bW59Jyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSBjb2xsYXBzaW5nXG4gICAgLiN7JC16Zi1zaXplfS0jeyRjb2xsYXBzZX0ge1xuICAgICAgPiAuI3skY29sdW1ufSB7IEBpbmNsdWRlIGdyaWQtY29sLWNvbGxhcHNlOyB9XG5cbiAgICAgIC4jeyRyb3d9IHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuI3skZXhwYW5kZWR9LiN7JHJvd30gLiN7JC16Zi1zaXplfS0jeyRjb2xsYXBzZX0uI3skcm93fSB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG5cbiAgICAuI3skLXpmLXNpemV9LSN7JHVuY29sbGFwc2V9IHtcbiAgICAgID4gLiN7JGNvbHVtbn0geyBAaW5jbHVkZSBncmlkLWNvbC1ndXR0ZXIoJC16Zi1zaXplKTsgfVxuICAgIH1cblxuICAgIC8vIFBvc2l0aW9uaW5nXG4gICAgQGlmICRjZW50ZXIge1xuICAgICAgLiN7JC16Zi1zaXplfS0jeyRjZW50ZXJ9IHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtcG9zKGNlbnRlcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gR3V0dGVyIGFkanVzdG1lbnRcbiAgICAkLWd1dHRlci11bnBvcy1zZWxlY3RvcjogKFxuICAgICAgaWYoJHVuY2VudGVyLCAnLiN7JC16Zi1zaXplfS0jeyR1bmNlbnRlcn0nLCBudWxsKSxcbiAgICAgIGlmKCRwdXNoLCAnLiN7JC16Zi1zaXplfS0jeyRwdXNofS0wJywgbnVsbCksXG4gICAgICBpZigkcHVsbCwgJy4jeyQtemYtc2l6ZX0tI3skcHVsbH0tMCcsIG51bGwpLFxuICAgICk7XG4gICAgQGlmICgkdW5jZW50ZXIgb3IgJHB1c2ggb3IgJHB1bGwpIHtcbiAgICAgICN7JC1ndXR0ZXItdW5wb3Mtc2VsZWN0b3J9IHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtdW5wb3M7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQmxvY2sgZ3JpZCBjb2x1bW5zXG4gIC4jeyRjb2x1bW59LSN7JGJsb2NrfSB7XG4gICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tbWFyZ2luO1xuICB9XG5cbiAgQGlmICRjb2x1bW4gPT0gJ2NvbHVtbicgYW5kIGhhcy12YWx1ZSgkZ3JpZC1jb2x1bW4tYWxpYXMpIHtcbiAgICAuI3skZ3JpZC1jb2x1bW4tYWxpYXN9IHtcbiAgICAgIC8vIHNhc3MtbGludDpkaXNhYmxlLWJsb2NrIHBsYWNlaG9sZGVyLWluLWV4dGVuZFxuICAgICAgQGV4dGVuZCAuY29sdW1uO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIFNpemVzIGNoaWxkIGVsZW1lbnRzIHNvIHRoYXQgYCRuYCBudW1iZXIgb2YgaXRlbXMgYXBwZWFyIG9uIGVhY2ggcm93LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRuIC0gTnVtYmVyIG9mIGVsZW1lbnRzIHRvIGRpc3BsYXkgcGVyIHJvdy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFsnLmNvbHVtbiddIC0gU2VsZWN0b3IocykgdG8gdXNlIGZvciBjaGlsZCBlbGVtZW50cy5cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkZ3V0dGVyXG4vLy8gICBUaGUgZ3V0dGVyIHRvIGFwcGx5IHRvIGNoaWxkIGVsZW1lbnRzLiBBY2NlcHRzIG11bHRpcGxlIHZhbHVlczpcbi8vLyAgIC0gJGdyaWQtY29sdW1uLWd1dHRlciB3aWxsIHVzZSB0aGUgdmFsdWVzIGluIHRoZSAkZ3JpZC1jb2x1bW4tZ3V0dGVyIG1hcCwgaW5jbHVkaW5nIGJyZWFrcG9pbnQgc2l6ZXMuXG4vLy8gICAtIEEgZml4ZWQgbnVtZXJpYyB2YWx1ZSB3aWxsIGFwcGx5IHRoaXMgZ3V0dGVyIHRvIGFsbCBicmVha3BvaW50cy5cbkBtaXhpbiBncmlkLWxheW91dChcbiAgJG4sXG4gICRzZWxlY3RvcjogJy5jb2x1bW4nLFxuICAkZ3V0dGVyOiBudWxsXG4pIHtcbiAgJiA+ICN7JHNlbGVjdG9yfSB7XG4gICAgZmxvYXQ6ICRnbG9iYWwtbGVmdDtcbiAgICB3aWR0aDogcGVyY2VudGFnZShkaXZpZGUoMSwgJG4pKTtcblxuICAgIC8vIElmIGEgJGd1dHRlciB2YWx1ZSBpcyBwYXNzZWRcbiAgICBAaWYoJGd1dHRlcikge1xuICAgICAgLy8gR3V0dGVyc1xuICAgICAgQGlmIHR5cGUtb2YoJGd1dHRlcikgPT0gJ21hcCcge1xuICAgICAgICBAZWFjaCAkYnJlYWtwb2ludCwgJHZhbHVlIGluICRndXR0ZXIge1xuICAgICAgICAgICRwYWRkaW5nOiByZW0tY2FsYygkdmFsdWUpICogMC41O1xuXG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYnJlYWtwb2ludCkge1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmc7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2UgaWYgdHlwZS1vZigkZ3V0dGVyKSA9PSAnbnVtYmVyJyBhbmQgc3RyaXAtdW5pdCgkZ3V0dGVyKSA+IDAge1xuICAgICAgICAkcGFkZGluZzogcmVtLWNhbGMoJGd1dHRlcikgKiAwLjU7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6bnRoLW9mLXR5cGUoMW4pIHtcbiAgICAgIGNsZWFyOiBub25lO1xuICAgIH1cblxuICAgICY6bnRoLW9mLXR5cGUoI3skbn1uKzEpIHtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBmbG9hdDogJGdsb2JhbC1sZWZ0O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBleHRyYSBDU1MgdG8gYmxvY2sgZ3JpZCBjaGlsZHJlbiBzbyB0aGUgbGFzdCBpdGVtcyBpbiB0aGUgcm93IGNlbnRlciBhdXRvbWF0aWNhbGx5LiBBcHBseSB0aGlzIHRvIHRoZSBjb2x1bW5zLCBub3QgdGhlIHJvdy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbiAtIE51bWJlciBvZiBpdGVtcyB0aGF0IGFwcGVhciBpbiBlYWNoIHJvdy5cbkBtaXhpbiBncmlkLWxheW91dC1jZW50ZXItbGFzdCgkbikge1xuICBAZm9yICRpIGZyb20gMSB0byAkbiB7XG4gICAgQGlmICRpID09IDEge1xuICAgICAgJjpudGgtY2hpbGQoI3skbn1uKzEpOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tbGVmdDogKDEwMCAtIGRpdmlkZSgxMDAsICRuKSAqICRpKSAqIDAuNSAqIDElO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAmOm50aC1jaGlsZCgjeyRufW4rMSk6bnRoLWxhc3QtY2hpbGQoI3skaX0pIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICgxMDAgLSBkaXZpZGUoMTAwLCAkbikgKiAkaSkgKiAwLjUgKiAxJTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmbGV4LWdyaWRcbi8vLy9cblxuLy8vIENyZWF0ZXMgYSBjb250YWluZXIgZm9yIGEgZmxleCBncmlkIHJvdy5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxMaXN0fSAkYmVoYXZpb3IgW251bGxdXG4vLy8gICBNb2RpZmljYXRpb25zIHRvIHRoZSBkZWZhdWx0IGdyaWQgc3R5bGVzLiBgbmVzdGAgaW5kaWNhdGVzIHRoZSByb3cgd2lsbCBiZSBwbGFjZWQgaW5zaWRlIGFub3RoZXIgcm93LiBgY29sbGFwc2VgIGluZGljYXRlcyB0aGF0IHRoZSBjb2x1bW5zIGluc2lkZSB0aGlzIHJvdyB3aWxsIG5vdCBoYXZlIHBhZGRpbmcuIGBuZXN0IGNvbGxhcHNlYCBjb21iaW5lcyBib3RoIGJlaGF2aW9ycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkc2l6ZSBbJGdyaWQtcm93LXdpZHRoXSBNYXhpbXVtIHNpemUgb2YgdGhlIHJvdy4gU2V0IHRvIGBleHBhbmRgIHRvIG1ha2UgdGhlIHJvdyB0YWtpbmcgdGhlIGZ1bGwgd2lkdGguXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRjb2x1bW5zIFtudWxsXSAtIE51bWJlciBvZiBjb2x1bW5zIHRvIHVzZSBmb3IgdGhpcyByb3cuIElmIHNldCB0byBgbnVsbGAgKHRoZSBkZWZhdWx0KSwgdGhlIGdsb2JhbCBjb2x1bW4gY291bnQgd2lsbCBiZSB1c2VkLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGJhc2UgW3RydWVdIC0gU2V0IHRvIGBmYWxzZWAgdG8gcHJldmVudCBiYXNpYyBzdHlsZXMgZnJvbSBiZWluZyBvdXRwdXQuIFVzZWZ1bCBpZiB5b3UncmUgY2FsbGluZyB0aGlzIG1peGluIG9uIHRoZSBzYW1lIGVsZW1lbnQgdHdpY2UsIGFzIGl0IHByZXZlbnRzIGR1cGxpY2F0ZSBDU1Mgb3V0cHV0LlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHdyYXAgW3RydWVdIC0gU2V0IHRvIGBmYWxzZWAgdG8gaGF2ZSByb3cgd3JhcHBpbmcgYmVoYXZpb3Igc2V0IHRvIG5vd3JhcFxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gR3V0dGVyIG1hcCBvciBzaW5nbGUgdmFsdWUgdG8gdXNlIHdoZW4gaW52ZXJ0aW5nIG1hcmdpbnMsIGluIGNhc2UgdGhlIHJvdyBpcyBuZXN0ZWQuIFJlc3BvbnNpdmUgZ3V0dGVyIHNldHRpbmdzIGJ5IGRlZmF1bHQuXG5AbWl4aW4gZmxleC1ncmlkLXJvdyhcbiAgJGJlaGF2aW9yOiBudWxsLFxuICAkc2l6ZTogJGdyaWQtcm93LXdpZHRoLFxuICAkY29sdW1uczogbnVsbCxcbiAgJGJhc2U6IHRydWUsXG4gICR3cmFwOiB0cnVlLFxuICAkZ3V0dGVyczogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gICRtYXJnaW46IGF1dG87XG4gICR3cmFwOiBpZigkd3JhcCwgd3JhcCwgbm93cmFwKTtcblxuICBAaWYgaW5kZXgoJGJlaGF2aW9yLCBuZXN0KSAhPSBudWxsIHtcbiAgICBAaW5jbHVkZSBncmlkLXJvdy1uZXN0KCRndXR0ZXJzKTtcblxuICAgIEBpZiBpbmRleCgkYmVoYXZpb3IsIGNvbGxhcHNlKSAhPSBudWxsIHtcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgZ3JpZC1yb3ctc2l6ZSgkc2l6ZSk7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICB9XG5cbiAgQGlmICRiYXNlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93ICR3cmFwO1xuICB9XG5cbiAgQGlmICRjb2x1bW5zICE9IG51bGwge1xuICAgIEBpbmNsdWRlIGdyaWQtY29udGV4dCgkY29sdW1ucywgJGJhc2UpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQ2FsY3VsYXRlcyB0aGUgYGZsZXhgIHByb3BlcnR5IGZvciBhIGZsZXggZ3JpZCBjb2x1bW4uIEl0IGFjY2VwdHMgYWxsIG9mIHRoZSBzYW1lIHZhbHVlcyBhcyB0aGUgYmFzaWMgYGdyaWQtY29sdW1uKClgIGZ1bmN0aW9uLCBhbG9uZyB3aXRoIHR3byBleHRyYXM6XG4vLy8gICAtIGBleHBhbmRgICh0aGUgZGVmYXVsdCkgd2lsbCBtYWtlIHRoZSBjb2x1bW4gZXhwYW5kIHRvIGZpbGwgc3BhY2UuXG4vLy8gICAtIGBzaHJpbmtgIHdpbGwgbWFrZSB0aGUgY29sdW1uIGNvbnRyYWN0LCBzbyBpdCBvbmx5IHRha2VzIHVwIHRoZSBob3Jpem9udGFsIHNwYWNlIGl0IG5lZWRzLlxuLy8vXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGNvbHVtbnMgW2V4cGFuZF0gLSBXaWR0aCBvZiB0aGUgY29sdW1uLlxuQGZ1bmN0aW9uIGZsZXgtZ3JpZC1jb2x1bW4oJGNvbHVtbnM6IGV4cGFuZCkge1xuICAkZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcblxuICBAaWYgJGNvbHVtbnMgPT0gc2hyaW5rIHtcbiAgICAkZmxleDogMCAwIGF1dG87XG4gIH1cbiAgQGVsc2UgaWYgJGNvbHVtbnMgIT0gZXhwYW5kIHtcbiAgICAkZmxleDogMCAwIGdyaWQtY29sdW1uKCRjb2x1bW5zKTtcbiAgfVxuXG4gIEByZXR1cm4gJGZsZXg7XG59XG5cbi8vLyBDcmVhdGVzIGEgY29sdW1uIGZvciBhIGZsZXggZ3JpZC4gQnkgZGVmYXVsdCwgdGhlIGNvbHVtbiB3aWxsIHN0cmV0Y2ggdG8gdGhlIGZ1bGwgd2lkdGggb2YgaXRzIGNvbnRhaW5lciwgYnV0IHRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aCBzaXppbmcgY2xhc3Nlcywgb3IgYnkgdXNpbmcgdGhlIGB1bnN0YWNrYCBjbGFzcyBvbiB0aGUgcGFyZW50IGZsZXggcm93LlxuLy8vXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGNvbHVtbnMgW2V4cGFuZF0gLSBXaWR0aCBvZiB0aGUgY29sdW1uLiBSZWZlciB0byB0aGUgYGZsZXgtZ3JpZC1jb2x1bW4oKWAgZnVuY3Rpb24gdG8gc2VlIHBvc3NpYmxlIHZhbHVlcy5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMgd2lkdGguIFNlZSB0aGUgYGdyaWQtY29sdW1uLWd1dHRlcmAgbWl4aW4uXG5AbWl4aW4gZmxleC1ncmlkLWNvbHVtbihcbiAgJGNvbHVtbnM6IGV4cGFuZCxcbiAgJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICAvLyBCYXNlIHByb3BlcnRpZXNcbiAgQGluY2x1ZGUgZmxleC1ncmlkLXNpemUoJGNvbHVtbnMpO1xuXG4gIC8vIEd1dHRlcnNcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3V0dGVyKCRndXR0ZXJzOiAkZ3V0dGVycyk7XG5cbiAgLy8gZml4ZXMgcmVjZW50IENocm9tZSB2ZXJzaW9uIG5vdCBsaW1pdGluZyBjaGlsZCB3aWR0aFxuICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNDkzNDU4Ni93aGl0ZS1zcGFjZS1ub3dyYXAtYW5kLWZsZXhib3gtZGlkLW5vdC13b3JrLWluLWNocm9tZVxuICBAaWYgJGNvbHVtbnMgPT0gZXhwYW5kIHtcbiAgICBtaW4td2lkdGg6IDA7XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBibG9jayBncmlkIGZvciBhIGZsZXggZ3JpZCByb3cuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG4gLSBOdW1iZXIgb2YgY29sdW1ucyB0byBkaXNwbGF5IG9uIGVhY2ggcm93LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VsZWN0b3IgLSBTZWxlY3RvciB0byB1c2UgdG8gdGFyZ2V0IGNvbHVtbnMgd2l0aGluIHRoZSByb3cuXG5AbWl4aW4gZmxleC1ncmlkLWxheW91dChcbiAgJG4sXG4gICRzZWxlY3RvcjogJy5jb2x1bW4nXG4pIHtcbiAgZmxleC13cmFwOiB3cmFwO1xuXG4gID4gI3skc2VsZWN0b3J9IHtcbiAgICAkcGN0OiBwZXJjZW50YWdlKGRpdmlkZSgxLCAkbikpO1xuXG4gICAgZmxleDogMCAwICRwY3Q7XG4gICAgbWF4LXdpZHRoOiAkcGN0O1xuICB9XG59XG5cbi8vLyBDaGFuZ2VzIHRoZSB3aWR0aCBmbGV4IGdyaWQgY29sdW1uLlxuLy8vIEBwYXJhbSB7TWl4ZWR9ICRjb2x1bW5zIFtleHBhbmRdIC0gV2lkdGggb2YgdGhlIGNvbHVtbi4gUmVmZXIgdG8gdGhlIGBmbGV4LWdyaWQtY29sdW1uKClgIGZ1bmN0aW9uIHRvIHNlZSBwb3NzaWJsZSB2YWx1ZXMuXG5AbWl4aW4gZmxleC1ncmlkLXNpemUoJGNvbHVtbnM6IG51bGwpIHtcbiAgJGNvbHVtbnM6ICRjb2x1bW5zIG9yIGV4cGFuZDtcblxuICBmbGV4OiBmbGV4LWdyaWQtY29sdW1uKCRjb2x1bW5zKTtcblxuICAvLyBtYXgtd2lkdGggZml4ZXMgSUUgMTAvMTEgbm90IHJlc3BlY3RpbmcgdGhlIGZsZXgtYmFzaXMgcHJvcGVydHlcbiAgQGlmICRjb2x1bW5zICE9IGV4cGFuZCBhbmQgJGNvbHVtbnMgIT0gc2hyaW5rIHtcbiAgICBtYXgtd2lkdGg6IGdyaWQtY29sdW1uKCRjb2x1bW5zKTtcbiAgfVxufVxuXG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZsZXgtZ3JpZCB7XG4gIC8vIFJvd1xuICAucm93IHtcbiAgICBAaW5jbHVkZSBmbGV4LWdyaWQtcm93O1xuXG4gICAgLy8gTmVzdGluZyBiZWhhdmlvclxuICAgICYgLnJvdyB7XG4gICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtcm93KG5lc3QsICRiYXNlOiBmYWxzZSk7XG5cbiAgICAgICYuY29sbGFwc2Uge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEV4cGFuZGVkIHJvd1xuICAgICYuZXhwYW5kZWQge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1yb3ctc2l6ZShleHBhbmQpO1xuXG4gICAgICAucm93IHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOm5vdCguZXhwYW5kZWQpIC5yb3cge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1yb3ctc2l6ZShleHBhbmQpO1xuICAgIH1cblxuICAgICYuY29sbGFwc2Uge1xuICAgICAgPiAuY29sdW1uIHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtY29sbGFwc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVW5kbyBuZWdhdGl2ZSBtYXJnaW5zXG4gICAgLy8gRnJvbSBjb2xsYXBzZWQgY2hpbGRcbiAgICAmLmlzLWNvbGxhcHNlLWNoaWxkLFxuICAgICYuY29sbGFwc2UgPiAuY29sdW1uID4gLnJvdyB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG4gIH1cblxuICAvLyBDb2x1bW5cbiAgLmNvbHVtbiB7XG4gICAgQGluY2x1ZGUgZmxleC1ncmlkLWNvbHVtbjtcbiAgfVxuXG4gIC8vIENvbHVtbiByb3dcbiAgLy8gVGhlIGRvdWJsZSAucm93IGNsYXNzIGlzIG5lZWRlZCB0byBidW1wIHVwIHRoZSBzcGVjaWZpY2l0eVxuICAuY29sdW1uLnJvdy5yb3cge1xuICAgIGZsb2F0OiBub25lO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgLy8gVG8gcHJvcGVybHkgbmVzdCBhIGNvbHVtbiByb3csIHBhZGRpbmcgYW5kIG1hcmdpbiBpcyByZW1vdmVkXG4gIC5yb3cgLmNvbHVtbi5yb3cucm93IHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gIH1cblxuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50IHtcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbi1jb3VudCB7XG4gICAgICAvLyBTaXppbmcgKHBlcmNlbnRhZ2UpXG4gICAgICAuI3skLXpmLXNpemV9LSN7JGl9IHtcbiAgICAgICAgZmxleDogZmxleC1ncmlkLWNvbHVtbigkaSk7XG4gICAgICAgIG1heC13aWR0aDogZ3JpZC1jb2x1bW4oJGkpO1xuICAgICAgfVxuXG4gICAgICAvLyBPZmZzZXRzXG4gICAgICAkbzogJGkgLSAxO1xuXG4gICAgICAuI3skLXpmLXNpemV9LW9mZnNldC0jeyRvfSB7XG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY29sdW1uLW9mZnNldCgkbyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQmxvY2sgZ3JpZFxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGJsb2NrLWdyaWQtbWF4IHtcbiAgICAgIC4jeyQtemYtc2l6ZX0tdXAtI3skaX0ge1xuICAgICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtbGF5b3V0KCRpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJC16Zi1zaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgIC8vIFNpemluZyAoZXhwYW5kKVxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkLXpmLXNpemUpIHtcbiAgICAgICAgLiN7JC16Zi1zaXplfS1leHBhbmQge1xuICAgICAgICAgIGZsZXg6IGZsZXgtZ3JpZC1jb2x1bW4oKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBBdXRvLXN0YWNraW5nL3Vuc3RhY2tpbmdcbiAgICAgIEBhdC1yb290ICh3aXRob3V0OiBtZWRpYSkge1xuICAgICAgICAucm93LiN7JC16Zi1zaXplfS11bnN0YWNrIHtcbiAgICAgICAgICA+IC5jb2x1bW4ge1xuICAgICAgICAgICAgZmxleDogZmxleC1ncmlkLWNvbHVtbigxMDAlKTtcblxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkLXpmLXNpemUpIHtcbiAgICAgICAgICAgICAgZmxleDogZmxleC1ncmlkLWNvbHVtbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlc3BvbnNpdmUgY29sbGFwc2luZ1xuICAgIC4jeyQtemYtc2l6ZX0tY29sbGFwc2Uge1xuICAgICAgPiAuY29sdW1uIHsgQGluY2x1ZGUgZ3JpZC1jb2wtY29sbGFwc2U7IH1cbiAgICB9XG5cbiAgICAuI3skLXpmLXNpemV9LXVuY29sbGFwc2Uge1xuICAgICAgPiAuY29sdW1uIHsgQGluY2x1ZGUgZ3JpZC1jb2wtZ3V0dGVyKCQtemYtc2l6ZSk7IH1cbiAgICB9XG4gIH1cblxuICAvLyBTaXppbmcgKHNocmluaylcbiAgLnNocmluayB7XG4gICAgZmxleDogZmxleC1ncmlkLWNvbHVtbihzaHJpbmspO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuXG4gIC8vIEJsb2NrIGdyaWQgY29sdW1uc1xuICAuY29sdW1uLWJsb2NrIHtcbiAgICBAaW5jbHVkZSBncmlkLWNvbHVtbi1tYXJnaW47XG4gIH1cblxuICAuY29sdW1ucyB7XG4gICAgQGV4dGVuZCAuY29sdW1uOyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIHBsYWNlaG9sZGVyLWluLWV4dGVuZFxuXG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB4eS1ncmlkXG4vLy8vXG5cbi8vLyBFbmFibGVzIHRoZSBYWSBncmlkLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiR4eS1ncmlkOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gVGhlIG1heGltdW0gd2lkdGggb2YgYSBncmlkIGNvbnRhaW5lci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRncmlkLWNvbnRhaW5lcjogJGdsb2JhbC13aWR0aCAhZGVmYXVsdDtcblxuLy8vIFRoZSBudW1iZXIgb2YgY29sdW1ucyB1c2VkIGluIHRoZSBncmlkLlxuLy8vIEB0eXBlIE51bWJlclxuJGdyaWQtY29sdW1uczogMTIgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgYW1vdW50IG9mIG1hcmdpbiBiZXR3ZWVuIGNlbGxzIGF0IGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMgd2hlbiB1c2luZyB0aGUgbWFyZ2luIGdyaWQuIFRvIHVzZSBqdXN0IG9uZSBzaXplLCBzZXQgdGhlIHZhcmlhYmxlIHRvIGEgbnVtYmVyIGluc3RlYWQgb2YgYSBtYXAuXG4vLy8gQHR5cGUgTWFwIHwgTGVuZ3RoXG4kZ3JpZC1tYXJnaW4tZ3V0dGVyczogKFxuICBzbWFsbDogMjBweCxcbiAgbWVkaXVtOiAzMHB4XG4pICFkZWZhdWx0O1xuXG4vLy8gVGhlIGFtb3VudCBvZiBwYWRkaW5nIGluIGNlbGxzIGF0IGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMgd2hlbiB1c2luZyB0aGUgcGFkZGluZyBncmlkLiBUbyB1c2UganVzdCBvbmUgc2l6ZSwgc2V0IHRoZSB2YXJpYWJsZSB0byBhIG51bWJlciBpbnN0ZWFkIG9mIGEgbWFwLlxuLy8vIEB0eXBlIE1hcCB8IExlbmd0aFxuJGdyaWQtcGFkZGluZy1ndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyAhZGVmYXVsdDtcblxuLy8vIFRoZSBhbW91bnQgb2YgcGFkZGluZyB0byB1c2Ugd2hlbiBwYWRkaW5nIHRoZSBncmlkLWNvbnRhaW5lci5cbi8vLyBAdHlwZSBNYXAgfCBMZW5ndGhcbiRncmlkLWNvbnRhaW5lci1wYWRkaW5nOiAkZ3JpZC1wYWRkaW5nLWd1dHRlcnMgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgbWF4aW11bSB3aWR0aCB0byBhcHBseSB0byBhIGdyaWQgY29udGFpbmVyXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ3JpZC1jb250YWluZXItbWF4OiAkZ2xvYmFsLXdpZHRoICFkZWZhdWx0O1xuXG4vLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIGNlbGxzIGluIGFuIFhZIGJsb2NrIGdyaWQuXG4vLy8gQHR5cGUgTnVtYmVyXG4keHktYmxvY2stZ3JpZC1tYXg6IDggIWRlZmF1bHQ7XG5cbkBpbXBvcnQgJ2d1dHRlcnMnO1xuQGltcG9ydCAnZ3JpZCc7XG5AaW1wb3J0ICdjZWxsJztcbkBpbXBvcnQgJ2ZyYW1lJztcbkBpbXBvcnQgJ3Bvc2l0aW9uJztcbkBpbXBvcnQgJ2xheW91dCc7XG5AaW1wb3J0ICdjb2xsYXBzZSc7XG5AaW1wb3J0ICdjbGFzc2VzJztcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB4eS1ncmlkXG4vLy8vXG5cbi8vLyBDcmVhdGUgZ3V0dGVycyBmb3IgYSBjZWxsL2NvbnRhaW5lci5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBUeXBlIG9mIGd1dHRlciB0byBvdXRwdXQuIEFjY2VwdHMgZWl0aGVyIG1hcmdpbiBvciBwYWRkaW5nLlxuLy8vIEBwYXJhbSB7TGlzdH0gJGd1dHRlci1wb3NpdGlvbiBbcmlnaHQgbGVmdF0gLSBUaGUgcG9zaXRpb24gdG8gYXBwbHkgZ3V0dGVycyB0by4gQWNjZXB0cyBgdG9wYCwgYGJvdHRvbWAsIGBsZWZ0YCwgYHJpZ2h0YCBpbiBhbnkgY29tYmluYXRpb24uXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkbmVnYXRpdmUgW2ZhbHNlXSAtIFdoZXRoZXIgdG8gYXBwbHkgdGhlIGd1dHRlciBhcyBhIG5lZ2F0aXZlIHZhbHVlLiBDb21tb25seSB1c2VkIGZvciBuZXN0ZWQgZ3JpZHMuXG5AbWl4aW4geHktZ3V0dGVycyhcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcbiAgJGd1dHRlci1wb3NpdGlvbjogcmlnaHQgbGVmdCxcbiAgJG5lZ2F0aXZlOiBmYWxzZVxuKSB7XG4gICRvcGVyYXRvcjogaWYoJG5lZ2F0aXZlLCAnLScsICcnKTtcblxuICAvLyBJZiB3ZSBoYXZlIGRlY2xhcmVkIG5lZ2F0aXZlIGd1dHRlcnMsIGZvcmNlIHR5cGUgdG8gYG1hcmdpbi5cbiAgJGd1dHRlci10eXBlOiBpZigkbmVnYXRpdmUsICdtYXJnaW4nLCAkZ3V0dGVyLXR5cGUpO1xuXG4gIC8vIE91dHB1dCBvdXIgbWFyZ2luIGd1dHRlcnMuXG4gIEBpZiAodHlwZS1vZigkZ3V0dGVycykgPT0gJ21hcCcpIHtcbiAgICBAaW5jbHVkZSAtemYtYnJlYWtwb2ludC12YWx1ZShhdXRvLCAkZ3V0dGVycykge1xuICAgICAgJGd1dHRlcjogcmVtLWNhbGMoJC16Zi1icC12YWx1ZSkgKiAwLjU7XG5cbiAgICAgIC8vIExvb3AgdGhyb3VnaCBlYWNoIGd1dHRlciBwb3NpdGlvblxuICAgICAgQGVhY2ggJHZhbHVlIGluICRndXR0ZXItcG9zaXRpb24ge1xuICAgICAgICAjeyRndXR0ZXItdHlwZX0tI3skdmFsdWV9OiB1bnF1b3RlKFwiI3skb3BlcmF0b3J9I3skZ3V0dGVyfVwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgKHR5cGUtb2YoJGd1dHRlcnMpID09ICdudW1iZXInKSB7XG4gICAgJGd1dHRlcjogcmVtLWNhbGMoJGd1dHRlcnMpICogMC41O1xuXG4gICAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggZ3V0dGVyIHBvc2l0aW9uXG4gICAgQGVhY2ggJHZhbHVlIGluICRndXR0ZXItcG9zaXRpb24ge1xuICAgICAgI3skZ3V0dGVyLXR5cGV9LSN7JHZhbHVlfTogdW5xdW90ZShcIiN7JG9wZXJhdG9yfSN7JGd1dHRlcn1cIik7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgeHktZ3JpZFxuLy8vL1xuXG4vLy8gQ3JlYXRlcyBhIG1heCB3aWR0aCBjb250YWluZXIsIGRlc2lnbmVkIHRvIGhvdXNlIHlvdXIgZ3JpZCBjb250ZW50LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCBbJGdyaWQtY29udGFpbmVyXSAtIGEgd2lkdGggdG8gbGltaXQgdGhlIGNvbnRhaW5lciB0by5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHBhZGRpbmcgWyRncmlkLWNvbnRhaW5lci1wYWRkaW5nXSAtIHBhZGRpbmdzIG9mIHRoZSBjb250YWluZXIuXG5AbWl4aW4geHktZ3JpZC1jb250YWluZXIoXG4gICR3aWR0aDogJGdyaWQtY29udGFpbmVyLFxuICAkcGFkZGluZzogJGdyaWQtY29udGFpbmVyLXBhZGRpbmdcbikge1xuICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRndXR0ZXJzOiAkcGFkZGluZywgJGd1dHRlci10eXBlOiBwYWRkaW5nKTtcblxuICBtYXgtd2lkdGg6ICR3aWR0aDtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbn1cblxuLy8vIENyZWF0ZXMgYSBjb250YWluZXIgZm9yIHlvdXIgZmxleCBjZWxscy5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGRpcmVjdGlvbiBbaG9yaXpvbnRhbF0gLSBFaXRoZXIgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBkaXJlY3Rpb24gb2YgY2VsbHMgd2l0aGluLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHdyYXAgW3RydWVdIC0gSWYgdGhlIGNlbGxzIHdpdGhpbiBzaG91bGQgd3JhcCBvciBub3QuXG5AbWl4aW4geHktZ3JpZChcbiAgJGRpcmVjdGlvbjogaG9yaXpvbnRhbCxcbiAgJHdyYXA6IHRydWVcbikge1xuICAkZGlyZWN0aW9uOiBpZigkZGlyZWN0aW9uID09ICdob3Jpem9udGFsJywgcm93LCBjb2x1bW4pO1xuICAkd3JhcDogaWYoJHdyYXAsIHdyYXAsIG5vd3JhcCk7XG5cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiAkZGlyZWN0aW9uICR3cmFwO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHh5LWdyaWRcbi8vLy9cblxuLy8vIFJldHVybnMgdGhlIGFwcHJvcHJpYXRlIENTUyBmbGV4IHZhbHVlIGZvciBhIGNlbGwgYmFzZS5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgW2Z1bGxdIC0gVGhlIHNpemUgb2YgeW91ciBjZWxsLiBBY2NlcHRzIGBmdWxsYCwgYGF1dG9gLCBgc2hyaW5rYCwgYGdyb3dgLCBvciBhbnkgb3RoZXIgdmFsdWUgcmVwcmVzZW50aW5nIGEgY2VsbCBzaXplIChpdCB3aWxsIGJlIHRyZWF0ZWQgYXMgYHNocmlua2ApLlxuLy8vXG4vLy8gQHJldHVybnMge0xpc3R9IFRoZSBjZWxsIGZsZXggcHJvcGVydHkgdmFsdWUuXG5AZnVuY3Rpb24geHktY2VsbC1iYXNlKCRzaXplOiBmdWxsKSB7XG4gIEBpZiAoJHNpemUgPT0gJ2F1dG8nKSB7XG4gICAgQHJldHVybiAxIDEgMHB4O1xuICB9XG4gIEBlbHNlIGlmICgkc2l6ZSA9PSAnZ3JvdycpIHtcbiAgICBAcmV0dXJuIDEgMCBhdXRvO1xuICB9XG4gIEBlbHNlIGlmICgkc2l6ZSA9PSAnc2hyaW5rJyBvciAkc2l6ZSA9PSAnZnVsbCcgb3IgemYtaXMtZnJhY3Rpb24oJHNpemUsICRhbGxvdy1uby1kZW5vbWluYXRvcjogdHJ1ZSkpIHtcbiAgICBAcmV0dXJuIDAgMCBhdXRvO1xuICB9XG4gIEByZXR1cm4gbnVsbDtcbn1cblxuLy8vIENhbGN1bGF0ZSB0aGUgc2l6ZSBvZiBhIGNlbGwgZ3V0dGVycy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBuYW1lIG9mIHRoZSBicmVha3BvaW50IHNpemUgaW4geW91ciBndXR0ZXJzIG1hcCB0byBnZXQgdGhlIHNpemUgZnJvbS4gSWYgYGF1dG9gLCByZXR1cm5zIHRoZSByZXNwb25zaXZlIGd1dHRlcnMgbWFwIGAkZ3V0dGVyc2AuIElmIHVzaW5nIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRoaXMgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSB1bmxlc3MgbWFudWFsbHkgZW50ZXJlZC5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ8TWFwfSBUaGUgY2VsbCBndXR0ZXIgc2l6ZSBvciB0aGUgcmVzcG9uc2l2ZSBndXR0ZXJzIG1hcC5cbkBmdW5jdGlvbiB4eS1jZWxsLWd1dHRlcnMoXG4gICRndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyxcbiAgJGJyZWFrcG9pbnQ6IG51bGxcbikge1xuICAvLyBGb3IgYGF1dG9gLCByZXR1cm5zIHRoZSByZXNwb25zaXZlIG1hcCBgJGd1dHRlcnNgLlxuICBAaWYgKCRicmVha3BvaW50ID09ICdhdXRvJykge1xuICAgIEByZXR1cm4gJGd1dHRlcnM7XG4gIH1cblxuICAvLyBVc2UgdGhlIGNvbnRleHR1YWwgYnJlYWtwb2ludCBieSBkZWZhdWx0LlxuICAkYnJlYWtwb2ludDogLXpmLWN1cnJlbnQtYnJlYWtwb2ludCgkYnJlYWtwb2ludCk7XG5cbiAgQGlmICgkYnJlYWtwb2ludCkge1xuICAgIEByZXR1cm4gLXpmLWdldC1icC12YWwoJGd1dHRlcnMsICRicmVha3BvaW50KTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAtemYtZ2V0LWJwLXZhbCgkZ3V0dGVycywgJC16Zi16ZXJvLWJyZWFrcG9pbnQpIG9yIDA7XG4gIH1cbn1cblxuLy8vIFJldHVybnMgdGhlIHBlcmNlbnRhZ2Ugc2l6ZSBvZiBhIGNlbGwuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkc2l6ZSBbJGdyaWQtY29sdW1uc10gLSBTaXplIHRvIG1ha2UgdGhlIGNlbGwuIFlvdSBjYW4gcGFzcyBhIHZhbHVlIGluIG11bHRpcGxlIGZvcm1hdHMsIHN1Y2ggYXMgYDZgLCBgNTAlYCwgYDEgb2YgMmAgb3IgYDEvM2AuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBTaXplIG9mIHRoZSBjZWxsIChpbiBwZXJjZW50KS5cbkBmdW5jdGlvbiB4eS1jZWxsLXNpemUoXG4gICRzaXplOiAkZ3JpZC1jb2x1bW5zXG4pIHtcbiAgQHJldHVybiBmcmFjdGlvbi10by1wZXJjZW50YWdlKCRzaXplLCAkZGVub21pbmF0b3I6ICRncmlkLWNvbHVtbnMpO1xufVxuXG4vLy8gUmV0dXJucyB0aGUgYXBwcm9wcmlhdGUgQ1NTIHZhbHVlIGZvciBhIGNlbGwgc2l6ZS5cbi8vL1xuLy8vIEd1dHRlcnMtcmVsYXRlZCBhcmd1bWVudHMgYXJlIHJlcXVpcmVkIGZvciBjZWxscyB3aXRoIG1hcmdpbiBndXR0ZXJzIChieSBkZWZhdWx0KSBhcyB0aGUgZ3V0dGVyIGlzIGluY2x1ZGVkIGluIHRoZSB3aWR0aC5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRzaXplIFtmdWxsXSAtIFRoZSBzaXplIG9mIHlvdXIgY2VsbC4gQ2FuIGJlIGBmdWxsYCwgYGF1dG9gLCBgc2hyaW5rYCBvciBhbnkgZnJhY3Rpb24gbGlrZSBgNmAsIGA1MCVgLCBgMSBvZiAyYCBvciBgMS8yYC5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1tYXJnaW4tZ3V0dGVyc10gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIC0gVHlwZSBvZiBndXR0ZXIgdG8gb3V0cHV0LiBBY2NlcHRzIGBtYXJnaW5gLCBgcGFkZGluZ2Agb3IgYG5vbmVgLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCBbbnVsbF0gLSBUaGUgbmFtZSBvZiB0aGUgYnJlYWtwb2ludCBzaXplIGluIHlvdXIgZ3V0dGVycyBtYXAgdG8gZ2V0IHRoZSBzaXplIGZyb20uIElmIGBhdXRvYCwgcmV0dXJucyBhIG1hcCBvZiBzaXplcyBhZGFwdGVkIHRvIHJlc3BvbnNpdmUgZ3V0dGVycy4gSWYgdXNpbmcgd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdGhpcyB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IHVubGVzcyBtYW51YWxseSBlbnRlcmVkLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcnxTdHJpbmd8TWFwfSBUaGUgY2VsbCBzaXppbmcgcHJvcGVydHkgdmFsdWUsIG9yIGEgcmVzcG9uc2l2ZSBtYXAgb2YgdGhlbS5cbkBmdW5jdGlvbiB4eS1jZWxsLXNpemUtY3NzKFxuICAkc2l6ZTogZnVsbCxcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcbiAgJGJyZWFrcG9pbnQ6IG51bGxcbikge1xuICAkbWFyZ2luLWd1dHRlcjogMDtcblxuICBAaWYgKCRzaXplID09ICdhdXRvJyBvciAkc2l6ZSA9PSAnc2hyaW5rJykge1xuICAgIEByZXR1cm4gYXV0bztcbiAgfVxuXG4gIC8vIEZvciBjZWxscyB3aXRoIG1hcmdpbiBndXR0ZXJzLCB0aGUgZ3V0dGVyIGlzIGluY2x1ZGVkIGluIHRoZSB3aWR0aC5cbiAgQGlmICgkZ3V0dGVyLXR5cGUgPT0gJ21hcmdpbicpIHtcbiAgICAkbWFyZ2luLWd1dHRlcjogeHktY2VsbC1ndXR0ZXJzKCRndXR0ZXJzLCAkYnJlYWtwb2ludCk7XG4gICAgQGlmICgkbWFyZ2luLWd1dHRlciA9PSBudWxsKSB7XG4gICAgICBAZXJyb3IgJ3h5LWNlbGwtc2l6ZTogbm8gZ3V0dGVycyB3ZXJlIGZvdW5kIGluIGAkZ3V0dGVyc2AgZm9yIFwiJGJyZWFrcG9pbnQ6ICN7JGJyZWFrcG9pbnR9XCInO1xuICAgIH1cbiAgfVxuXG4gIC8vIENhbGN1bGF0ZSB0aGUgY2VsbCBzaXplIChudW1iZXIpXG4gICRzaXplLXJhdzogaWYoJHNpemUgPT0gJ2Z1bGwnLCAxMDAlLCB4eS1jZWxsLXNpemUoJHNpemUpKTtcblxuICAvLyBDYWxjdWxhdGUgdGhlIGNlbGwgQ1NTIHNpemUgaW5jbHVkaW5nIGd1dHRlcnMgKHN0cmluZylcbiAgLy8gSWYgdGhlIGNlbGwgaGFzIHJlc3BvbnNpdmUgbWFyZ2luIGd1dHRlcnMsIHJldHVybiBhIHJlc3BvbnNpdmUgbWFwIG9mIHNpemVzLlxuICBAaWYgdHlwZS1vZigkbWFyZ2luLWd1dHRlcikgPT0gJ21hcCcge1xuICAgICRyZXNwb25zaXZlLWNzcy1zaXplczogKCk7XG5cbiAgICBAZWFjaCAkYnAsICRtZyBpbiAkbWFyZ2luLWd1dHRlciB7XG4gICAgICAkc2l6ZS1jc3M6IGlmKCRtZyA9PSAwLCAkc2l6ZS1yYXcsIGNhbGMoI3skc2l6ZS1yYXd9IC0gI3tyZW0tY2FsYygkbWcpfSkpO1xuICAgICAgJHJlc3BvbnNpdmUtY3NzLXNpemVzOiBtYXAtbWVyZ2UoJHJlc3BvbnNpdmUtY3NzLXNpemVzLCAoJGJwOiAkc2l6ZS1jc3MpKTtcbiAgICB9XG5cbiAgICBAcmV0dXJuICRyZXNwb25zaXZlLWNzcy1zaXplcztcbiAgfVxuICAvLyBPdGhlcndpc2UsIHJldHVybiBhIHNpbmdsZSBDU1Mgc2l6ZS5cbiAgQGVsc2Uge1xuICAgICRjc3Mtc2l6ZTogaWYoJG1hcmdpbi1ndXR0ZXIgPT0gMCwgJHNpemUtcmF3LCBjYWxjKCN7JHNpemUtcmF3fSAtICN7cmVtLWNhbGMoJG1hcmdpbi1ndXR0ZXIpfSkpO1xuICAgIEByZXR1cm4gJGNzcy1zaXplO1xuICB9XG59XG5cbi8vLyBTZXRzIGJhc2UgZmxleCBwcm9wZXJ0aWVzIGZvciBjZWxscy5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgW2Z1bGxdIC0gVGhlIHNpemUgb2YgeW91ciBjZWxsLiBBY2NlcHRzIGBmdWxsYCwgYGF1dG9gLCBgc2hyaW5rYCwgYGdyb3dgLCBvciBhbnkgb3RoZXIgdmFsdWUgcmVwcmVzZW50aW5nIGEgY2VsbCBzaXplIChpdCB3aWxsIGJlIHRyZWF0ZWQgYXMgYHNocmlua2ApLlxuQG1peGluIHh5LWNlbGwtYmFzZSgkc2l6ZTogZnVsbCkge1xuICAkYmFzZTogeHktY2VsbC1iYXNlKCRzaXplKTtcblxuICBmbGV4OiAjeyRiYXNlfTtcblxuICAvLyBTZXQgYmFzZSBzdHlsZXMgZm9yIFwiZnVsbFwiIG9ubHlcbiAgQGlmKCRzaXplID09ICdmdWxsJykge1xuICAgIG1pbi1oZWlnaHQ6IDBweDtcbiAgICBtaW4td2lkdGg6IDBweDtcbiAgfVxufVxuXG4vLy8gUmVzZXRzIGEgY2VsbHMgd2lkdGggKG9yIGhlaWdodCBpZiB2ZXJ0aWNhbCBpcyB0cnVlKSBhcyB3ZWxsIGFzIHN0cmlwcyBpdHMgZ3V0dGVycy5cbi8vL1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHZlcnRpY2FsIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSB0byBvdXRwdXQgdmVydGljYWwgKGhlaWdodCkgc3R5bGVzIHJhdGhlciB0aGFuIHdpZHRocy5cbkBtaXhpbiB4eS1jZWxsLXJlc2V0KCR2ZXJ0aWNhbDogdHJ1ZSkge1xuICAkZGlyZWN0aW9uOiBpZigkdmVydGljYWwgPT0gdHJ1ZSwgaGVpZ2h0LCB3aWR0aCk7XG4gICN7JGRpcmVjdGlvbn06IGF1dG87XG4gIG1heC0jeyRkaXJlY3Rpb259OiBub25lO1xufVxuXG4vLy8gU2V0cyBzaXppbmcgcHJvcGVydGllcyBmb3IgY2VsbHMuXG4vLy9cbi8vLyBHdXR0ZXJzLXJlbGF0ZWQgYXJndW1lbnRzIGFyZSByZXF1aXJlZCBmb3IgY2VsbHMgd2l0aCBtYXJnaW4gZ3V0dGVycyAoYnkgZGVmYXVsdCkgYXMgdGhlIGd1dHRlciBpcyBpbmNsdWRlZCBpbiB0aGUgd2lkdGguXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkc2l6ZSBbZnVsbF0gLSBUaGUgc2l6ZSBvZiB5b3VyIGNlbGwuIENhbiBiZSBgZnVsbGAgKDEwMCUgd2lkdGgpLCBgYXV0b2AgKHVzZSBhbGwgYXZhaWxhYmxlIHNwYWNlKSwgYHNocmlua2AgKHVzZSBvbmx5IHRoZSByZXF1aXJlZCBzcGFjZSkgb3IgYW55IGZyYWN0aW9uIChgNmAsIGA1MCVgLCBgMSBvZiAyYCBvciBgMS8yYC4uLikuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSAtIFR5cGUgb2YgZ3V0dGVyIHRvIG91dHB1dC4gQWNjZXB0cyBgbWFyZ2luYCwgYHBhZGRpbmdgIG9yIGBub25lYC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgW251bGxdIC0gVGhlIG5hbWUgb2YgdGhlIGJyZWFrcG9pbnQgc2l6ZSBpbiB5b3VyIGd1dHRlcnMgbWFwIHRvIGdldCB0aGUgc2l6ZSBmcm9tLiBJZiBgYXV0b2AsIGdlbmVyYXRlcyBzaXplcyBhZGFwdGVkIGZvciByZXNwb25zaXZlIGd1dHRlcnMuIElmIHVzaW5nIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRoaXMgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSB1bmxlc3MgbWFudWFsbHkgZW50ZXJlZC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gU2V0IHRvIHRydWUgdG8gb3V0cHV0IHZlcnRpY2FsIChoZWlnaHQpIHN0eWxlcyByYXRoZXIgdGhhbiB3aWR0aHMuXG5AbWl4aW4geHktY2VsbC1zaXplKFxuICAkc2l6ZTogZnVsbCxcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcbiAgJGJyZWFrcG9pbnQ6IG51bGwsXG4gICR2ZXJ0aWNhbDogZmFsc2Vcbikge1xuICAkc2l6ZXM6IHh5LWNlbGwtc2l6ZS1jc3MoJHNpemUsICRndXR0ZXJzLCAkZ3V0dGVyLXR5cGUsICRicmVha3BvaW50KTtcbiAgJGRpcmVjdGlvbjogaWYoJHZlcnRpY2FsID09IHRydWUsIGhlaWdodCwgd2lkdGgpO1xuXG4gIEBpZiAodHlwZS1vZigkc2l6ZXMpID09ICdtYXAnKSB7XG4gICAgQGluY2x1ZGUgLXpmLWJyZWFrcG9pbnQtdmFsdWUoYXV0bywgJHNpemVzKSB7XG4gICAgICAjeyRkaXJlY3Rpb259OiAkLXpmLWJwLXZhbHVlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgI3skZGlyZWN0aW9ufTogJHNpemVzO1xuICB9XG59XG5cbi8vLyBTZXRzIGd1dHRlcnMgcHJvcGVydGllcyBmb3IgY2VsbHMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1tYXJnaW4tZ3V0dGVyc10gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIC0gVHlwZSBvZiBndXR0ZXIgdG8gb3V0cHV0LiBBY2NlcHRzIGBtYXJnaW5gLCBgcGFkZGluZ2Agb3IgYG5vbmVgLlxuLy8vIEBwYXJhbSB7TGlzdH0gJGd1dHRlci1wb3NpdGlvbiBbbnVsbF0gLSBUaGUgcG9zaXRpb24gdG8gYXBwbHkgZ3V0dGVycyB0by4gQWNjZXB0cyBgdG9wYCwgYGJvdHRvbWAsIGBsZWZ0YCwgYHJpZ2h0YCBpbiBhbnkgY29tYmluYXRpb24uIEJ5IGRlZmF1bHQgYHJpZ2h0IGxlZnRgIGZvciBob3Jpem9udGFsIGNlbGxzIGFuZCBgdG9wIGJvdHRvbWAgZm9yIHZlcnRpY2FsIGNlbGxzLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCBbbnVsbF0gLSBUaGUgbmFtZSBvZiB0aGUgYnJlYWtwb2ludCBzaXplIGluIHlvdXIgZ3V0dGVycyBtYXAgdG8gZ2V0IHRoZSBzaXplIGZyb20uIElmIGBhdXRvYCwgZ2VuZXJhdGVzIHJlc3BvbnNpdmUgZ3V0dGVycy4gSWYgdXNpbmcgd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdGhpcyB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IHVubGVzcyBtYW51YWxseSBlbnRlcmVkLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHZlcnRpY2FsIFtmYWxzZV0gLSBEaXJlY3Rpb24gb2YgdGhlIGd1dHRlcnMgdG8gb3V0cHV0LiBTZWUgYCRndXR0ZXItcG9zaXRpb25gLlxuQG1peGluIHh5LWNlbGwtZ3V0dGVycyhcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcbiAgJGd1dHRlci1wb3NpdGlvbjogbnVsbCxcbiAgJGJyZWFrcG9pbnQ6IG51bGwsXG4gICR2ZXJ0aWNhbDogZmFsc2Vcbikge1xuICAvLyBHZXQgdGhlIGRlZmF1bHQgZ3V0dGVyIHBvc2l0aW9uIGFjY29yZGluZyB0byBjZWxsIGRpcmVjdGlvblxuICBAaWYoJGd1dHRlci1wb3NpdGlvbiA9PSBudWxsKSB7XG4gICAgJGd1dHRlci1wb3NpdGlvbjogaWYoJHZlcnRpY2FsID09IHRydWUsIHRvcCBib3R0b20sIGxlZnQgcmlnaHQpO1xuICB9XG5cbiAgLy8gR2V0IHRoZSBndXR0ZXIgd2lkdGggZm9yIHRoaXMgYnJlYWtwb2ludFxuICAkZ3V0dGVyLXdpZHRoOiB4eS1jZWxsLWd1dHRlcnMoJGd1dHRlcnMsICRicmVha3BvaW50KTtcbiAgQGlmICgkZ3V0dGVyLXdpZHRoID09IG51bGwpIHtcbiAgICBAZXJyb3IgJ3h5LWNlbGwtZ3V0dGVyczogbm8gZ3V0dGVycyB3ZXJlIGZvdW5kIGluIGAkZ3V0dGVyc2AgZm9yIFwiJGJyZWFrcG9pbnQ6ICN7JGJyZWFrcG9pbnR9XCInO1xuICB9XG5cbiAgQGlmICgkZ3V0dGVyLXR5cGUgYW5kICRndXR0ZXItdHlwZSAhPSBub25lKSB7XG4gICAgQGluY2x1ZGUgeHktZ3V0dGVycygkZ3V0dGVyLXdpZHRoLCAkZ3V0dGVyLXR5cGUsICRndXR0ZXItcG9zaXRpb24pO1xuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgY2VsbCBmb3IgeW91ciBncmlkLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHNpemUgW2Z1bGxdIC0gVGhlIHNpemUgb2YgeW91ciBjZWxsLiBDYW4gYmUgYGZ1bGxgICgxMDAlIHdpZHRoKSwgYGF1dG9gICh1c2UgYWxsIGF2YWlsYWJsZSBzcGFjZSksIGBzaHJpbmtgICh1c2Ugb25seSB0aGUgcmVxdWlyZWQgc3BhY2UpIG9yIGFueSBmcmFjdGlvbiAoYDZgLCBgNTAlYCwgYDEgb2YgMmAgb3IgYDEvMmAuLi4pLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGd1dHRlci1vdXRwdXQgW251bGxdIC0gW0RFUFJFQ0FURURdIFdoZXRoZXIgb3Igbm90IHRvIG91dHB1dCBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBUeXBlIG9mIGd1dHRlciB0byBvdXRwdXQuIEFjY2VwdHMgYG1hcmdpbmAsIGBwYWRkaW5nYCBvciBgbm9uZWAuXG4vLy8gQHBhcmFtIHtMaXN0fSAkZ3V0dGVyLXBvc2l0aW9uIFtudWxsXSAtIFRoZSBwb3NpdGlvbiB0byBhcHBseSBndXR0ZXJzIHRvLiBBY2NlcHRzIGB0b3BgLCBgYm90dG9tYCwgYGxlZnRgLCBgcmlnaHRgIGluIGFueSBjb21iaW5hdGlvbi4gQnkgZGVmYXVsdCBgcmlnaHQgbGVmdGAgZm9yIGhvcml6b250YWwgY2VsbHMgYW5kIGB0b3AgYm90dG9tYCBmb3IgdmVydGljYWwgY2VsbHMuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBuYW1lIG9mIHRoZSBicmVha3BvaW50IHNpemUgaW4geW91ciBndXR0ZXJzIG1hcCB0byBnZXQgdGhlIHNpemUgZnJvbS4gSWYgYGF1dG9gLCBnZW5lcmF0ZXMgcmVzcG9uc2l2ZSBndXR0ZXJzLiBJZiB1c2luZyB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0aGlzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgdW5sZXNzIG1hbnVhbGx5IGVudGVyZWQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIFNldCB0byB0cnVlIHRvIG91dHB1dCB2ZXJ0aWNhbCAoaGVpZ2h0KSBzdHlsZXMgcmF0aGVyIHRoYW4gd2lkdGhzLlxuLy8vIEBwYXJhbSB7TGlzdH0gJG91dHB1dCBbKGJhc2Ugc2l6ZSBndXR0ZXJzKV0gLSBDZWxsIHBhcnRzIHRvIG91dHB1dC4gWW91IHdpbGwgbmVlZCB0byBnZW5lcmF0ZSBvdGhlcnMgcGFydHMgb2YgdGhlIGNlbGwgc2VwZXJhdGVseSwgaXQgbWF5IG5vdCB3b3JrIHByb3Blcmx5IG90aGVyd2lzZS5cbkBtaXhpbiB4eS1jZWxsKFxuICAkc2l6ZTogZnVsbCxcbiAgJGd1dHRlci1vdXRwdXQ6IG51bGwsXG4gICRndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyxcbiAgJGd1dHRlci10eXBlOiBtYXJnaW4sXG4gICRndXR0ZXItcG9zaXRpb246IG51bGwsXG4gICRicmVha3BvaW50OiBudWxsLFxuICAkdmVydGljYWw6IGZhbHNlLFxuICAkb3V0cHV0OiAoYmFzZSBzaXplIGd1dHRlcnMpXG4pIHtcbiAgLy8gRGVmYXVsdCBmb3IgJGd1dHRlci1vdXRwdXRcbiAgQGlmICgkZ3V0dGVyLW91dHB1dCAhPSBudWxsKSB7XG4gICAgQHdhcm4gJ3h5LWNlbGw6ICRndXR0ZXItb3V0cHV0IGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZC4gU2VlIG1pZ3JhdGlvbiBub3RlcyBhdCBodHRwczovL2dpdC5pby9mb3VuZGF0aW9uLTYtNi0wJztcbiAgICBAaWYgKCRndXR0ZXItb3V0cHV0ID09IGZhbHNlKSB7XG4gICAgICAkb3V0cHV0OiBzbC1yZW1vdmUoJG91dHB1dCwgZ3V0dGVycyk7XG4gICAgfVxuICB9XG5cbiAgQGlmIChpbmRleCgkb3V0cHV0LCBiYXNlKSkge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwtYmFzZSgkc2l6ZSk7XG4gIH1cbiAgQGlmIChpbmRleCgkb3V0cHV0LCBzaXplKSkge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZSgkc2l6ZSwgJGd1dHRlcnMsICRndXR0ZXItdHlwZSwgJGJyZWFrcG9pbnQsICR2ZXJ0aWNhbCk7XG4gIH1cbiAgQGlmIChpbmRleCgkb3V0cHV0LCBndXR0ZXJzKSkge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwtZ3V0dGVycygkZ3V0dGVycywgJGd1dHRlci10eXBlLCAkZ3V0dGVyLXBvc2l0aW9uLCAkYnJlYWtwb2ludCwgJHZlcnRpY2FsKTtcbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIHNpbmdsZSBicmVha3BvaW50IHNpemVkIGdyaWQuIFVzZWQgdG8gZ2VuZXJhdGUgb3VyIGdyaWQgY2xhc3Nlcy5cbi8vL1xuLy8vIGB4eS1jZWxsLXN0YXRpYygpYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQuXG4vLy8gVXNlIGB4eS1jZWxsKClgIGluc3RlYWQgd2l0aCBgJG91dHB1dDogKHNpemUgZ3V0dGVycylgIHRvIG5vdCBnZW5lcmF0ZSB0aGUgY2VsbCBiYXNlLlxuLy8vIFNlZSBtaWdyYXRpb24gbm90ZXMgYXQgaHR0cHM6Ly9naXQuaW8vZm91bmRhdGlvbi02LTYtMFxuLy8vXG4vLy8gQGRlcHJlY2F0ZWQgdjYuNi4wXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkc2l6ZSBbZnVsbF0gLSBUaGUgc2l6ZSBvZiB5b3VyIGNlbGwuIENhbiBiZSBgZnVsbGAgKDEwMCUgd2lkdGgpLCBgYXV0b2AgKHVzZSBhbGwgYXZhaWxhYmxlIHNwYWNlKSwgYHNocmlua2AgKHVzZSBvbmx5IHRoZSByZXF1aXJlZCBzcGFjZSkgb3IgYW55IGZyYWN0aW9uIChgNmAsIGA1MCVgLCBgMSBvZiAyYCBvciBgMS8yYC4uLikuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZ3V0dGVyLW91dHB1dCBbdHJ1ZV0gLSBXaGV0aGVyIG9yIG5vdCB0byBvdXRwdXQgZ3V0dGVycy4gQWx3YXlzIGB0cnVlYCBmb3IgbWFyZ2luIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBuYW1lIG9mIHRoZSBicmVha3BvaW50IHNpemUgaW4geW91ciBndXR0ZXJzIG1hcCB0byBnZXQgdGhlIHNpemUgZnJvbS4gSWYgdXNpbmcgd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdGhpcyB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IHVubGVzcyBtYW51YWxseSBlbnRlcmVkLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHZlcnRpY2FsIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSB0byBvdXRwdXQgdmVydGljYWwgKGhlaWdodCkgc3R5bGVzIHJhdGhlciB0aGFuIHdpZHRocy5cbkBtaXhpbiB4eS1jZWxsLXN0YXRpYyhcbiAgJHNpemU6IGZ1bGwsXG4gICRndXR0ZXItb3V0cHV0OiB0cnVlLFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkYnJlYWtwb2ludDogJC16Zi16ZXJvLWJyZWFrcG9pbnQsXG4gICR2ZXJ0aWNhbDogZmFsc2Vcbikge1xuICBAd2FybiAneHktY2VsbC1zdGF0aWMoKSBtaXhpbiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQuIFVzZSBcInh5LWNlbGwoKVwiIGluc3RlYWQuIFNlZSBtaWdyYXRpb24gbm90ZXMgYXQgaHR0cHM6Ly9naXQuaW8vZm91bmRhdGlvbi02LTYtMCc7XG5cbiAgJGd1dHRlcjogLXpmLWdldC1icC12YWwoJGd1dHRlcnMsICRicmVha3BvaW50KTtcbiAgJGd1dHRlci1wb3NpdGlvbjogaWYoJHZlcnRpY2FsID09IHRydWUsIHRvcCBib3R0b20sIGxlZnQgcmlnaHQpO1xuXG4gICQtZ3V0dGVyLW91dHB1dDogaWYoJGd1dHRlci10eXBlID09ICdtYXJnaW4nLCB0cnVlLCAkZ3V0dGVyLW91dHB1dCk7XG4gICQtZ3V0dGVyLW1hcmdpbjogaWYoJGd1dHRlci10eXBlID09ICdtYXJnaW4nLCAkZ3V0dGVyLCAwKTtcblxuICBAaW5jbHVkZSAteHktY2VsbC1wcm9wZXJ0aWVzKCRzaXplLCAkLWd1dHRlci1tYXJnaW4sICR2ZXJ0aWNhbCk7XG4gIEBpZiAoJC1ndXR0ZXItb3V0cHV0KSB7XG4gICAgQGluY2x1ZGUgeHktZ3V0dGVycygkZ3V0dGVyLCAkZ3V0dGVyLXR5cGUsICRndXR0ZXItcG9zaXRpb24pO1xuICB9XG59XG4iLCIvLy8gTW9kaWZpZXMgYSBncmlkIHRvIGdpdmUgaXQgXCJmcmFtZVwiIGJlaGF2aW9yIChubyBvdmVyZmxvdywgbm8gd3JhcCwgc3RyZXRjaCBiZWhhdmlvcilcbi8vL1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHZlcnRpY2FsIFtmYWxzZV0gLSBJcyBncmlkIHZlcnRpY2FsIG9yIGhvcml6b250YWwuIFNob3VsZCBtYXRjaCBncmlkLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJG5lc3RlZCBbZmFsc2VdIC0gSXMgZ3JpZCBuZXN0ZWQgb3Igbm90LiBJZiBuZXN0ZWQgaXMgdHJ1ZSB0aGlzIHNldHMgdGhlIGZyYW1lIHRvIDEwMCUgaGVpZ2h0LCBvdGhlcndpc2Ugd2lsbCBiZSAxMDB2aC5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFtudWxsXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBuYW1lIG9mIHRoZSBicmVha3BvaW50IHNpemUgaW4geW91ciBndXR0ZXJzIG1hcCB0byBnZXQgdGhlIHNpemUgZnJvbS5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRpbmNsdWRlLWJhc2UgW3RydWVdIC0gSW5jbHVkZSB0aGUgYmFzZSBzdHlsZXMgdGhhdCBkb24ndCB2YXJ5IHBlciBicmVha3BvaW50LlxuQG1peGluIHh5LWdyaWQtZnJhbWUoXG4gICR2ZXJ0aWNhbDogZmFsc2UsXG4gICRuZXN0ZWQ6IGZhbHNlLFxuICAkZ3V0dGVyczogbnVsbCxcbiAgJGJyZWFrcG9pbnQ6IG51bGwsXG4gICRpbmNsdWRlLWJhc2U6IHRydWVcbikge1xuXG4gIEBpZiAkaW5jbHVkZS1iYXNlIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgfVxuXG4gIEBpZiAkYnJlYWtwb2ludCA9PSBudWxsIGFuZCB0eXBlLW9mKCRndXR0ZXJzKSA9PSAnbWFwJyB7XG4gICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgpIHtcbiAgICAgIEBpbmNsdWRlIHh5LWdyaWQtZnJhbWUoJHZlcnRpY2FsLCAkbmVzdGVkLCAkZ3V0dGVycywgJC16Zi1zaXplLCBmYWxzZSk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAvLyBHZXQgb3VyIGd1dHRlcnMgaWYgYXBwbGljYWJsZVxuICAgICRndXR0ZXI6IC16Zi1nZXQtYnAtdmFsKCRndXR0ZXJzLCAkYnJlYWtwb2ludCk7XG5cbiAgICAvLyBJZiB3ZSBoYXZlIGEgZ3V0dGVyLCBhZGQgaXQgdG8gdGhlIHdpZHRoL2hlaWdodFxuICAgIEBpZiAkZ3V0dGVyIHtcbiAgICAgIEBpZiAkdmVydGljYWwgPT0gdHJ1ZSB7XG4gICAgICAgICR1bml0OiBpZigkbmVzdGVkID09IHRydWUsIDEwMCUsIDEwMHZoKTtcbiAgICAgICAgJGd1dHRlcjogcmVtLWNhbGMoJGd1dHRlcik7XG4gICAgICAgIGhlaWdodDogY2FsYygjeyR1bml0fSArICN7JGd1dHRlcn0pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICR1bml0OiBpZigkbmVzdGVkID09IHRydWUsIDEwMCUsIDEwMHZ3KTtcbiAgICAgICAgJGd1dHRlcjogcmVtLWNhbGMoJGd1dHRlcik7XG4gICAgICAgIHdpZHRoOiBjYWxjKCN7JHVuaXR9ICsgI3skZ3V0dGVyfSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiAkdmVydGljYWwgPT0gdHJ1ZSB7XG4gICAgICAgIGhlaWdodDogaWYoJG5lc3RlZCA9PSB0cnVlLCAxMDAlLCAxMDB2aCk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgd2lkdGg6IGlmKCRuZXN0ZWQgPT0gdHJ1ZSwgMTAwJSwgMTAwdncpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gTW9kaWZpZXMgYSBjZWxsIHRvIGdpdmUgaXQgXCJibG9ja1wiIGJlaGF2aW9yIChvdmVyZmxvdyBhdXRvLCBpbmVydGlhbCBzY3JvbGxpbmcpXG4vLy9cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gSXMgZ3JpZCB2ZXJ0aWNhbCBvciBob3Jpem9udGFsLiBTaG91bGQgbWF0Y2ggZ3JpZC5cbkBtaXhpbiB4eS1jZWxsLWJsb2NrKFxuICAkdmVydGljYWw6IGZhbHNlXG4pIHtcbiAgJHByb3BlcnR5OiBpZigkdmVydGljYWwgPT0gdHJ1ZSwgJ292ZXJmbG93LXknLCAnb3ZlcmZsb3cteCcpO1xuXG4gIEBpZiAkdmVydGljYWwgPT0gdHJ1ZSB7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gIH0gQGVsc2Uge1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICAtbXMtb3ZlcmZsb3ctc3R5bGU6IC1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcjtcbn1cblxuLy8vIENvbnRhaW5lciBmb3IgaW5zaWRlIGEgZ3JpZCBmcmFtZSBjb250YWluaW5nIG11bHRpcGxlIGJsb2Nrcy4gVHlwaWNhbGx5IHVzZWRcbi8vLyBhcyBhIG1vZGlmaWVyIGZvciBhIGAuY2VsbGAgdG8gYWxsb3cgdGhlIGNlbGwgdG8gcGFzcyBhbG9uZyBmbGV4IHNpemluZ1xuLy8vIGNvbnN0cmFpbnRzIC8gZnJvbSBwYXJlbnRzIHRvIGNoaWxkcmVuLlxuQG1peGluIHh5LWNlbGwtYmxvY2stY29udGFpbmVyKCkge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xuXG4gID4gLmdyaWQteCB7XG4gICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHh5LWdyaWRcbi8vLy9cblxuLy8vIFJldHVybnMgdGhlIGFwcHJvcHJpYXRlIENTUyB2YWx1ZSB0byBvZmZzZXQgYSBjZWxsLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJG4gLSBTaXplIHRvIG9mZnNldCBieS4gWW91IGNhbiBwYXNzIGluIGFueSB2YWx1ZSBhY2NlcHRlZCBieSB0aGUgYHh5LWNlbGwoKWAgbWl4aW4sIHN1Y2ggYXMgYDZgLCBgNTAlYCwgb3IgYDEgb2YgMmAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIE1hcCBvZiBndXR0ZXJzIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2UgZm9yIHJlc3BvbnNpdmUgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSBUaGUgdHlwZSBvZiBndXR0ZXIgdG8gdXNlLiBDYW4gYmUgYG1hcmdpbmAgb3IgYHBhZGRpbmdgXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBuYW1lIG9mIHRoZSBicmVha3BvaW50IHNpemUgaW4geW91ciBndXR0ZXJzIG1hcCB0byBnZXQgdGhlIHNpemUgZnJvbS4gSWYgdXNpbmcgd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdGhpcyB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IHVubGVzcyBtYW51YWxseSBlbnRlcmVkLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcnxTdHJpbmd9IFRoZSBjZWxsIG9mZnNldCBwcm9wZXJ0eSB2YWx1ZS5cbkBmdW5jdGlvbiB4eS1jZWxsLW9mZnNldChcbiAgJG4sXG4gICRndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyxcbiAgJGd1dHRlci10eXBlOiBtYXJnaW4sXG4gICRicmVha3BvaW50OiBudWxsXG4pIHtcbiAgJGJyZWFrcG9pbnQ6IC16Zi1jdXJyZW50LWJyZWFrcG9pbnQoJGJyZWFrcG9pbnQsICRkZWZhdWx0OiAkLXpmLXplcm8tYnJlYWtwb2ludCk7XG4gICRzaXplOiB4eS1jZWxsLXNpemUoJG4pO1xuXG4gICRvZmZzZXQ6ICRzaXplO1xuICBAaWYgKCRndXR0ZXItdHlwZSA9PSAnbWFyZ2luJykge1xuICAgICRndXR0ZXI6IHJlbS1jYWxjKHh5LWNlbGwtZ3V0dGVycygkZ3V0dGVycywgJGJyZWFrcG9pbnQpKTtcbiAgICAkb2Zmc2V0OiBpZigkZ3V0dGVyID09IDAsICRzaXplLCBjYWxjKCN7JHNpemV9ICsgI3skZ3V0dGVyfSAvIDIpKTtcbiAgfVxuICBAcmV0dXJuICRvZmZzZXQ7XG59XG5cbi8vLyBPZmZzZXRzIGEgY29sdW1uIHRvIHRoZSByaWdodC9ib3R0b20gYnkgYCRuYCBjb2x1bW5zLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJG4gLSBTaXplIHRvIG9mZnNldCBieS4gWW91IGNhbiBwYXNzIGluIGFueSB2YWx1ZSBhY2NlcHRlZCBieSB0aGUgYHh5LWNlbGwoKWAgbWl4aW4sIHN1Y2ggYXMgYDZgLCBgNTAlYCwgb3IgYDEgb2YgMmAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIE1hcCBvZiBndXR0ZXJzIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2UgZm9yIHJlc3BvbnNpdmUgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSBUaGUgdHlwZSBvZiBndXR0ZXIgdG8gdXNlLiBDYW4gYmUgYG1hcmdpbmAgb3IgYHBhZGRpbmdgXG4vLy8gQHBhcmFtIHtOdW1iZXJ8QXJyYXl8S2V5d29yZH0gJGJyZWFrcG9pbnQgW251bGxdIC0gQnJlYWtwb2ludCB0byB1c2UgZm9yIGAkZ3V0dGVyc2AuIEl0IGNhbiBiZSBhIGJyZWFrcG9pbnQgbmFtZSwgbGlzdCBvZiBicmVha3BvaW50cyBvciBgYXV0b2AgZm9yIGFsbCBicmVha3BvaW50cy4gSWYgYSBsaXN0IGlzIGdpdmVuLCBtZWRpYS1xdWVyaWVzIHdpbGwgYmUgZ2VuZXJhdGVkLiBJZiB1c2luZyB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0aGlzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgdW5sZXNzIG1hbnVhbGx5IGVudGVyZWQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSBTZXRzIHRoZSBkaXJlY3Rpb24gb2YgdGhlIG9mZnNldC4gSWYgc2V0IHRvIHRydWUgd2lsbCBhcHBseSBtYXJnaW4tdG9wIGluc3RlYWQuXG5AbWl4aW4geHktY2VsbC1vZmZzZXQoXG4gJG4sXG4gJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICRicmVha3BvaW50OiBudWxsLFxuICR2ZXJ0aWNhbDogZmFsc2Vcbikge1xuICAkYnJlYWtwb2ludDogLXpmLWN1cnJlbnQtYnJlYWtwb2ludCgkYnJlYWtwb2ludCwgJGRlZmF1bHQ6ICQtemYtemVyby1icmVha3BvaW50KTtcbiAgJGRpcmVjdGlvbjogaWYoJHZlcnRpY2FsLCAndG9wJywgJGdsb2JhbC1sZWZ0KTtcblxuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50LWluKCRicmVha3BvaW50LCAkbWVkaWEtcXVlcmllczogJ2Zvci1saXN0cycpIHtcbiAgICAkb2Zmc2V0OiB4eS1jZWxsLW9mZnNldCgkbiwgJGd1dHRlcnMsICRndXR0ZXItdHlwZSk7XG4gICAgbWFyZ2luLSN7JGRpcmVjdGlvbn06ICN7JG9mZnNldH07XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB4eS1ncmlkXG4vLy8vXG5cbi8vLyBTaXplcyBjaGlsZCBlbGVtZW50cyBzbyB0aGF0IGAkbmAgbnVtYmVyIG9mIGl0ZW1zIGFwcGVhciBvbiBlYWNoIHJvdy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbiAtIE51bWJlciBvZiBlbGVtZW50cyB0byBkaXNwbGF5IHBlciByb3cuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWxlY3RvciBbJy5jZWxsJ10gLSBTZWxlY3RvcihzKSB0byB1c2UgZm9yIGNoaWxkIGVsZW1lbnRzLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGd1dHRlci1vdXRwdXQgW251bGxdIC0gW0RFUFJFQ0FURURdIFdoZXRoZXIgb3Igbm90IHRvIG91dHB1dCBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBUeXBlIG9mIGd1dHRlciB0byBvdXRwdXQuIEFjY2VwdHMgYG1hcmdpbmAsIGBwYWRkaW5nYCBvciBgbm9uZWAuXG4vLy8gQHBhcmFtIHtMaXN0fSAkZ3V0dGVyLXBvc2l0aW9uIFtudWxsXSAtIFRoZSBwb3NpdGlvbiB0byBhcHBseSBndXR0ZXJzIHRvLiBBY2NlcHRzIGB0b3BgLCBgYm90dG9tYCwgYGxlZnRgLCBgcmlnaHRgIGluIGFueSBjb21iaW5hdGlvbi4gQnkgZGVmYXVsdCBgcmlnaHQgbGVmdGAgZm9yIGhvcml6b250YWwgY2VsbHMgYW5kIGB0b3AgYm90dG9tYCBmb3IgdmVydGljYWwgY2VsbHMuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBicmVha3BvaW50IHRvIHVzZSBmb3IgdGhlIGNlbGwgZ2VuZXJhdGlvbi4gSWYgdXNpbmcgd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdGhpcyB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IHVubGVzcyBtYW51YWxseSBlbnRlcmVkLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHZlcnRpY2FsIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSB0byBvdXRwdXQgdmVydGljYWwgKGhlaWdodCkgc3R5bGVzIHJhdGhlciB0aGFuIHdpZHRocy5cbi8vLyBAcGFyYW0ge0xpc3R9ICRvdXRwdXQgWyhiYXNlIHNpemUgZ3V0dGVycyldIC0gQ2VsbCBwYXJ0cyB0byBvdXRwdXQuIFlvdSB3aWxsIG5lZWQgdG8gZ2VuZXJhdGUgb3RoZXJzIHBhcnRzIG9mIHRoZSBjZWxsIHNlcGVyYXRlbHksIGl0IG1heSBub3Qgd29yayBjb3JyZWN0bHkgb3RoZXJ3aXNlLlxuQG1peGluIHh5LWdyaWQtbGF5b3V0KFxuICAkbixcbiAgJHNlbGVjdG9yOiAnLmNlbGwnLFxuICAkZ3V0dGVyLW91dHB1dDogbnVsbCxcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcbiAgJGd1dHRlci1wb3NpdGlvbjogbnVsbCxcbiAgJGJyZWFrcG9pbnQ6IG51bGwsXG4gICR2ZXJ0aWNhbDogZmFsc2UsXG4gICRvdXRwdXQ6IChiYXNlIHNpemUgZ3V0dGVycylcbikge1xuICAkc2l6ZTogcGVyY2VudGFnZShkaXZpZGUoMSwgJG4pKTtcblxuICAmID4gI3skc2VsZWN0b3J9IHtcbiAgICBAaW5jbHVkZSB4eS1jZWxsKCRzaXplLCAkZ3V0dGVyLW91dHB1dCwgJGd1dHRlcnMsICRndXR0ZXItdHlwZSwgJGd1dHRlci1wb3NpdGlvbiwgJGJyZWFrcG9pbnQsICR2ZXJ0aWNhbCwgJG91dHB1dCk7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB4eS1ncmlkXG4vLy8vXG5cbi8vLyBDb2xsYXBzZXMgdGhlIGdyaWQgYSBjZWxscyB3aXRoaW4gaXQuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFsuY2VsbF0gLSBUaGUgY2hpbGQgZWxlbWVudCB0byByZW1vdmUgdGhlIGd1dHRlciBmcm9tLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIC0gVGhlIHR5cGUgb2YgZ3V0dGVyIHRvIHJlbW92ZS5cbi8vLyBAcGFyYW0ge0xpc3R9ICRndXR0ZXItcG9zaXRpb24gW3JpZ2h0IGxlZnRdIC0gVGhlIHBvc2l0aW9ucyB0byByZW1vdmUgZ3V0dGVycyBmcm9tLiBBY2NlcHRzIGB0b3BgLCBgYm90dG9tYCwgYGxlZnRgLCBgcmlnaHRgIGluIGFueSBjb21iaW5hdGlvbi5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRtaW4tYnJlYWtwb2ludCBbJC16Zi16ZXJvLWJyZWFrcG9pbnRdIC0gTWluaW11bSBicmVha3BvaW50IGluIGAkYnJlYWtwb2ludC1jbGFzc2VzYCBmb3Igd2hpY2ggdG8gY29sbGFwc2UgdGhlIGd1dHRlci5cbkBtaXhpbiB4eS1ncmlkLWNvbGxhcHNlKFxuICAkc2VsZWN0b3I6ICcuY2VsbCcsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkZ3V0dGVyLXBvc2l0aW9uOiByaWdodCBsZWZ0LFxuICAkbWluLWJyZWFrcG9pbnQ6ICQtemYtemVyby1icmVha3BvaW50XG4pIHtcbiAgLy8gRmlyc3QsIGxldHMgbmVnYXRlIGFueSBtYXJnaW5zIG9uIHRoZSB0b3AgbGV2ZWxcbiAgQGlmICgkZ3V0dGVyLXR5cGUgPT0gJ21hcmdpbicpIHtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1pbi1icmVha3BvaW50KSB7XG4gICAgICBAZWFjaCAkdmFsdWUgaW4gJGd1dHRlci1wb3NpdGlvbiB7XG4gICAgICAgIG1hcmdpbi0jeyR2YWx1ZX06IDA7XG4gICAgICB9XG5cbiAgICAgID4gI3skc2VsZWN0b3J9IHtcbiAgICAgICAgQGVhY2ggJHZhbHVlIGluICRndXR0ZXItcG9zaXRpb24ge1xuICAgICAgICAgIG1hcmdpbi0jeyR2YWx1ZX06IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkZXhjbHVkZWQtYnBzOiAtemYtYnJlYWtwb2ludHMtbGVzcy10aGFuKCRtaW4tYnJlYWtwb2ludCk7XG5cbiAgICAvLyBPdXRwdXQgbmV3IHdpZHRocyB0byBub3QgaW5jbHVkZSBndXR0ZXJzXG4gICAgQGVhY2ggJGJwIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGlmKHNsLWNvbnRhaW4oJGV4Y2x1ZGVkLWJwcywgJGJwKSkge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtaW4tYnJlYWtwb2ludCkge1xuICAgICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgICAgICAgICAvLyBTaXppbmcgKHBlcmNlbnRhZ2UpXG4gICAgICAgICAgICA+IC4jeyRicH0tI3skaX0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoJGksICRndXR0ZXItdHlwZTogbm9uZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYnApIHtcbiAgICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xuICAgICAgICAgICAgLy8gU2l6aW5nIChwZXJjZW50YWdlKVxuICAgICAgICAgICAgPiAuI3skYnB9LSN7JGl9IHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKCRpLCAkZ3V0dGVyLXR5cGU6IG5vbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtaW4tYnJlYWtwb2ludCkge1xuICAgICAgQGVhY2ggJHZhbHVlIGluICRndXR0ZXItcG9zaXRpb24ge1xuICAgICAgICBtYXJnaW4tI3skdmFsdWV9OiAwO1xuICAgICAgfVxuXG4gICAgICA+ICN7JHNlbGVjdG9yfSB7XG4gICAgICAgIEBlYWNoICR2YWx1ZSBpbiAkZ3V0dGVyLXBvc2l0aW9uIHtcbiAgICAgICAgICBwYWRkaW5nLSN7JHZhbHVlfTogMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHh5LWdyaWRcbi8vLy9cblxuLy8gTWFyZ2luIEdyaWQgY2xhc3Nlc1xuQG1peGluIHh5LWJhc2UtZ3JpZC1jbGFzc2VzIHtcblxuICAvLyBHcmlkIENvbnRhaW5lclxuICAuZ3JpZC1jb250YWluZXIge1xuICAgIEBpbmNsdWRlIHh5LWdyaWQtY29udGFpbmVyO1xuXG4gICAgJi5mbHVpZCB7XG4gICAgICBAaW5jbHVkZSB4eS1ncmlkLWNvbnRhaW5lcigxMDAlKTtcbiAgICB9XG5cbiAgICAmLmZ1bGwge1xuICAgICAgQGluY2x1ZGUgeHktZ3JpZC1jb250YWluZXIoMTAwJSwgMCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQmFzZSBncmlkIHN0eWxlc1xuICAuZ3JpZC14IHtcbiAgICBAaW5jbHVkZSB4eS1ncmlkO1xuICB9XG5cbiAgLmNlbGwge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwoZnVsbCwgJGd1dHRlci10eXBlOiBub25lKTtcblxuICAgICYuYXV0byB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLWJhc2UoYXV0byk7XG4gICAgfVxuXG4gICAgJi5zaHJpbmsge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1iYXNlKHNocmluayk7XG4gICAgfVxuXG4gIH1cbiAgLmdyaWQteCB7XG4gICAgPiAuYXV0byB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoYXV0bywgJGd1dHRlci10eXBlOiBub25lKTtcbiAgICB9XG5cbiAgICA+IC5zaHJpbmsge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKHNocmluaywgJGd1dHRlci10eXBlOiBub25lKTtcbiAgICB9XG4gIH1cblxuICAvLyBBdXRvIHdpZHRoXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XG4gICAgLy8gVGhpcyBpcyBhIGJpdCBvZiBhIGhhY2svd29ya2Fyb3VuZCwgc2VlIHRoZXNlIGlzc3VlcyAmIFBScyBmb3IgdGhlIGJhY2tzdG9yeTpcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZm91bmRhdGlvbi9mb3VuZGF0aW9uLXNpdGVzL2lzc3Vlcy8xMDI0NFxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3VuZGF0aW9uL2ZvdW5kYXRpb24tc2l0ZXMvcHVsbC8xMDIyMiBhbmRcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZm91bmRhdGlvbi9mb3VuZGF0aW9uLXNpdGVzL3B1bGwvMTAxNjRcbiAgICAuZ3JpZC14IHtcbiAgICAgICRzdHI6IFwiPiAuI3skLXpmLXNpemV9LXNocmluaywgPiAuI3skLXpmLXNpemV9LWZ1bGxcIjtcbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgICAgICRzdHI6ICRzdHIgKyBcIiwgPiAuI3skLXpmLXNpemV9LSN7JGl9XCJcbiAgICAgIH1cbiAgICAgICN7JHN0cn0ge1xuICAgICAgICBmbGV4LWJhc2lzOiBhdXRvO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XG4gICAgLy8gUmVzcG9uc2l2ZSBcImF1dG9cIiBtb2RpZmllclxuICAgIEBpZiBub3QoJC16Zi1zaXplID09ICQtemYtemVyby1icmVha3BvaW50KSB7XG4gICAgICAuZ3JpZC14ID4gLiN7JC16Zi1zaXplfS1hdXRvIHtcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbChhdXRvLCAkZ3V0dGVyLXR5cGU6IG5vbmUpO1xuICAgICAgfVxuICAgIH1cblxuICAgICUteHktY2VsbC1iYXNlLXNocmluay1ob3Jpem9udGFsLSN7JC16Zi1zaXplfSB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLWJhc2Uoc2hyaW5rKTtcbiAgICB9XG5cbiAgICAvLyBSZXNwb25zaXZlIFwic2hyaW5rXCIgbW9kaWZpZXJcbiAgICBAaWYgbm90KCQtemYtc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCkge1xuICAgICAgLmdyaWQteCA+IC4jeyQtemYtc2l6ZX0tc2hyaW5rIHtcbiAgICAgICAgQGV4dGVuZCAlLXh5LWNlbGwtYmFzZS1zaHJpbmstaG9yaXpvbnRhbC0jeyQtemYtc2l6ZX07XG4gICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZShzaHJpbmssICRndXR0ZXItdHlwZTogbm9uZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSB3aWR0aCBtb2RpZmllcnNcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xuICAgICAgLy8gU2l6aW5nIChwZXJjZW50YWdlKVxuICAgICAgLmdyaWQteCA+IC4jeyQtemYtc2l6ZX0tI3skaX0ge1xuICAgICAgICBAZXh0ZW5kICUteHktY2VsbC1iYXNlLXNocmluay1ob3Jpem9udGFsLSN7JC16Zi1zaXplfTtcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKCRpLCAkZ3V0dGVyLXR5cGU6IG5vbmUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlc2V0IHdpZHRoIHdoZW4gdXNpbmcgYC5ncmlkLW1hcmdpbi14YCBub3Qgb24gYC5ncmlkLXhgXG4gIC5ncmlkLW1hcmdpbi14Om5vdCguZ3JpZC14KSA+IC5jZWxsIHtcbiAgICB3aWR0aDogYXV0bztcbiAgfVxuXG4gIC8vIFJlc2V0IGhlaWdodCB3aGVuIHVzaW5nIGAuZ3JpZC1tYXJnaW4teWAgbm90IG9uIGAuZ3JpZC15YFxuICAuZ3JpZC1tYXJnaW4teTpub3QoLmdyaWQteSkgPiAuY2VsbCB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiAteHktYnJlYWtwb2ludC1jZWxsLWNsYXNzZXMoJGNsYXNzLWJyZWFrcG9pbnQsICRndXR0ZXItYnJlYWtwb2ludCwgJHZlcnRpY2FsKSB7XG4gICRwcmVmaXg6IGlmKCRjbGFzcy1icmVha3BvaW50ID09ICQtemYtemVyby1icmVha3BvaW50LCAnJywgJyN7JGNsYXNzLWJyZWFrcG9pbnR9LScpO1xuICA+IC4jeyRwcmVmaXh9YXV0byB7XG4gICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKGF1dG8sICR2ZXJ0aWNhbDogJHZlcnRpY2FsKTtcbiAgfVxuXG4gID4gLiN7JHByZWZpeH1zaHJpbmsge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZShzaHJpbmssICR2ZXJ0aWNhbDogJHZlcnRpY2FsKTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgLy8gU2l6aW5nIChwZXJjZW50YWdlKVxuICAgICRjbGFzc25hbWU6IGlmKCR2ZXJ0aWNhbCwgJy4jeyRjbGFzcy1icmVha3BvaW50fS0jeyRpfScsICcuI3skY2xhc3MtYnJlYWtwb2ludH0tI3skaX0nKTtcblxuICAgID4gI3skY2xhc3NuYW1lfSB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoJGksICR2ZXJ0aWNhbDogJHZlcnRpY2FsKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gTWFyZ2luIEdyaWQgY2xhc3Nlc1xuQG1peGluIHh5LW1hcmdpbi1ncmlkLWNsYXNzZXMoXG4gICRndXR0ZXItcG9zaXRpb246IGxlZnQgcmlnaHQsXG4gICR2ZXJ0aWNhbDogZmFsc2UsXG4gICR3cmFwcGluZy1zZWxlY3RvcjogJy5ncmlkLW1hcmdpbi14J1xuKXtcbiAgI3skd3JhcHBpbmctc2VsZWN0b3J9IHtcbiAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRuZWdhdGl2ZTogdHJ1ZSwgJGd1dHRlci1wb3NpdGlvbjogJGd1dHRlci1wb3NpdGlvbik7XG5cbiAgICAvLyBCYXNlIGNlbGwgc3R5bGVzXG4gICAgPiAuY2VsbCB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsKCR2ZXJ0aWNhbDogJHZlcnRpY2FsLCAkb3V0cHV0OiAoc2l6ZSBndXR0ZXJzKSk7XG4gICAgfVxuXG4gICAgLy8gYmFzZSBzdHlsZXMgbmVlZCB0byBhbGwgYmUgYmVmb3JlIHRoZSBhdXRvIGFuZCBzaHJpbmsgc3R5bGVzXG4gICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgpIHtcbiAgICAgIEBpZih0eXBlLW9mKCRncmlkLW1hcmdpbi1ndXR0ZXJzKSA9PSAnbWFwJyBhbmQgbWFwLWhhcy1rZXkoJGdyaWQtbWFyZ2luLWd1dHRlcnMsICQtemYtc2l6ZSkgYW5kICQtemYtc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCkge1xuICAgICAgICA+IC5jZWxsIHtcbiAgICAgICAgICBAaW5jbHVkZSB4eS1jZWxsKCR2ZXJ0aWNhbDogJHZlcnRpY2FsLCAkb3V0cHV0OiAoc2l6ZSBndXR0ZXJzKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xuXG4gICAgICAvLyBUaGlzIGlzIHB1cmVseSBmb3IgcmVzcG9uc2l2ZSBndXR0ZXJzIC0gdGhlIG1hcmdpbiBncmlkIGhhcyB0byBnbyBiYWNrIGFuZCBhZGp1c3Qgd2lkdGhzIChvciBoZWlnaHRzKVxuICAgICAgLy8gZm9yIGFsbCBwcmlvciBicmVha3BvaW50cy5cbiAgICAgIC8vIEFzIHRoZWlyIGd1dHRlciBpcyBkZWZpbmVkIHdpdGggdGhlaXIgd2lkdGgvaGVpZ2h0LCBldmVuIGJyZWFrcG9pbnQgd2l0aG91dCBhIG5ldyBtYXJnaW4gbXVzdCBiZVxuICAgICAgLy8gZ2VuZXJhdGVkIHRvIG5vdCBoYXZpbmcgdGhlaXIgd2lkdGgvaGVpZ2h0IG92ZXJyaWRlZCBieSByZS1hZGp1c3RlZCBzbWFsbGVyIGJyZWFrcG9pbnRzLlxuICAgICAgQGlmKHR5cGUtb2YoJGdyaWQtbWFyZ2luLWd1dHRlcnMpID09ICdtYXAnIGFuZCBtYXAtaGFzLWtleSgkZ3JpZC1tYXJnaW4tZ3V0dGVycywgJC16Zi1zaXplKSkge1xuICAgICAgICBAZWFjaCAkYnAgaW4gLXpmLWJyZWFrcG9pbnRzLWxlc3MtdGhhbigkLXpmLXNpemUpIHtcbiAgICAgICAgICBAaW5jbHVkZSAteHktYnJlYWtwb2ludC1jZWxsLWNsYXNzZXMoJGJwLCAkLXpmLXNpemUsICR2ZXJ0aWNhbCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgLXh5LWJyZWFrcG9pbnQtY2VsbC1jbGFzc2VzKCQtemYtc2l6ZSwgJC16Zi1zaXplLCAkdmVydGljYWwpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBQYWRkaW5nIEdyaWQgY2xhc3Nlc1xuQG1peGluIHh5LXBhZGRpbmctZ3JpZC1jbGFzc2VzIHtcbiAgLmdyaWQtcGFkZGluZy14IHtcblxuICAgIC8vIE5lZ2F0aXZlIG1hcmdpbiBmb3IgbmVzdGVkIGdyaWRzXG4gICAgLmdyaWQtcGFkZGluZy14IHtcbiAgICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJG5lZ2F0aXZlOiB0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBOZWdhdGl2ZSBtYXJnaW4gZm9yIGdyaWRzIHdpdGhpbiBgZ3JpZC1jb250YWluZXIvZ3JpZC1jb250YWluZXIuZmx1aWRgXG4gICAgLy8gVGhpcyBhbGxvd3MgbWFyZ2luIGFuZCBwYWRkaW5nIGdyaWRzIHRvIGxpbmUgdXAgd2l0aCBlYWNob3RoZXJcbiAgICAuZ3JpZC1jb250YWluZXI6bm90KC5mdWxsKSA+ICYge1xuICAgICAgQGluY2x1ZGUgeHktZ3V0dGVycygkbmVnYXRpdmU6IHRydWUpO1xuICAgIH1cblxuICAgIC8vIEJhc2UgY2VsbCBzdHlsZXNcbiAgICA+IC5jZWxsIHtcbiAgICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJGd1dHRlcnM6ICRncmlkLXBhZGRpbmctZ3V0dGVycywgJGd1dHRlci10eXBlOiBwYWRkaW5nKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gQmxvY2sgR3JpZCBjbGFzc2VzXG5AbWl4aW4geHktYmxvY2stZ3JpZC1jbGFzc2VzKCRtYXJnaW4tZ3JpZDogdHJ1ZSwgJHBhZGRpbmctZ3JpZDogdHJ1ZSkge1xuICBAaWYgJHBhZGRpbmctZ3JpZCB7XG4gICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCB7XG4gICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICR4eS1ibG9jay1ncmlkLW1heCB7XG4gICAgICAgIC4jeyQtemYtc2l6ZX0tdXAtI3skaX0ge1xuICAgICAgICAgIEBpbmNsdWRlIHh5LWdyaWQtbGF5b3V0KCRuOiAkaSwgJHNlbGVjdG9yOiAnLmNlbGwnLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcsICRvdXRwdXQ6IChzaXplKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJG1hcmdpbi1ncmlkIHtcbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50IHtcbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJHh5LWJsb2NrLWdyaWQtbWF4IHtcbiAgICAgICAgLy8gVGhpcyBpcyBwdXJlbHkgZm9yIHJlc3BvbnNpdmUgZ3V0dGVycyAtIHRoZSBtYXJnaW4gZ3JpZCBoYXMgdG8gZ28gYmFjayBhbmQgYWRqdXN0IHdpZHRocyAob3IgaGVpZ2h0cylcbiAgICAgICAgLy8gZm9yIHByaW9yIGJyZWFrcG9pbnRzIGJhc2VkIG9uIHRoZSByZXNwb25zaXZlIGd1dHRlci5cbiAgICAgICAgQGlmKHR5cGUtb2YoJGdyaWQtbWFyZ2luLWd1dHRlcnMpID09ICdtYXAnIGFuZCBtYXAtaGFzLWtleSgkZ3JpZC1tYXJnaW4tZ3V0dGVycywgJC16Zi1zaXplKSkge1xuICAgICAgICAgIEBlYWNoICRicCBpbiAtemYtYnJlYWtwb2ludHMtbGVzcy10aGFuKCQtemYtc2l6ZSkge1xuICAgICAgICAgICAgQGlmKG1hcC1oYXMta2V5KCRncmlkLW1hcmdpbi1ndXR0ZXJzLCAkYnApKSB7XG4gICAgICAgICAgICAgIC5ncmlkLW1hcmdpbi14LiN7JGJwfS11cC0jeyRpfSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1sYXlvdXQoJG46ICRpLCAkc2VsZWN0b3I6ICcuY2VsbCcsICRndXR0ZXItdHlwZTogbWFyZ2luLCAkb3V0cHV0OiAoc2l6ZSkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICR4eS1ibG9jay1ncmlkLW1heCB7XG4gICAgICAgIC5ncmlkLW1hcmdpbi14LiN7JC16Zi1zaXplfS11cC0jeyRpfSB7XG4gICAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1sYXlvdXQoJG46ICRpLCAkc2VsZWN0b3I6ICcuY2VsbCcsICRndXR0ZXItdHlwZTogbWFyZ2luLCAkb3V0cHV0OiAoc2l6ZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIENvbGxhcHNlIGNsYXNzZXNcbkBtaXhpbiB4eS1jb2xsYXBzZS1ncmlkLWNsYXNzZXMoJG1hcmdpbi1ncmlkOiB0cnVlLCAkcGFkZGluZy1ncmlkOiB0cnVlKSB7XG4gIEBlYWNoICRicCBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICBAaWYgJG1hcmdpbi1ncmlkIHtcbiAgICAgIC4jeyRicH0tbWFyZ2luLWNvbGxhcHNlIHtcbiAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1jb2xsYXBzZSgkZ3V0dGVyLXR5cGU6IG1hcmdpbiwgJG1pbi1icmVha3BvaW50OiAkYnApO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkcGFkZGluZy1ncmlkIHtcbiAgICAgIC4jeyRicH0tcGFkZGluZy1jb2xsYXBzZSB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWdyaWQtY29sbGFwc2UoJGd1dHRlci10eXBlOiBwYWRkaW5nLCAkbWluLWJyZWFrcG9pbnQ6ICRicCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIE9mZnNldCBjbGFzc2VzXG5AbWl4aW4geHktb2Zmc2V0LWNlbGwtY2xhc3NlcyB7XG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQge1xuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgICAvLyBPZmZzZXRzXG4gICAgICAkbzogJGkgLSAxO1xuXG4gICAgICAuI3skLXpmLXNpemV9LW9mZnNldC0jeyRvfSB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtb2Zmc2V0KCRvLCAkZ3V0dGVyczogJGdyaWQtcGFkZGluZy1ndXR0ZXJzLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcpO1xuICAgICAgfVxuXG4gICAgICAuZ3JpZC1tYXJnaW4teCA+IC4jeyQtemYtc2l6ZX0tb2Zmc2V0LSN7JG99IHtcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1vZmZzZXQoJG8pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBWZXJ0aWNhbCBHcmlkIGNsYXNzZXNcbkBtaXhpbiB4eS12ZXJ0aWNhbC1ncmlkLWNsYXNzZXMoXG4gICRtYXJnaW4tZ3JpZDogdHJ1ZSxcbiAgJHBhZGRpbmctZ3JpZDogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgpIHtcbiAgICBAaWYgbm90KCQtemYtc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCkge1xuICAgIH1cbiAgfVxuXG4gIC5ncmlkLXkge1xuICAgIEBpbmNsdWRlIHh5LWdyaWQodmVydGljYWwsIGZhbHNlKTtcblxuXG4gICAgPiAuY2VsbCB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXJlc2V0KCk7XG4gICAgfVxuXG4gICAgPiAuYXV0byB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoYXV0bywgJGd1dHRlci10eXBlOiBub25lLCAkdmVydGljYWw6IHRydWUpO1xuICAgIH1cblxuICAgID4gLnNocmluayB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoc2hyaW5rLCAkZ3V0dGVyLXR5cGU6IG5vbmUsICR2ZXJ0aWNhbDogdHJ1ZSk7XG4gICAgfVxuXG5cbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xuICAgICAgLy8gVGhpcyBpcyBhIGJpdCBvZiBhIGhhY2svd29ya2Fyb3VuZCwgc2VlIHRoZXNlIGlzc3VlcyBhbmQgUFJzIGZvciB0aGUgYmFja3N0b3J5OlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZvdW5kYXRpb24vZm91bmRhdGlvbi1zaXRlcy9pc3N1ZXMvMTAyNDRcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3VuZGF0aW9uL2ZvdW5kYXRpb24tc2l0ZXMvcHVsbC8xMDIyMiBhbmRcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3VuZGF0aW9uL2ZvdW5kYXRpb24tc2l0ZXMvcHVsbC8xMDE2NFxuICAgICAgJHN0cjogXCI+IC4jeyQtemYtc2l6ZX0tc2hyaW5rLCA+IC4jeyQtemYtc2l6ZX0tZnVsbFwiO1xuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcbiAgICAgICAgJHN0cjogJHN0ciArIFwiLCA+IC4jeyQtemYtc2l6ZX0tI3skaX1cIlxuICAgICAgfVxuICAgICAgI3skc3RyfSB7XG4gICAgICAgIGZsZXgtYmFzaXM6IGF1dG87XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgpIHtcbiAgICAgIC8vIFJlc3BvbnNpdmUgXCJhdXRvXCIgbW9kaWZpZXJcbiAgICAgIEBpZiBub3QoJC16Zi1zaXplID09ICQtemYtemVyby1icmVha3BvaW50KSB7XG4gICAgICAgID4gLiN7JC16Zi1zaXplfS1hdXRvIHtcbiAgICAgICAgICBAaW5jbHVkZSB4eS1jZWxsKGF1dG8sICRndXR0ZXItdHlwZTogbm9uZSwgJHZlcnRpY2FsOiB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAlLXh5LWNlbGwtYmFzZS1zaHJpbmstdmVydGljYWwtI3skLXpmLXNpemV9IHtcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1iYXNlKHNocmluayk7XG4gICAgICB9XG5cbiAgICAgIC8vIFJlc3BvbnNpdmUgXCJzaHJpbmtcIiBtb2RpZmllclxuICAgICAgQGlmIG5vdCgkLXpmLXNpemUgPT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQpIHtcbiAgICAgICAgPiAuI3skLXpmLXNpemV9LXNocmluayB7XG4gICAgICAgICAgQGV4dGVuZCAlLXh5LWNlbGwtYmFzZS1zaHJpbmstdmVydGljYWwtI3skLXpmLXNpemV9O1xuICAgICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZShzaHJpbmssICRndXR0ZXItdHlwZTogbm9uZSwgJHZlcnRpY2FsOiB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBSZXNwb25zaXZlIHdpZHRoIG1vZGlmaWVyc1xuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcbiAgICAgICAgLy8gU2l6aW5nIChwZXJjZW50YWdlKVxuICAgICAgICA+IC4jeyQtemYtc2l6ZX0tI3skaX0ge1xuICAgICAgICAgIEBleHRlbmQgJS14eS1jZWxsLWJhc2Utc2hyaW5rLXZlcnRpY2FsLSN7JC16Zi1zaXplfTtcbiAgICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoJGksICRndXR0ZXItdHlwZTogbm9uZSwgJHZlcnRpY2FsOiB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgfVxuICB9XG5cbiAgQGlmICRwYWRkaW5nLWdyaWQge1xuICAgIC5ncmlkLXBhZGRpbmcteSB7XG4gICAgICAvLyBOZWdhdGl2ZSBtYXJnaW4gZm9yIG5lc3RlZCBncmlkc1xuICAgICAgLmdyaWQtcGFkZGluZy15IHtcbiAgICAgICAgQGluY2x1ZGUgeHktZ3V0dGVycygkbmVnYXRpdmU6IHRydWUsICRndXR0ZXItcG9zaXRpb246IHRvcCBib3R0b20pO1xuICAgICAgfVxuXG4gICAgICAvLyBCYXNlIGNlbGwgc3R5bGVzXG4gICAgICA+IC5jZWxsIHtcbiAgICAgICAgQGluY2x1ZGUgeHktZ3V0dGVycygkZ3V0dGVyczogJGdyaWQtcGFkZGluZy1ndXR0ZXJzLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcsICRndXR0ZXItcG9zaXRpb246IHRvcCBib3R0b20pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAkbWFyZ2luLWdyaWQge1xuICAgIEBpbmNsdWRlIHh5LW1hcmdpbi1ncmlkLWNsYXNzZXModG9wIGJvdHRvbSwgdHJ1ZSwgJy5ncmlkLW1hcmdpbi15Jyk7XG4gIH1cblxufVxuXG5AbWl4aW4geHktZnJhbWUtZ3JpZC1jbGFzc2VzKCR2ZXJ0aWNhbC1ncmlkOiB0cnVlLCAkbWFyZ2luLWdyaWQ6IHRydWUpIHtcbiAgLy8gRnJhbWVkIGdyaWQgc3R5bGVzXG4gIC5ncmlkLWZyYW1lIHtcbiAgICBAaW5jbHVkZSB4eS1ncmlkLWZyYW1lO1xuICB9XG5cbiAgLmNlbGwgLmdyaWQtZnJhbWUge1xuICAgIHdpZHRoOiAxMDAlOyAvLyBTYW1lIGFzIGluY2x1ZGUgd2l0aCAkbmVzdGVkLCBidXQgd2l0aCBsZXNzIGNzc1xuICB9XG5cbiAgLmNlbGwtYmxvY2sge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwtYmxvY2soKTtcbiAgfVxuXG4gIC5jZWxsLWJsb2NrLXkge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwtYmxvY2sodHJ1ZSk7XG4gIH1cblxuXG4gIC5jZWxsLWJsb2NrLWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgeHktY2VsbC1ibG9jay1jb250YWluZXIoKTtcbiAgfVxuXG5cbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludChmYWxzZSkge1xuXG4gICAgLiN7JC16Zi1zaXplfS1ncmlkLWZyYW1lIHtcbiAgICAgIEBpbmNsdWRlIHh5LWdyaWQtZnJhbWU7XG4gICAgfVxuXG4gICAgLmNlbGwgLiN7JC16Zi1zaXplfS1ncmlkLWZyYW1lIHtcbiAgICAgIHdpZHRoOiAxMDAlOyAvLyBTYW1lIGFzIGluY2x1ZGUgd2l0aCAkbmVzdGVkLCBidXQgd2l0aCBsZXNzIGNzc1xuICAgIH1cblxuICAgIC4jeyQtemYtc2l6ZX0tY2VsbC1ibG9jayB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLWJsb2NrKCk7XG4gICAgfVxuXG4gICAgLiN7JC16Zi1zaXplfS1jZWxsLWJsb2NrLWNvbnRhaW5lciB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLWJsb2NrLWNvbnRhaW5lcigpO1xuICAgIH1cblxuICAgIC4jeyQtemYtc2l6ZX0tY2VsbC1ibG9jay15IHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtYmxvY2sodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgQGlmICR2ZXJ0aWNhbC1ncmlkIHtcbiAgICAuZ3JpZC15IHtcbiAgICAgICYuZ3JpZC1mcmFtZSB7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICBAaW5jbHVkZSB4eS1ncmlkLWZyYW1lKHRydWUpO1xuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KGZhbHNlKSB7XG4gICAgICAgICYuI3skLXpmLXNpemV9LWdyaWQtZnJhbWUge1xuICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgIEBpbmNsdWRlIHh5LWdyaWQtZnJhbWUodHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgfVxuICAgIH1cbiAgICAuY2VsbCB7XG4gICAgICAuZ3JpZC15LmdyaWQtZnJhbWUge1xuICAgICAgICBoZWlnaHQ6IDEwMCU7IC8vIFNhbWUgYXMgaW5jbHVkZSB3aXRoICRuZXN0ZWQsIGJ1dCB3aXRoIGxlc3MgY3NzXG4gICAgICB9XG4gICAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KGZhbHNlKSB7XG4gICAgICAgIC5ncmlkLXkuI3skLXpmLXNpemV9LWdyaWQtZnJhbWUge1xuICAgICAgICAgIGhlaWdodDogMTAwJTsgLy8gU2FtZSBhcyBpbmNsdWRlIHdpdGggJG5lc3RlZCwgYnV0IHdpdGggbGVzcyBjc3NcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAaWYgJG1hcmdpbi1ncmlkIHtcbiAgICBAaW5jbHVkZSB4eS1tYXJnaW4tZ3JpZC1jbGFzc2VzKHRvcCBib3R0b20sIHRydWUsICcuZ3JpZC1tYXJnaW4teScpO1xuICAgIC5ncmlkLWZyYW1lLmdyaWQtbWFyZ2luLXkge1xuICAgICAgQGluY2x1ZGUgeHktZ3JpZC1mcmFtZSh0cnVlLCBmYWxzZSwgJGdyaWQtbWFyZ2luLWd1dHRlcnMsICRpbmNsdWRlLWJhc2U6IGZhbHNlKTtcbiAgICB9XG4gICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludChmYWxzZSkge1xuICAgICAgLmdyaWQtbWFyZ2luLXkuI3skLXpmLXNpemV9LWdyaWQtZnJhbWUge1xuICAgICAgICBAaW5jbHVkZSB4eS1ncmlkLWZyYW1lKHRydWUsIGZhbHNlLCAkZ3JpZC1tYXJnaW4tZ3V0dGVycywgJC16Zi1zaXplLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIEZpbmFsIGNsYXNzZXNcbkBtaXhpbiBmb3VuZGF0aW9uLXh5LWdyaWQtY2xhc3NlcyhcbiAgJGJhc2UtZ3JpZDogdHJ1ZSxcbiAgJG1hcmdpbi1ncmlkOiB0cnVlLFxuICAkcGFkZGluZy1ncmlkOiB0cnVlLFxuICAkYmxvY2stZ3JpZDogdHJ1ZSxcbiAgJGNvbGxhcHNlOiB0cnVlLFxuICAkb2Zmc2V0OiB0cnVlLFxuICAkdmVydGljYWwtZ3JpZDogdHJ1ZSxcbiAgJGZyYW1lLWdyaWQ6IHRydWVcbikge1xuXG4gIC8vIEJhc2UgZ3JpZCBzdHlsZXNcbiAgQGlmKCRiYXNlLWdyaWQpIHtcbiAgICBAaW5jbHVkZSB4eS1iYXNlLWdyaWQtY2xhc3NlcygpO1xuICB9XG5cbiAgLy8gTWFyZ2luIGdyaWRcbiAgQGlmKCRtYXJnaW4tZ3JpZCkge1xuICAgIEBpbmNsdWRlIHh5LW1hcmdpbi1ncmlkLWNsYXNzZXMoKTtcbiAgfVxuXG4gIC8vIFBhZGRpbmcgZ3JpZFxuICBAaWYoJHBhZGRpbmctZ3JpZCkge1xuICAgIEBpbmNsdWRlIHh5LXBhZGRpbmctZ3JpZC1jbGFzc2VzKCk7XG4gIH1cblxuICAvLyBCbG9jayBncmlkXG4gIEBpZigkYmxvY2stZ3JpZCkge1xuICAgIEBpbmNsdWRlIHh5LWJsb2NrLWdyaWQtY2xhc3NlcygkbWFyZ2luLWdyaWQsICRwYWRkaW5nLWdyaWQpO1xuICB9XG5cbiAgLy8gQ29sbGFwc2UgZ3V0dGVyc1xuICBAaWYoJGNvbGxhcHNlKSB7XG4gICAgQGluY2x1ZGUgeHktY29sbGFwc2UtZ3JpZC1jbGFzc2VzKCRtYXJnaW4tZ3JpZCwgJHBhZGRpbmctZ3JpZCk7XG4gIH1cblxuICAvLyBPZmZzZXQgZ3V0dGVyc1xuICBAaWYoJG9mZnNldCkge1xuICAgIEBpbmNsdWRlIHh5LW9mZnNldC1jZWxsLWNsYXNzZXMoKTtcbiAgfVxuXG4gIC8vIFZlcnRpY2FsIGdyaWRcbiAgQGlmKCR2ZXJ0aWNhbC1ncmlkKSB7XG4gICAgQGluY2x1ZGUgeHktdmVydGljYWwtZ3JpZC1jbGFzc2VzKCRtYXJnaW4tZ3JpZCwgJHBhZGRpbmctZ3JpZCk7XG4gIH1cblxuICBAaWYgKCRmcmFtZS1ncmlkKSB7XG4gICAgQGluY2x1ZGUgeHktZnJhbWUtZ3JpZC1jbGFzc2VzKCR2ZXJ0aWNhbC1ncmlkLCAkbWFyZ2luLWdyaWQpXG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBidXR0b25cbi8vLy9cblxuLy8vIEZvbnQgZmFtaWx5IGZvciBidXR0b24gZWxlbWVudHMuXG4vLy8gQHR5cGUgRm9udFxuJGJ1dHRvbi1mb250LWZhbWlseTogaW5oZXJpdCAhZGVmYXVsdDtcblxuLy8vIEZvbnQgd2VpZ2h0IGZvciBidXR0b24gZWxlbWVudHMuXG4vLy8gSWdub3JlZCBpZiBudWxsIChkZWZhdWx0KVxuLy8vIEB0eXBlIEZvbnQtV2VpZ2h0XG4kYnV0dG9uLWZvbnQtd2VpZ2h0OiBudWxsICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBpbnNpZGUgYnV0dG9ucy5cbi8vLyBAdHlwZSBMaXN0XG4kYnV0dG9uLXBhZGRpbmc6IDAuODVlbSAxZW0gIWRlZmF1bHQ7XG5cbi8vLyBNYXJnaW4gYXJvdW5kIGJ1dHRvbnMuXG4vLy8gQHR5cGUgTGlzdFxuJGJ1dHRvbi1tYXJnaW46IDAgMCAkZ2xvYmFsLW1hcmdpbiAwICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmaWxsIGZvciBidXR0b25zLiBDYW4gZWl0aGVyIGJlIGBzb2xpZGAgb3IgYGhvbGxvd2AuXG4vLy8gQHR5cGUgS2V5d29yZFxuJGJ1dHRvbi1maWxsOiBzb2xpZCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3IgYnV0dG9ucy5cbi8vLyBAdHlwZSBDb2xvclxuJGJ1dHRvbi1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb24gaG92ZXIgZm9yIGJ1dHRvbnMuXG4vLy8gQHR5cGUgQ29sb3JcbiRidXR0b24tYmFja2dyb3VuZC1ob3Zlcjogc2NhbGUtY29sb3IoJGJ1dHRvbi1iYWNrZ3JvdW5kLCAkbGlnaHRuZXNzOiAtMTUlKSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgY29sb3IgZm9yIGJ1dHRvbnMuXG4vLy8gQHR5cGUgTGlzdFxuJGJ1dHRvbi1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQWx0ZXJuYXRpdmUgZm9udCBjb2xvciBmb3IgYnV0dG9ucy5cbi8vLyBAdHlwZSBMaXN0XG4kYnV0dG9uLWNvbG9yLWFsdDogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIHJhZGl1cyBmb3IgYnV0dG9ucywgZGVmYXVsdGVkIHRvIGdsb2JhbC1yYWRpdXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnV0dG9uLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgZm9yIGJ1dHRvbnMsIHRyYW5zcGFyZW50IGJ5IGRlZmF1bHRcbi8vLyBAdHlwZSBMaXN0XG4kYnV0dG9uLWJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50ICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIHdpZHRoIGZvciBob2xsb3cgb3V0bGluZSBidXR0b25zXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnV0dG9uLWhvbGxvdy1ib3JkZXItd2lkdGg6IDFweCAhZGVmYXVsdDtcblxuLy8vIFNpemVzIGZvciBidXR0b25zLlxuLy8vIEB0eXBlIE1hcFxuJGJ1dHRvbi1zaXplczogKFxuICB0aW55OiAwLjZyZW0sXG4gIHNtYWxsOiAwLjc1cmVtLFxuICBkZWZhdWx0OiAwLjlyZW0sXG4gIGxhcmdlOiAxLjI1cmVtLFxuKSAhZGVmYXVsdDtcblxuLy8vIENvbG9yaW5nIGNsYXNzZXMuIEEgbWFwIG9mIGNsYXNzZXMgdG8gb3V0cHV0IGluIHlvdXIgQ1NTLCBsaWtlIGAuc2Vjb25kYXJ5YCwgYC5zdWNjZXNzYCwgYW5kIHNvIG9uLlxuLy8vIEB0eXBlIE1hcFxuJGJ1dHRvbi1wYWxldHRlOiAkZm91bmRhdGlvbi1wYWxldHRlICFkZWZhdWx0O1xuXG4vLy8gb3BhY2l0eSBmb3IgYSBkaXNhYmxlZCBidXR0b24uXG4vLy8gQHR5cGUgTGlzdFxuJGJ1dHRvbi1vcGFjaXR5LWRpc2FibGVkOiAwLjI1ICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBsaWdodG5lc3Mgb24gaG92ZXIgZm9yIGJ1dHRvbnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnV0dG9uLWJhY2tncm91bmQtaG92ZXItbGlnaHRuZXNzOiAtMjAlICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgbGlnaHRuZXNzIG9uIGhvdmVyIGZvciBob2xsb3cgYnV0dG9ucy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRidXR0b24taG9sbG93LWhvdmVyLWxpZ2h0bmVzczogLTUwJSAhZGVmYXVsdDtcblxuLy8gSW50ZXJuYWw6IGZsaXAgZnJvbSBtYXJnaW4tcmlnaHQgdG8gbWFyZ2luLWxlZnQgZm9yIGRlZmF1bHRzXG5AaWYgJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSAncnRsJyB7XG4gICRidXR0b24tbWFyZ2luOiAwIDAgJGdsb2JhbC1tYXJnaW4gJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XG59XG5cbi8vLyB0cmFuc2l0aW9ucyBmb3IgYnV0dG9ucy5cbi8vLyBAdHlwZSBMaXN0XG4kYnV0dG9uLXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4yNXMgZWFzZS1vdXQsIGNvbG9yIDAuMjVzIGVhc2Utb3V0ICFkZWZhdWx0O1xuXG4vLy8gQWRkaXRpb25hbCByZXNwb25zaXZlIGNsYXNzZXMgZm9yIC5leHBhbmRlZFxuLy8vIEB0eXBlIEJvb2xlYW5cbiRidXR0b24tcmVzcG9uc2l2ZS1leHBhbmRlZDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFRPRE86IERvY3VtZW50IGJ1dHRvbi1iYXNlKCkgbWl4aW5cbkBtaXhpbiBidXR0b24tYmFzZSB7XG4gIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW46ICRidXR0b24tbWFyZ2luO1xuXG4gIEBpZiAodHlwZS1vZigkYnV0dG9uLXBhZGRpbmcpID09ICdtYXAnKSB7XG4gICAgQGVhY2ggJHNpemUsICRwYWRkaW5nIGluICRidXR0b24tcGFkZGluZyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIHBhZGRpbmc6ICRwYWRkaW5nO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcGFkZGluZzogJGJ1dHRvbi1wYWRkaW5nO1xuICB9XG5cbiAgYm9yZGVyOiAkYnV0dG9uLWJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogJGJ1dHRvbi1yYWRpdXM7XG4gIHRyYW5zaXRpb246ICRidXR0b24tdHJhbnNpdGlvbjtcbiAgZm9udC1mYW1pbHk6ICRidXR0b24tZm9udC1mYW1pbHk7XG4gIGZvbnQtc2l6ZTogbWFwLWdldCgkYnV0dG9uLXNpemVzLCBkZWZhdWx0KTtcbiAgZm9udC13ZWlnaHQ6ICRidXR0b24tZm9udC13ZWlnaHQ7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby12ZW5kb3ItcHJlZml4ZXNcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4vLy8gRXhwYW5kcyBhIGJ1dHRvbiB0byBtYWtlIGl0IGZ1bGwtd2lkdGguXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZXhwYW5kIFt0cnVlXSAtIFNldCB0byBgdHJ1ZWAgdG8gZW5hYmxlIHRoZSBleHBhbmQgYmVoYXZpb3IuIFNldCB0byBgZmFsc2VgIHRvIHJldmVyc2UgdGhpcyBiZWhhdmlvci5cbkBtaXhpbiBidXR0b24tZXhwYW5kKCRleHBhbmQ6IHRydWUpIHtcbiAgQGlmICRleHBhbmQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxuICBAZWxzZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIG1hcmdpbjogJGJ1dHRvbi1tYXJnaW47XG4gIH1cbn1cblxuLy8vIFNldHMgdGhlIGJhc2Ugc3R5bGVzIG9mIGEgaG9sbG93IG9yIGNsZWFyIGJ1dHRvbiBmaWxsaW5nIGFjY29yZGluZyB0byBgJGZpbGxgLlxuLy8vIFNlZSBtaXhpbiBgYnV0dG9uLWZpbGwtc3R5bGVgIGZvciB0aGUgZmlsbGluZyBzdHlsZXMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZmlsbCBbJGJ1dHRvbi1maWxsXSAtIFR5cGUgb2YgZmlsbGluZyBiZXR3ZWVuIGBob2xsb3dgIGFuZCBgY2xlYXJgLiBgc29saWRgIGhhcyBubyBlZmZlY3RzLlxuQG1peGluIGJ1dHRvbi1maWxsKFxuICAkZmlsbDogJGJ1dHRvbi1maWxsXG4pIHtcbiAgQGlmICRmaWxsID09IGhvbGxvdyB7XG4gICAgQGluY2x1ZGUgYnV0dG9uLWhvbGxvdztcbiAgfVxuICBAZWxzZSBpZiAkZmlsbCA9PSBjbGVhciB7XG4gICAgQGluY2x1ZGUgYnV0dG9uLWNsZWFyO1xuICB9XG59XG5cbi8vLyBTZXRzIHRoZSB2aXN1YWwgc3R5bGVzIG9mIGEgc29saWQvaG9sbG93L2NsZWFyIGJ1dHRvbiBmaWxsaW5nIGFjY29yZGluZyB0byBgJGZpbGxgLlxuLy8vIFNlZSBtaXhpbnMgYGJ1dHRvbi1zdHlsZWAsIGBidXR0b24taG9sbG93LXN0eWxlYCBhbmQgYGJ1dHRvbi1jbGVhci1zdHlsZWAgZm9yIGVmZmVjdHMgb2YgdmlzdWFsIHN0eWxpbmcgcGFyYW1ldGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRmaWxsIFskYnV0dG9uLWZpbGxdIC0gVHlwZSBvZiBmaWxsaW5nIGJldHdlZW4gYGhvbGxvd2AgYW5kIGBjbGVhcmAuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgWyRidXR0b24tYmFja2dyb3VuZF0gLSAtXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQtaG92ZXIgWyRidXR0b24tYmFja2dyb3VuZC1ob3Zlcl0gLSAtXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYnV0dG9uLWNvbG9yXSAtIC1cbkBtaXhpbiBidXR0b24tZmlsbC1zdHlsZShcbiAgJGZpbGw6ICRidXR0b24tZmlsbCxcbiAgJGJhY2tncm91bmQ6ICRidXR0b24tYmFja2dyb3VuZCxcbiAgJGJhY2tncm91bmQtaG92ZXI6ICRidXR0b24tYmFja2dyb3VuZC1ob3ZlcixcbiAgJGNvbG9yOiAkYnV0dG9uLWNvbG9yXG4pIHtcbiAgQGlmICRmaWxsID09IHNvbGlkIHtcbiAgICBAaW5jbHVkZSBidXR0b24tc3R5bGUoJGJhY2tncm91bmQsICRiYWNrZ3JvdW5kLWhvdmVyLCAkY29sb3IpO1xuICB9XG4gIEBlbHNlIGlmICRmaWxsID09IGhvbGxvdyB7XG4gICAgQGluY2x1ZGUgYnV0dG9uLWhvbGxvdy1zdHlsZSgkYmFja2dyb3VuZCk7XG4gIH1cbiAgQGVsc2UgaWYgJGZpbGwgPT0gY2xlYXIge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1jbGVhci1zdHlsZSgkYmFja2dyb3VuZCk7XG4gIH1cbn1cblxuLy8vIFNldHMgdGhlIHZpc3VhbCBzdHlsZSBvZiBhIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZCBbJGJ1dHRvbi1iYWNrZ3JvdW5kXSAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZC1ob3ZlciBbJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyXSAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJ1dHRvbiBvbiBob3Zlci4gU2V0IHRvIGBhdXRvYCB0byBoYXZlIHRoZSBtaXhpbiBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgaG92ZXIgY29sb3IuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYnV0dG9uLWNvbG9yXSAtIFRleHQgY29sb3Igb2YgdGhlIGJ1dHRvbi4gU2V0IHRvIGBhdXRvYCB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgY29sb3IgYmFzZWQgb24gdGhlIGJhY2tncm91bmQgY29sb3IuXG5AbWl4aW4gYnV0dG9uLXN0eWxlKFxuICAkYmFja2dyb3VuZDogJGJ1dHRvbi1iYWNrZ3JvdW5kLFxuICAkYmFja2dyb3VuZC1ob3ZlcjogJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyLFxuICAkY29sb3I6ICRidXR0b24tY29sb3IsXG4gICRiYWNrZ3JvdW5kLWhvdmVyLWxpZ2h0bmVzczogJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyLWxpZ2h0bmVzc1xuKSB7XG4gIEBpZiAkY29sb3IgPT0gYXV0byB7XG4gICAgJGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRiYWNrZ3JvdW5kLCAoJGJ1dHRvbi1jb2xvciwgJGJ1dHRvbi1jb2xvci1hbHQpKTtcbiAgfVxuXG4gIEBpZiAkYmFja2dyb3VuZC1ob3ZlciA9PSBhdXRvIHtcbiAgICAkYmFja2dyb3VuZC1ob3Zlcjogc2NhbGUtY29sb3IoJGJhY2tncm91bmQsICRsaWdodG5lc3M6ICRiYWNrZ3JvdW5kLWhvdmVyLWxpZ2h0bmVzcyk7XG4gIH1cblxuICAvLyBEZWZhdWx0IGFuZCBkaXNhYmxlZCBzdGF0ZXNcbiAgJixcbiAgJi5kaXNhYmxlZCwgJltkaXNhYmxlZF0sXG4gICYuZGlzYWJsZWQ6aG92ZXIsICZbZGlzYWJsZWRdOmhvdmVyLFxuICAmLmRpc2FibGVkOmZvY3VzLCAmW2Rpc2FibGVkXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgY29sb3I6ICRjb2xvcjtcbiAgfVxuXG4gICY6aG92ZXIsICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLWhvdmVyO1xuICAgIGNvbG9yOiAkY29sb3I7XG4gIH1cbn1cblxuLy8vIFNldHMgdGhlIGJhc2Ugc3R5bGVzIG9mIGEgaG9sbG93IGJ1dHRvbi5cbi8vLyBTZWUgbWl4aW4gYGJ1dHRvbi1ob2xsb3ctc3R5bGVgIGZvciB0aGUgZmlsbGluZyBzdHlsZXMuXG5AbWl4aW4gYnV0dG9uLWhvbGxvdyB7XG4gICYsICYuZGlzYWJsZWQsICZbZGlzYWJsZWRdIHtcbiAgICAmLCAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gU2V0cyB0aGUgdmlzdWFsIHN0eWxlIG9mIGEgaG9sbG93IGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRidXR0b24tYmFja2dyb3VuZF0gLSBUZXh0IGFuZCBib3JkZXIgY29sb3Igb2YgdGhlIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkaG92ZXItbGlnaHRuZXNzIFskYnV0dG9uLWhvbGxvdy1ob3Zlci1saWdodG5lc3NdIC0gQ29sb3IgbGlnaHRuZXNzIG9uIGhvdmVyLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRib3JkZXItd2lkdGggWyRidXR0b24taG9sbG93LWJvcmRlci13aWR0aF0gLSBCb3JkZXIgd2lkdGggb2YgdGhlIGJ1dHRvbi5cbkBtaXhpbiBidXR0b24taG9sbG93LXN0eWxlKFxuICAkY29sb3I6ICRidXR0b24tYmFja2dyb3VuZCxcbiAgJGhvdmVyLWxpZ2h0bmVzczogJGJ1dHRvbi1ob2xsb3ctaG92ZXItbGlnaHRuZXNzLFxuICAkYm9yZGVyLXdpZHRoOiAkYnV0dG9uLWhvbGxvdy1ib3JkZXItd2lkdGhcbikge1xuICAkY29sb3ItaG92ZXI6IHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGhvdmVyLWxpZ2h0bmVzcyk7XG5cbiAgLy8gRGVmYXVsdCBhbmQgZGlzYWJsZWQgc3RhdGVzXG4gICYsXG4gICYuZGlzYWJsZWQsICZbZGlzYWJsZWRdLFxuICAmLmRpc2FibGVkOmhvdmVyLCAmW2Rpc2FibGVkXTpob3ZlcixcbiAgJi5kaXNhYmxlZDpmb2N1cywgJltkaXNhYmxlZF06Zm9jdXMge1xuICAgIGJvcmRlcjogJGJvcmRlci13aWR0aCBzb2xpZCAkY29sb3I7XG4gICAgY29sb3I6ICRjb2xvcjtcbiAgfVxuXG4gICY6aG92ZXIsICY6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLWhvdmVyO1xuICAgIGNvbG9yOiAkY29sb3ItaG92ZXI7XG4gIH1cbn1cblxuLy8vIFNldHMgdGhlIGJhc2Ugc3R5bGVzIG9mIGEgY2xlYXIgYnV0dG9uLlxuLy8vIFNlZSBtaXhpbiBgYnV0dG9uLWNsZWFyLXN0eWxlYCBmb3IgdGhlIGZpbGxpbmcgc3R5bGVzLlxuQG1peGluIGJ1dHRvbi1jbGVhciB7XG4gICYsICYuZGlzYWJsZWQsICZbZGlzYWJsZWRdIHtcbiAgICAmLCAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIFNldHMgdGhlIHZpc3VhbCBzdHlsZSBvZiBhIGNsZWFyIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRidXR0b24tYmFja2dyb3VuZF0gLSBUZXh0IGNvbG9yIG9mIHRoZSBidXR0b24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGhvdmVyLWxpZ2h0bmVzcyBbJGJ1dHRvbi1ob2xsb3ctaG92ZXItbGlnaHRuZXNzXSAtIENvbG9yIGxpZ2h0bmVzcyBvbiBob3Zlci5cbkBtaXhpbiBidXR0b24tY2xlYXItc3R5bGUoXG4gICRjb2xvcjogJGJ1dHRvbi1iYWNrZ3JvdW5kLFxuICAkaG92ZXItbGlnaHRuZXNzOiAkYnV0dG9uLWhvbGxvdy1ob3Zlci1saWdodG5lc3Ncbikge1xuICAkY29sb3ItaG92ZXI6IHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGhvdmVyLWxpZ2h0bmVzcyk7XG5cbiAgLy8gRGVmYXVsdCBhbmQgZGlzYWJsZWQgc3RhdGVzXG4gICYsXG4gICYuZGlzYWJsZWQsICZbZGlzYWJsZWRdLFxuICAmLmRpc2FibGVkOmhvdmVyLCAmW2Rpc2FibGVkXTpob3ZlcixcbiAgJi5kaXNhYmxlZDpmb2N1cywgJltkaXNhYmxlZF06Zm9jdXMge1xuICAgIGNvbG9yOiAkY29sb3I7XG4gIH1cblxuICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICBjb2xvcjogJGNvbG9yLWhvdmVyO1xuICB9XG59XG5cbi8vLyBBZGRzIGRpc2FibGVkIHN0eWxlcyB0byBhIGJ1dHRvbiBieSBmYWRpbmcgdGhlIGVsZW1lbnQgYW5kIHJlc2V0aW5nIHRoZSBjdXJzb3IuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRvcGFjaXR5IFskYnV0dG9uLW9wYWNpdHktZGlzYWJsZWRdIC0gT3BhY2l0eSBvZiB0aGUgZGlzYWJsZWQgYnV0dG9uLlxuQG1peGluIGJ1dHRvbi1kaXNhYmxlZChcbiAgJG9wYWNpdHk6ICRidXR0b24tb3BhY2l0eS1kaXNhYmxlZFxuKSB7XG4gIG9wYWNpdHk6ICRidXR0b24tb3BhY2l0eS1kaXNhYmxlZDtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLy8vIEFkZHMgYSBkcm9wZG93biBhcnJvdyB0byBhIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNpemUgWzAuNGVtXSAtIFNpemUgb2YgdGhlIGFycm93LiBXZSByZWNvbW1lbmQgdXNpbmcgYW4gYGVtYCB2YWx1ZSBzbyB0aGUgdHJpYW5nbGUgc2NhbGVzIHdoZW4gdXNlZCBpbnNpZGUgZGlmZmVyZW50IHNpemVzIG9mIGJ1dHRvbnMuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFt3aGl0ZV0gLSBDb2xvciBvZiB0aGUgYXJyb3cuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRvZmZzZXQgWyRidXR0b24tcGFkZGluZ10gLSBEaXN0YW5jZSBiZXR3ZWVuIHRoZSBhcnJvdyBhbmQgdGhlIHRleHQgb2YgdGhlIGJ1dHRvbi4gRGVmYXVsdHMgdG8gd2hhdGV2ZXIgdGhlIHJpZ2h0IHBhZGRpbmcgb2YgYSBidXR0b24gaXMuXG5AbWl4aW4gYnV0dG9uLWRyb3Bkb3duKFxuICAkc2l6ZTogMC40ZW0sXG4gICRjb2xvcjogJHdoaXRlLFxuICAkb2Zmc2V0OiBnZXQtc2lkZSgkYnV0dG9uLXBhZGRpbmcsIHJpZ2h0KVxuKSB7XG4gICY6OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJHNpemUsICRjb2xvciwgZG93bik7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRvcDogMC40ZW07IC8vIEFsaWducyB0aGUgYXJyb3cgd2l0aCB0aGUgdGV4dCBvZiB0aGUgYnV0dG9uXG5cbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgZmxvYXQ6ICN7JGdsb2JhbC1yaWdodH07XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJG9mZnNldDtcbiAgfVxufVxuXG4vLy8gQWRkcyBhbGwgc3R5bGVzIGZvciBhIGJ1dHRvbi4gRm9yIG1vcmUgZ3JhbnVsYXIgY29udHJvbCBvdmVyIHN0eWxlcywgdXNlIHRoZSBpbmRpdmlkdWFsIGJ1dHRvbiBtaXhpbnMuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZXhwYW5kIFtmYWxzZV0gLSBTZXQgdG8gYHRydWVgIHRvIG1ha2UgdGhlIGJ1dHRvbiBmdWxsLXdpZHRoLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kIFskYnV0dG9uLWJhY2tncm91bmRdIC0gQmFja2dyb3VuZCBjb2xvciBvZiB0aGUgYnV0dG9uLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kLWhvdmVyIFskYnV0dG9uLWJhY2tncm91bmQtaG92ZXJdIC0gQmFja2dyb3VuZCBjb2xvciBvZiB0aGUgYnV0dG9uIG9uIGhvdmVyLiBTZXQgdG8gYGF1dG9gIHRvIGhhdmUgdGhlIG1peGluIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBob3ZlciBjb2xvci5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRidXR0b24tY29sb3JdIC0gVGV4dCBjb2xvciBvZiB0aGUgYnV0dG9uLiBTZXQgdG8gYGF1dG9gIHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBjb2xvciBiYXNlZCBvbiB0aGUgYmFja2dyb3VuZCBjb2xvci5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzdHlsZSBbc29saWRdIC0gU2V0IHRvIGBob2xsb3dgIHRvIGNyZWF0ZSBhIGhvbGxvdyBidXR0b24uIFRoZSBjb2xvciBkZWZpbmVkIGluIGAkYmFja2dyb3VuZGAgd2lsbCBiZSB1c2VkIGFzIHRoZSBwcmltYXJ5IGNvbG9yIG9mIHRoZSBidXR0b24uXG5AbWl4aW4gYnV0dG9uKFxuICAkZXhwYW5kOiBmYWxzZSxcbiAgJGJhY2tncm91bmQ6ICRidXR0b24tYmFja2dyb3VuZCxcbiAgJGJhY2tncm91bmQtaG92ZXI6ICRidXR0b24tYmFja2dyb3VuZC1ob3ZlcixcbiAgJGNvbG9yOiAkYnV0dG9uLWNvbG9yLFxuICAkc3R5bGU6ICRidXR0b24tZmlsbFxuKSB7XG4gIEBpbmNsdWRlIGJ1dHRvbi1iYXNlO1xuICBAaW5jbHVkZSBidXR0b24tZmlsbCgkc3R5bGUpO1xuICBAaW5jbHVkZSBidXR0b24tZmlsbC1zdHlsZSgkc3R5bGUsICRiYWNrZ3JvdW5kLCAkYmFja2dyb3VuZC1ob3ZlciwgJGNvbG9yKTtcblxuICBAaWYgJGV4cGFuZCB7XG4gICAgQGluY2x1ZGUgYnV0dG9uLWV4cGFuZDtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1idXR0b24ge1xuICAuYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBidXR0b24oJHN0eWxlOiBub25lKTtcblxuICAgIC8vIFNpemVzXG4gICAgQGVhY2ggJHNpemUsICR2YWx1ZSBpbiBtYXAtcmVtb3ZlKCRidXR0b24tc2l6ZXMsIGRlZmF1bHQpIHtcbiAgICAgICYuI3skc2l6ZX0ge1xuICAgICAgICBmb250LXNpemU6ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmV4cGFuZGVkIHsgQGluY2x1ZGUgYnV0dG9uLWV4cGFuZDsgfVxuXG4gICAgQGlmICRidXR0b24tcmVzcG9uc2l2ZS1leHBhbmRlZCB7XG4gICAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgjeyRzaXplfSBvbmx5KSB7XG4gICAgICAgICAgJi4jeyRzaXplfS1vbmx5LWV4cGFuZGVkIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1leHBhbmQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgjeyRzaXplfSBkb3duKSB7XG4gICAgICAgICAgICAmLiN7JHNpemV9LWRvd24tZXhwYW5kZWQge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBidXR0b24tZXhwYW5kO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoI3skc2l6ZX0pIHtcbiAgICAgICAgICAgICYuI3skc2l6ZX0tZXhwYW5kZWQge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBidXR0b24tZXhwYW5kO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNvbGlkLCBob2xsb3cgJiBjbGVhciBzdHlsZXNcbiAgICBAZWFjaCAkZmlsbGluZyBpbiAoc29saWQgaG9sbG93IGNsZWFyKSB7XG4gICAgICAkc2VsZWN0b3I6IGlmKCRidXR0b24tZmlsbCA9PSAkZmlsbGluZywgbnVsbCwgJy4jeyRmaWxsaW5nfScpO1xuXG4gICAgICAmI3skc2VsZWN0b3J9IHtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWZpbGwoJGZpbGxpbmcpO1xuICAgICAgICBAaW5jbHVkZSBidXR0b24tZmlsbC1zdHlsZSgkZmlsbGluZyk7XG5cbiAgICAgICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkYnV0dG9uLXBhbGV0dGUge1xuICAgICAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWZpbGwtc3R5bGUoJGZpbGxpbmcsICRjb2xvciwgYXV0bywgYXV0byk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGlzYWJsZWQgc3RhdGVcbiAgICAmLmRpc2FibGVkLCAmW2Rpc2FibGVkXSB7XG4gICAgICBAaW5jbHVkZSBidXR0b24tZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgLy8gRHJvcGRvd24gYXJyb3dcbiAgICAmLmRyb3Bkb3duIHtcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbi1kcm9wZG93bjtcblxuICAgICAgQGlmICRidXR0b24tZmlsbCA9PSBob2xsb3cge1xuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGJ1dHRvbi1iYWNrZ3JvdW5kO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuaG9sbG93LCAmLmNsZWFyIHtcbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6ICRidXR0b24tYmFja2dyb3VuZDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGJ1dHRvbi1wYWxldHRlIHtcbiAgICAgICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJ1dHRvbiB3aXRoIGRyb3Bkb3duIGFycm93IG9ubHlcbiAgICAmLmFycm93LW9ubHk6OmFmdGVyIHtcbiAgICAgIHRvcDogLTAuMWVtO1xuICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwO1xuICAgIH1cbiAgfVxuXG4gIGEuYnV0dG9uIHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBidXR0b24tZ3JvdXBcbi8vLy9cblxuLy8vIE1hcmdpbiBmb3IgYnV0dG9uIGdyb3Vwcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRidXR0b25ncm91cC1tYXJnaW46IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBNYXJnaW4gYmV0d2VlbiBidXR0b25zIGluIGEgYnV0dG9uIGdyb3VwLlxuLy8vIEB0eXBlIE51bWJlclxuJGJ1dHRvbmdyb3VwLXNwYWNpbmc6IDFweCAhZGVmYXVsdDtcblxuLy8vIFNlbGVjdG9yIGZvciB0aGUgYnV0dG9ucyBpbnNpZGUgYSBidXR0b24gZ3JvdXAuXG4vLy8gQHR5cGUgU3RyaW5nXG4kYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3I6ICcuYnV0dG9uJyAhZGVmYXVsdDtcblxuLy8vIE1heGltdW0gbnVtYmVyIG9mIGJ1dHRvbnMgdGhhdCBjYW4gYmUgaW4gYW4gZXZlbi13aWR0aCBidXR0b24gZ3JvdXAuIChPbmx5IG5lZWRlZCB3aGVuICRnbG9iYWwtZmxleGJveDogZmFsc2U7KVxuLy8vIEB0eXBlIE51bWJlclxuJGJ1dHRvbmdyb3VwLWV4cGFuZC1tYXg6IDYgIWRlZmF1bHQ7XG5cbi8vLyBEZXRlcm1pbmVzIGlmICRidXR0b24tcmFkaXVzIGlzIGFwcGxpZWQgdG8gZWFjaCBidXR0b24gb3IgdGhlIGJ1dHRvbiBncm91cCBhcyBhIHdob2xlLiBVc2UgJGdsb2JhbC1yYWRpdXMgaW4gX3NldHRpbmdzLnNjc3MgdG8gY2hhbmdlIHJhZGl1cy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYnV0dG9uZ3JvdXAtcmFkaXVzLW9uLWVhY2g6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBBZGQgc3R5bGVzIGZvciBhIGJ1dHRvbiBncm91cCBjb250YWluZXIuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRjaGlsZC1zZWxlY3RvciBbJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yXSAtIFNlbGVjdG9yIGZvciB0aGUgYnV0dG9ucyBpbnNpZGUgYSBidXR0b24gZ3JvdXAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzcGFjaW5nIFskYnV0dG9uZ3JvdXAtc3BhY2luZ10gLSBTcGFjaW5nIGJldHdlZW4gYnV0dG9ucyBpbiBhIGJ1dHRvbiBncm91cC5cbkBtaXhpbiBidXR0b24tZ3JvdXAoXG4gICRjaGlsZC1zZWxlY3RvcjogJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yLFxuICAkc3BhY2luZzogJGJ1dHRvbmdyb3VwLXNwYWNpbmdcbikge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgbWFyZ2luLWJvdHRvbTogJGJ1dHRvbmdyb3VwLW1hcmdpbjtcblxuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICBmbGV4LWdyb3c6IDE7XG5cbiAgICAmOjpiZWZvcmUsXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgZGlzcGxheTogbm9uZTsgLy8gRGlzYWJsZSBjbGVhcmZpeFxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgZm9udC1zaXplOiAwO1xuICB9XG5cbiAgI3skY2hpbGQtc2VsZWN0b3J9IHtcbiAgICBtYXJnaW46IDA7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRzcGFjaW5nO1xuICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuICAgIGZvbnQtc2l6ZTogbWFwLWdldCgkYnV0dG9uLXNpemVzLCBkZWZhdWx0KTtcblxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAwO1xuICAgIH1cblxuICAgIEBpZiBub3QgJGJ1dHRvbmdyb3VwLXJhZGl1cy1vbi1lYWNoIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG5cbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItdG9wLSN7JGdsb2JhbC1sZWZ0fS1yYWRpdXM6ICRidXR0b24tcmFkaXVzO1xuICAgICAgICBib3JkZXItYm90dG9tLSN7JGdsb2JhbC1sZWZ0fS1yYWRpdXM6ICRidXR0b24tcmFkaXVzO1xuICAgICAgfVxuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItdG9wLSN7JGdsb2JhbC1yaWdodH0tcmFkaXVzOiAkYnV0dG9uLXJhZGl1cztcbiAgICAgICAgYm9yZGVyLWJvdHRvbS0jeyRnbG9iYWwtcmlnaHR9LXJhZGl1czogJGJ1dHRvbi1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBNYWtlIGJ1dHRvbnMgYm9uZGVkIHdpdGhvdXQgZ2FwIGJldHdlZW4gdGhlbS4gQm9yZGVycyBiZXR3ZWVuIGJ1dHRvbnMgYXJlIG1lcmdlZFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VsZWN0b3IgWyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcl0gLSBTZWxlY3RvciBmb3IgdGhlIGJ1dHRvbnMgaW5zaWRlIGEgYnV0dG9uIGdyb3VwLlxuQG1peGluIGJ1dHRvbi1ncm91cC1uby1nYXBzKFxuICAkc2VsZWN0b3I6ICRidXR0b25ncm91cC1jaGlsZC1zZWxlY3RvcixcbiAgJGJvcmRlci13aWR0aDogJGJ1dHRvbi1ob2xsb3ctYm9yZGVyLXdpZHRoXG4pIHtcbiAgI3skc2VsZWN0b3J9IHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogcmVtLWNhbGMoLSRib3JkZXItd2lkdGgpO1xuXG4gICAgKyAjeyRzZWxlY3Rvcn0ge1xuICAgICAgYm9yZGVyLSN7JGdsb2JhbC1sZWZ0fS1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgZnVsbC13aWR0aCBidXR0b24gZ3JvdXAsIG1ha2luZyBlYWNoIGJ1dHRvbiBlcXVhbCB3aWR0aC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFskYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3JdIC0gU2VsZWN0b3IgZm9yIHRoZSBidXR0b25zIGluc2lkZSBhIGJ1dHRvbiBncm91cC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNwYWNpbmcgWyRidXR0b25ncm91cC1zcGFjaW5nXSAtIFNwYWNpbmcgYmV0d2VlbiBidXR0b25zIGluIGEgYnV0dG9uIGdyb3VwLlxuQG1peGluIGJ1dHRvbi1ncm91cC1leHBhbmQoXG4gICRzZWxlY3RvcjogJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yLFxuICAkc3BhY2luZzogJGJ1dHRvbmdyb3VwLXNwYWNpbmcsXG4gICRjb3VudDogbnVsbFxuKSB7XG4gIEBpZiBub3QgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogLSRzcGFjaW5nO1xuXG4gICAgJjo6YmVmb3JlLFxuICAgICY6OmFmdGVyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IC8vIERpc2FibGUgY2xlYXJmaXhcbiAgICB9XG4gIH1cblxuICAjeyRzZWxlY3Rvcn0ge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLy8gT25lIGNoaWxkXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gI3skc3BhY2luZ30pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFR3byBvciBtb3JlIGNoaWxkcmVlblxuICAgICAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkYnV0dG9uZ3JvdXAtZXhwYW5kLW1heCB7XG4gICAgICAgICY6Zmlyc3QtY2hpbGQ6bnRoLWxhc3QtY2hpbGQoI3skaX0pIHtcbiAgICAgICAgICAmLCAmOmZpcnN0LWNoaWxkOm50aC1sYXN0LWNoaWxkKCN7JGl9KSB+ICN7JHNlbGVjdG9yfSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICB3aWR0aDogY2FsYygje3BlcmNlbnRhZ2UoZGl2aWRlKDEsICRpKSl9IC0gI3skc3BhY2luZ30pO1xuICAgICAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRzcGFjaW5nO1xuXG4gICAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJHNwYWNpbmcgKiAtJGJ1dHRvbmdyb3VwLWV4cGFuZC1tYXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBTdGFja3MgdGhlIGJ1dHRvbnMgaW4gYSBidXR0b24gZ3JvdXAuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWxlY3RvciBbJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yXSAtIFNlbGVjdG9yIGZvciB0aGUgYnV0dG9ucyBpbnNpZGUgdGhlIGJ1dHRvbiBncm91cC5cbkBtaXhpbiBidXR0b24tZ3JvdXAtc3RhY2soXG4gICRzZWxlY3RvcjogJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yXG4pIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICB9XG5cbiAgI3skc2VsZWN0b3J9IHtcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG5cbiAgICBAaWYgbm90ICRidXR0b25ncm91cC1yYWRpdXMtb24tZWFjaCB7XG4gICAgICBib3JkZXItcmFkaXVzOiAwO1xuXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtcmlnaHR9LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgICB9XG5cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tI3skZ2xvYmFsLWxlZnR9LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgICAgIGJvcmRlci1ib3R0b20tI3skZ2xvYmFsLXJpZ2h0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gVW4tc3RhY2tzIHRoZSBidXR0b25zIGluIGEgYnV0dG9uIGdyb3VwLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VsZWN0b3IgWyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcl0gLSBTZWxlY3RvciBmb3IgdGhlIGJ1dHRvbnMgaW5zaWRlIHRoZSBidXR0b24gZ3JvdXAuXG5AbWl4aW4gYnV0dG9uLWdyb3VwLXVuc3RhY2soXG4gICRzZWxlY3RvcjogJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yXG4pIHtcbiAgI3skc2VsZWN0b3J9IHtcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICB9XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgIEBpZiBub3QgJGJ1dHRvbmdyb3VwLXJhZGl1cy1vbi1lYWNoIHtcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItdG9wLSN7JGdsb2JhbC1sZWZ0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICAgICAgICBib3JkZXItdG9wLSN7JGdsb2JhbC1yaWdodH0tcmFkaXVzOiAwO1xuICAgICAgICBib3JkZXItYm90dG9tLSN7JGdsb2JhbC1sZWZ0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICAgICAgfVxuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItdG9wLSN7JGdsb2JhbC1yaWdodH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICAgICAgYm9yZGVyLWJvdHRvbS0jeyRnbG9iYWwtcmlnaHR9LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgICAgIGJvcmRlci1ib3R0b20tI3skZ2xvYmFsLWxlZnR9LXJhZGl1czogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1idXR0b24tZ3JvdXAge1xuICAuYnV0dG9uLWdyb3VwIHtcbiAgICBAaW5jbHVkZSBidXR0b24tZ3JvdXA7XG5cbiAgICAvLyBTaXplc1xuICAgIEBlYWNoICRzaXplLCAkdmFsdWUgaW4gbWFwLXJlbW92ZSgkYnV0dG9uLXNpemVzLCBkZWZhdWx0KSB7XG4gICAgICAmLiN7JHNpemV9ICN7JGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yfSB7XG4gICAgICAgIGZvbnQtc2l6ZTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEV2ZW4td2lkdGggR3JvdXBcbiAgICAmLmV4cGFuZGVkIHtcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ncm91cC1leHBhbmQ7XG4gICAgfVxuXG4gICAgLy8gU29saWQsIGhvbGxvdyAmIGNsZWFyIHN0eWxlc1xuICAgIEBlYWNoICRmaWxsaW5nIGluIChzb2xpZCBob2xsb3cgY2xlYXIpIHtcbiAgICAgICRiYXNlLXNlbGVjdG9yOiBpZigkYnV0dG9uLWZpbGwgPT0gJGZpbGxpbmcsIG51bGwsICcuI3skZmlsbGluZ30nKTtcblxuICAgICAgJiN7JGJhc2Utc2VsZWN0b3J9IHtcbiAgICAgICAgLy8gRG8gbm90IGdlbmVyYXRlIGJ1dHRvbiBiYXNlIHN0eWxlcyBmb3IgdGhlIGRlZmF1bHQgZmlsbGluZ1xuICAgICAgICBAaWYoJGJ1dHRvbi1maWxsICE9ICRmaWxsaW5nKSB7XG4gICAgICAgICAgI3skYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3J9IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1maWxsKCRmaWxsaW5nKTtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1maWxsLXN0eWxlKCRmaWxsaW5nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRidXR0b24tcGFsZXR0ZSB7XG4gICAgICAgICAgJGluZGl2aWR1YWwtc2VsZWN0b3I6IGlmKCRidXR0b24tZmlsbCA9PSAkZmlsbGluZywgbnVsbCwgJyAjeyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcn0uI3skbmFtZX0nKTtcblxuICAgICAgICAgICYuI3skbmFtZX0gI3skYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3J9LCAjeyRpbmRpdmlkdWFsLXNlbGVjdG9yfSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBidXR0b24tZmlsbC1zdHlsZSgkZmlsbGluZywgJGNvbG9yLCBhdXRvLCBhdXRvKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH1cblxuICAgICYubm8tZ2FwcyB7XG4gICAgICBAaW5jbHVkZSBidXR0b24tZ3JvdXAtbm8tZ2FwcztcbiAgICB9XG5cbiAgICAmLnN0YWNrZWQsXG4gICAgJi5zdGFja2VkLWZvci1zbWFsbCxcbiAgICAmLnN0YWNrZWQtZm9yLW1lZGl1bSB7XG4gICAgICBAaW5jbHVkZSBidXR0b24tZ3JvdXAtc3RhY2s7XG5cbiAgICAgICYuZXhwYW5kZWQge1xuICAgICAgICBAaW5jbHVkZSBidXR0b24tZ3JvdXAtZXhwYW5kO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuc3RhY2tlZC1mb3Itc21hbGwge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWdyb3VwLXVuc3RhY2s7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5zdGFja2VkLWZvci1tZWRpdW0ge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICBAaW5jbHVkZSBidXR0b24tZ3JvdXAtdW5zdGFjaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnN0YWNrZWQtZm9yLXNtYWxsLmV4cGFuZGVkIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAjeyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcn0ge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5zdGFja2VkLWZvci1tZWRpdW0uZXhwYW5kZWQge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0gZG93bikge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAjeyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcn0ge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgY2xvc2UtYnV0dG9uXG4vLy8vXG5cbi8vLyBEZWZhdWx0IHBvc2l0aW9uIG9mIHRoZSBjbG9zZSBidXR0b24uIFRoZSBmaXJzdCB2YWx1ZSBzaG91bGQgYmUgYHJpZ2h0YCBvciBgbGVmdGAsIGFuZCB0aGUgc2Vjb25kIHZhbHVlIHNob3VsZCBiZSBgdG9wYCBvciBgYm90dG9tYC5cbi8vLyBAdHlwZSBMaXN0XG4kY2xvc2VidXR0b24tcG9zaXRpb246IHJpZ2h0IHRvcCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgei1pbmRleCBmb3IgYSBjbG9zZSBidXR0b24uXG4vLy8gQHR5cGUgTnVtYmVyXG4kY2xvc2VidXR0b24tei1pbmRleDogMTAgIWRlZmF1bHQ7XG5cbi8vLyBCdXR0b24gc2l6ZSB0byB1c2UgYXMgZGVmYXVsdFxuLy8vIEB0eXBlIFN0cmluZ1xuLy8vIEBzZWUgJGNsb3NlYnV0dG9uLXNpemVcbi8vLyBAc2VlICRjbG9zZWJ1dHRvbi1vZmZzZXQtaG9yaXpvbnRhbFxuLy8vIEBzZWUgJGNsb3NlYnV0dG9uLW9mZnNldC12ZXJ0aWNhbFxuJGNsb3NlYnV0dG9uLWRlZmF1bHQtc2l6ZTogbWVkaXVtICFkZWZhdWx0O1xuXG4vLy8gUmlnaHQgKG9yIGxlZnQpIG9mZnNldChzKSBmb3IgYSBjbG9zZSBidXR0b24uXG4vLy8gQHR5cGUgTnVtYmVyfE1hcFxuJGNsb3NlYnV0dG9uLW9mZnNldC1ob3Jpem9udGFsOiAoXG4gIHNtYWxsOiAwLjY2cmVtLFxuICBtZWRpdW06IDFyZW0sXG4pICFkZWZhdWx0O1xuXG4vLy8gVG9wIChvciBib3R0b20pIG9mZnNldChzKSBmb3IgYSBjbG9zZSBidXR0b24uXG4vLy8gQHR5cGUgTnVtYmVyfE1hcFxuJGNsb3NlYnV0dG9uLW9mZnNldC12ZXJ0aWNhbDogKFxuICBzbWFsbDogMC4zM2VtLFxuICBtZWRpdW06IDAuNXJlbSxcbikgIWRlZmF1bHQ7XG5cbi8vLyBTaXplKHMpIG9mIHRoZSBjbG9zZSBidXR0b24uIFVzZWQgdG8gZ2VuZXJhdGUgc2l6aW5nIG1vZGlmaWVycy5cbi8vLyBAdHlwZSBOdW1iZXJ8TWFwXG4kY2xvc2VidXR0b24tc2l6ZTogKFxuICBzbWFsbDogMS41ZW0sXG4gIG1lZGl1bTogMmVtLFxuKSAhZGVmYXVsdDtcblxuLy8vIFRoZSBsaW5lLWhlaWdodCBvZiB0aGUgY2xvc2UgYnV0dG9uLiBJdCBhZmZlY3RzIHRoZSBzcGFjaW5nIG9mIHRoZSBlbGVtZW50LlxuLy8vIEB0eXBlIE51bWJlclxuJGNsb3NlYnV0dG9uLWxpbmVoZWlnaHQ6IDEgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHRoZSBjbG9zZSBidXR0b24uXG4vLy8gQHR5cGUgQ29sb3JcbiRjbG9zZWJ1dHRvbi1jb2xvcjogJGRhcmstZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgdGhlIGNsb3NlIGJ1dHRvbiB3aGVuIGJlaW5nIGhvdmVyZWQgb24uXG4vLy8gQHR5cGUgQ29sb3JcbiRjbG9zZWJ1dHRvbi1jb2xvci1ob3ZlcjogJGJsYWNrICFkZWZhdWx0O1xuXG5cbi8vLyBHZXQgdGhlIHNpemUgYW5kIHBvc2l0aW9uIGZvciBhIGNsb3NlIGJ1dHRvbi4gSWYgdGhlIGlucHV0IHZhbHVlIGlzIGEgbnVtYmVyLCB0aGUgbnVtYmVyIGlzIHJldHVybmVkLiBJZiB0aGUgaW5wdXQgdmFsdWUgaXMgYSBjb25maWcgbWFwIGFuZCB0aGUgbWFwIGhhcyB0aGUga2V5IGAkc2l6ZWAsIHRoZSB2YWx1ZSBpcyByZXR1cm5lZC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJHZhbHVlIC0gQSBudW1iZXIgb3IgbWFwIHRoYXQgcmVwcmVzZW50cyB0aGUgc2l6ZSBvciBwb3NpdGlvbiB2YWx1ZShzKSBvZiB0aGUgY2xvc2UgYnV0dG9uLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgLSBUaGUgc2l6ZSBvZiB0aGUgY2xvc2UgYnV0dG9uIHRvIHVzZS5cbi8vL1xuLy8vIEByZXR1cm4ge051bWJlcn0gVGhlIGdpdmVuIG51bWJlciBvciB0aGUgdmFsdWUgZm91bmQgaW4gdGhlIG1hcC5cbkBmdW5jdGlvbiAtemYtZ2V0LXNpemUtdmFsKCR2YWx1ZSwgJHNpemUpIHtcbiAgLy8gQ2hlY2sgaWYgdGhlIHZhbHVlIGlzIGEgbnVtYmVyXG4gIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gJ251bWJlcicge1xuICAgIC8vIElmIGl0IGlzLCBqdXN0IHJldHVybiB0aGUgbnVtYmVyXG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgc2l6ZSBuYW1lIGV4aXN0cyBpbiB0aGUgdmFsdWUgbWFwXG4gIEBlbHNlIGlmIG1hcC1oYXMta2V5KCR2YWx1ZSwgJHNpemUpIHtcbiAgICAvLyBJZiBpdCBkb2VzLCByZXR1cm4gdGhlIHZhbHVlXG4gICAgQHJldHVybiBtYXAtZ2V0KCR2YWx1ZSwgJHNpemUpO1xuICB9XG59XG5cbi8vLyBTZXRzIHRoZSBzaXplIGFuZCBwb3NpdGlvbiBvZiBhIGNsb3NlIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIFttZWRpdW1dIC0gVGhlIHNpemUgdG8gdXNlLiBTZXQgdG8gYHNtYWxsYCB0byBjcmVhdGUgYSBzbWFsbCBjbG9zZSBidXR0b24uIFRoZSAnbWVkaXVtJyB2YWx1ZXMgZGVmaW5lZCBpbiBgJGNsb3NlYnV0dG9uLSpgIHZhcmlhYmxlcyB3aWxsIGJlIHVzZWQgYXMgdGhlIGRlZmF1bHQgc2l6ZSBhbmQgcG9zaXRpb24gb2YgdGhlIGNsb3NlIGJ1dHRvbi5cbkBtaXhpbiBjbG9zZS1idXR0b24tc2l6ZSgkc2l6ZSkge1xuICAkeDogbnRoKCRjbG9zZWJ1dHRvbi1wb3NpdGlvbiwgMSk7XG4gICR5OiBudGgoJGNsb3NlYnV0dG9uLXBvc2l0aW9uLCAyKTtcblxuICAjeyR4fTogLXpmLWdldC1zaXplLXZhbCgkY2xvc2VidXR0b24tb2Zmc2V0LWhvcml6b250YWwsICRzaXplKTtcbiAgI3skeX06IC16Zi1nZXQtc2l6ZS12YWwoJGNsb3NlYnV0dG9uLW9mZnNldC12ZXJ0aWNhbCwgJHNpemUpO1xuICBmb250LXNpemU6IC16Zi1nZXQtc2l6ZS12YWwoJGNsb3NlYnV0dG9uLXNpemUsICRzaXplKTtcbiAgbGluZS1oZWlnaHQ6IC16Zi1nZXQtc2l6ZS12YWwoJGNsb3NlYnV0dG9uLWxpbmVoZWlnaHQsICRzaXplKTtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGNsb3NlIGJ1dHRvbiwgdXNpbmcgdGhlIHN0eWxlcyBpbiB0aGUgc2V0dGluZ3MgdmFyaWFibGVzLlxuQG1peGluIGNsb3NlLWJ1dHRvbiB7XG4gICR4OiBudGgoJGNsb3NlYnV0dG9uLXBvc2l0aW9uLCAxKTtcbiAgJHk6IG50aCgkY2xvc2VidXR0b24tcG9zaXRpb24sIDIpO1xuXG4gIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAkY2xvc2VidXR0b24tei1pbmRleDtcbiAgY29sb3I6ICRjbG9zZWJ1dHRvbi1jb2xvcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIGNvbG9yOiAkY2xvc2VidXR0b24tY29sb3ItaG92ZXI7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tY2xvc2UtYnV0dG9uIHtcbiAgLmNsb3NlLWJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgY2xvc2UtYnV0dG9uO1xuXG4gICAgLy8gR2VuZXJhdGUgYSBwbGFjZWhvbGRlciBhbmQgYSBjbGFzcyBmb3IgZWFjaCBzaXplXG4gICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRjbG9zZWJ1dHRvbi1zaXplIHtcbiAgICAgIEBhdC1yb290IHtcbiAgICAgICAgJXpmLWNsb3NlLWJ1dHRvbi0tI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIGNsb3NlLWJ1dHRvbi1zaXplKCRuYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgQGV4dGVuZCAlemYtY2xvc2UtYnV0dG9uLS0jeyRuYW1lfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVc2UgYnkgZGVmYXVsdCB0aGUgcGxhY2Vob2xkZXIgb2YgdGhlIGRlZmF1bHQgc2l6ZVxuICAgIEBleHRlbmQgJXpmLWNsb3NlLWJ1dHRvbi0tI3skY2xvc2VidXR0b24tZGVmYXVsdC1zaXplfTtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGxhYmVsXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIGxhYmVscy5cbi8vLyBAdHlwZSBDb2xvclxuJGxhYmVsLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB0ZXh0IGNvbG9yIGZvciBsYWJlbHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRsYWJlbC1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQWx0ZXJuYXRlIHRleHQgY29sb3IgZm9yIGxhYmVscy5cbi8vLyBAdHlwZSBDb2xvclxuJGxhYmVsLWNvbG9yLWFsdDogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gQ29sb3JpbmcgY2xhc3Nlcy4gQSBtYXAgb2YgY2xhc3NlcyB0byBvdXRwdXQgaW4geW91ciBDU1MsIGxpa2UgYC5zZWNvbmRhcnlgLCBgLnN1Y2Nlc3NgLCBhbmQgc28gb24uXG4vLy8gQHR5cGUgTWFwXG4kbGFiZWwtcGFsZXR0ZTogJGZvdW5kYXRpb24tcGFsZXR0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBzaXplIGZvciBsYWJlbHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGFiZWwtZm9udC1zaXplOiAwLjhyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgaW5zaWRlIGxhYmVscy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsYWJlbC1wYWRkaW5nOiAwLjMzMzMzcmVtIDAuNXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcmFkaXVzIG9mIGxhYmVscy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsYWJlbC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gR2VuZXJhdGVzIGJhc2Ugc3R5bGVzIGZvciBhIGxhYmVsLlxuQG1peGluIGxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAkbGFiZWwtcGFkZGluZztcblxuICBib3JkZXItcmFkaXVzOiAkbGFiZWwtcmFkaXVzO1xuXG4gIGZvbnQtc2l6ZTogJGxhYmVsLWZvbnQtc2l6ZTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tbGFiZWwge1xuICAubGFiZWwge1xuICAgIEBpbmNsdWRlIGxhYmVsO1xuXG4gICAgYmFja2dyb3VuZDogJGxhYmVsLWJhY2tncm91bmQ7XG4gICAgY29sb3I6ICRsYWJlbC1jb2xvcjtcblxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGxhYmVsLXBhbGV0dGUge1xuICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjb2xvcjtcbiAgICAgICAgY29sb3I6IGNvbG9yLXBpY2stY29udHJhc3QoJGNvbG9yLCAoJGxhYmVsLWNvbG9yLCAkbGFiZWwtY29sb3ItYWx0KSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBwcm9ncmVzcyBiYXIgY29udGFpbmVyLlxuQG1peGluIHByb2dyZXNzLWNvbnRhaW5lciB7XG4gIGhlaWdodDogJHByb2dyZXNzLWhlaWdodDtcbiAgbWFyZ2luLWJvdHRvbTogJHByb2dyZXNzLW1hcmdpbi1ib3R0b207XG4gIGJvcmRlci1yYWRpdXM6ICRwcm9ncmVzcy1yYWRpdXM7XG4gIGJhY2tncm91bmQtY29sb3I6ICRwcm9ncmVzcy1iYWNrZ3JvdW5kO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBpbm5lciBtZXRlciBvZiBhIHByb2dyZXNzIGJhci5cbkBtaXhpbiBwcm9ncmVzcy1tZXRlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHJvZ3Jlc3MtbWV0ZXItYmFja2dyb3VuZDtcblxuICBAaWYgaGFzLXZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcbiAgICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRleHQgaW4gdGhlIHByb2dyZXNzIG1ldGVyLlxuQG1peGluIHByb2dyZXNzLW1ldGVyLXRleHQge1xuICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXI7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICR3aGl0ZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICBAaWYgaGFzLXZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcbiAgICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb2dyZXNzLWJhciB7XG4gIC8vIFByb2dyZXNzIGJhclxuICAucHJvZ3Jlc3Mge1xuICAgIEBpbmNsdWRlIHByb2dyZXNzLWNvbnRhaW5lcjtcblxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGZvdW5kYXRpb24tcGFsZXR0ZSB7XG4gICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgLnByb2dyZXNzLW1ldGVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBJbm5lciBtZXRlclxuICAucHJvZ3Jlc3MtbWV0ZXIge1xuICAgIEBpbmNsdWRlIHByb2dyZXNzLW1ldGVyO1xuICB9XG5cbiAgLy8gSW5uZXIgbWV0ZXIgdGV4dFxuICAucHJvZ3Jlc3MtbWV0ZXItdGV4dCB7XG4gICAgQGluY2x1ZGUgcHJvZ3Jlc3MtbWV0ZXItdGV4dDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLyBbVE9ET10gQ2hlY2sgaG93IHBsdWdpbiBjb25maXJtcyBkaXNhYmxlZCBvciB2ZXJ0aWNhbCBzdGF0dXNcbi8vIFtUT0RPXSBDaGVjayBpZiB0cmFuc2l0aW9uOiBhbGw7IGlzIG5lY2Vzc2FyeVxuXG4vLy8vXG4vLy8gQGdyb3VwIHNsaWRlclxuLy8vL1xuXG4vLy8gRGVmYXVsdCBzbGlkZXIgd2lkdGggb2YgYSB2ZXJ0aWNhbCBzbGlkZXIuIChEb2Vzbid0IGFwcGx5IHRvIHRoZSBuYXRpdmUgc2xpZGVyLilcbi8vLyBAdHlwZSBOdW1iZXJcbiRzbGlkZXItd2lkdGgtdmVydGljYWw6IDAuNXJlbSAhZGVmYXVsdDtcblxuLy8vIFRyYW5zaXRpb24gcHJvcGVydGllcyB0byBhcHBseSB0byB0aGUgc2xpZGVyIGhhbmRsZSBhbmQgZmlsbC4gKERvZXNuJ3QgYXBwbHkgdG8gdGhlIG5hdGl2ZSBzbGlkZXIuKVxuLy8vIEB0eXBlIFRyYW5zaXRpb25cbiRzbGlkZXItdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHRoZSBnZW5lcmFsIHN0eWxlcyBmb3Igc2xpZGVycy5cbkBtaXhpbiBzbGlkZXItY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6ICRzbGlkZXItaGVpZ2h0O1xuICBtYXJnaW4tdG9wOiAxLjI1cmVtO1xuICBtYXJnaW4tYm90dG9tOiAyLjI1cmVtO1xuXG4gIGJhY2tncm91bmQtY29sb3I6ICRzbGlkZXItYmFja2dyb3VuZDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgdG91Y2gtYWN0aW9uOiBub25lO1xufVxuXG4vLy8gQWRkcyB0aGUgZ2VuZXJhbCBzdHlsZXMgZm9yIGFjdGl2ZSBmaWxsIGZvciBzbGlkZXJzLlxuQG1peGluIHNsaWRlci1maWxsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG5cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogJHNsaWRlci1oZWlnaHQ7XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogJHNsaWRlci1maWxsLWJhY2tncm91bmQ7XG4gIHRyYW5zaXRpb246ICRzbGlkZXItdHJhbnNpdGlvbjtcblxuICAmLmlzLWRyYWdnaW5nIHtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMHMgbGluZWFyO1xuICB9XG59XG5cbi8vLyBBZGRzIHRoZSBnZW5lcmFsIHN0eWxlcyBmb3IgdGhlIHNsaWRlciBoYW5kbGVzLlxuQG1peGluIHNsaWRlci1oYW5kbGUge1xuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlcjtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMTtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAkc2xpZGVyLWhhbmRsZS13aWR0aDtcbiAgaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XG5cbiAgYm9yZGVyLXJhZGl1czogJHNsaWRlci1yYWRpdXM7XG4gIGJhY2tncm91bmQtY29sb3I6ICRzbGlkZXItaGFuZGxlLWJhY2tncm91bmQ7XG4gIHRyYW5zaXRpb246ICRzbGlkZXItdHJhbnNpdGlvbjtcbiAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogc2NhbGUtY29sb3IoJHNsaWRlci1oYW5kbGUtYmFja2dyb3VuZCwgJGxpZ2h0bmVzczogLTE1JSk7XG4gIH1cblxuICAmLmlzLWRyYWdnaW5nIHtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMHMgbGluZWFyO1xuICB9XG59XG5cbkBtaXhpbiBzbGlkZXItZGlzYWJsZWQge1xuICBvcGFjaXR5OiAkc2xpZGVyLW9wYWNpdHktZGlzYWJsZWQ7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbkBtaXhpbiBzbGlkZXItdmVydGljYWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAkc2xpZGVyLXdpZHRoLXZlcnRpY2FsO1xuICBoZWlnaHQ6IDEyLjVyZW07XG4gIG1hcmdpbjogMCAxLjI1cmVtO1xuICB0cmFuc2Zvcm06IHNjYWxlKDEsIC0xKTtcblxuICAuc2xpZGVyLWZpbGwge1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogJHNsaWRlci13aWR0aC12ZXJ0aWNhbDtcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICB9XG5cbiAgLnNsaWRlci1oYW5kbGUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogNTAlO1xuICAgIHdpZHRoOiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XG4gICAgaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS13aWR0aDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tc2xpZGVyIHtcbiAgLy8gQ29udGFpbmVyXG4gIC5zbGlkZXIge1xuICAgIEBpbmNsdWRlIHNsaWRlci1jb250YWluZXI7XG4gIH1cblxuICAvLyBGaWxsIGFyZWFcbiAgLnNsaWRlci1maWxsIHtcbiAgICBAaW5jbHVkZSBzbGlkZXItZmlsbDtcbiAgfVxuXG4gIC8vIERyYWdnYWJsZSBoYW5kbGVcbiAgLnNsaWRlci1oYW5kbGUge1xuICAgIEBpbmNsdWRlIHNsaWRlci1oYW5kbGU7XG4gIH1cblxuICAvLyBEaXNhYmxlZCBzdGF0ZVxuICAuc2xpZGVyLmRpc2FibGVkLFxuICAuc2xpZGVyW2Rpc2FibGVkXSB7XG4gICAgQGluY2x1ZGUgc2xpZGVyLWRpc2FibGVkO1xuICB9XG5cbiAgLy8gVmVydGljYWwgc2xpZGVyXG4gIC5zbGlkZXIudmVydGljYWwge1xuICAgIEBpbmNsdWRlIHNsaWRlci12ZXJ0aWNhbDtcbiAgfVxuXG4gIC8vIFJUTCBzdXBwb3J0XG4gIEBpZiAkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IHJ0bCB7XG4gICAgLnNsaWRlcjpub3QoLnZlcnRpY2FsKSB7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAxKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBzd2l0Y2hcbi8vLy9cblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYSBzd2l0Y2guXG4vLy8gQHR5cGUgQ29sb3JcbiRzd2l0Y2gtYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBhY3RpdmUgY29sb3Igb2YgYSBzd2l0Y2guXG4vLy8gQHR5cGUgQ29sb3JcbiRzd2l0Y2gtYmFja2dyb3VuZC1hY3RpdmU6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gSGVpZ2h0IG9mIGEgc3dpdGNoLCB3aXRoIG5vIGNsYXNzIGFwcGxpZWQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLWhlaWdodDogMnJlbSAhZGVmYXVsdDtcblxuLy8vIEhlaWdodCBvZiBhIHN3aXRjaCB3aXRoIC50aW55IGNsYXNzLlxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1oZWlnaHQtdGlueTogMS41cmVtICFkZWZhdWx0O1xuXG4vLy8gSGVpZ2h0IG9mIGEgc3dpdGNoIHdpdGggLnNtYWxsIGNsYXNzLlxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1oZWlnaHQtc21hbGw6IDEuNzVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBIZWlnaHQgb2YgYSBzd2l0Y2ggd2l0aCAubGFyZ2UgY2xhc3MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLWhlaWdodC1sYXJnZTogMi41cmVtICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIHJhZGl1cyBvZiB0aGUgc3dpdGNoXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBib3JkZXIgYXJvdW5kIGEgbW9kYWwuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLW1hcmdpbjogJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgc3dpdGNoIGNvbnRhaW5lciBhbmQgcGFkZGxlLlxuLy8vIEB0eXBlIENvbG9yXG4kc3dpdGNoLXBhZGRsZS1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBTcGFjaW5nIGJldHdlZW4gYSBzd2l0Y2ggcGFkZGxlIGFuZCB0aGUgZWRnZSBvZiB0aGUgYm9keS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtcGFkZGxlLW9mZnNldDogMC4yNXJlbSAhZGVmYXVsdDtcblxuLy8vIGJvcmRlciByYWRpdXMgb2YgdGhlIHN3aXRjaCBwYWRkbGVcbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtcGFkZGxlLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBzd2l0Y2ggdHJhbnNpdGlvbi5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtcGFkZGxlLXRyYW5zaXRpb246IGFsbCAwLjI1cyBlYXNlLW91dCAhZGVmYXVsdDtcblxuLy8vIE9wYWNpdHkgb2YgYSBkaXNhYmxlZCBzd2l0Y2guXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLW9wYWNpdHktZGlzYWJsZWQ6IC41ICFkZWZhdWx0O1xuXG4vLy8gQ3Vyc29yIGZvciBhIGRpc2FibGVkIHN3aXRjaC5cbi8vLyBAdHlwZSBDdXJzb3JcbiRzd2l0Y2gtY3Vyc29yLWRpc2FibGVkOiBub3QtYWxsb3dlZCAhZGVmYXVsdDtcblxuLy8gbWFrZSB0aGVtIHZhcmlhYmxlc1xuLy8gYXNrIGFib3V0IGFjY2Vzc2liaWxpdHkgb24gbGFiZWxcbi8vIGNoYW5nZSBjbGFzcyBuYW1lIGZvciB0ZXh0XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBzd2l0Y2ggY29udGFpbmVyLiBBcHBseSB0aGlzIHRvIGEgY29udGFpbmVyIGNsYXNzLlxuQG1peGluIHN3aXRjaC1jb250YWluZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1ib3R0b206ICRzd2l0Y2gtbWFyZ2luO1xuICBvdXRsaW5lOiAwO1xuXG4gIC8vIFRoZXNlIHByb3BlcnRpZXMgY2FzY2FkZSBkb3duIHRvIHRoZSBzd2l0Y2ggdGV4dFxuICBmb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGNvbG9yOiAkd2hpdGU7XG5cbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBzd2l0Y2ggaW5wdXQuIEFwcGx5IHRoaXMgdG8gYW4gYDxpbnB1dD5gIHdpdGhpbiBhIHN3aXRjaC5cbkBtaXhpbiBzd2l0Y2gtaW5wdXQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIG9wYWNpdHk6IDA7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGJhY2tncm91bmQgYW5kIHBhZGRsZSBvZiBhIHN3aXRjaC4gQXBwbHkgdGhpcyB0byBhIGA8bGFiZWw+YCB3aXRoaW4gYSBzd2l0Y2guXG5AbWl4aW4gc3dpdGNoLXBhZGRsZSB7XG4gICRzd2l0Y2gtd2lkdGg6ICRzd2l0Y2gtaGVpZ2h0ICogMjtcbiAgJHBhZGRsZS1oZWlnaHQ6ICRzd2l0Y2gtaGVpZ2h0IC0gKCRzd2l0Y2gtcGFkZGxlLW9mZnNldCAqIDIpO1xuICAkcGFkZGxlLXdpZHRoOiAkc3dpdGNoLWhlaWdodCAtICgkc3dpdGNoLXBhZGRsZS1vZmZzZXQgKiAyKTtcbiAgJHBhZGRsZS1hY3RpdmUtb2ZmZXN0OiAkc3dpdGNoLXdpZHRoIC0gJHBhZGRsZS13aWR0aCAtICRzd2l0Y2gtcGFkZGxlLW9mZnNldDtcblxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogJHN3aXRjaC13aWR0aDtcbiAgaGVpZ2h0OiAkc3dpdGNoLWhlaWdodDtcblxuICBib3JkZXItcmFkaXVzOiAkc3dpdGNoLXJhZGl1cztcbiAgYmFja2dyb3VuZDogJHN3aXRjaC1iYWNrZ3JvdW5kO1xuICB0cmFuc2l0aW9uOiAkc3dpdGNoLXBhZGRsZS10cmFuc2l0aW9uO1xuXG4gIC8vIFJlc2V0dGluZyB0aGVzZSA8bGFiZWw+IHByZXNldHMgc28gdHlwZSBzdHlsZXMgY2FzY2FkZSBkb3duXG4gIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xuICBjb2xvcjogaW5oZXJpdDtcblxuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgLy8gTmVlZGVkIHRvIG92ZXJyaWRlIHNwZWNpZmljaXR5XG4gIGlucHV0ICsgJiB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG5cbiAgLy8gVGhlIHBhZGRsZSBpdHNlbGZcbiAgJjo6YWZ0ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6ICRzd2l0Y2gtcGFkZGxlLW9mZnNldDtcbiAgICAjeyRnbG9iYWwtbGVmdH06ICRzd2l0Y2gtcGFkZGxlLW9mZnNldDtcblxuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAkcGFkZGxlLXdpZHRoO1xuICAgIGhlaWdodDogJHBhZGRsZS1oZWlnaHQ7XG5cbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIGJvcmRlci1yYWRpdXM6ICRzd2l0Y2gtcGFkZGxlLXJhZGl1cztcbiAgICBiYWNrZ3JvdW5kOiAkc3dpdGNoLXBhZGRsZS1iYWNrZ3JvdW5kO1xuICAgIHRyYW5zaXRpb246ICRzd2l0Y2gtcGFkZGxlLXRyYW5zaXRpb247XG4gICAgY29udGVudDogJyc7XG4gIH1cblxuICAvLyBDaGFuZ2UgdGhlIHZpc3VhbCBzdHlsZSB3aGVuIHRoZSBzd2l0Y2ggaXMgYWN0aXZlXG4gIGlucHV0OmNoZWNrZWQgfiAmIHtcbiAgICBiYWNrZ3JvdW5kOiAkc3dpdGNoLWJhY2tncm91bmQtYWN0aXZlO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgI3skZ2xvYmFsLWxlZnR9OiAkcGFkZGxlLWFjdGl2ZS1vZmZlc3Q7XG4gICAgfVxuICB9XG5cbiAgLy8gaW5kaWNhdGUgYSBkaXNhYmxlZCBzd2l0Y2hcbiAgaW5wdXQ6ZGlzYWJsZWQgfiAmIHtcbiAgICBjdXJzb3I6ICRzd2l0Y2gtY3Vyc29yLWRpc2FibGVkO1xuICAgIG9wYWNpdHk6ICRzd2l0Y2gtb3BhY2l0eS1kaXNhYmxlZDtcbiAgfVxuXG4gIGlucHV0OmZvY3VzIH4gJiB7XG4gICAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICB9XG59XG5cbi8vLyBBZGRzIGJhc2Ugc3R5bGVzIGZvciBhY3RpdmUvaW5hY3RpdmUgdGV4dCBpbnNpZGUgYSBzd2l0Y2guIEFwcGx5IHRoaXMgdG8gdGV4dCBlbGVtZW50cyBpbnNpZGUgdGhlIHN3aXRjaCBgPGxhYmVsPmAuXG5AbWl4aW4gc3dpdGNoLXRleHQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGFjdGl2ZSBzdGF0ZSB0ZXh0IHdpdGhpbiBhIHN3aXRjaC5cbkBtaXhpbiBzd2l0Y2gtdGV4dC1hY3RpdmUge1xuICAjeyRnbG9iYWwtbGVmdH06IDglO1xuICBkaXNwbGF5OiBub25lO1xuXG4gIGlucHV0OmNoZWNrZWQgKyBsYWJlbCA+ICYge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGluYWN0aXZlIHN0YXRlIHRleHQgd2l0aGluIGEgc3dpdGNoLlxuQG1peGluIHN3aXRjaC10ZXh0LWluYWN0aXZlIHtcbiAgI3skZ2xvYmFsLXJpZ2h0fTogMTUlO1xuXG4gIGlucHV0OmNoZWNrZWQgKyBsYWJlbCA+ICYge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLy8vIENoYW5nZXMgdGhlIHNpemUgb2YgYSBzd2l0Y2ggYnkgbW9kaWZ5aW5nIHRoZSBzaXplIG9mIHRoZSBib2R5IGFuZCBwYWRkbGUuIEFwcGx5IHRoaXMgdG8gYSBzd2l0Y2ggY29udGFpbmVyLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZm9udC1zaXplIFsxcmVtXSAtIEZvbnQgc2l6ZSBvZiBsYWJlbCB0ZXh0IHdpdGhpbiB0aGUgc3dpdGNoLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc3dpdGNoLWhlaWdodCBbMnJlbV0gLSBIZWlnaHQgb2YgdGhlIHN3aXRjaCBib2R5LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcGFkZGxlLW9mZnNldCBbMC4yNXJlbV0gLSBTcGFjaW5nIGJldHdlZW4gdGhlIHN3aXRjaCBwYWRkbGUgYW5kIHRoZSBlZGdlIG9mIHRoZSBzd2l0Y2ggYm9keS5cbkBtaXhpbiBzd2l0Y2gtc2l6ZShcbiAgJGZvbnQtc2l6ZTogMXJlbSxcbiAgJHN3aXRjaC1oZWlnaHQ6IDJyZW0sXG4gICRwYWRkbGUtb2Zmc2V0OiAwLjI1cmVtXG4pIHtcblxuICAkc3dpdGNoLXdpZHRoOiAkc3dpdGNoLWhlaWdodCAqIDI7XG4gICRwYWRkbGUtd2lkdGg6ICRzd2l0Y2gtaGVpZ2h0IC0gKCRwYWRkbGUtb2Zmc2V0ICogMik7XG4gICRwYWRkbGUtaGVpZ2h0OiAkc3dpdGNoLWhlaWdodCAtICgkcGFkZGxlLW9mZnNldCAqIDIpO1xuICAkcGFkZGxlLWFjdGl2ZS1vZmZlc3Q6ICRzd2l0Y2gtd2lkdGggLSAkcGFkZGxlLXdpZHRoIC0gJHBhZGRsZS1vZmZzZXQ7XG5cbiAgaGVpZ2h0OiAkc3dpdGNoLWhlaWdodDtcblxuICAuc3dpdGNoLXBhZGRsZSB7XG4gICAgd2lkdGg6ICRzd2l0Y2gtd2lkdGg7XG4gICAgaGVpZ2h0OiAkc3dpdGNoLWhlaWdodDtcbiAgICBmb250LXNpemU6ICRmb250LXNpemU7XG4gIH1cblxuICAuc3dpdGNoLXBhZGRsZTo6YWZ0ZXIge1xuICAgIHRvcDogJHBhZGRsZS1vZmZzZXQ7XG4gICAgI3skZ2xvYmFsLWxlZnR9OiAkcGFkZGxlLW9mZnNldDtcbiAgICB3aWR0aDogJHBhZGRsZS13aWR0aDtcbiAgICBoZWlnaHQ6ICRwYWRkbGUtaGVpZ2h0O1xuICB9XG5cbiAgaW5wdXQ6Y2hlY2tlZCB+IC5zd2l0Y2gtcGFkZGxlOjphZnRlciB7XG4gICAgI3skZ2xvYmFsLWxlZnR9OiAkcGFkZGxlLWFjdGl2ZS1vZmZlc3Q7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tc3dpdGNoIHtcbiAgLy8gQ29udGFpbmVyIGNsYXNzXG4gIC5zd2l0Y2gge1xuICAgIGhlaWdodDogJHN3aXRjaC1oZWlnaHQ7XG4gICAgQGluY2x1ZGUgc3dpdGNoLWNvbnRhaW5lcjtcbiAgfVxuXG4gIC8vIDxpbnB1dD4gZWxlbWVudFxuICAuc3dpdGNoLWlucHV0IHtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtaW5wdXQ7XG4gIH1cblxuICAvLyA8bGFiZWw+IGVsZW1lbnRcbiAgLnN3aXRjaC1wYWRkbGUge1xuICAgIEBpbmNsdWRlIHN3aXRjaC1wYWRkbGU7XG4gIH1cblxuICAvLyBCYXNlIGxhYmVsIHRleHQgc3R5bGVzXG4gICVzd2l0Y2gtdGV4dCB7XG4gICAgQGluY2x1ZGUgc3dpdGNoLXRleHQ7XG4gIH1cblxuICAvLyBBY3RpdmUgbGFiZWwgdGV4dCBzdHlsZXNcbiAgLnN3aXRjaC1hY3RpdmUge1xuICAgIEBleHRlbmQgJXN3aXRjaC10ZXh0O1xuICAgIEBpbmNsdWRlIHN3aXRjaC10ZXh0LWFjdGl2ZTtcbiAgfVxuXG4gIC8vIEluYWN0aXZlIGxhYmVsIHRleHQgc3R5bGVzXG4gIC5zd2l0Y2gtaW5hY3RpdmUge1xuICAgIEBleHRlbmQgJXN3aXRjaC10ZXh0O1xuICAgIEBpbmNsdWRlIHN3aXRjaC10ZXh0LWluYWN0aXZlO1xuICB9XG5cbiAgLy8gU3dpdGNoIHNpemVzXG4gIC5zd2l0Y2gudGlueSB7XG4gICAgQGluY2x1ZGUgc3dpdGNoLXNpemUocmVtLWNhbGMoMTApLCAkc3dpdGNoLWhlaWdodC10aW55LCAkc3dpdGNoLXBhZGRsZS1vZmZzZXQpO1xuICB9XG5cbiAgLnN3aXRjaC5zbWFsbCB7XG4gICAgQGluY2x1ZGUgc3dpdGNoLXNpemUocmVtLWNhbGMoMTIpLCAkc3dpdGNoLWhlaWdodC1zbWFsbCwgJHN3aXRjaC1wYWRkbGUtb2Zmc2V0KTtcbiAgfVxuXG4gIC5zd2l0Y2gubGFyZ2Uge1xuICAgIEBpbmNsdWRlIHN3aXRjaC1zaXplKHJlbS1jYWxjKDE2KSwgJHN3aXRjaC1oZWlnaHQtbGFyZ2UsICRzd2l0Y2gtcGFkZGxlLW9mZnNldCk7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8gc2Fzcy1saW50OmRpc2FibGUgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuXG4vLy8vXG4vLy8gQGdyb3VwIHRhYmxlXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGNvbG9yIGZvciB0YWJsZSBiYWNrZ3JvdW5kLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFibGUtYmFja2dyb3VuZDogJHdoaXRlICAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgc2NhbGUgZm9yIGRhcmtlbmluZyB0aGUgc3RyaXBlZCB0YWJsZSByb3dzIGFuZCB0aGUgdGFibGUgYm9yZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJHRhYmxlLWNvbG9yLXNjYWxlOiA1JSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgc3R5bGUgZm9yIHRhYmxlIGJvcmRlci5cbi8vLyBAdHlwZSBMaXN0XG4kdGFibGUtYm9yZGVyOiAxcHggc29saWQgc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgZm9yIHRhYmxlLlxuLy8vIEB0eXBlIE51bWJlclxuJHRhYmxlLXBhZGRpbmc6IHJlbS1jYWxjKDggMTAgMTApICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBzY2FsZSBmb3IgZGFya2VuaW5nIHRoZSB0YWJsZSByb3dzIG9uIGhvdmVyLlxuLy8vIEB0eXBlIE51bWJlclxuJHRhYmxlLWhvdmVyLXNjYWxlOiAyJSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2Ygc3RhbmRhcmQgcm93cyBvbiBob3Zlci5cbi8vLyBAdHlwZSBMaXN0XG4kdGFibGUtcm93LWhvdmVyOiBkYXJrZW4oJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1ob3Zlci1zY2FsZSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHN0cmlwZWQgcm93cyBvbiBob3Zlci5cbi8vLyBAdHlwZSBMaXN0XG4kdGFibGUtcm93LXN0cmlwZS1ob3ZlcjogZGFya2VuKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUgKyAkdGFibGUtaG92ZXItc2NhbGUpICFkZWZhdWx0O1xuXG4vLy8gSWYgYHRydWVgLCB0YWJsZXMgYXJlIHN0cmlwZWQgYnkgZGVmYXVsdCBhbmQgYW4gLnVuc3RyaXBlZCBjbGFzcyBpcyBjcmVhdGVkLiBJZiBgZmFsc2VgLCBhIC5zdHJpcGVkIGNsYXNzIGlzIGNyZWF0ZWQuXG4vLy8gQHR5cGUgQm9vbGVhblxuJHRhYmxlLWlzLXN0cmlwZWQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIHN0cmlwZWQgcm93cy5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYmxlLXN0cmlwZWQtYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBzaG93aW5nIHRoZSBzdHJpcGUgb24gcm93cyBvZiB0aGUgdGFibGVzLCBleGNsdWRpbmcgdGhlIGhlYWRlciBhbmQgZm9vdGVyLiBJZiBldmVuLCB0aGUgZXZlbiByb3dzIHdpbGwgaGF2ZSBhIGJhY2tncm91bmQgY29sb3IuIElmIG9kZCwgdGhlIG9kZCByb3dzIHdpbGwgaGF2ZSBhIGJhY2tncm91bmQgY29sb3IuIElmIGVtcHR5LCBvciBhbnkgb3RoZXIgdmFsdWUsIHRoZSB0YWJsZSByb3dzIHdpbGwgaGF2ZSBubyBzdHJpcGluZy5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kdGFibGUtc3RyaXBlOiBldmVuICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgaGVhZGVyIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1oZWFkLWJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUgKiAwLjUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiBoZWFkZXIgcm93cyBvbiBob3Zlci5cbi8vLyBAdHlwZSBMaXN0XG4kdGFibGUtaGVhZC1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtaGVhZC1iYWNrZ3JvdW5kLCAkdGFibGUtaG92ZXItc2NhbGUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgZm9vdGVyIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1mb290LWJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiBmb290ZXIgcm93cyBvbiBob3Zlci5cbi8vLyBAdHlwZSBMaXN0XG4kdGFibGUtZm9vdC1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtZm9vdC1iYWNrZ3JvdW5kLCAkdGFibGUtaG92ZXItc2NhbGUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IGNvbG9yIGZvciBoZWFkZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1oZWFkLWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIGZvb3Rlci5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYmxlLWZvb3QtZm9udC1jb2xvcjogJGJvZHktZm9udC1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdmFsdWUgZm9yIHNob3dpbmcgdGhlIGhlYWRlciB3aGVuIHVzaW5nIHN0YWNrZWQgdGFibGVzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRzaG93LWhlYWRlci1mb3Itc3RhY2tlZDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vLyBCcmVha3BvaW50IGF0IHdoaWNoIHN0YWNrZWQgdGFibGUgc3dpdGNoZXMgZnJvbSBtb2JpbGUgdG8gZGVza3RvcCB2aWV3LlxuLy8vIEB0eXBlIEJyZWFrcG9pbnRcbiR0YWJsZS1zdGFjay1icmVha3BvaW50OiBtZWRpdW0gIWRlZmF1bHQ7XG5cbkBtaXhpbiAtemYtdGFibGUtc3RyaXBlKCRzdHJpcGU6ICR0YWJsZS1zdHJpcGUpIHtcbiAgdHIge1xuICAgIC8vIElmIHN0cmlwZSBpcyBzZXQgdG8gZXZlbiwgZGFya2VuIHRoZSBldmVuIHJvd3MuXG4gICAgQGlmICRzdHJpcGUgPT0gZXZlbiB7XG4gICAgICAmOm50aC1jaGlsZChldmVuKSB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1zdHJpcGVkLWJhY2tncm91bmQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgc3RyaXBlIGlzIHNldCB0byBvZGQsIGRhcmtlbiB0aGUgb2RkIHJvd3MuXG4gICAgQGVsc2UgaWYgJHN0cmlwZSA9PSBvZGQge1xuICAgICAgJjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1zdHJpcGVkLWJhY2tncm91bmQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiAtemYtdGFibGUtdW5zdHJpcGUoKSB7XG4gIHRyIHtcbiAgICBib3JkZXItYm90dG9tOiAwO1xuICAgIGJvcmRlci1ib3R0b206ICR0YWJsZS1ib3JkZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWJhY2tncm91bmQ7XG4gIH1cbn1cblxuQG1peGluIC16Zi10YWJsZS1jaGlsZHJlbi1zdHlsZXMoJHN0cmlwZTogJHRhYmxlLXN0cmlwZSwgJGlzLXN0cmlwZWQ6ICR0YWJsZS1pcy1zdHJpcGVkKSB7XG4gIHRoZWFkLFxuICB0Ym9keSxcbiAgdGZvb3Qge1xuICAgIGJvcmRlcjogJHRhYmxlLWJvcmRlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtYmFja2dyb3VuZDtcbiAgfVxuXG4gIC8vIENhcHRpb25cbiAgY2FwdGlvbiB7XG4gICAgcGFkZGluZzogJHRhYmxlLXBhZGRpbmc7XG4gICAgZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XG4gIH1cblxuICAvLyBUYWJsZSBoZWFkXG4gIHRoZWFkIHtcbiAgICBiYWNrZ3JvdW5kOiAkdGFibGUtaGVhZC1iYWNrZ3JvdW5kO1xuICAgIGNvbG9yOiAkdGFibGUtaGVhZC1mb250LWNvbG9yO1xuICB9XG5cbiAgLy8gVGFibGUgZm9vdFxuICB0Zm9vdCB7XG4gICAgYmFja2dyb3VuZDogJHRhYmxlLWZvb3QtYmFja2dyb3VuZDtcbiAgICBjb2xvcjogJHRhYmxlLWZvb3QtZm9udC1jb2xvcjtcbiAgfVxuXG4gIC8vIFRhYmxlIGhlYWQgYW5kIGZvb3RcbiAgdGhlYWQsXG4gIHRmb290IHtcbiAgICAvLyBSb3dzIHdpdGhpbiBoZWFkIGFuZCBmb290XG4gICAgdHIge1xuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgfVxuXG4gICAgLy8gQ2VsbHMgd2l0aGluIGhlYWQgYW5kIGZvb3RcbiAgICB0aCxcbiAgICB0ZCB7XG4gICAgICBwYWRkaW5nOiAkdGFibGUtcGFkZGluZztcbiAgICAgIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xuICAgICAgdGV4dC1hbGlnbjogI3skZ2xvYmFsLWxlZnR9O1xuICAgIH1cbiAgfVxuXG4gIC8vIFRhYmxlIHJvd3NcbiAgdGJvZHkge1xuICAgIHRoLFxuICAgIHRkIHtcbiAgICAgIHBhZGRpbmc6ICR0YWJsZS1wYWRkaW5nO1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIHRhYmxlcyBhcmUgc3RyaXBlZFxuICBAaWYgJGlzLXN0cmlwZWQgPT0gdHJ1ZSB7XG4gICAgdGJvZHkge1xuICAgICAgQGluY2x1ZGUgLXpmLXRhYmxlLXN0cmlwZSgkc3RyaXBlKTtcbiAgICB9XG5cbiAgICAmLnVuc3RyaXBlZCB7XG4gICAgICB0Ym9keSB7XG4gICAgICAgIEBpbmNsdWRlIC16Zi10YWJsZS11bnN0cmlwZSgpO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtYmFja2dyb3VuZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBJZiB0YWJsZXMgYXJlIG5vdCBzdHJpcGVkXG4gIEBlbHNlIGlmICRpcy1zdHJpcGVkID09IGZhbHNlIHtcbiAgICB0Ym9keSB7XG4gICAgICBAaW5jbHVkZSAtemYtdGFibGUtdW5zdHJpcGUoKTtcbiAgICB9XG5cbiAgICAmLnN0cmlwZWQge1xuICAgICAgdGJvZHkge1xuICAgICAgICBAaW5jbHVkZSAtemYtdGFibGUtc3RyaXBlKCRzdHJpcGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyB0aGUgZ2VuZXJhbCBzdHlsZXMgZm9yIHRhYmxlcy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzdHJpcGUgWyR0YWJsZS1zdHJpcGVdIC0gVXNlcyBrZXl3b3JkcyBldmVuLCBvZGQsIG9yIG5vbmUgdG8gZGFya2VuIHJvd3Mgb2YgdGhlIHRhYmxlLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBldmVuLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJG5lc3QgW2ZhbHNlXSAtIE5lZWRlZCBpZiB5b3Ugb25seSB3YW50IHRvIGFwcGx5IHRoaXMgdG8gYSBzcGVjaWZpYyB0YWJsZS5cbkBtaXhpbiB0YWJsZShcbiAgJHN0cmlwZTogJHRhYmxlLXN0cmlwZSxcbiAgJG5lc3Q6IGZhbHNlXG4pIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xuICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcblxuICBAaWYgJG5lc3Qge1xuICAgIEBpbmNsdWRlIC16Zi10YWJsZS1jaGlsZHJlbi1zdHlsZXMoJHN0cmlwZSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBhdC1yb290IHtcbiAgICAgIEBpbmNsdWRlIC16Zi10YWJsZS1jaGlsZHJlbi1zdHlsZXMoJHN0cmlwZSk7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHRoZSBhYmlsaXR5IHRvIGhvcml6b250YWxseSBzY3JvbGwgdGhlIHRhYmxlIHdoZW4gdGhlIGNvbnRlbnQgb3ZlcmZsb3dzIGhvcml6b250YWxseS5cbkBtaXhpbiB0YWJsZS1zY3JvbGwge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIG92ZXJmbG93LXg6IGF1dG87XG59XG5cbi8vLyBTbGlnaHRseSBkYXJrZW5zIHRoZSB0YWJsZSByb3dzIG9uIGhvdmVyLlxuQG1peGluIHRhYmxlLWhvdmVyIHtcbiAgdGhlYWQgdHIge1xuICAgIC8vRGFya2VucyB0aGUgdGFibGUgaGVhZGVyIHJvd3Mgb24gaG92ZXIuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtaGVhZC1yb3ctaG92ZXI7XG4gICAgfVxuICB9XG5cbiAgdGZvb3QgdHIge1xuICAgIC8vRGFya2VucyB0aGUgdGFibGUgZm9vdGVyIHJvd3Mgb24gaG92ZXIuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtZm9vdC1yb3ctaG92ZXI7XG4gICAgfVxuICB9XG5cbiAgdGJvZHkgdHIge1xuICAgIC8vRGFya2VucyB0aGUgbm9uLXN0cmlwZWQgdGFibGUgcm93cyBvbiBob3Zlci5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1yb3ctaG92ZXI7XG4gICAgfVxuICB9XG5cbiAgQGlmICR0YWJsZS1pcy1zdHJpcGVkID09IHRydWUge1xuICAgIC8vIERhcmtlbnMgdGhlIGV2ZW4gc3RyaXBlZCB0YWJsZSByb3dzLlxuICAgIEBpZigkdGFibGUtc3RyaXBlID09IGV2ZW4pIHtcbiAgICAgICY6bm90KC51bnN0cmlwZWQpIHRyOm50aC1vZi10eXBlKGV2ZW4pOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLXJvdy1zdHJpcGUtaG92ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGFya2VucyB0aGUgb2RkIHN0cmlwZWQgdGFibGUgcm93cy5cbiAgICBAZWxzZSBpZigkdGFibGUtc3RyaXBlID09IG9kZCkge1xuICAgICAgJjpub3QoLnVuc3RyaXBlZCkgdHI6bnRoLW9mLXR5cGUob2RkKTpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1yb3ctc3RyaXBlLWhvdmVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmICR0YWJsZS1pcy1zdHJpcGVkID09IGZhbHNlIHtcbiAgICAvLyBEYXJrZW5zIHRoZSBldmVuIHN0cmlwZWQgdGFibGUgcm93cy5cbiAgICBAaWYoJHRhYmxlLXN0cmlwZSA9PSBldmVuKSB7XG4gICAgICAmLnN0cmlwZWQgdHI6bnRoLW9mLXR5cGUoZXZlbik6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtcm93LXN0cmlwZS1ob3ZlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEYXJrZW5zIHRoZSBvZGQgc3RyaXBlZCB0YWJsZSByb3dzLlxuICAgIEBlbHNlIGlmKCR0YWJsZS1zdHJpcGUgPT0gb2RkKSB7XG4gICAgICAmLnN0cmlwZWQgdHI6bnRoLW9mLXR5cGUob2RkKTpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1yb3ctc3RyaXBlLWhvdmVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgc3RhY2tlZCB0YWJsZS4gVXNlZnVsIGZvciBzbWFsbC1zY3JlZW4gbGF5b3V0cy5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRoZWFkZXIgWyRzaG93LWhlYWRlci1mb3Itc3RhY2tlZF0gLSBTaG93IHRoZSBmaXJzdCB0aCBvZiBoZWFkZXIgd2hlbiBzdGFja2VkLlxuQG1peGluIHRhYmxlLXN0YWNrKCRoZWFkZXI6ICRzaG93LWhlYWRlci1mb3Itc3RhY2tlZCkge1xuICBAaWYgJGhlYWRlciB7XG4gICAgdGhlYWQge1xuICAgICAgdGgge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHRoZWFkIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgdGZvb3Qge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICB0cixcbiAgdGgsXG4gIHRkIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIHRkIHtcbiAgICBib3JkZXItdG9wOiAwO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXRhYmxlKCRuZXN0OiBmYWxzZSkge1xuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgdGFibGUoJG5lc3Q6ICRuZXN0KTtcbiAgfVxuXG4gIHRhYmxlLnN0YWNrIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZS1zdGFjay1icmVha3BvaW50IGRvd24pIHtcbiAgICAgIEBpbmNsdWRlIHRhYmxlLXN0YWNrO1xuICAgIH1cbiAgfVxuXG4gIHRhYmxlLnNjcm9sbCB7XG4gICAgQGluY2x1ZGUgdGFibGUtc2Nyb2xsO1xuICB9XG5cbiAgdGFibGUuaG92ZXIge1xuICAgIEBpbmNsdWRlIHRhYmxlLWhvdmVyO1xuICB9XG5cbiAgLnRhYmxlLXNjcm9sbCB7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcblxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYmFkZ2Vcbi8vLy9cblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3IgYmFkZ2VzLlxuLy8vIEB0eXBlIENvbG9yXG4kYmFkZ2UtYmFja2dyb3VuZDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgY29sb3IgZm9yIGJhZGdlcy5cbi8vLyBAdHlwZSBDb2xvclxuJGJhZGdlLWNvbG9yOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBBbHRlcm5hdGUgdGV4dCBjb2xvciBmb3IgYmFkZ2VzLlxuLy8vIEB0eXBlIENvbG9yXG4kYmFkZ2UtY29sb3ItYWx0OiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvcmluZyBjbGFzc2VzLiBBIG1hcCBvZiBjbGFzc2VzIHRvIG91dHB1dCBpbiB5b3VyIENTUywgbGlrZSBgLnNlY29uZGFyeWAsIGAuc3VjY2Vzc2AsIGFuZCBzbyBvbi5cbi8vLyBAdHlwZSBNYXBcbiRiYWRnZS1wYWxldHRlOiAkZm91bmRhdGlvbi1wYWxldHRlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGluc2lkZSBiYWRnZXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYmFkZ2UtcGFkZGluZzogMC4zZW0gIWRlZmF1bHQ7XG5cbi8vLyBNaW5pbXVtIHdpZHRoIG9mIGEgYmFkZ2UuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYmFkZ2UtbWlud2lkdGg6IDIuMWVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIGJhZGdlcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRiYWRnZS1mb250LXNpemU6IDAuNnJlbSAhZGVmYXVsdDtcblxuLy8vIEdlbmVyYXRlcyB0aGUgYmFzZSBzdHlsZXMgZm9yIGEgYmFkZ2UuXG5AbWl4aW4gYmFkZ2Uge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1pbi13aWR0aDogJGJhZGdlLW1pbndpZHRoO1xuICBwYWRkaW5nOiAkYmFkZ2UtcGFkZGluZztcblxuICBib3JkZXItcmFkaXVzOiA1MCU7XG5cbiAgZm9udC1zaXplOiAkYmFkZ2UtZm9udC1zaXplO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWJhZGdlIHtcbiAgLmJhZGdlIHtcbiAgICBAaW5jbHVkZSBiYWRnZTtcblxuICAgIGJhY2tncm91bmQ6ICRiYWRnZS1iYWNrZ3JvdW5kO1xuICAgIGNvbG9yOiAkYmFkZ2UtY29sb3I7XG5cbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRiYWRnZS1wYWxldHRlIHtcbiAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3I7XG4gICAgICAgIGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRjb2xvciwgKCRiYWRnZS1jb2xvciwgJGJhZGdlLWNvbG9yLWFsdCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGJyZWFkY3J1bWJzXG4vLy8vXG5cbi8vLyBNYXJnaW4gYXJvdW5kIGEgYnJlYWRjcnVtYnMgY29udGFpbmVyLlxuLy8vIEB0eXBlIE51bWJlclxuJGJyZWFkY3J1bWJzLW1hcmdpbjogMCAwICRnbG9iYWwtbWFyZ2luIDAgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHNpemUgb2YgYnJlYWRjcnVtYiBsaW5rcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRicmVhZGNydW1icy1pdGVtLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTEpICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgYnJlYWRjcnVtYiBsaW5rcy5cbi8vLyBAdHlwZSBDb2xvclxuJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3I6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgdGhlIGFjdGl2ZSBicmVhZGNydW1iIGxpbmsuXG4vLy8gQHR5cGUgQ29sb3JcbiRicmVhZGNydW1icy1pdGVtLWNvbG9yLWN1cnJlbnQ6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIE9wYWNpdHkgb2YgZGlzYWJsZWQgYnJlYWRjcnVtYiBsaW5rcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRicmVhZGNydW1icy1pdGVtLWNvbG9yLWRpc2FibGVkOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBNYXJnaW4gYmV0d2VlbiBicmVhZGNydW1iIGl0ZW1zLlxuLy8vIEB0eXBlIE51bWJlclxuJGJyZWFkY3J1bWJzLWl0ZW0tbWFyZ2luOiAwLjc1cmVtICFkZWZhdWx0O1xuXG4vLy8gSWYgYHRydWVgLCBtYWtlcyBicmVhZGNydW1iIGxpbmtzIHVwcGVyY2FzZS5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYnJlYWRjcnVtYnMtaXRlbS11cHBlcmNhc2U6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIGFkZHMgYSBzZXBlcmF0b3IgYmV0d2VlbiBicmVhZGNydW1iIGxpbmtzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvcjogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gSWYgaXQgZXhpc3RzICRicmVhZGNydW1icy1pdGVtLXNsYXNoIGlzIHVzZWQgdG8gYnVpbGQgJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLiBTZWUgdGhlIGRvY3VtZW50YXRpb24uXG5AaWYgdmFyaWFibGUtZXhpc3RzKGJyZWFkY3J1bWJzLWl0ZW0tc2xhc2gpIHtcbiAgJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yOiAkYnJlYWRjcnVtYnMtaXRlbS1zbGFzaDtcbn1cblxuLy8vIFVzZWQgY2hhcmFjdGVyIGZvciB0aGUgYnJlYWRjcnVtYiBzZXBhcmF0b3IuXG4vLy8gQHR5cGUgQ29udGVudFxuJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWl0ZW06ICcvJyAhZGVmYXVsdDtcblxuLy8vIFVzZWQgY2hhcmFjdGVyIGZvciB0aGUgYnJlYWRjcnVtYiBzZXBhcmF0b3IgaW4gcnRsIG1vZGUuXG4vLy8gQHR5cGUgQ29udGVudFxuJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWl0ZW0tcnRsOiAnXFxcXCcgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiBicmVhZGNydW1iIGl0ZW0uXG4vLy8gQHR5cGUgQ29sb3JcbiRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci1jb2xvcjogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLyBJZiBpdCBleGlzdHMgJGJyZWFkY3J1bWJzLWl0ZW0tc2xhc2gtY29sb3IgaXMgdXNlZCB0byBidWlsZCAkYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItY29sb3IuIFNlZSB0aGUgZG9jdW1lbnRhdGlvbi5cbkBpZiB2YXJpYWJsZS1leGlzdHMoYnJlYWRjcnVtYnMtaXRlbS1zbGFzaC1jb2xvcikge1xuICAkYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItY29sb3I6ICRicmVhZGNydW1icy1pdGVtLXNsYXNoLWNvbG9yO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgYnJlYWRjcnVtYnMgY29udGFpbmVyLCBhbG9uZyB3aXRoIHRoZSBzdHlsZXMgZm9yIHRoZSBgPGxpPmAgYW5kIGA8YT5gIGVsZW1lbnRzIGluc2lkZSBvZiBpdC5cbkBtaXhpbiBicmVhZGNydW1icy1jb250YWluZXIge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgbWFyZ2luOiAkYnJlYWRjcnVtYnMtbWFyZ2luO1xuICBsaXN0LXN0eWxlOiBub25lO1xuXG4gIC8vIEl0ZW0gd3JhcHBlclxuICBsaSB7XG4gICAgZmxvYXQ6ICN7JGdsb2JhbC1sZWZ0fTtcblxuICAgIGZvbnQtc2l6ZTogJGJyZWFkY3J1bWJzLWl0ZW0tZm9udC1zaXplO1xuICAgIGNvbG9yOiAkYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1jdXJyZW50O1xuICAgIGN1cnNvcjogZGVmYXVsdDtcblxuICAgIEBpZiAkYnJlYWRjcnVtYnMtaXRlbS11cHBlcmNhc2Uge1xuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICB9XG5cbiAgICBAaWYgJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yIHtcbiAgICAgIC8vIE5lZWQgdG8gZXNjYXBlIHRoZSBiYWNrc2xhc2hcbiAgICAgICRzZXBhcmF0b3I6IGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gJ2x0cicsICRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci1pdGVtLCAkYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItaXRlbS1ydGwpO1xuXG4gICAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgIG1hcmdpbjogMCAkYnJlYWRjcnVtYnMtaXRlbS1tYXJnaW47XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICBjb250ZW50OiAkc2VwYXJhdG9yO1xuICAgICAgICAgIGNvbG9yOiAkYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItY29sb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRicmVhZGNydW1icy1pdGVtLW1hcmdpbjtcbiAgICB9XG4gIH1cblxuICAvLyBQYWdlIGxpbmtzXG4gIGEge1xuICAgIGNvbG9yOiAkYnJlYWRjcnVtYnMtaXRlbS1jb2xvcjtcblxuICAgICY6aG92ZXIge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWJyZWFkY3J1bWJzIHtcbiAgLmJyZWFkY3J1bWJzIHtcbiAgICBAaW5jbHVkZSBicmVhZGNydW1icy1jb250YWluZXI7XG5cbiAgICAuZGlzYWJsZWQge1xuICAgICAgY29sb3I6ICRicmVhZGNydW1icy1pdGVtLWNvbG9yLWRpc2FibGVkO1xuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBjYWxsb3V0XG4vLy8vXG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IuXG4vLy8gQHR5cGUgQ29sb3JcbiRjYWxsb3V0LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZmFkZSB2YWx1ZSBmb3IgY2FsbG91dCBiYWNrZ3JvdW5kcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRjYWxsb3V0LWJhY2tncm91bmQtZmFkZTogODUlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgc3R5bGUgZm9yIGNhbGxvdXRzLlxuLy8vIEB0eXBlIExpc3RcbiRjYWxsb3V0LWJvcmRlcjogMXB4IHNvbGlkIHJnYmEoJGJsYWNrLCAwLjI1KSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm90dG9tIG1hcmdpbiBmb3IgY2FsbG91dHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kY2FsbG91dC1tYXJnaW46IDAgMCAxcmVtIDAgIWRlZmF1bHQ7XG5cbi8vLyBTaXplcyBmb3IgQ2FsbG91dCBwYWRkaW5ncy5cbi8vLyBAdHlwZSBNYXBcbiRjYWxsb3V0LXNpemVzOiAoXG4gIHNtYWxsOiAwLjVyZW0sXG4gIGRlZmF1bHQ6IDFyZW0sXG4gIGxhcmdlOiAzcmVtLFxuKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3IgY2FsbG91dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRjYWxsb3V0LWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIGNhbGxvdXRzLCBpZiB0aGUgY2FsbG91dCBoYXMgYSBkYXJrIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiRjYWxsb3V0LWZvbnQtY29sb3ItYWx0OiAkYm9keS1iYWNrZ3JvdW5kICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgcmFkaXVzIGZvciBjYWxsb3V0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGNhbGxvdXQtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIEFtb3VudCB0byB0aW50IGxpbmtzIHVzZWQgd2l0aGluIGNvbG9yZWQgcGFuZWxzLiBTZXQgdG8gYGZhbHNlYCB0byBkaXNhYmxlIHRoaXMgZmVhdHVyZS5cbi8vLyBAdHlwZSBOdW1iZXIgfCBCb29sZWFuXG4kY2FsbG91dC1saW5rLXRpbnQ6IDMwJSAhZGVmYXVsdDtcblxuLy8vIEFkZHMgYmFzaWMgc3R5bGVzIGZvciBhIGNhbGxvdXQsIGluY2x1ZGluZyBwYWRkaW5nIGFuZCBtYXJnaW4uXG5AbWl4aW4gY2FsbG91dC1iYXNlKCkge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbjogJGNhbGxvdXQtbWFyZ2luO1xuICBwYWRkaW5nOiBtYXAtZ2V0KCRjYWxsb3V0LXNpemVzLCBkZWZhdWx0KTtcblxuICBib3JkZXI6ICRjYWxsb3V0LWJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogJGNhbGxvdXQtcmFkaXVzO1xuXG4gIC8vIFJlc3BlY3QgdGhlIHBhZGRpbmcsIGZvb2wuXG4gID4gOmZpcnN0LWNoaWxkIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG5cbiAgPiA6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG4vLy8gR2VuZXJhdGUgcXVpY2sgc3R5bGVzIGZvciBhIGNhbGxvdXQgdXNpbmcgYSBzaW5nbGUgY29sb3IgYXMgYSBiYXNlbGluZS5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRjYWxsb3V0LWJhY2tncm91bmRdIC0gQ29sb3IgdG8gdXNlLlxuQG1peGluIGNhbGxvdXQtc3R5bGUoJGNvbG9yOiAkY2FsbG91dC1iYWNrZ3JvdW5kKSB7XG4gICRiYWNrZ3JvdW5kOiBzY2FsZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICRjYWxsb3V0LWJhY2tncm91bmQtZmFkZSk7XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gIGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRiYWNrZ3JvdW5kLCAoJGNhbGxvdXQtZm9udC1jb2xvciwgJGNhbGxvdXQtZm9udC1jb2xvci1hbHQpKTtcbn1cblxuQG1peGluIGNhbGxvdXQtc2l6ZSgkcGFkZGluZykge1xuICBwYWRkaW5nLXRvcDogJHBhZGRpbmc7XG4gIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmc7XG4gIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG59XG5cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGNhbGxvdXQuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskY2FsbG91dC1iYWNrZ3JvdW5kXSAtIENvbG9yIHRvIHVzZS5cbkBtaXhpbiBjYWxsb3V0KCRjb2xvcjogJGNhbGxvdXQtYmFja2dyb3VuZCkge1xuICBAaW5jbHVkZSBjYWxsb3V0LWJhc2U7XG4gIEBpbmNsdWRlIGNhbGxvdXQtc3R5bGUoJGNvbG9yKTtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tY2FsbG91dCB7XG4gIC5jYWxsb3V0IHtcbiAgICBAaW5jbHVkZSBjYWxsb3V0O1xuXG4gICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkZm91bmRhdGlvbi1wYWxldHRlIHtcbiAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICBAaW5jbHVkZSBjYWxsb3V0LXN0eWxlKCRjb2xvcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGVhY2ggJHNpemUsICRwYWRkaW5nIGluIG1hcC1yZW1vdmUoJGNhbGxvdXQtc2l6ZXMsIGRlZmF1bHQpIHtcbiAgICAgICYuI3skc2l6ZX0ge1xuICAgICAgICBAaW5jbHVkZSBjYWxsb3V0LXNpemUoJHBhZGRpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGNhcmRcbi8vLy9cblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvci5cbi8vLyBAdHlwZSBDb2xvclxuJGNhcmQtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IGNvbG9yIGZvciBjYXJkcy5cbi8vLyBAdHlwZSBDb2xvclxuJGNhcmQtZm9udC1jb2xvcjogJGJvZHktZm9udC1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZC5cbi8vLyBAdHlwZSBDb2xvclxuJGNhcmQtZGl2aWRlci1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm9yZGVyIHN0eWxlLlxuLy8vIEB0eXBlIExpc3RcbiRjYXJkLWJvcmRlcjogMXB4IHNvbGlkICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjYXJkIHNoYWRvdy5cbi8vLyBAdHlwZSBMaXN0XG4kY2FyZC1zaGFkb3c6IG5vbmUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciByYWRpdXMuXG4vLy8gQHR5cGUgTGlzdFxuJGNhcmQtYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcuXG4vLy8gQHR5cGUgTnVtYmVyXG4kY2FyZC1wYWRkaW5nOiAkZ2xvYmFsLXBhZGRpbmcgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvdHRvbSBtYXJnaW4uXG4vLy8gQHR5cGUgbnVtYmVyXG4kY2FyZC1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGNhcmQgY29udGFpbmVyLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kIC0gQmFja2dyb3VuZCBjb2xvciBvZiB0aGUgY2FyZC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBmb250IGNvbG9yIG9mIHRoZSBjYXJkLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbWFyZ2luIC0gQm90dG9tIG1hcmdpbiBvZiB0aGUgY2FyZC5cbi8vLyBAcGFyYW0ge0xpc3R9ICRib3JkZXIgLSBCb3JkZXIgYXJvdW5kIHRoZSBjYXJkLlxuLy8vIEBwYXJhbSB7TGlzdH0gJHJhZGl1cyAtIGJvcmRlciByYWRpdXMgb2YgdGhlIGNhcmQuXG4vLy8gQHBhcmFtIHtMaXN0fSAkc2hhZG93IC0gYm94IHNoYWRvdyBvZiB0aGUgY2FyZC5cbkBtaXhpbiBjYXJkLWNvbnRhaW5lcihcbiAgJGJhY2tncm91bmQ6ICRjYXJkLWJhY2tncm91bmQsXG4gICRjb2xvcjogJGNhcmQtZm9udC1jb2xvcixcbiAgJG1hcmdpbjogJGNhcmQtbWFyZ2luLWJvdHRvbSxcbiAgJGJvcmRlcjogJGNhcmQtYm9yZGVyLFxuICAkcmFkaXVzOiAkY2FyZC1ib3JkZXItcmFkaXVzLFxuICAkc2hhZG93OiAkY2FyZC1zaGFkb3dcbikge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZmxleC1ncm93OiAxO1xuICB9XG5cbiAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbjtcblxuICBib3JkZXI6ICRib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG5cbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gIGJveC1zaGFkb3c6ICRzaGFkb3c7XG5cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY29sb3I6ICRjb2xvcjtcblxuICAmID4gOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGNhcmQgZGl2aWRlci5cbkBtaXhpbiBjYXJkLWRpdmlkZXIoXG4gICRiYWNrZ3JvdW5kOiAkY2FyZC1kaXZpZGVyLWJhY2tncm91bmQsXG4gICRwYWRkaW5nOiAkY2FyZC1wYWRkaW5nXG4pIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgfVxuXG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcblxuICAmID4gOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGNhcmQgc2VjdGlvbi5cbkBtaXhpbiBjYXJkLXNlY3Rpb24oXG4gICRwYWRkaW5nOiAkY2FyZC1wYWRkaW5nXG4pIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZmxleDogMSAwIGF1dG87XG4gIH1cblxuICBwYWRkaW5nOiAkcGFkZGluZztcblxuICAmID4gOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tY2FyZCB7XG4gIC5jYXJkIHtcbiAgICBAaW5jbHVkZSBjYXJkLWNvbnRhaW5lcjtcbiAgfVxuXG4gIC5jYXJkLWRpdmlkZXIge1xuICAgIEBpbmNsdWRlIGNhcmQtZGl2aWRlcjtcbiAgfVxuXG4gIC5jYXJkLXNlY3Rpb24ge1xuICAgIEBpbmNsdWRlIGNhcmQtc2VjdGlvbjtcbiAgfVxuXG4gIC8vIEZvciBJRSAxMSAtIEZsZXhidWdcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3BoaWxpcHdhbHRvbi9mbGV4YnVncy9pc3N1ZXMvNzVcbiAgLmNhcmQtaW1hZ2Uge1xuICAgIG1pbi1oZWlnaHQ6IDFweDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGRyb3Bkb3duXG4vLy8vXG5cbi8vLyBQYWRkaW5nIGZvciBkcm9wZG93biBwYW5lcy5cbi8vLyBAdHlwZSBMaXN0XG4kZHJvcGRvd24tcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgZm9yIGRyb3Bkb3duIHBhbmVzLlxuLy8vIEB0eXBlIENvbG9yXG4kZHJvcGRvd24tYmFja2dyb3VuZDogJGJvZHktYmFja2dyb3VuZCAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBmb3IgZHJvcGRvd24gcGFuZXMuXG4vLy8gQHR5cGUgTGlzdFxuJGRyb3Bkb3duLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBmb3IgZHJvcGRvd24gcGFuZXMuXG4vLy8gQHR5cGUgTGlzdFxuJGRyb3Bkb3duLWZvbnQtc2l6ZTogMXJlbSAhZGVmYXVsdDtcblxuLy8vIFdpZHRoIGZvciBkcm9wZG93biBwYW5lcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkcm9wZG93bi13aWR0aDogMzAwcHggIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgcmFkaXVzIGRyb3Bkb3duIHBhbmVzLlxuLy8vIEB0eXBlIE51bWJlclxuJGRyb3Bkb3duLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBTaXplcyBmb3IgZHJvcGRvd24gcGFuZXMuIEVhY2ggc2l6ZSBpcyBhIENTUyBjbGFzcyB5b3UgY2FuIGFwcGx5LlxuLy8vIEB0eXBlIE1hcFxuJGRyb3Bkb3duLXNpemVzOiAoXG4gIHRpbnk6IDEwMHB4LFxuICBzbWFsbDogMjAwcHgsXG4gIGxhcmdlOiA0MDBweCxcbikgIWRlZmF1bHQ7XG5cbi8vLyBBcHBsaWVzIHN0eWxlcyBmb3IgYSBiYXNpYyBkcm9wZG93bi5cbkBtaXhpbiBkcm9wZG93bi1jb250YWluZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDEwO1xuXG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgd2lkdGg6ICRkcm9wZG93bi13aWR0aDtcbiAgcGFkZGluZzogJGRyb3Bkb3duLXBhZGRpbmc7XG5cbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICBib3JkZXI6ICRkcm9wZG93bi1ib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6ICRkcm9wZG93bi1yYWRpdXM7XG4gIGJhY2tncm91bmQtY29sb3I6ICRkcm9wZG93bi1iYWNrZ3JvdW5kO1xuXG4gIGZvbnQtc2l6ZTogJGRyb3Bkb3duLWZvbnQtc2l6ZTtcblxuXG4gIC8vIEFsbG93IGFuIGludGVybWl0dGVudCBzdGF0ZSB0byBkbyBwb3NpdGlvbmluZyBiZWZvcmUgbWFraW5nIHZpc2libGUuXG4gICYuaXMtb3BlbmluZyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICAmLmlzLW9wZW4ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tZHJvcGRvd24ge1xuICAuZHJvcGRvd24tcGFuZSB7XG4gICAgQGluY2x1ZGUgZHJvcGRvd24tY29udGFpbmVyO1xuICB9XG5cbiAgQGVhY2ggJG5hbWUsICRzaXplIGluICRkcm9wZG93bi1zaXplcyB7XG4gICAgLmRyb3Bkb3duLXBhbmUge1xuICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgIHdpZHRoOiAkc2l6ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwYWdpbmF0aW9uXG4vLy8vXG5cbi8vLyBGb250IHNpemUgb2YgcGFnaW5hdGlvbiBpdGVtcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwYWdpbmF0aW9uLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3R0b20gbWFyZ2luIG9mIHRoZSBwYWdpbmF0aW9uIG9iamVjdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwYWdpbmF0aW9uLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBjb2xvciBvZiBwYWdpbmF0aW9uIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kcGFnaW5hdGlvbi1pdGVtLWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGluc2lkZSBvZiBwYWdpbmF0aW9uIGl0ZW1zLlxuLy8vIEB0eXBlIE51bWJlclxuJHBhZ2luYXRpb24taXRlbS1wYWRkaW5nOiByZW0tY2FsYygzIDEwKSAhZGVmYXVsdDtcblxuLy8vIFJpZ2h0IG1hcmdpbiB0byBzZXBhcmF0ZSBwYWdpbmF0aW9uIGl0ZW1zLlxuLy8vIEB0eXBlIE51bWJlclxuJHBhZ2luYXRpb24taXRlbS1zcGFjaW5nOiByZW0tY2FsYygxKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcmFkaXVzIGZvciBwYWdpbmF0aW9uIGl0ZW1zLlxuLy8vIEB0eXBlIE51bWJlclxuJHBhZ2luYXRpb24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgcGFnaW5hdGlvbiBpdGVtcyBvbiBob3Zlci5cbi8vLyBAdHlwZSBDb2xvclxuJHBhZ2luYXRpb24taXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgcGFnaW5hdGlvbiBpdGVtIGZvciB0aGUgY3VycmVudCBwYWdlLlxuLy8vIEB0eXBlIENvbG9yXG4kcGFnaW5hdGlvbi1pdGVtLWJhY2tncm91bmQtY3VycmVudDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIG9mIHRoZSBwYWdpbmF0aW9uIGl0ZW0gZm9yIHRoZSBjdXJyZW50IHBhZ2UuXG4vLy8gQHR5cGUgQ29sb3JcbiRwYWdpbmF0aW9uLWl0ZW0tY29sb3ItY3VycmVudDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBjb2xvciBvZiBhIGRpc2FibGVkIHBhZ2luYXRpb24gaXRlbS5cbi8vLyBAdHlwZSBDb2xvclxuJHBhZ2luYXRpb24taXRlbS1jb2xvci1kaXNhYmxlZDogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgdGhlIGVsbGlwc2lzIGluIGEgcGFnaW5hdGlvbiBtZW51LlxuLy8vIEB0eXBlIENvbG9yXG4kcGFnaW5hdGlvbi1lbGxpcHNpcy1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gSWYgYGZhbHNlYCwgZG9uJ3QgZGlzcGxheSBwYWdlIG51bWJlciBsaW5rcyBvbiBtb2JpbGUsIG9ubHkgbmV4dC9wcmV2aW91cyBsaW5rc1xuLy8vIGFuZCBvcHRpb25hbGx5IGN1cnJlbnQgcGFnZSBudW1iZXIuXG4vLy8gQHR5cGUgQm9vbGVhblxuJHBhZ2luYXRpb24tbW9iaWxlLWl0ZW1zOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgZGlzcGxheSB0aGUgY3VycmVudCBwYWdlIG51bWJlciBvbiBtb2JpbGUgZXZlbiBpZiBgJHBhZ2luYXRpb24tbW9iaWxlLWl0ZW1zYCBpcyBzZXQgdG8gYGZhbHNlYC5cbi8vLyBUaGlzIHBhcmFtZXRlciB3aWxsIG9ubHkgb3ZlcnJpZGUgdGhlIHZpc2liaWxpdHkgc2V0dGluZyBvZiB0aGUgY3VycmVudCBpdGVtIGZvciBgJHBhZ2luYXRpb24tbW9iaWxlLWl0ZW1zOiBmYWxzZTtgLFxuLy8vIGl0IHdpbGwgbm90IGFmZmVjdCB0aGUgY3VycmVudCBwYWdlIG51bWJlciB2aXNpYmlsaXR5IHdoZW4gYCRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtc2AgaXMgc2V0IHRvIGB0cnVlYC5cbi8vLyBAdHlwZSBCb29sZWFuXG4kcGFnaW5hdGlvbi1tb2JpbGUtY3VycmVudC1pdGVtOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgYXJyb3dzIGFyZSBhZGRlZCB0byB0aGUgbmV4dCBhbmQgcHJldmlvdXMgbGlua3Mgb2YgcGFnaW5hdGlvbi5cbi8vLyBAdHlwZSBCb29sZWFuXG4kcGFnaW5hdGlvbi1hcnJvd3M6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBDb250ZW50IGZvciB0aGUgcHJldmlvdXMgYXJyb3cgd2hlbiBgJHBhZ2luYXRpb24tYXJyb3dzYCBpcyBgdHJ1ZWBcbi8vLyBAdHlwZSBTdHJpbmdcbiRwYWdpbmF0aW9uLWFycm93LXByZXZpb3VzOiAnXFwwMEFCJyAhZGVmYXVsdDtcblxuLy8vIENvbnRlbnQgZm9yIHRoZSBuZXh0IGFycm93IHdoZW4gYCRwYWdpbmF0aW9uLWFycm93c2AgaXMgYHRydWVgXG4vLy8gQHR5cGUgU3RyaW5nXG4kcGFnaW5hdGlvbi1hcnJvdy1uZXh0OiAnXFwwMEJCJyAhZGVmYXVsdDtcblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHBhZ2luYXRpb24gY29udGFpbmVyLiBBcHBseSB0aGlzIHRvIGEgYDx1bD5gLlxuQG1peGluIHBhZ2luYXRpb24tY29udGFpbmVyIChcbiAgJG1hcmdpbi1ib3R0b206ICRwYWdpbmF0aW9uLW1hcmdpbi1ib3R0b20sXG4gICRmb250LXNpemU6ICRwYWdpbmF0aW9uLWZvbnQtc2l6ZSxcbiAgJHNwYWNpbmc6ICRwYWdpbmF0aW9uLWl0ZW0tc3BhY2luZyxcbiAgJHJhZGl1czogJHBhZ2luYXRpb24tcmFkaXVzLFxuICAkY29sb3I6ICRwYWdpbmF0aW9uLWl0ZW0tY29sb3IsXG4gICRwYWRkaW5nOiAkcGFnaW5hdGlvbi1pdGVtLXBhZGRpbmcsXG4gICRiYWNrZ3JvdW5kLWhvdmVyOiAkcGFnaW5hdGlvbi1pdGVtLWJhY2tncm91bmQtaG92ZXJcbikge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogMDtcbiAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi1ib3R0b207XG5cbiAgLy8gTGlzdCBpdGVtXG4gIGxpIHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJHNwYWNpbmc7XG4gICAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcbiAgICBmb250LXNpemU6ICRmb250LXNpemU7XG5cbiAgICBAaWYgJHBhZ2luYXRpb24tbW9iaWxlLWl0ZW1zIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogbm9uZTtcblxuICAgICAgJjpsYXN0LWNoaWxkLFxuICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIH1cblxuICAgICAgQGlmICRwYWdpbmF0aW9uLW1vYmlsZS1jdXJyZW50LWl0ZW0ge1xuICAgICAgICAmLmN1cnJlbnQge1xuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUGFnZSBsaW5rc1xuICBhLFxuICBidXR0b24ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6ICRwYWRkaW5nO1xuICAgIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG4gICAgY29sb3I6ICRjb2xvcjtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJGJhY2tncm91bmQtaG92ZXI7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGN1cnJlbnQgcGFnaW5hdGlvbiBpdGVtLiBBcHBseSB0aGlzIHRvIGFuIGA8YT5gLlxuQG1peGluIHBhZ2luYXRpb24taXRlbS1jdXJyZW50IChcbiAgJHBhZGRpbmc6ICRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZyxcbiAgJGJhY2tncm91bmQtY3VycmVudDogJHBhZ2luYXRpb24taXRlbS1iYWNrZ3JvdW5kLWN1cnJlbnQsXG4gICRjb2xvci1jdXJyZW50OiAkcGFnaW5hdGlvbi1pdGVtLWNvbG9yLWN1cnJlbnRcbikge1xuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmQtY3VycmVudDtcbiAgY29sb3I6ICRjb2xvci1jdXJyZW50O1xuICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBkaXNhYmxlZCBwYWdpbmF0aW9uIGl0ZW0uIEFwcGx5IHRoaXMgdG8gYW4gYDxhPmAuXG5AbWl4aW4gcGFnaW5hdGlvbi1pdGVtLWRpc2FibGVkIChcbiAgJHBhZGRpbmc6ICRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZyxcbiAgJGNvbG9yOiAkcGFnaW5hdGlvbi1pdGVtLWNvbG9yLWRpc2FibGVkXG4pIHtcbiAgcGFkZGluZzogJHBhZGRpbmc7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhbiBlbGxpcHNpcyBmb3IgdXNlIGluIGEgcGFnaW5hdGlvbiBsaXN0LlxuQG1peGluIHBhZ2luYXRpb24tZWxsaXBzaXMgKFxuICAkcGFkZGluZzogJHBhZ2luYXRpb24taXRlbS1wYWRkaW5nLFxuICAkY29sb3I6ICRwYWdpbmF0aW9uLWVsbGlwc2lzLWNvbG9yXG4pIHtcbiAgcGFkZGluZzogJHBhZGRpbmc7XG4gIGNvbnRlbnQ6ICdcXDIwMjYnO1xuICBjb2xvcjogJGNvbG9yO1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wYWdpbmF0aW9uIHtcbiAgLnBhZ2luYXRpb24ge1xuICAgIEBpbmNsdWRlIHBhZ2luYXRpb24tY29udGFpbmVyO1xuXG4gICAgLmN1cnJlbnQge1xuICAgICAgQGluY2x1ZGUgcGFnaW5hdGlvbi1pdGVtLWN1cnJlbnQ7XG4gICAgfVxuXG4gICAgLmRpc2FibGVkIHtcbiAgICAgIEBpbmNsdWRlIHBhZ2luYXRpb24taXRlbS1kaXNhYmxlZDtcbiAgICB9XG5cbiAgICAuZWxsaXBzaXM6OmFmdGVyIHtcbiAgICAgIEBpbmNsdWRlIHBhZ2luYXRpb24tZWxsaXBzaXM7XG4gICAgfVxuICB9XG5cbiAgQGlmICRwYWdpbmF0aW9uLWFycm93cyB7XG4gICAgLnBhZ2luYXRpb24tcHJldmlvdXMgYTo6YmVmb3JlLFxuICAgIC5wYWdpbmF0aW9uLXByZXZpb3VzLmRpc2FibGVkOjpiZWZvcmUge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDAuNXJlbTtcbiAgICAgIGNvbnRlbnQ6ICRwYWdpbmF0aW9uLWFycm93LXByZXZpb3VzO1xuICAgIH1cblxuICAgIC5wYWdpbmF0aW9uLW5leHQgYTo6YWZ0ZXIsXG4gICAgLnBhZ2luYXRpb24tbmV4dC5kaXNhYmxlZDo6YWZ0ZXIge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogMC41cmVtO1xuICAgICAgY29udGVudDogJHBhZ2luYXRpb24tYXJyb3ctbmV4dDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB0b29sdGlwXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGN1cnNvciBvZiB0aGUgZGVmaW5lZCB0ZXJtLlxuLy8vIEB0eXBlIEtleXdvcmRcbiRoYXMtdGlwLWN1cnNvcjogaGVscCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCB3ZWlnaHQgb2YgdGhlIGRlZmluZWQgdGVybS5cbi8vLyBAdHlwZSBLZXl3b3JkIHwgTnVtYmVyXG4kaGFzLXRpcC1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm9yZGVyIGJvdHRvbSBvZiB0aGUgZGVmaW5lZCB0ZXJtLlxuLy8vIEB0eXBlIExpc3RcbiRoYXMtdGlwLWJvcmRlci1ib3R0b206IGRvdHRlZCAxcHggJGRhcmstZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgdGhlIHRvb2x0aXAgYmFja2dyb3VuZC5cbi8vLyBAdHlwZSBDb2xvclxuJHRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiB0aGUgdG9vbHRpcCBmb250LlxuLy8vIEB0eXBlIENvbG9yXG4kdG9vbHRpcC1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIG9mIHRoZSB0b29sdGlwIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9vbHRpcC1wYWRkaW5nOiAwLjc1cmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBtYXggd2lkdGggZm9yIHRvb2x0aXBzLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvb2x0aXAtbWF4LXdpZHRoOiAxMHJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBzaXplIG9mIHRoZSB0b29sdGlwIHRleHQuIEJ5IGRlZmF1bHQsIHdlIHJlY29tbWVuZCBhIHNtYWxsZXIgZm9udCBzaXplIHRoYW4gdGhlIGJvZHkgY29weS5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b29sdGlwLWZvbnQtc2l6ZTogJHNtYWxsLWZvbnQtc2l6ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGlwIHdpZHRoIGZvciB0b29sdGlwcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b29sdGlwLXBpcC13aWR0aDogMC43NXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGlwIGhlaWdodCBmb3IgdG9vbHRpcHMuIFRoaXMgaXMgaGVscGZ1bCBmb3IgY2FsY3VsYXRpbmcgdGhlIGRpc3RhbmNlIG9mIHRoZSB0b29sdGlwIGZyb20gdGhlIHRvb2x0aXAgd29yZC5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b29sdGlwLXBpcC1oZWlnaHQ6ICR0b29sdGlwLXBpcC13aWR0aCAqIDAuODY2ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIHRvb2x0aXBzLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvb2x0aXAtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuQG1peGluIGhhcy10aXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICBib3JkZXItYm90dG9tOiAkaGFzLXRpcC1ib3JkZXItYm90dG9tO1xuICBmb250LXdlaWdodDogJGhhcy10aXAtZm9udC13ZWlnaHQ7XG4gIGN1cnNvcjogJGhhcy10aXAtY3Vyc29yO1xufVxuXG5AbWl4aW4gdG9vbHRpcCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiBjYWxjKDEwMCUgKyAjeyR0b29sdGlwLXBpcC1oZWlnaHR9KTtcbiAgei1pbmRleDogMTIwMDtcblxuICBtYXgtd2lkdGg6ICR0b29sdGlwLW1heC13aWR0aDtcbiAgcGFkZGluZzogJHRvb2x0aXAtcGFkZGluZztcblxuICBib3JkZXItcmFkaXVzOiAkdG9vbHRpcC1yYWRpdXM7XG4gIGJhY2tncm91bmQtY29sb3I6ICR0b29sdGlwLWJhY2tncm91bmQtY29sb3I7XG4gIGZvbnQtc2l6ZTogJHRvb2x0aXAtZm9udC1zaXplO1xuICBjb2xvcjogJHRvb2x0aXAtY29sb3I7XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cblxuICAmLmJvdHRvbSB7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkdG9vbHRpcC1waXAtd2lkdGgsICR0b29sdGlwLWJhY2tncm91bmQtY29sb3IsIHVwKTtcbiAgICAgIGJvdHRvbTogMTAwJTtcbiAgICB9XG5cbiAgICAmLmFsaWduLWNlbnRlcjo6YmVmb3JlIHtcbiAgICAgIGxlZnQ6IDUwJTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICB9XG4gIH1cblxuICAmLnRvcCB7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkdG9vbHRpcC1waXAtd2lkdGgsICR0b29sdGlwLWJhY2tncm91bmQtY29sb3IsIGRvd24pO1xuICAgICAgdG9wOiAxMDAlO1xuICAgICAgYm90dG9tOiBhdXRvO1xuICAgIH1cblxuICAgICYuYWxpZ24tY2VudGVyOjpiZWZvcmUge1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgIH1cbiAgfVxuXG4gICYubGVmdCB7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkdG9vbHRpcC1waXAtd2lkdGgsICR0b29sdGlwLWJhY2tncm91bmQtY29sb3IsIHJpZ2h0KTtcbiAgICAgIGxlZnQ6IDEwMCU7XG4gICAgfVxuXG4gICAgJi5hbGlnbi1jZW50ZXI6OmJlZm9yZSB7XG4gICAgICBib3R0b206IGF1dG87XG4gICAgICB0b3A6IDUwJTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICB9XG4gIH1cblxuICAmLnJpZ2h0IHtcbiAgICAmOjpiZWZvcmUge1xuICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCR0b29sdGlwLXBpcC13aWR0aCwgJHRvb2x0aXAtYmFja2dyb3VuZC1jb2xvciwgbGVmdCk7XG4gICAgICByaWdodDogMTAwJTtcbiAgICAgIGxlZnQ6IGF1dG87XG4gICAgfVxuXG4gICAgJi5hbGlnbi1jZW50ZXI6OmJlZm9yZSB7XG4gICAgICBib3R0b206IGF1dG87XG4gICAgICB0b3A6IDUwJTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICB9XG4gIH1cblxuICAmLmFsaWduLXRvcDo6YmVmb3JlIHtcbiAgICBib3R0b206IGF1dG87XG4gICAgdG9wOiAxMCU7XG4gIH1cblxuICAmLmFsaWduLWJvdHRvbTo6YmVmb3JlIHtcbiAgICBib3R0b206IDEwJTtcbiAgICB0b3A6IGF1dG87XG4gIH1cblxuICAmLmFsaWduLWxlZnQ6OmJlZm9yZSB7XG4gICAgbGVmdDogMTAlO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG5cbiAgJi5hbGlnbi1yaWdodDo6YmVmb3JlIHtcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiAxMCU7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tdG9vbHRpcCB7XG4gIC5oYXMtdGlwIHtcbiAgICBAaW5jbHVkZSBoYXMtdGlwO1xuICB9XG5cbiAgLnRvb2x0aXAge1xuICAgIEBpbmNsdWRlIHRvb2x0aXA7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBhY2NvcmRpb25cbi8vLy9cblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvZiBhbiBhY2NvcmRpb24gZ3JvdXAuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb24tYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gSWYgYHRydWVgLCBhZGRzIHBsdXMgYW5kIG1pbnVzIGljb25zIHRvIHRoZSBzaWRlIG9mIGVhY2ggYWNjb3JkaW9uIHRpdGxlLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRhY2NvcmRpb24tcGx1c21pbnVzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQ29udGVudCBmb3IgdGhlIHBsdXMgaWNvbiB3aGVuIGAkYWNjb3JkaW9uLXBsdXNtaW51c2AgaXMgYHRydWVgXG4vLy8gQHR5cGUgU3RyaW5nXG4kYWNjb3JkaW9uLXBsdXMtY29udGVudDogJ1xcMDAyQicgIWRlZmF1bHQ7XG5cbi8vLyBDb250ZW50IGZvciB0aGUgbWludXMgaWNvbiB3aGVuIGAkYWNjb3JkaW9uLXBsdXNtaW51c2AgaXMgYHRydWVgXG4vLy8gQHR5cGUgU3RyaW5nXG4kYWNjb3JkaW9uLW1pbnVzLWNvbnRlbnQ6ICdcXDIwMTMnICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIG9mIGFjY29yZGlvbiB0aXRsZXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYWNjb3JkaW9uLXRpdGxlLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB0ZXh0IGNvbG9yIGZvciBpdGVtcyBpbiBhIE1lbnUuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb24taXRlbS1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb24gaG92ZXIgZm9yIGl0ZW1zIGluIGEgTWVudS5cbi8vLyBAdHlwZSBDb2xvclxuJGFjY29yZGlvbi1pdGVtLWJhY2tncm91bmQtaG92ZXI6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIG9mIGFuIGFjY29yZGlvbiBpdGVtLlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiRhY2NvcmRpb24taXRlbS1wYWRkaW5nOiAxLjI1cmVtIDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb2YgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb24tY29udGVudC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBjb2xvciBvZiB0YWIgY29udGVudC5cbi8vLyBAdHlwZSBDb2xvclxuJGFjY29yZGlvbi1jb250ZW50LWJvcmRlcjogMXB4IHNvbGlkICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB0ZXh0IGNvbG9yIG9mIHRhYiBjb250ZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9uLWNvbnRlbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgZm9yIHRhYiBjb250ZW50LlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiRhY2NvcmRpb24tY29udGVudC1wYWRkaW5nOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGFuIGFjY29yZGlvbiBjb250YWluZXIuIEFwcGx5IHRoaXMgdG8gdGhlIHNhbWUgZWxlbWVudCB0aGF0IGdldHMgYGRhdGEtYWNjb3JkaW9uYC5cbkBtaXhpbiBhY2NvcmRpb24tY29udGFpbmVyIChcbiAgJGJhY2tncm91bmQ6ICRhY2NvcmRpb24tYmFja2dyb3VuZFxuKSB7XG4gIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IDA7XG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cbiAgJltkaXNhYmxlZF0ge1xuICAgIC5hY2NvcmRpb24tdGl0bGUge1xuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgYWNjb3JkaW9uIGl0ZW0uIEFwcGx5IHRoaXMgdG8gdGhlIGxpc3QgaXRlbSB3aXRoaW4gYW4gYWNjb3JkaW9uIHVsLlxuQG1peGluIGFjY29yZGlvbi1pdGVtIHtcbiAgJjpmaXJzdC1jaGlsZCA+IDpmaXJzdC1jaGlsZCB7XG4gICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgJGdsb2JhbC1yYWRpdXMgMCAwO1xuICB9XG5cbiAgJjpsYXN0LWNoaWxkID4gOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci1yYWRpdXM6IDAgMCAkZ2xvYmFsLXJhZGl1cyAkZ2xvYmFsLXJhZGl1cztcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSB0aXRsZSBvZiBhbiBhY2NvcmRpb24gaXRlbS4gQXBwbHkgdGhpcyB0byB0aGUgbGluayB3aXRoaW4gYW4gYWNjb3JkaW9uIGl0ZW0uXG5AbWl4aW4gYWNjb3JkaW9uLXRpdGxlIChcbiAgJHBhZGRpbmc6ICRhY2NvcmRpb24taXRlbS1wYWRkaW5nLFxuICAkZm9udC1zaXplOiAkYWNjb3JkaW9uLXRpdGxlLWZvbnQtc2l6ZSxcbiAgJGNvbG9yOiAkYWNjb3JkaW9uLWl0ZW0tY29sb3IsXG4gICRib3JkZXI6ICRhY2NvcmRpb24tY29udGVudC1ib3JkZXIsXG4gICRiYWNrZ3JvdW5kLWhvdmVyOiAkYWNjb3JkaW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlclxuKSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuXG4gIGJvcmRlcjogJGJvcmRlcjtcbiAgYm9yZGVyLWJvdHRvbTogMDtcblxuICBmb250LXNpemU6ICRmb250LXNpemU7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBjb2xvcjogJGNvbG9yO1xuXG4gIDpsYXN0LWNoaWxkOm5vdCguaXMtYWN0aXZlKSA+ICYge1xuICAgIGJvcmRlci1ib3R0b206ICRib3JkZXI7XG4gICAgYm9yZGVyLXJhZGl1czogMCAwICRnbG9iYWwtcmFkaXVzICRnbG9iYWwtcmFkaXVzO1xuICB9XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtaG92ZXI7XG4gIH1cblxuICBAaWYgJGFjY29yZGlvbi1wbHVzbWludXMge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDUwJTtcbiAgICAgICN7JGdsb2JhbC1yaWdodH06IDFyZW07XG4gICAgICBtYXJnaW4tdG9wOiAtMC41cmVtO1xuICAgICAgY29udGVudDogJGFjY29yZGlvbi1wbHVzLWNvbnRlbnQ7XG4gICAgfVxuXG4gICAgLmlzLWFjdGl2ZSA+ICY6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAkYWNjb3JkaW9uLW1pbnVzLWNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYWNjb3JkaW9uIGNvbnRlbnQuIEFwcGx5IHRoaXMgdG8gdGhlIGNvbnRlbnQgcGFuZSBiZWxvdyBhbiBhY2NvcmRpb24gaXRlbSdzIHRpdGxlLlxuQG1peGluIGFjY29yZGlvbi1jb250ZW50IChcbiAgJHBhZGRpbmc6ICRhY2NvcmRpb24tY29udGVudC1wYWRkaW5nLFxuICAkYm9yZGVyOiAkYWNjb3JkaW9uLWNvbnRlbnQtYm9yZGVyLFxuICAkYmFja2dyb3VuZDogJGFjY29yZGlvbi1jb250ZW50LWJhY2tncm91bmQsXG4gICRjb2xvcjogJGFjY29yZGlvbi1jb250ZW50LWNvbG9yXG4pIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgcGFkZGluZzogJHBhZGRpbmc7XG5cbiAgYm9yZGVyOiAkYm9yZGVyO1xuICBib3JkZXItYm90dG9tOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcblxuICBjb2xvcjogJGNvbG9yO1xuXG4gIDpsYXN0LWNoaWxkID4gJjpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItYm90dG9tOiAkYm9yZGVyO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWFjY29yZGlvbiB7XG4gIC5hY2NvcmRpb24ge1xuICAgIEBpbmNsdWRlIGFjY29yZGlvbi1jb250YWluZXI7XG4gIH1cblxuICAuYWNjb3JkaW9uLWl0ZW0ge1xuICAgIEBpbmNsdWRlIGFjY29yZGlvbi1pdGVtO1xuICB9XG5cbiAgLmFjY29yZGlvbi10aXRsZSB7XG4gICAgQGluY2x1ZGUgYWNjb3JkaW9uLXRpdGxlO1xuICB9XG5cbiAgLmFjY29yZGlvbi1jb250ZW50IHtcbiAgICBAaW5jbHVkZSBhY2NvcmRpb24tY29udGVudDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIG1lZGlhLW9iamVjdFxuLy8vL1xuXG4vLy8gQm90dG9tIG1hcmdpbiBvZiBhIG1lZGlhIG9iamVjdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZWRpYW9iamVjdC1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIExlZnQgYW5kIHJpZ2h0IHBhZGRpbmcgb24gc2VjdGlvbnMgd2l0aGluIGEgbWVkaWEgb2JqZWN0LlxuLy8vIEB0eXBlIE51bWJlclxuJG1lZGlhb2JqZWN0LXNlY3Rpb24tcGFkZGluZzogJGdsb2JhbC1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gV2lkdGggb2YgaW1hZ2VzIHdpdGhpbiBhIG1lZGlhIG9iamVjdCwgd2hlbiB0aGUgb2JqZWN0IGlzIHN0YWNrZWQgdmVydGljYWxseS4gU2V0IHRvICdhdXRvJyB0byB1c2UgdGhlIGltYWdlJ3MgbmF0dXJhbCB3aWR0aC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZWRpYW9iamVjdC1pbWFnZS13aWR0aC1zdGFja2VkOiAxMDAlICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgbWVkaWEgb2JqZWN0IGNvbnRhaW5lci5cbkBtaXhpbiBtZWRpYS1vYmplY3QtY29udGFpbmVyIHtcbiAgZGlzcGxheTogaWYoJGdsb2JhbC1mbGV4Ym94LCBmbGV4LCBibG9jayk7XG4gIG1hcmdpbi1ib3R0b206ICRtZWRpYW9iamVjdC1tYXJnaW4tYm90dG9tO1xuXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICB9XG5cbiAgaW1nIHtcbiAgICBtYXgtd2lkdGg6IG5vbmU7XG4gIH1cblxuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAmLnN0YWNrLWZvci0jeyQtemYtemVyby1icmVha3BvaW50fSB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCQtemYtemVyby1icmVha3BvaW50IG9ubHkpIHtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHNlY3Rpb25zIHdpdGhpbiBhIG1lZGlhIG9iamVjdC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHBhZGRpbmcgWyRtZWRpYW9iamVjdC1zZWN0aW9uLXBhZGRpbmddIC0gUGFkZGluZyBiZXR3ZWVuIHNlY3Rpb25zLlxuQG1peGluIG1lZGlhLW9iamVjdC1zZWN0aW9uKCRwYWRkaW5nOiAkbWVkaWFvYmplY3Qtc2VjdGlvbi1wYWRkaW5nKSB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICB9XG4gIEBlbHNlIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIH1cblxuICAmOmZpcnN0LWNoaWxkIHtcbiAgICBwYWRkaW5nLSN7JGdsb2JhbC1yaWdodH06ICRwYWRkaW5nO1xuICB9XG5cbiAgJjpsYXN0LWNoaWxkOm5vdCg6bnRoLWNoaWxkKDIpKSB7XG4gICAgcGFkZGluZy0jeyRnbG9iYWwtbGVmdH06ICRwYWRkaW5nO1xuICB9XG5cbiAgPiA6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gIC5zdGFjay1mb3ItI3skLXpmLXplcm8tYnJlYWtwb2ludH0gJiB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkLXpmLXplcm8tYnJlYWtwb2ludCBvbmx5KSB7XG4gICAgICBAaW5jbHVkZSBtZWRpYS1vYmplY3Qtc3RhY2s7XG4gICAgfVxuICB9XG5cbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgJi5tYWluLXNlY3Rpb24ge1xuICAgICAgZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICYubWlkZGxlIHtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuXG4gICAgJi5ib3R0b20ge1xuICAgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIHRvIHN0YWNrIHNlY3Rpb25zIG9mIGEgbWVkaWEgb2JqZWN0LiBBcHBseSB0aGlzIHRvIHRoZSBzZWN0aW9uIGVsZW1lbnRzLCBub3QgdGhlIGNvbnRhaW5lci5cbkBtaXhpbiBtZWRpYS1vYmplY3Qtc3RhY2sge1xuICBwYWRkaW5nOiAwO1xuICBwYWRkaW5nLWJvdHRvbTogJG1lZGlhb2JqZWN0LXNlY3Rpb24tcGFkZGluZztcblxuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBmbGV4LWJhc2lzOiAxMDAlO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuICBAZWxzZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICBpbWcge1xuICAgIHdpZHRoOiAkbWVkaWFvYmplY3QtaW1hZ2Utd2lkdGgtc3RhY2tlZDtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1tZWRpYS1vYmplY3Qge1xuICAubWVkaWEtb2JqZWN0IHtcbiAgICBAaW5jbHVkZSBtZWRpYS1vYmplY3QtY29udGFpbmVyO1xuICB9XG5cbiAgLm1lZGlhLW9iamVjdC1zZWN0aW9uIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1vYmplY3Qtc2VjdGlvbjtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIG9yYml0XG4vLy8vXG5cbi8vLyBEZWZhdWx0IGNvbG9yIGZvciBPcmJpdCdzIGJ1bGxldHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRvcmJpdC1idWxsZXQtYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBhY3RpdmUgY29sb3IgZm9yIE9yYml0J3MgYnVsbGV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJG9yYml0LWJ1bGxldC1iYWNrZ3JvdW5kLWFjdGl2ZTogJGRhcmstZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZGlhbWV0ZXIgZm9yIE9yYml0J3MgYnVsbGV0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvcmJpdC1idWxsZXQtZGlhbWV0ZXI6IDEuMnJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbWFyZ2luIGJldHdlZW4gT3JiaXQncyBidWxsZXRzLlxuLy8vIEB0eXBlIE51bWJlclxuJG9yYml0LWJ1bGxldC1tYXJnaW46IDAuMXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZGlzdGFuY2UgZnJvbSBzbGlkZSByZWdpb24gZm9yIE9yYml0J3MgYnVsbGV0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvcmJpdC1idWxsZXQtbWFyZ2luLXRvcDogMC44cmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3R0b20gbWFyZ2luIGZyb20gT3JiaXQncyBidWxsZXRzIHRvIHdoYXRldmVyIGNvbnRlbnQgbWF5IGx1cmsgYmVsb3cgaXQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb3JiaXQtYnVsbGV0LW1hcmdpbi1ib3R0b206IDAuOHJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3IgT3JiaXQncyBjYXB0aW9uLlxuLy8vIEB0eXBlIENvbG9yXG4kb3JiaXQtY2FwdGlvbi1iYWNrZ3JvdW5kOiByZ2JhKCRibGFjaywgMC41KSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBmb3IgT3JiaXQncyBjYXB0aW9uLlxuLy8vIEB0eXBlIE51bWJlclxuJG9yYml0LWNhcHRpb24tcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3IgT3JiaXQncyBjb250cm9scyB3aGVuIGhvdmVyZWQuXG4vLy8gQHR5cGUgQ29sb3JcbiRvcmJpdC1jb250cm9sLWJhY2tncm91bmQtaG92ZXI6IHJnYmEoJGJsYWNrLCAwLjUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGZvciBPcmJpdCdzIGNvbnRyb2xzLlxuLy8vIEB0eXBlIE51bWJlclxuJG9yYml0LWNvbnRyb2wtcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgei1pbmRleCBmb3IgT3JiaXQncyBjb250cm9scy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvcmJpdC1jb250cm9sLXppbmRleDogMTAgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIG91dGVyIE9yYml0IHdyYXBwZXIuIFRoZXNlIHN0eWxlcyBhcmUgdXNlZCBvbiB0aGUgYC5vcmJpdGAgY2xhc3MuXG5AbWl4aW4gb3JiaXQtd3JhcHBlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgaW5uZXIgT3JiaXQgc2xpZGUgY29udGFpbmVyLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXQtY29udGFpbmVyYCBjbGFzcy5cbkBtaXhpbiBvcmJpdC1jb250YWluZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogMDsgLy8gUHJldmVudCBGT1VDIGJ5IG5vdCBzaG93aW5nIHVudGlsIEpTIHNldHMgaGVpZ2h0XG4gIG1hcmdpbjogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgaW5kaXZpZHVhbCBzbGlkZXMgb2YgYW4gT3JiaXQgc2xpZGVyLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXQtc2xpZGVgIGNsYXNzLlxuQG1peGluIG9yYml0LXNsaWRlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICAmLm5vLW1vdGlvbnVpIHtcbiAgICAmLmlzLWFjdGl2ZSB7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gb3JiaXQtZmlndXJlIHtcbiAgbWFyZ2luOiAwO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgc2xpZGUgY29udGFpbmluZyBhbiBpbWFnZS4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LWltYWdlYCBjbGFzcy5cbkBtaXhpbiBvcmJpdC1pbWFnZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1hcmdpbjogMDtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhbiBvcmJpdCBzbGlkZSBjYXB0aW9uLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXQtY2FwdGlvbmAgY2xhc3MuXG5AbWl4aW4gb3JiaXQtY2FwdGlvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgcGFkZGluZzogJG9yYml0LWNhcHRpb24tcGFkZGluZztcblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkb3JiaXQtY2FwdGlvbi1iYWNrZ3JvdW5kO1xuICBjb2xvcjogY29sb3ItcGljay1jb250cmFzdCgkb3JiaXQtY2FwdGlvbi1iYWNrZ3JvdW5kKTtcbn1cblxuLy8vIEFkZHMgYmFzZSBzdHlsZXMgZm9yIHRoZSBuZXh0L3ByZXZpb3VzIGJ1dHRvbnMgaW4gYW4gT3JiaXQgc2xpZGVyLiBUaGVzZSBzdHlsZXMgYXJlIHNoYXJlZCBiZXR3ZWVuIHRoZSBgLm9yYml0LW5leHRgIGFuZCBgLm9yYml0LXByZXZpb3VzYCBjbGFzc2VzIGluIHRoZSBkZWZhdWx0IENTUy5cbkBtaXhpbiBvcmJpdC1jb250cm9sIHtcbiAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXI7XG4gIHotaW5kZXg6ICRvcmJpdC1jb250cm9sLXppbmRleDtcbiAgcGFkZGluZzogJG9yYml0LWNvbnRyb2wtcGFkZGluZztcbiAgY29sb3I6ICR3aGl0ZTtcblxuICAmOmhvdmVyLFxuICAmOmFjdGl2ZSxcbiAgJjpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG9yYml0LWNvbnRyb2wtYmFja2dyb3VuZC1ob3ZlcjtcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBPcmJpdCBwcmV2aW91cyBidXR0b24uIFRoZXNlIHN0eWxlcyBhcmUgdXNlZCBvbiB0aGUgYC5vcmJpdC1wcmV2aW91c2AgY2xhc3MuXG5AbWl4aW4gb3JiaXQtcHJldmlvdXMge1xuICAjeyRnbG9iYWwtbGVmdH06IDA7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIE9yYml0IG5leHQgYnV0dG9uLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXQtbmV4dGAgY2xhc3MuXG5AbWl4aW4gb3JiaXQtbmV4dCB7XG4gICN7JGdsb2JhbC1sZWZ0fTogYXV0bztcbiAgI3skZ2xvYmFsLXJpZ2h0fTogMDtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGNvbnRhaW5lciBvZiBPcmJpdCBidWxsZXRzLiAvLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBPcmJpdCBwcmV2aW91cyBidXR0b24uIFRoZXNlIHN0eWxlcyBhcmUgdXNlZCBvbiB0aGUgYC5vcmJpdC1idWxsZXRzYCBjbGFzcy5cbkBtaXhpbiBvcmJpdC1idWxsZXRzIHtcbiAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi10b3A6ICRvcmJpdC1idWxsZXQtbWFyZ2luLXRvcDtcbiAgbWFyZ2luLWJvdHRvbTogJG9yYml0LWJ1bGxldC1tYXJnaW4tYm90dG9tO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgYnV0dG9uIHtcbiAgICB3aWR0aDogJG9yYml0LWJ1bGxldC1kaWFtZXRlcjtcbiAgICBoZWlnaHQ6ICRvcmJpdC1idWxsZXQtZGlhbWV0ZXI7XG4gICAgbWFyZ2luOiAkb3JiaXQtYnVsbGV0LW1hcmdpbjtcblxuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb3JiaXQtYnVsbGV0LWJhY2tncm91bmQ7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvcmJpdC1idWxsZXQtYmFja2dyb3VuZC1hY3RpdmU7XG4gICAgfVxuXG4gICAgJi5pcy1hY3RpdmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9yYml0LWJ1bGxldC1iYWNrZ3JvdW5kLWFjdGl2ZTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tb3JiaXQge1xuICAub3JiaXQge1xuICAgIEBpbmNsdWRlIG9yYml0LXdyYXBwZXI7XG4gIH1cblxuICAub3JiaXQtY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSBvcmJpdC1jb250YWluZXI7XG4gIH1cblxuICAub3JiaXQtc2xpZGUge1xuICAgIEBpbmNsdWRlIG9yYml0LXNsaWRlO1xuICB9XG5cbiAgLm9yYml0LWZpZ3VyZSB7XG4gICAgQGluY2x1ZGUgb3JiaXQtZmlndXJlO1xuICB9XG5cbiAgLm9yYml0LWltYWdlIHtcbiAgICBAaW5jbHVkZSBvcmJpdC1pbWFnZTtcbiAgfVxuXG4gIC5vcmJpdC1jYXB0aW9uIHtcbiAgICBAaW5jbHVkZSBvcmJpdC1jYXB0aW9uO1xuICB9XG5cbiAgJW9yYml0LWNvbnRyb2wge1xuICAgIEBpbmNsdWRlIG9yYml0LWNvbnRyb2w7XG4gIH1cblxuICAub3JiaXQtcHJldmlvdXMge1xuICAgIEBleHRlbmQgJW9yYml0LWNvbnRyb2w7XG4gICAgQGluY2x1ZGUgb3JiaXQtcHJldmlvdXM7XG4gIH1cblxuICAub3JiaXQtbmV4dCB7XG4gICAgQGV4dGVuZCAlb3JiaXQtY29udHJvbDtcbiAgICBAaW5jbHVkZSBvcmJpdC1uZXh0O1xuICB9XG5cbiAgLm9yYml0LWJ1bGxldHMge1xuICAgIEBpbmNsdWRlIG9yYml0LWJ1bGxldHM7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCByZXNwb25zaXZlLWVtYmVkXG4vLy8vXG5cbi8vLyBNYXJnaW4gYmVsb3cgYSByZXNwb25zaXZlIGVtYmVkIGNvbnRhaW5lci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXNwb25zaXZlLWVtYmVkLW1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDE2KSAhZGVmYXVsdDtcblxuLy8vIEFzcGVjdCByYXRpb3MgdXNlZCB0byBkZXRlcm1pbmUgcGFkZGluZy1ib3R0b20gb2YgcmVzcG9uc2l2ZSBlbWJlZCBjb250YWluZXJzLlxuLy8vIEB0eXBlIE1hcFxuJHJlc3BvbnNpdmUtZW1iZWQtcmF0aW9zOiAoXG4gIGRlZmF1bHQ6IDQgYnkgMyxcbiAgd2lkZXNjcmVlbjogMTYgYnkgOSxcbikgIWRlZmF1bHQ7XG5cbi8vLyBDcmVhdGVzIGEgcmVzcG9uc2l2ZSBlbWJlZCBjb250YWluZXIuXG4vLy8gQHBhcmFtIHtTdHJpbmd8TGlzdH0gJHJhdGlvIFtkZWZhdWx0XSAtIFJhdGlvIG9mIHRoZSBjb250YWluZXIuIENhbiBiZSBhIGtleSBmcm9tIHRoZSBgJHJlc3BvbnNpdmUtZW1iZWQtcmF0aW9zYCBtYXAgb3IgYSBsaXN0IGZvcm1hdHRlZCBhcyBgeCBieSB5YC5cbkBtaXhpbiByZXNwb25zaXZlLWVtYmVkKCRyYXRpbzogZGVmYXVsdCkge1xuICBAaWYgdHlwZS1vZigkcmF0aW8pID09ICdzdHJpbmcnIHtcbiAgICAkcmF0aW86IG1hcC1nZXQoJHJlc3BvbnNpdmUtZW1iZWQtcmF0aW9zLCAkcmF0aW8pO1xuICB9XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAwO1xuICBtYXJnaW4tYm90dG9tOiAkcmVzcG9uc2l2ZS1lbWJlZC1tYXJnaW4tYm90dG9tO1xuICBwYWRkaW5nLWJvdHRvbTogcmF0aW8tdG8tcGVyY2VudGFnZSgkcmF0aW8pO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIGlmcmFtZSxcbiAgb2JqZWN0LFxuICBlbWJlZCxcbiAgdmlkZW8ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgI3skZ2xvYmFsLWxlZnR9OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1yZXNwb25zaXZlLWVtYmVkIHtcbiAgLnJlc3BvbnNpdmUtZW1iZWQsXG4gIC5mbGV4LXZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNwb25zaXZlLWVtYmVkKCRyYXRpbzogZGVmYXVsdCk7XG5cbiAgICAkcmF0aW9zOiBtYXAtcmVtb3ZlKCRyZXNwb25zaXZlLWVtYmVkLXJhdGlvcyxkZWZhdWx0KTtcblxuICAgIEBlYWNoICRuYW1lLCAkcmF0aW8gaW4gJHJhdGlvcyB7XG4gICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IHJhdGlvLXRvLXBlcmNlbnRhZ2UoJHJhdGlvKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB0YWJzXG4vLy8vXG5cbi8vLyBEZWZhdWx0IG1hcmdpbiBvZiB0aGUgdGFiIGJhci5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0YWItbWFyZ2luOiAwICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9mIGEgdGFiIGJhci5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYi1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBGb250IGNvbG9yIG9mIHRhYiBpdGVtLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFiLWNvbG9yOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIEFjdGl2ZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIGEgdGFiIGJhci5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYi1iYWNrZ3JvdW5kLWFjdGl2ZTogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBBY3RpdmUgZm9udCBjb2xvciBvZiB0YWIgaXRlbS5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYi1hY3RpdmUtY29sb3I6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIG9mIHRhYiBpdGVtcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0YWItaXRlbS1mb250LXNpemU6IHJlbS1jYWxjKDEyKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvbiBob3ZlciBmb3IgaXRlbXMgaW4gYSBNZW51LlxuJHRhYi1pdGVtLWJhY2tncm91bmQtaG92ZXI6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBvZiBhIHRhYiBpdGVtLlxuLy8vIEB0eXBlIE51bWJlclxuJHRhYi1pdGVtLXBhZGRpbmc6IDEuMjVyZW0gMS41cmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRhYiBjb250ZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kdGFiLWNvbnRlbnQtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgY29sb3Igb2YgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWItY29udGVudC1ib3JkZXI6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB0ZXh0IGNvbG9yIG9mIHRhYiBjb250ZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kdGFiLWNvbnRlbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgZm9yIHRhYiBjb250ZW50LlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiR0YWItY29udGVudC1wYWRkaW5nOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgdGFiIGNvbnRhaW5lci4gQXBwbHkgdGhpcyB0byBhIGA8dWw+YC5cbkBtaXhpbiB0YWJzLWNvbnRhaW5lciAoXG4gICRtYXJnaW46ICR0YWItbWFyZ2luLFxuICAkYmFja2dyb3VuZDogJHRhYi1iYWNrZ3JvdW5kLFxuICAkYm9yZGVyLWNvbG9yOiAkdGFiLWNvbnRlbnQtYm9yZGVyXG4pIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIG1hcmdpbjogJG1hcmdpbjtcbiAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbn1cblxuLy8vIEF1Z21lbnRzIGEgdGFiIGNvbnRhaW5lciB0byBoYXZlIHZlcnRpY2FsIHRhYnMuIFVzZSB0aGlzIGluIGNvbmp1bmN0aW9uIHdpdGggYHRhYnMtY29udGFpbmVyKClgLlxuQG1peGluIHRhYnMtY29udGFpbmVyLXZlcnRpY2FsIHtcbiAgPiBsaSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZmxvYXQ6IG5vbmU7XG4gICAgd2lkdGg6IGF1dG87XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgbGlua3Mgd2l0aGluIGEgdGFiIGNvbnRhaW5lci4gQXBwbHkgdGhpcyB0byB0aGUgYDxsaT5gIGVsZW1lbnRzIGluc2lkZSBhIHRhYiBjb250YWluZXIuXG5AbWl4aW4gdGFicy10aXRsZSAoXG4gICRwYWRkaW5nOiAkdGFiLWl0ZW0tcGFkZGluZyxcbiAgJGZvbnQtc2l6ZTogJHRhYi1pdGVtLWZvbnQtc2l6ZSxcbiAgJGNvbG9yOiAkdGFiLWNvbG9yLFxuICAkY29sb3ItYWN0aXZlOiAkdGFiLWFjdGl2ZS1jb2xvcixcbiAgJGJhY2tncm91bmQtaG92ZXI6ICR0YWItaXRlbS1iYWNrZ3JvdW5kLWhvdmVyLFxuICAkYmFja2dyb3VuZC1hY3RpdmU6ICR0YWItYmFja2dyb3VuZC1hY3RpdmVcbikge1xuICBmbG9hdDogI3skZ2xvYmFsLWxlZnR9O1xuXG4gID4gYSB7XG4gICAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6ICRwYWRkaW5nO1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBjb2xvcjogJGNvbG9yO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZC1ob3ZlcjtcbiAgICAgIGNvbG9yOiBzY2FsZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6IC0xNCUpO1xuICAgIH1cblxuICAgICY6Zm9jdXMsXG4gICAgJlthcmlhLXNlbGVjdGVkPSd0cnVlJ10ge1xuICAgICAgYmFja2dyb3VuZDogJGJhY2tncm91bmQtYWN0aXZlO1xuICAgICAgY29sb3I6ICRjb2xvci1hY3RpdmU7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIHdyYXBwZXIgdGhhdCBzdXJyb3VuZHMgYSB0YWIgZ3JvdXAncyBjb250ZW50IHBhbmVzLlxuQG1peGluIHRhYnMtY29udGVudCAoXG4gICRiYWNrZ3JvdW5kOiAkdGFiLWNvbnRlbnQtYmFja2dyb3VuZCxcbiAgJGNvbG9yOiAkdGFiLWNvbnRlbnQtY29sb3IsXG4gICRib3JkZXItY29sb3I6ICR0YWItY29udGVudC1ib3JkZXJcbikge1xuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICBib3JkZXItdG9wOiAwO1xuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiAgY29sb3I6ICRjb2xvcjtcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZTtcbn1cblxuLy8vIEF1Z21lbnRzIGEgdGFiIGNvbnRlbnQgY29udGFpbmVyIHRvIGhhdmUgYSB2ZXJ0aWNhbCBzdHlsZSwgYnkgc2hpZnRpbmcgdGhlIGJvcmRlciBhcm91bmQuIFVzZSB0aGlzIGluIGNvbmp1bmN0aW9uIHdpdGggYHRhYnMtY29udGVudCgpYC5cbkBtaXhpbiB0YWJzLWNvbnRlbnQtdmVydGljYWwgKFxuICAkYm9yZGVyLWNvbG9yOiAkdGFiLWNvbnRlbnQtYm9yZGVyXG4pIHtcbiAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcbiAgYm9yZGVyLSN7JGdsb2JhbC1sZWZ0fTogMDtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhbiBpbmRpdmlkdWFsIHRhYiBjb250ZW50IHBhbmVsIHdpdGhpbiB0aGUgdGFiIGNvbnRlbnQgY29udGFpbmVyLlxuQG1peGluIHRhYnMtcGFuZWwgKFxuICAkcGFkZGluZzogJHRhYi1jb250ZW50LXBhZGRpbmdcbikge1xuICBkaXNwbGF5OiBub25lO1xuICBwYWRkaW5nOiAkcGFkZGluZztcblxuICAmLmlzLWFjdGl2ZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tdGFicyB7XG4gIC50YWJzIHtcbiAgICBAaW5jbHVkZSB0YWJzLWNvbnRhaW5lcjtcbiAgfVxuXG4gIC8vIFZlcnRpY2FsXG4gIC50YWJzLnZlcnRpY2FsIHtcbiAgICBAaW5jbHVkZSB0YWJzLWNvbnRhaW5lci12ZXJ0aWNhbDtcbiAgfVxuXG4gIC8vIFNpbXBsZVxuICAudGFicy5zaW1wbGUge1xuICAgID4gbGkgPiBhIHtcbiAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQcmltYXJ5IGNvbG9yXG4gIC50YWJzLnByaW1hcnkge1xuICAgIGJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xuXG4gICAgPiBsaSA+IGEge1xuICAgICAgY29sb3I6IGNvbG9yLXBpY2stY29udHJhc3QoJHByaW1hcnktY29sb3IpO1xuXG4gICAgICAmOmhvdmVyLFxuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIGJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCRwcmltYXJ5LWNvbG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAudGFicy10aXRsZSB7XG4gICAgQGluY2x1ZGUgdGFicy10aXRsZTtcbiAgfVxuXG4gIC50YWJzLWNvbnRlbnQge1xuICAgIEBpbmNsdWRlIHRhYnMtY29udGVudDtcbiAgfVxuXG4gIC50YWJzLWNvbnRlbnQudmVydGljYWwge1xuICAgIEBpbmNsdWRlIHRhYnMtY29udGVudC12ZXJ0aWNhbDtcbiAgfVxuXG4gIC50YWJzLXBhbmVsIHtcbiAgICBAaW5jbHVkZSB0YWJzLXBhbmVsO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdGh1bWJuYWlsXG4vLy8vXG5cbi8vLyBCb3JkZXIgYXJvdW5kIHRodW1ibmFpbCBpbWFnZXMuXG4vLy8gQHR5cGUgQm9yZGVyXG4kdGh1bWJuYWlsLWJvcmRlcjogNHB4IHNvbGlkICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIEJvdHRvbSBtYXJnaW4gZm9yIHRodW1ibmFpbCBpbWFnZXMuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kdGh1bWJuYWlsLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xuXG4vLy8gQm94IHNoYWRvdyB1bmRlciB0aHVtYm5haWwgaW1hZ2VzLlxuLy8vIEB0eXBlIFNoYWRvd1xuJHRodW1ibmFpbC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKCRibGFjaywgMC4yKSAhZGVmYXVsdDtcblxuLy8vIEJveCBzaGFkb3cgdW5kZXIgdGh1bWJuYWlsIGltYWdlcy5cbi8vLyBAdHlwZSBTaGFkb3dcbiR0aHVtYm5haWwtc2hhZG93LWhvdmVyOiAwIDAgNnB4IDFweCByZ2JhKCRwcmltYXJ5LWNvbG9yLCAwLjUpICFkZWZhdWx0O1xuXG4vLy8gVHJhbnNpdGlvbiBwcm9wcnRpZXMgZm9yIHRodW1ibmFpbCBpbWFnZXMuXG4vLy8gQHR5cGUgVHJhbnNpdGlvblxuJHRodW1ibmFpbC10cmFuc2l0aW9uOiBib3gtc2hhZG93IDIwMG1zIGVhc2Utb3V0ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIHRodW1ibmFpbCBpbWFnZXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGh1bWJuYWlsLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHRodW1ibmFpbCBzdHlsZXMgdG8gYW4gZWxlbWVudC5cbkBtaXhpbiB0aHVtYm5haWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogJHRodW1ibmFpbC1tYXJnaW4tYm90dG9tO1xuXG4gIGJvcmRlcjogJHRodW1ibmFpbC1ib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6ICR0aHVtYm5haWwtcmFkaXVzO1xuICBib3gtc2hhZG93OiAkdGh1bWJuYWlsLXNoYWRvdztcblxuICBsaW5lLWhlaWdodDogMDtcbn1cblxuQG1peGluIHRodW1ibmFpbC1saW5rIHtcbiAgdHJhbnNpdGlvbjogJHRodW1ibmFpbC10cmFuc2l0aW9uO1xuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIGJveC1zaGFkb3c6ICR0aHVtYm5haWwtc2hhZG93LWhvdmVyO1xuICB9XG5cbiAgaW1hZ2Uge1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tdGh1bWJuYWlsIHtcbiAgLnRodW1ibmFpbCB7XG4gICAgQGluY2x1ZGUgdGh1bWJuYWlsO1xuICB9XG5cbiAgYS50aHVtYm5haWwge1xuICAgIEBpbmNsdWRlIHRodW1ibmFpbC1saW5rO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgbWVudVxuLy8vL1xuXG4vLy8gTWFyZ2luIG9mIGEgbWVudS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZW51LW1hcmdpbjogMCAhZGVmYXVsdDtcblxuLy8vIExlZnQtaGFuZCBtYXJnaW4gb2YgYSBuZXN0ZWQgbWVudS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZW51LW5lc3RlZC1tYXJnaW46ICRnbG9iYWwtbWVudS1uZXN0ZWQtbWFyZ2luICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBmb3IgaXRlbXMgaW4gYSBwaWxsIG1lbnUuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbWVudS1pdGVtcy1wYWRkaW5nOiAkZ2xvYmFsLW1lbnUtcGFkZGluZyAhZGVmYXVsdDtcblxuLy8vIG1hcmdpbiBmb3IgaXRlbXMgaW4gYSBzaW1wbGUgbWVudS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZW51LXNpbXBsZS1tYXJnaW46IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIG9mIGFuIGFjdGl2ZSBtZW51IGl0ZW0uXG4vLy8gQHR5cGUgQ29sb3JcbiRtZW51LWl0ZW0tY29sb3ItYWN0aXZlOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBBbHRlcm5hdGl2ZSB0ZXh0IGNvbG9yIG9mIGFuIGFjdGl2ZSBtZW51IGl0ZW0uLlxuLy8vIEB0eXBlIENvbG9yXG4kbWVudS1pdGVtLWNvbG9yLWFsdC1hY3RpdmU6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYW4gYWN0aXZlIG1lbnUgaXRlbS5cbi8vLyBAdHlwZSBDb2xvclxuJG1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZTogZ2V0LWNvbG9yKHByaW1hcnkpICFkZWZhdWx0O1xuXG4vLy8gU3BhY2luZyBiZXR3ZWVuIGFuIGljb24gYW5kIHRleHQgaW4gYSBtZW51IGl0ZW0uXG4vLy8gQHR5cGUgTnVtYmVyXG4kbWVudS1pY29uLXNwYWNpbmc6IDAuMjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCYWNrd2FyZCBjb21wYXRpYmlsaXR5IGZvciBtZW51IHN0YXRlLiBJZiB0cnVlLCB0aGlzIGR1cGxpY2F0ZSBgYWN0aXZlYCB3aXRoIGBpcy1hY3RpdmVgLlxuLy8vIEJ1dCBwbGVhc2Ugbm90ZSB0aGF0IGBhY3RpdmVgIHdpbGwgYmUgcmVtb3ZlZCBpbiB1cGNvbWluZyB2ZXJzaW9ucy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kbWVudS1zdGF0ZS1iYWNrLWNvbXBhdDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgZm9yIG1lbnUgY2VudGVyZWQuIElmIHRydWUsIHRoaXMgZHVwbGljYXRlIGAubWVudS1jZW50ZXJlZCA+IC5tZW51YCB3aXRoIGAubWVudS5hbGlnbi1jZW50ZXJgLlxuLy8vIEJ1dCBwbGVhc2Ugbm90ZSB0aGF0IGBtZW51LWNlbnRlcmVkYCB3aWxsIGJlIHJlbW92ZWQgaW4gdXBjb21pbmcgdmVyc2lvbnMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJG1lbnUtY2VudGVyZWQtYmFjay1jb21wYXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrd2FyZCBjb21wYXRpYmlsaXR5IGZvciB1c2luZyBgaWNvbi0qYCBjbGFzc2VzIHdpdGhvdXQgYC5pY29uc2AgY2xhc3Nlc1xuLy8vIEJ1dCBwbGVhc2Ugbm90ZSB0aGF0IHRoaXMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aWxsIGJlIHJlbW92ZWQgaW4gdXBjb21pbmcgdmVyc2lvbnMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJG1lbnUtaWNvbnMtYmFjay1jb21wYXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBDcmVhdGVzIHRoZSBiYXNlIHN0eWxlcyBmb3IgYSBNZW51LlxuQG1peGluIG1lbnUtYmFzZSB7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICB9XG5cbiAgbGkge1xuICAgIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgfVxuXG4gIGEsXG4gIC5idXR0b24ge1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAkbWVudS1pdGVtcy1wYWRkaW5nO1xuICB9XG5cbiAgLy8gUmVzZXQgc3R5bGVzIG9mIGlubmVyIGVsZW1lbnRzXG4gIGlucHV0LFxuICBzZWxlY3QsXG4gIGEsXG4gIGJ1dHRvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gIGlucHV0IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cbn1cblxuLy8vIEV4cGFuZHMgdGhlIGl0ZW1zIG9mIGEgTWVudSwgc28gZWFjaCBpdGVtIGlzIHRoZSBzYW1lIHdpZHRoLlxuQG1peGluIG1lbnUtZXhwYW5kIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgbGkge1xuICAgICAgZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgPiBsaSB7XG4gICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFsaWduIG1lbnUgaXRlbXMuXG5AbWl4aW4gbWVudS1hbGlnbigkYWxpZ25tZW50KSB7XG4gIEBpZiAkYWxpZ25tZW50ID09IGxlZnQge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLWxlZnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRhbGlnbm1lbnQgPT0gcmlnaHQge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgbGkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuXG4gICAgICAgIC5zdWJtZW51IGxpIHtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi52ZXJ0aWNhbCBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLXJpZ2h0O1xuXG4gICAgICAgIC5zdWJtZW51IGxpIHtcbiAgICAgICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLXJpZ2h0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHRleHQtYWxpZ246ICRnbG9iYWwtcmlnaHQ7XG5cbiAgICAgIC5zdWJtZW51IGxpIHtcbiAgICAgICAgdGV4dC1hbGlnbjogJGdsb2JhbC1sZWZ0O1xuICAgICAgfVxuXG4gICAgICAmLnZlcnRpY2FsIHtcbiAgICAgICAgLnN1Ym1lbnUgbGkge1xuICAgICAgICAgIHRleHQtYWxpZ246ICRnbG9iYWwtcmlnaHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGFsaWdubWVudCA9PSBjZW50ZXIge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgbGkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgICAgICAuc3VibWVudSBsaSB7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgLnN1Ym1lbnUgbGkge1xuICAgICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLWxlZnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBTZXRzIHRoZSBkaXJlY3Rpb24gb2YgYSBNZW51LlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGRpciBbaG9yaXpvbnRhbF0gLSBEaXJlY3Rpb24gb2YgdGhlIE1lbnUuIENhbiBiZSBgaG9yaXpvbnRhbGAgb3IgYHZlcnRpY2FsYC5cbkBtaXhpbiBtZW51LWRpcmVjdGlvbigkZGlyOiBob3Jpem9udGFsKSB7XG4gIEBpZiAkZGlyID09IGhvcml6b250YWwge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgbGkge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRkaXIgPT0gdmVydGljYWwge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gJ1RoZSBkaXJlY3Rpb24gdXNlZCBmb3IgbWVudS1kaXJlY3Rpb24oKSBtdXN0IGJlIGhvcml6b250YWwgb3IgdmVydGljYWwuJztcbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIHNpbXBsZSBNZW51LCB3aGljaCBoYXMgbm8gcGFkZGluZyBvciBob3ZlciBzdGF0ZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXIgWyRnbG9iYWwtbGVmdF0gLSBEaXJlY3Rpb24gb2YgdGhlIG1lbnUuIFRoaXMgZWZmZWN0cyB0aGUgc2lkZSBvZiB0aGUgYDxsaT5gIHRoYXQgcmVjZWl2ZXMgdGhlIG1hcmdpbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1hcmdpbiBbJG1lbnUtc2ltcGxlLW1hcmdpbl0gLSBUaGUgbWFyZ2luIHRvIGFwcGx5IHRvIGVhY2ggYDxsaT5gLlxuQG1peGluIG1lbnUtc2ltcGxlKCRkaXI6ICRnbG9iYWwtbGVmdCwgJG1hcmdpbjogJG1lbnUtc2ltcGxlLW1hcmdpbikge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG5cbiAgbGkgKyBsaSB7XG4gICAgbWFyZ2luLSN7JGRpcn06ICRtYXJnaW47XG4gIH1cblxuICBhIHtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBuZXN0ZWQgTWVudSwgYnkgYWRkaW5nIGBtYXJnaW4tbGVmdGAgdG8gdGhlIG1lbnUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJG1hcmdpbiBbJG1lbnUtbmVzdGVkLW1hcmdpbl0gLSBMZW5ndGggb2YgdGhlIG1hcmdpbi5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRuZXN0ZWQtYWxpZ25tZW50IFtsZWZ0XSAtIEFsaWdubWVudCBvZiB0aGUgbmVzdGVkIGNsYXNzXG5AbWl4aW4gbWVudS1uZXN0ZWQoXG4gICRtYXJnaW46ICRtZW51LW5lc3RlZC1tYXJnaW4sXG4gICRuZXN0ZWQtYWxpZ25tZW50OiBsZWZ0XG4pIHtcbiAgQGlmICRuZXN0ZWQtYWxpZ25tZW50ID09IHJpZ2h0IHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJG1hcmdpbjtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwO1xuICB9XG4gIEBlbHNlIHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMDtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkbWFyZ2luO1xuICB9XG5cbn1cblxuLy8vIEFkZHMgYmFzaWMgc3R5bGVzIGZvciBpY29ucyBpbiBtZW51cy5cbkBtaXhpbiBtZW51LWljb25zKCkge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBhIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBpbWcsXG4gICAgaSxcbiAgICBzdmcge1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcblxuICAgICAgKyBzcGFuIHtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vIEFsaWduIHRvcC9ib3R0b20gaWNvbnMgd2l0aGluIGEgbWVudS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRhbGlnbm1lbnQgW2NlbnRlcl0gLSBBbGlnbm1lbnQgb2YgdGhlIGljb25cbkBtaXhpbiBtZW51LWljb24tYWxpZ25tZW50KCRhbGlnbm1lbnQ6IGNlbnRlcikge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAmLmljb24tdG9wLFxuICAgICYuaWNvbi1ib3R0b20ge1xuICAgICAgbGkgYSB7XG4gICAgICAgIGltZyxcbiAgICAgICAgaSxcbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICBAaWYgJGFsaWdubWVudCA9PSBsZWZ0IHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGVsc2UgaWYgJGFsaWdubWVudCA9PSByaWdodCB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHBvc2l0aW9uIGNsYXNzZXMgZm9yIGljb25zIHdpdGhpbiBhIG1lbnUuXG5AbWl4aW4gbWVudS1pY29uLXBvc2l0aW9uKCRwb3NpdGlvbjogbGVmdCwgJHNwYWNpbmc6ICRtZW51LWljb24tc3BhY2luZykge1xuICBAaWYgJHBvc2l0aW9uID09IGxlZnQge1xuICAgIGxpIGEge1xuICAgICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgICAgIH1cblxuICAgICAgaW1nLFxuICAgICAgaSxcbiAgICAgIHN2ZyB7XG4gICAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkc3BhY2luZztcblxuICAgICAgICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRwb3NpdGlvbiA9PSByaWdodCB7XG4gICAgbGkgYSB7XG4gICAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICAgICAgfVxuXG4gICAgICBpbWcsXG4gICAgICBpLFxuICAgICAgc3ZnIHtcbiAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJHNwYWNpbmc7XG5cbiAgICAgICAgQGlmIG5vdCAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gdG9wIHtcbiAgICBsaSBhIHtcbiAgICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgaW1nLFxuICAgICAgaSxcbiAgICAgIHN2ZyB7XG4gICAgICAgIEBpZiBub3QgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBtYXJnaW46IDAgYXV0byAkc3BhY2luZztcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJHBvc2l0aW9uID09IGJvdHRvbSB7XG4gICAgbGkgYSB7XG4gICAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIGltZyxcbiAgICAgIGksXG4gICAgICBzdmcge1xuICAgICAgICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgbWFyZ2luOiAkc3BhY2luZyBhdXRvIDA7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtZW51LXRleHQge1xuICBwYWRkaW5nOiAkZ2xvYmFsLW1lbnUtcGFkZGluZztcblxuICBmb250LXdlaWdodDogYm9sZDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGNvbG9yOiBpbmhlcml0O1xufVxuXG5AbWl4aW4gbWVudS1zdGF0ZS1hY3RpdmUge1xuICBiYWNrZ3JvdW5kOiAkbWVudS1pdGVtLWJhY2tncm91bmQtYWN0aXZlO1xuICBjb2xvcjogY29sb3ItcGljay1jb250cmFzdCgkbWVudS1pdGVtLWJhY2tncm91bmQtYWN0aXZlLCAoJG1lbnUtaXRlbS1jb2xvci1hY3RpdmUsICRtZW51LWl0ZW0tY29sb3ItYWx0LWFjdGl2ZSkpO1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1tZW51IHtcbiAgLm1lbnUge1xuICAgIEBpbmNsdWRlIG1lbnUtYmFzZTtcblxuICAgIC8vIERlZmF1bHQgb3JpZW50YXRpb246IGhvcml6b250YWxcbiAgICAmLCAmLmhvcml6b250YWwge1xuICAgICAgQGluY2x1ZGUgbWVudS1kaXJlY3Rpb24oaG9yaXpvbnRhbCk7XG4gICAgfVxuXG4gICAgLy8gVmVydGljYWwgb3JpZW50YXRpb24gbW9kaWZpZXJcbiAgICAmLnZlcnRpY2FsIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtZGlyZWN0aW9uKHZlcnRpY2FsKTtcbiAgICAgIEBpbmNsdWRlIG1lbnUtaWNvbi1hbGlnbm1lbnQobGVmdCk7XG4gICAgfVxuXG4gICAgLy8gRXZlbi13aWR0aCBtb2RpZmllciBmb3IgaG9yaXpvbnRhbCBvcmllbnRhdGlvblxuICAgICYuZXhwYW5kZWQge1xuICAgICAgQGluY2x1ZGUgbWVudS1leHBhbmQ7XG4gICAgICBAaW5jbHVkZSBtZW51LWljb24tYWxpZ25tZW50KGxlZnQpO1xuICAgIH1cblxuICAgIC8vIFNpbXBsZVxuICAgICYuc2ltcGxlIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtc2ltcGxlO1xuICAgIH1cblxuICAgIC8vIEJyZWFrcG9pbnQgc3BlY2lmaWMgdmVyc2lvbnNcbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCRzbWFsbDogZmFsc2UpIHtcbiAgICAgICYuI3skLXpmLXNpemV9LWhvcml6b250YWwge1xuICAgICAgICBAaW5jbHVkZSBtZW51LWRpcmVjdGlvbihob3Jpem9udGFsKTtcbiAgICAgIH1cblxuICAgICAgJi4jeyQtemYtc2l6ZX0tdmVydGljYWwge1xuICAgICAgICBAaW5jbHVkZSBtZW51LWRpcmVjdGlvbih2ZXJ0aWNhbCk7XG4gICAgICB9XG5cbiAgICAgICYuI3skLXpmLXNpemV9LWV4cGFuZGVkIHtcbiAgICAgICAgQGluY2x1ZGUgbWVudS1leHBhbmQ7XG4gICAgICB9XG5cbiAgICAgICYuI3skLXpmLXNpemV9LXNpbXBsZSB7XG4gICAgICAgIEBpbmNsdWRlIG1lbnUtZXhwYW5kO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE5lc3RpbmdcbiAgICAmLm5lc3RlZCB7XG4gICAgICBAaW5jbHVkZSBtZW51LW5lc3RlZDtcbiAgICB9XG5cbiAgICAvLyBJY29uIEJhc2UgU3R5bGVzXG4gICAgJi5pY29ucyB7XG4gICAgICBAaW5jbHVkZSBtZW51LWljb25zO1xuICAgIH1cblxuICAgIC8vIEJhY2t3YXJkIENvbXBhdGliaWxpdHkgZm9yIGFjdGl2ZSBzdGF0ZVxuICAgIEBpZiAkbWVudS1pY29ucy1iYWNrLWNvbXBhdCB7XG4gICAgICAmLmljb24tdG9wLFxuICAgICAgJi5pY29uLXJpZ2h0LFxuICAgICAgJi5pY29uLWJvdHRvbSxcbiAgICAgICYuaWNvbi1sZWZ0IHtcbiAgICAgICAgQGluY2x1ZGUgbWVudS1pY29ucztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNZW51IGljb24gcG9zaXRpb25cbiAgICAvLyBJbmNsdWRlcyBzcGVjaWZpY2l0eSB0byBuZXN0ZWQgaWNvbnMgd2l0aCBhIGRpZmZlcmVudCBwb3NpdGlvblxuICAgICYsXG4gICAgJi5uZXN0ZWQge1xuICAgICAgLy8gSWNvbiBMZWZ0XG4gICAgICAmLmljb24tbGVmdCB7XG4gICAgICAgIEBpbmNsdWRlIG1lbnUtaWNvbi1wb3NpdGlvbihsZWZ0KTtcbiAgICAgIH1cblxuICAgICAgLy8gSWNvbiBSaWdodFxuICAgICAgJi5pY29uLXJpZ2h0IHtcbiAgICAgICAgQGluY2x1ZGUgbWVudS1pY29uLXBvc2l0aW9uKHJpZ2h0KTtcbiAgICAgIH1cblxuICAgICAgLy8gSWNvbiBUb3BcbiAgICAgICYuaWNvbi10b3Age1xuICAgICAgICBAaW5jbHVkZSBtZW51LWljb24tcG9zaXRpb24odG9wKTtcbiAgICAgIH1cblxuICAgICAgLy8gSWNvbiBCb3R0b21cbiAgICAgICYuaWNvbi1ib3R0b20ge1xuICAgICAgICBAaW5jbHVkZSBtZW51LWljb24tcG9zaXRpb24oYm90dG9tKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBY3RpdmUgc3RhdGVcbiAgICAuaXMtYWN0aXZlID4gYSB7XG4gICAgICBAaW5jbHVkZSBtZW51LXN0YXRlLWFjdGl2ZTtcbiAgICB9XG5cbiAgICAvLyBCYWNrd2FyZCBDb21wYXRpYmlsaXR5IGZvciBhY3RpdmUgc3RhdGVcbiAgICBAaWYgJG1lbnUtc3RhdGUtYmFjay1jb21wYXQge1xuICAgICAgLmFjdGl2ZSA+IGEge1xuICAgICAgICBAaW5jbHVkZSBtZW51LXN0YXRlLWFjdGl2ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBbGlnbiBsZWZ0XG4gICAgJi5hbGlnbi0jeyRnbG9iYWwtbGVmdH0ge1xuICAgICAgQGluY2x1ZGUgbWVudS1hbGlnbihsZWZ0KTtcbiAgICB9XG5cbiAgICAvLyBBbGlnbiByaWdodFxuICAgICYuYWxpZ24tI3skZ2xvYmFsLXJpZ2h0fSB7XG4gICAgICBAaW5jbHVkZSBtZW51LWFsaWduKHJpZ2h0KTtcbiAgICAgIEBpbmNsdWRlIG1lbnUtaWNvbi1hbGlnbm1lbnQocmlnaHQpO1xuXG4gICAgICAubmVzdGVkIHtcbiAgICAgICAgQGluY2x1ZGUgbWVudS1uZXN0ZWQoJG5lc3RlZC1hbGlnbm1lbnQ6IHJpZ2h0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBbGlnbiBjZW50ZXJcbiAgICAmLmFsaWduLWNlbnRlciB7XG4gICAgICBAaW5jbHVkZSBtZW51LWFsaWduKGNlbnRlcik7XG4gICAgfVxuXG4gICAgLm1lbnUtdGV4dCB7XG4gICAgICBAaW5jbHVkZSBtZW51LXRleHQ7XG4gICAgfVxuICB9XG5cbiAgQGlmICRtZW51LWNlbnRlcmVkLWJhY2stY29tcGF0IHtcbiAgICAubWVudS1jZW50ZXJlZCB7XG4gICAgICA+IC5tZW51IHtcbiAgICAgICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBtZW51LWFsaWduKGNlbnRlcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUHJldmVudCBGT1VDIHdoZW4gdXNpbmcgdGhlIFJlc3BvbnNpdmUgTWVudSBwbHVnaW5cbiAgLm5vLWpzIFtkYXRhLXJlc3BvbnNpdmUtbWVudV0gdWwge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiIsIkBtaXhpbiBmb3VuZGF0aW9uLW1lbnUtaWNvbiB7XG4gIC5tZW51LWljb24ge1xuICAgIEBpbmNsdWRlIGhhbWJ1cmdlcigkY29sb3I6ICR0aXRsZWJhci1pY29uLWNvbG9yLCAkY29sb3ItaG92ZXI6ICR0aXRsZWJhci1pY29uLWNvbG9yLWhvdmVyKTtcbiAgfVxuXG4gIC5tZW51LWljb24uZGFyayB7XG4gICAgQGluY2x1ZGUgaGFtYnVyZ2VyO1xuICB9XG59XG4iLCIvLy8vXG4vLy8gQGdyb3VwIGFjY29yZGlvbi1tZW51XG4vLy8vXG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IHBhZGRpbmcuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYWNjb3JkaW9ubWVudS1wYWRkaW5nOiAkZ2xvYmFsLW1lbnUtcGFkZGluZyAhZGVmYXVsdDtcblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgbmVzdGVkIG1hcmdpblxuLy8vIEB0eXBlIE51bWJlclxuJGFjY29yZGlvbm1lbnUtbmVzdGVkLW1hcmdpbjogJGdsb2JhbC1tZW51LW5lc3RlZC1tYXJnaW4gIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IHN1Ym1lbnUgcGFkZGluZy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRhY2NvcmRpb25tZW51LXN1Ym1lbnUtcGFkZGluZzogJGFjY29yZGlvbm1lbnUtcGFkZGluZyAhZGVmYXVsdDtcblxuLy8vIFNldHMgaWYgYWNjb3JkaW9uIG1lbnVzIGhhdmUgdGhlIGRlZmF1bHQgYXJyb3cgc3R5bGVzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRhY2NvcmRpb25tZW51LWFycm93czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgYXJyb3cgY29sb3IgaWYgYXJyb3cgaXMgdXNlZC5cbi8vLyBAdHlwZSBDb2xvclxuJGFjY29yZGlvbm1lbnUtYXJyb3ctY29sb3I6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBpdGVtIHBhZGRpbmcuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb25tZW51LWl0ZW0tYmFja2dyb3VuZDogbnVsbCAhZGVmYXVsdDtcblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgaXRlbSBib3JkZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb25tZW51LWJvcmRlcjogbnVsbCAhZGVmYXVsdDtcblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgaXRlbSBwYWRkaW5nLlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS1iYWNrZ3JvdW5kOiBudWxsICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBpdGVtIHBhZGRpbmcuXG4vLy8gQHR5cGUgTGlzdFxuJGFjY29yZGlvbi1zdWJtZW51LXRvZ2dsZS1ib3JkZXI6ICRhY2NvcmRpb25tZW51LWJvcmRlciAhZGVmYXVsdDtcblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgc3VibWVudSB0b2dnbGUgYmFja2dyb3VuZCB3aWR0aC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLXdpZHRoOiA0MHB4ICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBzdWJtZW51IHRvZ2dsZSBiYWNrZ3JvdW5kIGhlaWdodC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLWhlaWdodDogJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtd2lkdGggIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IGFycm93IHNpemUgaWYgYXJyb3cgaXMgdXNlZC5cbi8vLyBAdHlwZSBMZW5ndGhcbiRhY2NvcmRpb25tZW51LWFycm93LXNpemU6IDZweCAhZGVmYXVsdDtcblxuQG1peGluIHpmLWFjY29yZGlvbi1tZW51LWxlZnQtcmlnaHQtYXJyb3dzIHtcbiAgLmlzLWFjY29yZGlvbi1zdWJtZW51LXBhcmVudDpub3QoLmhhcy1zdWJtZW51LXRvZ2dsZSkgPiBhIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmOjphZnRlciB7XG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJGFjY29yZGlvbm1lbnUtYXJyb3ctc2l6ZSwgJGFjY29yZGlvbm1lbnUtYXJyb3ctY29sb3IsIGRvd24pO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICBtYXJnaW4tdG9wOiAtMSAqICgkYWNjb3JkaW9ubWVudS1hcnJvdy1zaXplICogMC41KTtcbiAgICAgICN7JGdsb2JhbC1yaWdodH06IDFyZW07XG4gICAgfVxuICB9XG5cbiAgJi5hbGlnbi1sZWZ0IC5pcy1hY2NvcmRpb24tc3VibWVudS1wYXJlbnQgPiBhOjphZnRlciB7XG4gICAgcmlnaHQ6IDFyZW07XG4gICAgbGVmdDogYXV0bztcbiAgfVxuXG4gICYuYWxpZ24tcmlnaHQgLmlzLWFjY29yZGlvbi1zdWJtZW51LXBhcmVudCA+IGE6OmFmdGVyIHtcbiAgICByaWdodDogYXV0bztcbiAgICBsZWZ0OiAxcmVtO1xuICB9XG59XG5AbWl4aW4gZm91bmRhdGlvbi1hY2NvcmRpb24tbWVudSB7XG5cbiAgLmFjY29yZGlvbi1tZW51IHtcbiAgICBAaWYgJGFjY29yZGlvbm1lbnUtYm9yZGVyIHtcbiAgICAgIGJvcmRlci1ib3R0b206ICRhY2NvcmRpb25tZW51LWJvcmRlcjtcbiAgICB9XG5cbiAgICBsaSB7XG4gICAgICBAaWYgJGFjY29yZGlvbm1lbnUtYm9yZGVyIHtcbiAgICAgICAgYm9yZGVyLXRvcDogJGFjY29yZGlvbm1lbnUtYm9yZGVyO1xuICAgICAgICBib3JkZXItcmlnaHQ6ICRhY2NvcmRpb25tZW51LWJvcmRlcjtcbiAgICAgICAgYm9yZGVyLWxlZnQ6ICRhY2NvcmRpb25tZW51LWJvcmRlcjtcbiAgICAgIH1cbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIGEge1xuICAgICAgQGlmICRhY2NvcmRpb25tZW51LWl0ZW0tYmFja2dyb3VuZCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRhY2NvcmRpb25tZW51LWl0ZW0tYmFja2dyb3VuZDtcbiAgICAgIH1cbiAgICAgIHBhZGRpbmc6ICRhY2NvcmRpb25tZW51LXBhZGRpbmc7XG4gICAgfVxuXG4gICAgLmlzLWFjY29yZGlvbi1zdWJtZW51IGEge1xuICAgICAgcGFkZGluZzogJGFjY29yZGlvbm1lbnUtc3VibWVudS1wYWRkaW5nO1xuICAgIH1cblxuICAgIC5uZXN0ZWQuaXMtYWNjb3JkaW9uLXN1Ym1lbnUge1xuICAgICAgQGluY2x1ZGUgbWVudS1uZXN0ZWQoJGFjY29yZGlvbm1lbnUtbmVzdGVkLW1hcmdpbik7XG4gICAgfVxuXG4gICAgJi5hbGlnbi0jeyRnbG9iYWwtcmlnaHR9IHtcbiAgICAgIC5uZXN0ZWQuaXMtYWNjb3JkaW9uLXN1Ym1lbnUge1xuICAgICAgICBAaW5jbHVkZSBtZW51LW5lc3RlZCgkYWNjb3JkaW9ubWVudS1uZXN0ZWQtbWFyZ2luLCByaWdodCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRhY2NvcmRpb25tZW51LWFycm93cyB7XG4gICAgICBAaW5jbHVkZSB6Zi1hY2NvcmRpb24tbWVudS1sZWZ0LXJpZ2h0LWFycm93cztcblxuICAgICAgLmlzLWFjY29yZGlvbi1zdWJtZW51LXBhcmVudFthcmlhLWV4cGFuZGVkPSd0cnVlJ10gPiBhOjphZnRlciB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmlzLWFjY29yZGlvbi1zdWJtZW51IGxpIHtcbiAgICBAaWYgJGFjY29yZGlvbm1lbnUtYm9yZGVyIHtcbiAgICAgIGJvcmRlci1yaWdodDogMDtcbiAgICAgIGJvcmRlci1sZWZ0OiAwO1xuICAgIH1cbiAgfVxuXG4gIC5pcy1hY2NvcmRpb24tc3VibWVudS1wYXJlbnQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gIC5oYXMtc3VibWVudS10b2dnbGUgPiBhIHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtd2lkdGg7XG4gIH1cblxuICAvLyBTdWJtZW51IHRvZ2dsZVxuICAuc3VibWVudS10b2dnbGUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgI3skZ2xvYmFsLXJpZ2h0fTogMDtcblxuICAgIHdpZHRoOiAkYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS13aWR0aDtcbiAgICBoZWlnaHQ6ICRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLWhlaWdodDtcblxuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgIGJvcmRlci0jeyRnbG9iYWwtbGVmdH06ICRhY2NvcmRpb24tc3VibWVudS10b2dnbGUtYm9yZGVyO1xuXG4gICAgQGlmICRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLWJhY2tncm91bmQge1xuICAgICAgYmFja2dyb3VuZDogJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICAvLyBBZGQgdGhlIGFycm93IHRvIHRoZSB0b2dnbGVcbiAgICAmOjphZnRlciB7XG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoNnB4LCAkYWNjb3JkaW9ubWVudS1hcnJvdy1jb2xvciwgZG93bik7XG5cbiAgICAgIHRvcDogMDtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIG1hcmdpbjogYXV0bztcbiAgICB9XG4gIH1cblxuICAvLyBSb3RhdGUgdGhlIGFycm93IHdoZW4gbWVudSBpcyBvcGVuXG4gIC5zdWJtZW51LXRvZ2dsZVthcmlhLWV4cGFuZGVkPSd0cnVlJ106OmFmdGVyIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgtMSk7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTtcbiAgfVxuXG4gIC5zdWJtZW51LXRvZ2dsZS10ZXh0IHtcbiAgICBAaW5jbHVkZSBlbGVtZW50LWludmlzaWJsZTtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGRyaWxsZG93blxuLy8vL1xuXG4vLy8gVHJhbnNpdGlvbiBwcm9wZXJ0eSB0byB1c2UgZm9yIGFuaW1hdGluZyBtZW51cy5cbi8vLyBAdHlwZSBUcmFuc2l0aW9uXG4kZHJpbGxkb3duLXRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE1cyBsaW5lYXIgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIGFycm93cyB0byBkcmlsbGRvd24gaXRlbXMgd2l0aCBzdWJtZW51cywgYXMgd2VsbCBhcyB0aGUgYmFjayBidXR0b24uXG4vLy8gQHR5cGUgQm9vbGVhblxuJGRyaWxsZG93bi1hcnJvd3M6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGRyaWxsZG93biBtZW51IGl0ZW0gcGFkZGluZy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkcmlsbGRvd24tcGFkZGluZzogJGdsb2JhbC1tZW51LXBhZGRpbmcgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGRyaWxsZG93biBtZW51IG5lc3RlZCBtYXJnaW5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkcmlsbGRvd24tbmVzdGVkLW1hcmdpbjogMCAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIGRyaWxsZG93biB0b3AgbGV2ZWwgaXRlbXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRkcmlsbGRvd24tYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcmlsbGRvd24gbWVudSBpdGVtIHBhZGRpbmcgaW4gdGhlIHN1Ym1lbnUuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZHJpbGxkb3duLXN1Ym1lbnUtcGFkZGluZzogJGRyaWxsZG93bi1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgZHJpbGxkb3duIHN1Ym1lbnVzLlxuLy8vIEB0eXBlIENvbG9yXG4kZHJpbGxkb3duLXN1Ym1lbnUtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcmlsbGRvd24gYXJyb3cgY29sb3IgaWYgYXJyb3cgaXMgdXNlZC5cbi8vLyBAdHlwZSBDb2xvclxuJGRyaWxsZG93bi1hcnJvdy1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGRyaWxsZG93biBhcnJvdyBzaXplIGlmIGFycm93IGlzIHVzZWQuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kZHJpbGxkb3duLWFycm93LXNpemU6IDZweCAhZGVmYXVsdDtcblxuQG1peGluIHpmLWRyaWxsZG93bi1sZWZ0LXJpZ2h0LWFycm93cyB7XG4gIC5pcy1kcmlsbGRvd24tc3VibWVudS1wYXJlbnQgPiBhIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmOjphZnRlciB7XG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJGRyaWxsZG93bi1hcnJvdy1zaXplLCAkZHJpbGxkb3duLWFycm93LWNvbG9yLCAkZ2xvYmFsLXJpZ2h0KTtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgbWFyZ2luLXRvcDogLTEgKiAkZHJpbGxkb3duLWFycm93LXNpemU7XG4gICAgICAjeyRnbG9iYWwtcmlnaHR9OiAxcmVtO1xuICAgIH1cbiAgfVxuXG4gICYuYWxpZ24tbGVmdCAuaXMtZHJpbGxkb3duLXN1Ym1lbnUtcGFyZW50ID4gYTo6YWZ0ZXIge1xuICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkZHJvcGRvd25tZW51LWFycm93LXNpemUsICRkcm9wZG93bm1lbnUtYXJyb3ctY29sb3IsIHJpZ2h0KTtcbiAgICByaWdodDogMXJlbTtcbiAgICBsZWZ0OiBhdXRvO1xuICB9XG5cbiAgJi5hbGlnbi1yaWdodCAuaXMtZHJpbGxkb3duLXN1Ym1lbnUtcGFyZW50ID4gYTo6YWZ0ZXIge1xuICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkZHJvcGRvd25tZW51LWFycm93LXNpemUsICRkcm9wZG93bm1lbnUtYXJyb3ctY29sb3IsIGxlZnQpO1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGxlZnQ6IDFyZW07XG4gIH1cblxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1kcmlsbGRvd24tbWVudSB7XG4gIC8vIEFwcGxpZWQgdG8gdGhlIE1lbnUgY29udGFpbmVyXG4gIC5pcy1kcmlsbGRvd24ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgbGkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgJi5hbmltYXRlLWhlaWdodCB7XG4gICAgICB0cmFuc2l0aW9uOiBoZWlnaHQgMC41cztcbiAgICB9XG4gIH1cblxuICAvLyBUaGUgdG9wIGxldmVsIDx1bD5cbiAgLmRyaWxsZG93biB7XG4gICAgYSB7XG4gICAgICBwYWRkaW5nOiAkZHJpbGxkb3duLXBhZGRpbmc7XG4gICAgICBiYWNrZ3JvdW5kOiAkZHJpbGxkb3duLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgLy8gQXBwbGllZCB0byBzdWJtZW51IDx1bD5zXG4gICAgLmlzLWRyaWxsZG93bi1zdWJtZW51IHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgICN7JGdsb2JhbC1sZWZ0fTogMTAwJTtcbiAgICAgIHotaW5kZXg6IC0xO1xuXG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGJhY2tncm91bmQ6ICRkcmlsbGRvd24tc3VibWVudS1iYWNrZ3JvdW5kO1xuICAgICAgdHJhbnNpdGlvbjogJGRyaWxsZG93bi10cmFuc2l0aW9uO1xuXG4gICAgICAmLmlzLWFjdGl2ZSB7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBsdHIsIC0xMDAlLCAxMDAlKSk7XG4gICAgICB9XG5cbiAgICAgICYuaXMtY2xvc2luZyB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWChpZigkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IGx0ciwgMTAwJSwgLTEwMCUpKTtcbiAgICAgIH1cblxuICAgICAgLy8gU3VibWVudSBpdGVtIHBhZGRpbmdcbiAgICAgIGEge1xuICAgICAgICBwYWRkaW5nOiAkZHJpbGxkb3duLXN1Ym1lbnUtcGFkZGluZztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubmVzdGVkLmlzLWRyaWxsZG93bi1zdWJtZW51IHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtbmVzdGVkKCRkcmlsbGRvd24tbmVzdGVkLW1hcmdpbik7XG4gICAgfVxuXG4gICAgLmRyaWxsZG93bi1zdWJtZW51LWNvdmVyLXByZXZpb3VzIHtcbiAgICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgfVxuXG4gICAgQGlmICRkcmlsbGRvd24tYXJyb3dzIHtcbiAgICAgIEBpbmNsdWRlIHpmLWRyaWxsZG93bi1sZWZ0LXJpZ2h0LWFycm93cztcblxuICAgICAgLmpzLWRyaWxsZG93bi1iYWNrID4gYTo6YmVmb3JlIHtcbiAgICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRkcmlsbGRvd24tYXJyb3ctc2l6ZSwgJGRyaWxsZG93bi1hcnJvdy1jb2xvciwgJGdsb2JhbC1sZWZ0KTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMC43NXJlbTsgLy8gQ3JlYXRlcyBzcGFjZSBiZXR3ZWVuIHRoZSBhcnJvdyBhbmQgdGhlIHRleHRcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBkcm9wZG93bi1tZW51XG4vLy8vXG5cbi8vLyBFbmFibGVzIGFycm93cyBmb3IgaXRlbXMgd2l0aCBkcm9wZG93biBtZW51cy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kZHJvcGRvd25tZW51LWFycm93czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIFNldHMgZHJvcGRvd24gbWVudSBhcnJvdyBjb2xvciBpZiBhcnJvdyBpcyB1c2VkLlxuLy8vIEB0eXBlIENvbG9yXG4kZHJvcGRvd25tZW51LWFycm93LWNvbG9yOiAkYW5jaG9yLWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcm9wZG93biBtZW51IGFycm93IHNpemUgaWYgYXJyb3cgaXMgdXNlZC5cbi8vLyBAdHlwZSBMZW5ndGhcbiRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZTogNnB4ICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcm9wZG93biBtZW51IGFycm93IHBhZGRpbmcgZm9yIGFsaWduaW5nIHRoZSBhcnJvdyBjb3JyZWN0bHkuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kZHJvcGRvd25tZW51LWFycm93LXBhZGRpbmc6IDEuNXJlbSAhZGVmYXVsdDtcblxuLy8vIE1pbmltdW0gd2lkdGggb2YgZHJvcGRvd24gc3ViLW1lbnVzLlxuLy8vIEB0eXBlIExlbmd0aFxuJGRyb3Bkb3dubWVudS1taW4td2lkdGg6IDIwMHB4ICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgdG9wIGxldmVsIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kZHJvcGRvd25tZW51LWJhY2tncm91bmQ6IG51bGwgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBkcm9wZG93bnMuXG4vLy8gQHR5cGUgQ29sb3JcbiRkcm9wZG93bm1lbnUtc3VibWVudS1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGZvciB0b3AgbGV2ZWwgaXRlbXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZHJvcGRvd25tZW51LXBhZGRpbmc6ICRnbG9iYWwtbWVudS1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcm9wZG93biBtZW51IG5lc3RlZCBtYXJnaW5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkcm9wZG93bm1lbnUtbmVzdGVkLW1hcmdpbjogMCAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgZm9yIHN1Yi1tZW51IGl0ZW1zLlxuLy8vIEB0eXBlIE51bWJlclxuJGRyb3Bkb3dubWVudS1zdWJtZW51LXBhZGRpbmc6ICRkcm9wZG93bm1lbnUtcGFkZGluZyAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBmb3IgZHJvcGRvd24gc3ViLW1lbnVzLlxuLy8vIEB0eXBlIExpc3RcbiRkcm9wZG93bm1lbnUtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLyBCb3JkZXIgd2lkdGggZm9yIGRyb3Bkb3duIHN1Yi1tZW51cy5cbi8vIFVzZWQgdG8gYWRqdXN0IHRvcCBtYXJnaW4gb2YgYSBzdWItbWVudSBpZiBhIGJvcmRlciBpcyB1c2VkLlxuLy8gQHR5cGUgTGVuZ3RoXG4kZHJvcGRvd25tZW51LWJvcmRlci13aWR0aDogbnRoKCRkcm9wZG93bm1lbnUtYm9yZGVyLCAxKTtcblxuLy8vIFRleHQgY29sb3Igb2YgYW4gYWN0aXZlIGRyb3Bkb3duIG1lbnUgaXRlbS4gRXhwbGljaXQgb3ZlcnJpZGUgZm9yIG1lbnUgZGVmYXVsdHNcbi8vLyBAdHlwZSBDb2xvclxuJGRyb3Bkb3duLW1lbnUtaXRlbS1jb2xvci1hY3RpdmU6IGdldC1jb2xvcihwcmltYXJ5KSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYW4gYWN0aXZlIGRyb3Bkb3duIG1lbnUgaXRlbS4gRXhwbGljaXQgb3ZlcnJpZGUgZm9yIG1lbnUgZGVmYXVsdHNcbi8vLyBAdHlwZSBDb2xvclxuJGRyb3Bkb3duLW1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZTogdHJhbnNwYXJlbnQgIWRlZmF1bHQ7XG5cbkBtaXhpbiB6Zi1kcm9wZG93bi1sZWZ0LXJpZ2h0LWFycm93cyB7XG4gID4gYTo6YWZ0ZXIge1xuICAgICN7JGdsb2JhbC1yaWdodH06IDE0cHg7XG4gIH1cblxuICAmLm9wZW5zLWxlZnQgPiBhOjphZnRlciB7XG4gICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZSwgJGRyb3Bkb3dubWVudS1hcnJvdy1jb2xvciwgbGVmdCk7XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgbGVmdDogNXB4O1xuICB9XG5cbiAgJi5vcGVucy1yaWdodCA+IGE6OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplLCAkZHJvcGRvd25tZW51LWFycm93LWNvbG9yLCByaWdodCk7XG4gIH1cbn1cblxuQG1peGluIGRyb3Bkb3duLW1lbnUtZGlyZWN0aW9uKCRkaXI6IGhvcml6b250YWwpIHtcbiAgQGlmICRkaXIgPT0gaG9yaXpvbnRhbCB7XG4gICAgPiBsaS5vcGVucy1sZWZ0IHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgICA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgICAgdG9wOiAxMDAlO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgbGVmdDogYXV0bztcbiAgICAgIH1cbiAgICB9XG5cbiAgICA+IGxpLm9wZW5zLXJpZ2h0IHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgICA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgICAgdG9wOiAxMDAlO1xuICAgICAgICByaWdodDogYXV0bztcbiAgICAgICAgbGVmdDogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJGRyb3Bkb3dubWVudS1hcnJvd3Mge1xuICAgICAgPiBsaS5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCA+IGEgeyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBwYWRkaW5nLSN7JGdsb2JhbC1yaWdodH06ICRkcm9wZG93bm1lbnUtYXJyb3ctcGFkZGluZztcbiAgICAgIH1cblxuICAgICAgPiBsaS5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCA+IGE6OmFmdGVyIHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkZHJvcGRvd25tZW51LWFycm93LXNpemUsICRkcm9wZG93bm1lbnUtYXJyb3ctY29sb3IsIGRvd24pO1xuICAgICAgICAjeyRnbG9iYWwtcmlnaHR9OiA1cHg7XG4gICAgICAgICN7JGdsb2JhbC1sZWZ0fTogYXV0bztcbiAgICAgICAgbWFyZ2luLXRvcDogLTEgKiAoJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplICogMC41KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGRpciA9PSB2ZXJ0aWNhbCB7XG4gICAgPiBsaSB7XG4gICAgICAuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgICAgIHRvcDogMDtcbiAgICAgIH1cblxuICAgICAgJi5vcGVucy1sZWZ0IHtcbiAgICAgICAgPiAuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgIHJpZ2h0OiAxMDAlO1xuICAgICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5vcGVucy1yaWdodCB7XG4gICAgICAgID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgICAgIGxlZnQ6IDEwMCU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGlmICRkcm9wZG93bm1lbnUtYXJyb3dzIHtcbiAgICAgICAgQGluY2x1ZGUgemYtZHJvcGRvd24tbGVmdC1yaWdodC1hcnJvd3M7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiAnVGhlIGRpcmVjdGlvbiB1c2VkIGZvciBkcm9wZG93bi1tZW51LWRpcmVjdGlvbigpIG11c3QgYmUgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbC4nO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWRyb3Bkb3duLW1lbnUge1xuICAuZHJvcGRvd24ubWVudSB7XG4gICAgQGluY2x1ZGUgZHJvcGRvd24tbWVudS1kaXJlY3Rpb24oaG9yaXpvbnRhbCk7XG5cbiAgICBhIHtcbiAgICAgIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgICB9XG5cbiAgICAvLyBUb3AtbGV2ZWwgaXRlbVxuICAgID4gbGkgPiBhIHtcbiAgICAgIGJhY2tncm91bmQ6ICRkcm9wZG93bm1lbnUtYmFja2dyb3VuZDtcbiAgICAgIHBhZGRpbmc6ICRkcm9wZG93bm1lbnUtcGFkZGluZztcbiAgICB9XG5cbiAgICAvLyBUb3AtbGV2ZWwgaXRlbSBhY3RpdmUgc3RhdGVcbiAgICA+IGxpLmlzLWFjdGl2ZSA+IGEge1xuICAgICAgYmFja2dyb3VuZDogJGRyb3Bkb3duLW1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZTtcbiAgICAgIGNvbG9yOiAkZHJvcGRvd24tbWVudS1pdGVtLWNvbG9yLWFjdGl2ZTtcbiAgICB9XG5cbiAgICAubm8tanMgJiB1bCB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC5uZXN0ZWQuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgICBAaW5jbHVkZSBtZW51LW5lc3RlZCgkZHJvcGRvd25tZW51LW5lc3RlZC1tYXJnaW4pO1xuICAgIH1cblxuICAgICYudmVydGljYWwge1xuICAgICAgQGluY2x1ZGUgZHJvcGRvd24tbWVudS1kaXJlY3Rpb24odmVydGljYWwpO1xuICAgIH1cblxuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICAgICYuI3skc2l6ZX0taG9yaXpvbnRhbCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBkcm9wZG93bi1tZW51LWRpcmVjdGlvbihob3Jpem9udGFsKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmLiN7JHNpemV9LXZlcnRpY2FsIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGRyb3Bkb3duLW1lbnUtZGlyZWN0aW9uKHZlcnRpY2FsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmFsaWduLXJpZ2h0IHtcbiAgICAgIC5pcy1kcm9wZG93bi1zdWJtZW51LmZpcnN0LXN1YiB7XG4gICAgICAgIHRvcDogMTAwJTtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmlzLWRyb3Bkb3duLW1lbnUudmVydGljYWwge1xuICAgIHdpZHRoOiAxMDBweDtcblxuICAgICYuYWxpZ24tcmlnaHQge1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgYTo6YWZ0ZXIge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICAjeyRnbG9iYWwtcmlnaHR9OiA1cHg7XG4gICAgICAjeyRnbG9iYWwtbGVmdH06IGF1dG87XG4gICAgICBtYXJnaW4tdG9wOiAtMSAqICRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZTtcbiAgICB9XG5cbiAgICAmLm9wZW5zLWlubmVyID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuXG4gICAgICB0b3A6IDEwMCU7XG4gICAgICBAaWYgJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSAncnRsJyB7XG4gICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgfVxuICAgIH1cblxuICAgICYub3BlbnMtbGVmdCA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgIHJpZ2h0OiAxMDAlO1xuICAgICAgbGVmdDogYXV0bztcbiAgICB9XG5cbiAgICAmLm9wZW5zLXJpZ2h0ID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICBsZWZ0OiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgICN7JGdsb2JhbC1sZWZ0fTogMTAwJTtcbiAgICB6LWluZGV4OiAxO1xuXG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBtaW4td2lkdGg6ICRkcm9wZG93bm1lbnUtbWluLXdpZHRoO1xuXG4gICAgYm9yZGVyOiAkZHJvcGRvd25tZW51LWJvcmRlcjtcbiAgICBiYWNrZ3JvdW5kOiAkZHJvcGRvd25tZW51LXN1Ym1lbnUtYmFja2dyb3VuZDtcblxuICAgIC5kcm9wZG93biAmIGEge1xuICAgICAgcGFkZGluZzogJGRyb3Bkb3dubWVudS1zdWJtZW51LXBhZGRpbmc7XG4gICAgfVxuXG4gICAgLmlzLWRyb3Bkb3duLXN1Ym1lbnUtcGFyZW50IHtcbiAgICAgIEBpZiAkZHJvcGRvd25tZW51LWFycm93cyB7XG4gICAgICAgIEBpbmNsdWRlIHpmLWRyb3Bkb3duLWxlZnQtcmlnaHQtYXJyb3dzO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAodHlwZS1vZigkZHJvcGRvd25tZW51LWJvcmRlci13aWR0aCkgPT0gJ251bWJlcicpIHtcbiAgICAgIC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgICAgbWFyZ2luLXRvcDogKC0kZHJvcGRvd25tZW51LWJvcmRlci13aWR0aCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgPiBsaSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAvLyBbVE9ET10gQ3V0IGJhY2sgc3BlY2lmaWNpdHlcbiAgICAvLyY6bm90KC5qcy1kcm9wZG93bi1ub2hvdmVyKSA+IC5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudDpob3ZlciA+ICYsIC8vIHdoeSBpcyB0aGlzIGxpbmUgbmVlZGVkPyBPcGVuaW5nIGlzIGhhbmRsZWQgYnkgSlMgYW5kIHRoaXMgY2F1c2VzIHNvbWUgdWdseSBmbGlja2VyaW5nIHdoZW4gdGhlIHN1YiBpcyByZS1wb3NpdGlvbmVkIGF1dG9tYXRpY2FsbHkuLi5cbiAgICAmLmpzLWRyb3Bkb3duLWFjdGl2ZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBvZmYtY2FudmFzXG4vLy8vXG5cbi8vLyBXaWR0aCBtYXAgb2YgYSBsZWZ0L3JpZ2h0IG9mZi1jYW52YXMgcGFuZWwuXG4vLy8gQHR5cGUgTWFwXG4kb2ZmY2FudmFzLXNpemVzOiAoXG4gIHNtYWxsOiAyNTBweCxcbikgIWRlZmF1bHQ7XG5cbi8vLyBIZWlnaHQgbWFwIG9mIGEgdG9wL2JvdHRvbSBvZmYtY2FudmFzIHBhbmVsLlxuLy8vIEB0eXBlIE1hcFxuJG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplczogKFxuICBzbWFsbDogMjUwcHgsXG4pICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBhbiBvZmYtY2FudmFzIHBhbmVsLlxuLy8vIEB0eXBlIENvbG9yXG4kb2ZmY2FudmFzLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQm94IHNoYWRvdyBmb3IgdGhlIG9mZi1jYW52YXMgb3ZlcmxhcCBwYW5lbC5cbi8vLyBAdHlwZSBTaGFkb3dcbiRvZmZjYW52YXMtc2hhZG93OiAwIDAgMTBweCByZ2JhKCRibGFjaywgMC43KSAhZGVmYXVsdDtcblxuLy8vIElubmVyIGJveCBzaGFkb3cgc2l6ZSBmb3IgdGhlIG9mZi1jYW52YXMgcHVzaCBwYW5lbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemU6IDIwcHggIWRlZmF1bHQ7XG5cbi8vLyBJbm5lciBib3ggc2hhZG93IGNvbG9yIGZvciB0aGUgb2ZmLWNhbnZhcyBwdXNoIHBhbmVsLlxuLy8vIEB0eXBlIENvbG9yXG4kb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1jb2xvcjogcmdiYSgkYmxhY2ssIDAuMjUpICFkZWZhdWx0O1xuXG4vLy8gWi1pbmRleCBvZiBhbiBvZmYtY2FudmFzIGNvbnRlbnQgb3ZlcmxheS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvZmZjYW52YXMtb3ZlcmxheS16aW5kZXg6IDExICFkZWZhdWx0O1xuXG4vLy8gWi1pbmRleCBvZiBhbiBvZmYtY2FudmFzIHBhbmVsIHdpdGggdGhlIGBwdXNoYCB0cmFuc2l0aW9uLlxuLy8vIEB0eXBlIE51bWJlclxuJG9mZmNhbnZhcy1wdXNoLXppbmRleDogMTIgIWRlZmF1bHQ7XG5cbi8vLyBaLWluZGV4IG9mIGFuIG9mZi1jYW52YXMgcGFuZWwgd2l0aCB0aGUgYG92ZXJsYXBgIHRyYW5zaXRpb24uXG4vLy8gQHR5cGUgTnVtYmVyXG4kb2ZmY2FudmFzLW92ZXJsYXAtemluZGV4OiAxMyAhZGVmYXVsdDtcblxuLy8vIFotaW5kZXggb2YgYW4gb2ZmLWNhbnZhcyBwYW5lbCB1c2luZyB0aGUgYHJldmVhbC1mb3ItKmAgY2xhc3NlcyBvciBtaXhpbi5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvZmZjYW52YXMtcmV2ZWFsLXppbmRleDogMTIgIWRlZmF1bHQ7XG5cbi8vLyBMZW5ndGggb2YgdGhlIGFuaW1hdGlvbiBvbiBhbiBvZmYtY2FudmFzIHBhbmVsLlxuLy8vIEB0eXBlIE51bWJlclxuJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aDogMC41cyAhZGVmYXVsdDtcblxuLy8vIFRpbWluZyBmdW5jdGlvbiBvZiB0aGUgYW5pbWF0aW9uIG9uIGFuIG9mZi1jYW52YXMgcGFuZWwuXG4vLy8gQHR5cGUgS2V5d29yZFxuJG9mZmNhbnZhcy10cmFuc2l0aW9uLXRpbWluZzogZWFzZSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgYSByZXZlYWxlZCBvZmYtY2FudmFzIHdpbGwgYmUgZml4ZWQtcG9zaXRpb24sIGFuZCBzY3JvbGwgd2l0aCB0aGUgc2NyZWVuLlxuLy8vIEB0eXBlIEJvb2xcbiRvZmZjYW52YXMtZml4ZWQtcmV2ZWFsOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIG92ZXJsYXkgdGhhdCBhcHBlYXJzIHdoZW4gYW4gb2ZmLWNhbnZhcyBwYW5lbCBpcyBvcGVuLlxuLy8vIEB0eXBlIENvbG9yXG4kb2ZmY2FudmFzLWV4aXQtYmFja2dyb3VuZDogcmdiYSgkd2hpdGUsIDAuMjUpICFkZWZhdWx0O1xuXG4vLy8gQ1NTIGNsYXNzIHVzZWQgZm9yIHRoZSBtYWluIGNvbnRlbnQgYXJlYS4gVGhlIG9mZi1jYW52YXMgbWl4aW5zIHVzZSB0aGlzIHRvIHRhcmdldCB0aGUgcGFnZSBjb250ZW50LlxuJG1haW5jb250ZW50LWNsYXNzOiAnb2ZmLWNhbnZhcy1jb250ZW50JyAhZGVmYXVsdDtcblxuLy8vIEFkZHMgYmFzZWxpbmUgc3R5bGVzIGZvciBvZmYtY2FudmFzLiBUaGlzIENTUyBpcyByZXF1aXJlZCB0byBtYWtlIHRoZSBvdGhlciBwaWVjZXMgd29yay5cbkBtaXhpbiBvZmYtY2FudmFzLWJhc2ljcyB7XG5cbiAgLy8vIFRyYW5zZm9ybSBkZXByZWNhdGVkIHNpemUgc2V0dGluZ3MgaW50byBtYXAgJiBzaG93IHdhcm5pbmdcbiAgQGlmIHZhcmlhYmxlLWV4aXN0cyhvZmZjYW52YXMtc2l6ZSkge1xuICAgICRvZmZjYW52YXMtc2l6ZXM6IChzbWFsbDogJG9mZmNhbnZhcy1zaXplLCBtZWRpdW06ICRvZmZjYW52YXMtc2l6ZSkgIWdsb2JhbDtcbiAgICBAd2FybiAnJG9mZmNhbnZhcy1zaXplIGlzIGRlcHJlY2F0ZWQgYW5kIG5vdCB1c2VkIGFueW1vcmUhIFBsZWFzZSB1cGRhdGUgeW91ciBzZXR0aW5ncyBhbmQgdXNlIHRoZSBtYXAgJG9mZmNhbnZhcy1zaXplcyBpbnN0ZWFkJztcbiAgfVxuICBAaWYgdmFyaWFibGUtZXhpc3RzKG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplKSB7XG4gICAgJG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplczogKHNtYWxsOiAkb2ZmY2FudmFzLXZlcnRpY2FsLXNpemUsIG1lZGl1bTogJG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplKSAhZ2xvYmFsO1xuICAgIEB3YXJuICckb2ZmY2FudmFzLXZlcnRpY2FsLXNpemUgaXMgZGVwcmVjYXRlZCBhbmQgbm90IHVzZWQgYW55bW9yZSEgUGxlYXNlIHVwZGF0ZSB5b3VyIHNldHRpbmdzIGFuZCB1c2UgdGhlIG1hcCAkb2ZmY2FudmFzLXZlcnRpY2FsLXNpemVzIGluc3RlYWQnO1xuICB9XG5cbiAgLy8gQ2hlY2tzIHRoZSB6LWluZGV4ZXMgYW5kIGluY3JlYXNlIHRoZW0gZHVlIHRvIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBvdmVybGF5J3Mgei1pbmRleCBpcyBuZXcgc2luY2UgdjYuNCBhbmQgbWF5IGJlIGlkZW50aWNhbCB0byB0aGUgdXNlciBjdXN0b20gc2V0dGluZ3Mgb2YgdGhlIHB1c2ggei1pbmRleC5cbiAgQGlmICRvZmZjYW52YXMtcHVzaC16aW5kZXggPD0gJG9mZmNhbnZhcy1vdmVybGF5LXppbmRleCB7ICRvZmZjYW52YXMtcHVzaC16aW5kZXg6ICRvZmZjYW52YXMtb3ZlcmxheS16aW5kZXggKyAxICFnbG9iYWw7IH1cbiAgQGlmICRvZmZjYW52YXMtb3ZlcmxhcC16aW5kZXggPD0gJG9mZmNhbnZhcy1wdXNoLXppbmRleCB7ICRvZmZjYW52YXMtb3ZlcmxhcC16aW5kZXg6ICRvZmZjYW52YXMtcHVzaC16aW5kZXggKyAxICFnbG9iYWw7IH1cbiAgQGlmICRvZmZjYW52YXMtcmV2ZWFsLXppbmRleCA8PSAkb2ZmY2FudmFzLW92ZXJsYXktemluZGV4IHsgJG9mZmNhbnZhcy1yZXZlYWwtemluZGV4OiAkb2ZmY2FudmFzLW92ZXJsYXktemluZGV4ICsgMSAhZ2xvYmFsOyB9XG5cbiAgLy8gSGlkZXMgb3ZlcmZsb3cgb24gYm9keSB3aGVuIGFuIG9mZi1jYW52YXMgcGFuZWwgaXMgb3Blbi5cbiAgLmlzLW9mZi1jYW52YXMtb3BlbiB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuXG4gIC8vIE9mZi1jYW52YXMgb3ZlcmxheSAoZ2VuZXJhdGVkIGJ5IEphdmFTY3JpcHQpXG4gIC5qcy1vZmYtY2FudmFzLW92ZXJsYXkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB6LWluZGV4OiAkb2ZmY2FudmFzLW92ZXJsYXktemluZGV4O1xuXG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkb2ZmY2FudmFzLXRyYW5zaXRpb24tbGVuZ3RoICRvZmZjYW52YXMtdHJhbnNpdGlvbi10aW1pbmcsIHZpc2liaWxpdHkgJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aCAkb2ZmY2FudmFzLXRyYW5zaXRpb24tdGltaW5nO1xuXG4gICAgYmFja2dyb3VuZDogJG9mZmNhbnZhcy1leGl0LWJhY2tncm91bmQ7XG5cbiAgICBvcGFjaXR5OiAwO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcblxuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAmLmlzLXZpc2libGUge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgfVxuXG4gICAgJi5pcy1jbG9zYWJsZSB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgJi5pcy1vdmVybGF5LWFic29sdXRlIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB9XG5cbiAgICAmLmlzLW92ZXJsYXktZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgIH1cbiAgfVxufVxuXG4vLyBBZGRzIGJhc2ljIHN0eWxlcyBmb3IgYW4gb2ZmLWNhbnZhcyB3cmFwcGVyLlxuQG1peGluIG9mZi1jYW52YXMtd3JhcHBlcigpIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vLy8gQWRkcyBiYXNpYyBzdHlsZXMgZm9yIGFuIG9mZi1jYW52YXMgcGFuZWwuXG5AbWl4aW4gb2ZmLWNhbnZhcy1iYXNlKFxuICAkYmFja2dyb3VuZDogJG9mZmNhbnZhcy1iYWNrZ3JvdW5kLFxuICAkdHJhbnNpdGlvbjogJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aCAkb2ZmY2FudmFzLXRyYW5zaXRpb24tdGltaW5nLFxuICAkZml4ZWQ6IHRydWVcbikge1xuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG5cbiAgQGlmICRmaXhlZCA9PSB0cnVlIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgfVxuXG4gIC8vIFNldCB0aGUgb2ZmLWNhbnZhcyB6LWluZGV4LlxuICB6LWluZGV4OiAkb2ZmY2FudmFzLXB1c2gtemluZGV4O1xuXG4gIC8vIEluY3JlYXNlIENTUyBzcGVjaWZpY2l0eVxuICAmLmlzLXRyYW5zaXRpb24tcHVzaCB7XG4gICAgei1pbmRleDogJG9mZmNhbnZhcy1wdXNoLXppbmRleDtcbiAgfVxuXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAkdHJhbnNpdGlvbjtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuXG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuXG4gIC8vIEhpZGUgaW5hY3RpdmUgb2ZmLWNhbnZhcyB3aXRoaW4gdGhlIGNvbnRlbnQgdGhhdCBoYXZlIHRoZSBzYW1lIHBvc2l0aW9uXG4gICYuaXMtY2xvc2VkIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIH1cblxuICAvLyBPdmVybGFwIG9ubHkgc3R5bGVzLlxuICAmLmlzLXRyYW5zaXRpb24tb3ZlcmxhcCB7XG4gICAgei1pbmRleDogJG9mZmNhbnZhcy1vdmVybGFwLXppbmRleDtcblxuICAgICYuaXMtb3BlbiB7XG4gICAgICBib3gtc2hhZG93OiAkb2ZmY2FudmFzLXNoYWRvdztcbiAgICB9XG4gIH1cblxuICAvLyBTZXRzIHRyYW5zZm9ybSB0byAwIHRvIHNob3cgYW4gb2ZmLWNhbnZhcyBwYW5lbC5cbiAgJi5pcy1vcGVuIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgdG8gcG9zaXRpb24gYW4gb2ZmLWNhbnZhcyBwYW5lbCB0byB0aGUgbGVmdC9yaWdodC90b3AvYm90dG9tLlxuQG1peGluIG9mZi1jYW52YXMtcG9zaXRpb24oXG4gICRwb3NpdGlvbjogbGVmdCxcbiAgJG9yaWVudGF0aW9uOiBob3Jpem9udGFsLFxuICAkc2l6ZXM6IGlmKCRvcmllbnRhdGlvbiA9PSBob3Jpem9udGFsLCAkb2ZmY2FudmFzLXNpemVzLCAkb2ZmY2FudmFzLXZlcnRpY2FsLXNpemVzKVxuKSB7XG4gIEBpZiAkcG9zaXRpb24gPT0gbGVmdCB7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgd2lkdGg6ICRzaXplO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLSRzaXplKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXRzIHRoZSBwb3NpdGlvbiBmb3IgbmVzdGVkIG9mZi1jYW52YXMgZWxlbWVudFxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30gLm9mZi1jYW52YXMucG9zaXRpb24tI3skcG9zaXRpb259IHtcblxuICAgICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLSRzaXplKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJi5pcy10cmFuc2l0aW9uLW92ZXJsYXAuaXMtb3BlbiB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldHMgdGhlIG9wZW4gcG9zaXRpb24gZm9yIHRoZSBjb250ZW50XG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfS5pcy1vcGVuLSN7JHBvc2l0aW9ufSB7XG4gICAgICAmLmhhcy10cmFuc2l0aW9uLXB1c2gge1xuICAgICAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoJHNpemUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gcmlnaHQge1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcblxuICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICB3aWR0aDogJHNpemU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgkc2l6ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2V0cyB0aGUgcG9zaXRpb24gZm9yIG5lc3RlZCBvZmYtY2FudmFzIGVsZW1lbnRcbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9IC5vZmYtY2FudmFzLnBvc2l0aW9uLSN7JHBvc2l0aW9ufSB7XG5cbiAgICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKCRzaXplKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJi5pcy10cmFuc2l0aW9uLW92ZXJsYXAuaXMtb3BlbiB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldHMgdGhlIG9wZW4gcG9zaXRpb24gZm9yIHRoZSBjb250ZW50XG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfS5pcy1vcGVuLSN7JHBvc2l0aW9ufSB7XG4gICAgICAmLmhhcy10cmFuc2l0aW9uLXB1c2gge1xuICAgICAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLSRzaXplKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJHBvc2l0aW9uID09IHRvcCB7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcblxuICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICBoZWlnaHQ6ICRzaXplO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRzaXplKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXRzIHRoZSBwb3NpdGlvbiBmb3IgbmVzdGVkIG9mZi1jYW52YXMgZWxlbWVudFxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30gLm9mZi1jYW52YXMucG9zaXRpb24tI3skcG9zaXRpb259IHtcbiAgICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kc2l6ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICYuaXMtdHJhbnNpdGlvbi1vdmVybGFwLmlzLW9wZW4ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXRzIHRoZSBvcGVuIHBvc2l0aW9uIGZvciB0aGUgY29udGVudFxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30uaXMtb3Blbi0jeyRwb3NpdGlvbn0ge1xuICAgICAgJi5oYXMtdHJhbnNpdGlvbi1wdXNoIHtcbiAgICAgICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKCRzaXplKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJHBvc2l0aW9uID09IGJvdHRvbSB7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcblxuICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICBoZWlnaHQ6ICRzaXplO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoJHNpemUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldHMgdGhlIHBvc2l0aW9uIGZvciBuZXN0ZWQgb2ZmLWNhbnZhcyBlbGVtZW50XG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfSAub2ZmLWNhbnZhcy5wb3NpdGlvbi0jeyRwb3NpdGlvbn0ge1xuICAgICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoJHNpemUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAmLmlzLXRyYW5zaXRpb24tb3ZlcmxhcC5pcy1vcGVuIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2V0cyB0aGUgb3BlbiBwb3NpdGlvbiBmb3IgdGhlIGNvbnRlbnRcbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9LmlzLW9wZW4tI3skcG9zaXRpb259IHtcbiAgICAgICYuaGFzLXRyYW5zaXRpb24tcHVzaCB7XG4gICAgICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtJHNpemUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIElmICRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemUgaXMgc2V0LCBhZGQgaW5uZXIgYm94LXNoYWRvdy5cbiAgLy8gVGhpcyBtaW1pY3MgdGhlIG9mZi1jYW52YXMgcGFuZWwgaGF2aW5nIGEgbG93ZXIgei1pbmRleCwgd2l0aG91dCBoYXZpbmcgdG8gaGF2ZSBvbmUuXG4gIEBpZiAkb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1zaXplIHtcbiAgICAmLmlzLXRyYW5zaXRpb24tcHVzaCB7XG4gICAgICBAaWYgJHBvc2l0aW9uID09IGxlZnQge1xuICAgICAgICBAaW5jbHVkZSBpbm5lci1zaWRlLXNoYWRvdyhyaWdodCwgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctc2l6ZSwgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctY29sb3IpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJHBvc2l0aW9uID09IHJpZ2h0IHtcbiAgICAgICAgQGluY2x1ZGUgaW5uZXItc2lkZS1zaGFkb3cobGVmdCwgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctc2l6ZSwgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctY29sb3IpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJHBvc2l0aW9uID09IHRvcCB7XG4gICAgICAgIEBpbmNsdWRlIGlubmVyLXNpZGUtc2hhZG93KGJvdHRvbSwgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctc2l6ZSwgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctY29sb3IpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJHBvc2l0aW9uID09IGJvdHRvbSB7XG4gICAgICAgIEBpbmNsdWRlIGlubmVyLXNpZGUtc2hhZG93KHRvcCwgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctc2l6ZSwgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctY29sb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG59XG5cbi8vLyBTZXRzIHRoZSBzdHlsZXMgZm9yIHRoZSBjb250ZW50IGNvbnRhaW5lci5cbkBtaXhpbiBvZmYtY2FudmFzLWNvbnRlbnQoKSB7XG4gIHRyYW5zZm9ybTogbm9uZTtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuXG4gIC8vIEJpbmQgdG8gaGFzLXRyYW5zaXRpb24tWCBjbGFzcyB0byBwcmV2ZW50IHRyYW5zaXRpb24gZm9yIHRyYW5zZm9ybTpub25lXG4gICYuaGFzLXRyYW5zaXRpb24tb3ZlcmxhcCxcbiAgJi5oYXMtdHJhbnNpdGlvbi1wdXNoIHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aCAkb2ZmY2FudmFzLXRyYW5zaXRpb24tdGltaW5nO1xuICB9XG5cbiAgLy8gVHJhbnNmb3JtIHNjb3BlIHVudGlsIHRoZSBlbGVtZW50IGlzIGNsb3NlZCAobWFrZXMgc3VyZSB0cmFuc2l0aW9uZW5kIGdldHMgdHJpZ2dlcmVkKVxuICAmLmhhcy10cmFuc2l0aW9uLXB1c2gge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xuICB9XG5cbiAgLy8gQ29uc2lkZXIgZWxlbWVudCAmIGNvbnRlbnQsIG5lc3RlZCBpbiBhbm90aGVyIGNvbnRlbnRcbiAgLm9mZi1jYW52YXMuaXMtb3BlbiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIHRoYXQgcmV2ZWFsIGFuIG9mZi1jYW52YXMgcGFuZWwuXG5AbWl4aW4gb2ZmLWNhbnZhcy1yZXZlYWwoXG4kcG9zaXRpb246IGxlZnQsXG4kemluZGV4OiAkb2ZmY2FudmFzLXJldmVhbC16aW5kZXgsXG4kY29udGVudDogJG1haW5jb250ZW50LWNsYXNzLFxuJGJyZWFrcG9pbnQ6IHNtYWxsXG4pIHtcbiAgdHJhbnNmb3JtOiBub25lO1xuICB6LWluZGV4OiAkemluZGV4O1xuICB0cmFuc2l0aW9uOiBub25lO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXG4gIEBpZiBub3QgJG9mZmNhbnZhcy1maXhlZC1yZXZlYWwge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgfVxuXG4gIC5jbG9zZS1idXR0b24ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAvLyBDb25zaWRlciByZXZlYWxlZCBlbGVtZW50IGlzIG5lc3RlZCBpbiBjb250ZW50XG4gIC4jeyRtYWluY29udGVudC1jbGFzc30gJiB7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG5cbiAgQGF0LXJvb3QgLiN7JGNvbnRlbnR9Lmhhcy1yZXZlYWwtI3skcG9zaXRpb259IHtcbiAgICBtYXJnaW4tI3skcG9zaXRpb259OiAtemYtZ2V0LWJwLXZhbCgkb2ZmY2FudmFzLXNpemVzLCAkYnJlYWtwb2ludCk7XG4gIH1cblxuICAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAocHJpb3IgdG8gdjYuNClcbiAgJiB+IC4jeyRjb250ZW50fSB7XG4gICAgbWFyZ2luLSN7JHBvc2l0aW9ufTogLXpmLWdldC1icC12YWwoJG9mZmNhbnZhcy1zaXplcywgJGJyZWFrcG9pbnQpO1xuICB9XG59XG5cbi8vLyBPdmVycmlkZXMgdGhlIG9mZi1jYW52YXMgc3R5bGVzXG5AbWl4aW4gaW4tY2FudmFzKCkge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICBoZWlnaHQ6IGF1dG87XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIHdpZHRoOiBhdXRvO1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgdHJhbnNpdGlvbjogbm9uZTtcblxuICAvLyBJbmNyZWFzZSBDU1Mgc3BlY2lmaWNpdHlcbiAgJi5wb3NpdGlvbi1sZWZ0LFxuICAmLnBvc2l0aW9uLXJpZ2h0LFxuICAmLnBvc2l0aW9uLXRvcCxcbiAgJi5wb3NpdGlvbi1ib3R0b20ge1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG5cbiAgLmNsb3NlLWJ1dHRvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1vZmYtY2FudmFzIHtcbiAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1iYXNpY3M7XG5cbiAgLy8gT2ZmLWNhbnZhcyB3cmFwcGVyXG4gIC5vZmYtY2FudmFzLXdyYXBwZXIge1xuICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtd3JhcHBlcjtcbiAgfVxuXG4gIC8vIE9mZi1jYW52YXMgY29udGFpbmVyXG4gIC5vZmYtY2FudmFzIHtcbiAgICBAaW5jbHVkZSBvZmYtY2FudmFzLWJhc2U7XG5cbiAgICAvLyBGb3JjZSBwb3NpdGlvbiBhYnNvbHV0ZSBmb3IgbmVzdGVkIG9mZi1jYW52YXMgYmVjYXVzZSBmaXhlZCBkb2Vzbid0IHdvcmsgZm9yIHB1c2ggdHJhbnNpdGlvbiB3aXRoaW4gdGhlIHRyYW5zZm9ybSBzY29wZS5cbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9ICYge1xuICAgICAgLy8gTk9URTogc2luY2Ugb3ZlcmxhcCB0cmFuc2l0aW9uIGlzIGN1cnJlbnRseSBmb3JjZWQgaWYgbmVzdGVkLCB0aGVyZSdzIG5vIG5lZWQgdG8gZm9yY2UgcG9zaXRpb24gYWJzb2x1dGUgdW50aWwgbmVzdGVkIHB1c2ggdHJhbnNpdGlvbiBpcyBzdXBwb3J0ZWQuXG4gICAgICAvLyBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgfVxuICB9XG5cbiAgLy8gT2ZmLWNhbnZhcyBjb250YWluZXIgd2l0aCBhYnNvbHV0ZSBwb3NpdGlvblxuICAub2ZmLWNhbnZhcy1hYnNvbHV0ZSB7XG4gICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1iYXNlKCRmaXhlZDogZmFsc2UpO1xuICB9XG5cbiAgLy8gT2ZmLWNhbnZhcyBwb3NpdGlvbiBjbGFzc2VzXG4gIC5wb3NpdGlvbi1sZWZ0ICAgIHsgQGluY2x1ZGUgb2ZmLWNhbnZhcy1wb3NpdGlvbihsZWZ0LCAgIGhvcml6b250YWwpOyB9XG4gIC5wb3NpdGlvbi1yaWdodCAgIHsgQGluY2x1ZGUgb2ZmLWNhbnZhcy1wb3NpdGlvbihyaWdodCwgIGhvcml6b250YWwpOyB9XG4gIC5wb3NpdGlvbi10b3AgICAgIHsgQGluY2x1ZGUgb2ZmLWNhbnZhcy1wb3NpdGlvbih0b3AsICAgIHZlcnRpY2FsKTsgfVxuICAucG9zaXRpb24tYm90dG9tICB7IEBpbmNsdWRlIG9mZi1jYW52YXMtcG9zaXRpb24oYm90dG9tLCB2ZXJ0aWNhbCk7IH1cblxuICAub2ZmLWNhbnZhcy1jb250ZW50IHtcbiAgICBAaW5jbHVkZSBvZmYtY2FudmFzLWNvbnRlbnQ7XG4gIH1cblxuICAvLyBSZXZlYWwgb2ZmLWNhbnZhcyBwYW5lbCBvbiBsYXJnZXIgc2NyZWVuc1xuICBAZWFjaCAkbmFtZSwgJHZhbHVlIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgIEBpZiAkbmFtZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgIC5wb3NpdGlvbi1sZWZ0LnJldmVhbC1mb3ItI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtcmV2ZWFsKGxlZnQsICRvZmZjYW52YXMtcmV2ZWFsLXppbmRleCwgJG1haW5jb250ZW50LWNsYXNzLCAkbmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICAucG9zaXRpb24tcmlnaHQucmV2ZWFsLWZvci0jeyRuYW1lfSB7XG4gICAgICAgICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1yZXZlYWwocmlnaHQsICRvZmZjYW52YXMtcmV2ZWFsLXppbmRleCwgJG1haW5jb250ZW50LWNsYXNzLCAkbmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICAucG9zaXRpb24tdG9wLnJldmVhbC1mb3ItI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtcmV2ZWFsKHRvcCwgJG9mZmNhbnZhcy1yZXZlYWwtemluZGV4LCAkbWFpbmNvbnRlbnQtY2xhc3MsICRuYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wb3NpdGlvbi1ib3R0b20ucmV2ZWFsLWZvci0jeyRuYW1lfSB7XG4gICAgICAgICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1yZXZlYWwoYm90dG9tLCAkb2ZmY2FudmFzLXJldmVhbC16aW5kZXgsICRtYWluY29udGVudC1jbGFzcywgJG5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTW92ZSBpbi1jYW52YXMgZm9yIGxhcmdlciBzY3JlZW5zXG4gIEBlYWNoICRuYW1lLCAkdmFsdWUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgQGlmICRuYW1lICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgLm9mZi1jYW52YXMuaW4tY2FudmFzLWZvci0jeyRuYW1lfSB7XG4gICAgICAgICAgQGluY2x1ZGUgaW4tY2FudmFzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCByZXZlYWxcbi8vLy9cblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvZiBhIG1vZGFsLlxuLy8vIEB0eXBlIENvbG9yXG4kcmV2ZWFsLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgd2lkdGggb2YgYSBtb2RhbCwgd2l0aCBubyBjbGFzcyBhcHBsaWVkLlxuLy8vIEB0eXBlIE51bWJlclxuJHJldmVhbC13aWR0aDogNjAwcHggIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IG1heGltdW0gd2lkdGggb2YgYSBtb2RhbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXZlYWwtbWF4LXdpZHRoOiAkZ2xvYmFsLXdpZHRoICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGluc2lkZSBhIG1vZGFsLlxuLy8vIEB0eXBlIE51bWJlclxuJHJldmVhbC1wYWRkaW5nOiAkZ2xvYmFsLXBhZGRpbmcgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBhcm91bmQgYSBtb2RhbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXZlYWwtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIG1vZGFsLlxuLy8vIEB0eXBlIE51bWJlclxuJHJldmVhbC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gei1pbmRleCBmb3IgbW9kYWxzLiBUaGUgb3ZlcmxheSB1c2VzIHRoaXMgdmFsdWUsIHdoaWxlIHRoZSBtb2RhbCBpdHNlbGYgdXNlcyB0aGlzIHZhbHVlIHBsdXMgb25lLlxuLy8vIEB0eXBlIE51bWJlclxuJHJldmVhbC16aW5kZXg6IDEwMDUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIG1vZGFsIG92ZXJsYXlzLlxuLy8vIEB0eXBlIENvbG9yXG4kcmV2ZWFsLW92ZXJsYXktYmFja2dyb3VuZDogcmdiYSgkYmxhY2ssIDAuNDUpICFkZWZhdWx0O1xuXG5cbi8vIFBsYWNlaG9sZGVyIHNlbGVjdG9yIGZvciBtZWRpdW0tYW5kLXVwIG1vZGFsc1xuLy8gUHJldmVudHMgZHVwbGljYXRlIENTUyB3aGVuIGRlZmluaW5nIG11bHRpcGxlIFJldmVhbCBzaXplc1xuLy8gVGhpcyBzaG91bGQgYmUgaW4gdGhlIHNhbWUgYnJlYWtwb2ludCB0aGVuIGBAbWl4aW4gcmV2ZWFsLW1vZGFsLXdpZHRoYFxuQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgJXJldmVhbC1jZW50ZXJlZCB7XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgfVxufVxuXG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBtb2RhbCBvdmVybGF5LlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kIFskcmV2ZWFsLW92ZXJsYXktYmFja2dyb3VuZF0gLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBvdmVybGF5LlxuQG1peGluIHJldmVhbC1vdmVybGF5KCRiYWNrZ3JvdW5kOiAkcmV2ZWFsLW92ZXJsYXktYmFja2dyb3VuZCkge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogJHJldmVhbC16aW5kZXg7XG5cbiAgZGlzcGxheTogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi8vLyBBZGRzIGJhc2Ugc3R5bGVzIGZvciBhIG1vZGFsLlxuQG1peGluIHJldmVhbC1tb2RhbC1iYXNlIHtcbiAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICB6LWluZGV4OiAkcmV2ZWFsLXppbmRleCArIDE7XG4gIC8vIFdvcmthcm91bmQgYW5kcm9pZCBicm93c2VyIHotaW5kZXggYnVnXG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcblxuICBkaXNwbGF5OiBub25lO1xuICBwYWRkaW5nOiAkcmV2ZWFsLXBhZGRpbmc7XG5cbiAgYm9yZGVyOiAkcmV2ZWFsLWJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogJHJldmVhbC1yYWRpdXM7XG4gIGJhY2tncm91bmQtY29sb3I6ICRyZXZlYWwtYmFja2dyb3VuZDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgIG1pbi1oZWlnaHQ6IDA7XG4gIH1cblxuICAvLyBNYWtlIHN1cmUgcm93cyBkb24ndCBoYXZlIGEgbWluLXdpZHRoIG9uIHRoZW1cbiAgLmNvbHVtbiB7XG4gICAgbWluLXdpZHRoOiAwO1xuICB9XG5cbiAgLy8gU3RyaXAgbWFyZ2lucyBmcm9tIHRoZSBsYXN0IGl0ZW0gaW4gdGhlIG1vZGFsXG4gID4gOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuLy8vIEFkanVzdHMgdGhlIHdpZHRoIG9mIGEgbW9kYWwuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCAtIFdpZHRoIG9mIHRoZSBtb2RhbC4gR2VuZXJhbGx5IGEgcGVyY2VudGFnZS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1heC13aWR0aCBbJHJldmVhbC1tYXgtd2lkdGhdIC0gTWF4aW11bSB3aWR0aCBvZiB0aGUgbW9kYWwuXG5AbWl4aW4gcmV2ZWFsLW1vZGFsLXdpZHRoKFxuICAkd2lkdGg6ICRyZXZlYWwtd2lkdGgsXG4gICRtYXgtd2lkdGg6ICRyZXZlYWwtbWF4LXdpZHRoXG4pIHtcbiAgLy8gRXh0ZW5kcyBtdXN0IGJlIG1hZGUgb3V0c2lkZSBvZiBicmVha3BvaW50cyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5ld2VyIFNhc3MgdmVyc2lvbnMgKGxpYnNhc3MgdjMuNSlcbiAgQGV4dGVuZCAlcmV2ZWFsLWNlbnRlcmVkO1xuICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgbWF4LXdpZHRoOiAkbWF4LXdpZHRoO1xuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgZnVsbC1zY3JlZW4gbW9kYWwsIHdoaWNoIHN0cmV0Y2hlcyB0aGUgZnVsbCB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSB3aW5kb3cuXG5AbWl4aW4gcmV2ZWFsLW1vZGFsLWZ1bGxzY3JlZW4ge1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG5cbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogbm9uZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtaW4taGVpZ2h0OiAxMDAlO1xuICBtYXJnaW4tbGVmdDogMDtcblxuICBib3JkZXI6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXJldmVhbCB7XG5cbiAgLy8vIERpc2FibGVzIHRoZSBzY3JvbGwgd2hlbiBSZXZlYWwgaXMgc2hvd24gdG8gcHJldmVudCB0aGUgYmFja2dyb3VuZCBmcm9tIHNoaWZ0aW5nXG4gIGh0bWwuaXMtcmV2ZWFsLW9wZW4ge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBvdmVyZmxvdy15OiBoaWRkZW47XG5cbiAgICAmLnpmLWhhcy1zY3JvbGwge1xuICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICAgIH1cblxuICAgIGJvZHkgeyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcbiAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgICB9XG4gIH1cblxuICAvLyBPdmVybGF5XG4gIC5yZXZlYWwtb3ZlcmxheSB7XG4gICAgQGluY2x1ZGUgcmV2ZWFsLW92ZXJsYXk7XG4gIH1cblxuICAvLyBNb2RhbCBjb250YWluZXJcbiAgLnJldmVhbCB7XG4gICAgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLWJhc2U7XG4gICAgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLXdpZHRoKCRyZXZlYWwtd2lkdGgpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0b3A6IDEwMHB4O1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuXG4gICAgLy8gUmVtb3ZlIHBhZGRpbmdcbiAgICAmLmNvbGxhcHNlIHtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxuXG4gICAgLy8gU2l6aW5nIGNsYXNzZXNcbiAgICAmLnRpbnkgIHsgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLXdpZHRoKDMwJSk7IH1cbiAgICAmLnNtYWxsIHsgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLXdpZHRoKDUwJSk7IH1cbiAgICAmLmxhcmdlIHsgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLXdpZHRoKDkwJSk7IH1cblxuICAgIC8vIEZ1bGwtc2NyZWVuIG1vZGVcbiAgICAmLmZ1bGwge1xuICAgICAgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLWZ1bGxzY3JlZW47XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkLXpmLXplcm8tYnJlYWtwb2ludCBvbmx5KSB7XG4gICAgICBAaW5jbHVkZSByZXZlYWwtbW9kYWwtZnVsbHNjcmVlbjtcbiAgICB9XG5cbiAgICAmLndpdGhvdXQtb3ZlcmxheSB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbkBtaXhpbiBmb3VuZGF0aW9uLXN0aWNreSB7XG4gIC5zdGlja3ktY29udGFpbmVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cblxuICAuc3RpY2t5IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG5cbiAgLnN0aWNreS5pcy1zdHVjayB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHotaW5kZXg6IDU7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICAmLmlzLWF0LXRvcCB7XG4gICAgICB0b3A6IDA7XG4gICAgfVxuXG4gICAgJi5pcy1hdC1ib3R0b20ge1xuICAgICAgYm90dG9tOiAwO1xuICAgIH1cbiAgfVxuXG4gIC5zdGlja3kuaXMtYW5jaG9yZWQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICByaWdodDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuXG4gICAgJi5pcy1hdC1ib3R0b20ge1xuICAgICAgYm90dG9tOiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHRpdGxlLWJhclxuLy8vL1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBhIHRpdGxlIGJhci5cbi8vLyBAdHlwZSBDb2xvclxuJHRpdGxlYmFyLWJhY2tncm91bmQ6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIHRleHQgaW5zaWRlIGEgdGl0bGUgYmFyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGl0bGViYXItY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgaW5zaWRlIGEgdGl0bGUgYmFyLlxuLy8vIEB0eXBlIExlbmd0aFxuJHRpdGxlYmFyLXBhZGRpbmc6IDAuNXJlbSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgd2VpZ2h0IG9mIHRleHQgaW5zaWRlIGEgdGl0bGUgYmFyLlxuLy8vIEB0eXBlIFdlaWdodFxuJHRpdGxlYmFyLXRleHQtZm9udC13ZWlnaHQ6IGJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiBtZW51IGljb25zIGluc2lkZSBhIHRpdGxlIGJhci5cbi8vLyBAdHlwZSBDb2xvclxuJHRpdGxlYmFyLWljb24tY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIG1lbnUgaWNvbnMgaW5zaWRlIGEgdGl0bGUgYmFyIG9uIGhvdmVyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGl0bGViYXItaWNvbi1jb2xvci1ob3ZlcjogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gU3BhY2luZyBiZXR3ZWVuIHRoZSBtZW51IGljb24gYW5kIHRleHQgaW5zaWRlIGEgdGl0bGUgYmFyLlxuLy8vIEB0eXBlIExlbmd0aFxuJHRpdGxlYmFyLWljb24tc3BhY2luZzogMC4yNXJlbSAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tdGl0bGUtYmFyIHtcbiAgLnRpdGxlLWJhciB7XG4gICAgcGFkZGluZzogJHRpdGxlYmFyLXBhZGRpbmc7XG4gICAgYmFja2dyb3VuZDogJHRpdGxlYmFyLWJhY2tncm91bmQ7XG4gICAgY29sb3I6ICR0aXRsZWJhci1jb2xvcjtcblxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIH1cblxuICAgIC5tZW51LWljb24ge1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJHRpdGxlYmFyLWljb24tc3BhY2luZztcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkdGl0bGViYXItaWNvbi1zcGFjaW5nO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIC50aXRsZS1iYXItbGVmdCxcbiAgICAudGl0bGUtYmFyLXJpZ2h0IHtcbiAgICAgIGZsZXg6IDEgMSAwcHg7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgemVyby11bml0XG4gICAgfVxuXG4gICAgLnRpdGxlLWJhci1yaWdodCB7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC50aXRsZS1iYXItbGVmdCB7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICB9XG5cbiAgICAudGl0bGUtYmFyLXJpZ2h0IHtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC50aXRsZS1iYXItdGl0bGUge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIGZvbnQtd2VpZ2h0OiAkdGl0bGViYXItdGV4dC1mb250LXdlaWdodDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHRvcC1iYXJcbi8vLy9cblxuLy8vIFBhZGRpbmcgZm9yIHRoZSB0b3AgYmFyLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvcGJhci1wYWRkaW5nOiAwLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgdG9wIGJhci4gVGhpcyBjb2xvciBhbHNvIGNhc2NhZGVzIHRvIG1lbnVzIHdpdGhpbiB0aGUgdG9wIGJhci5cbi8vLyBAdHlwZSBDb2xvclxuJHRvcGJhci1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igc3VibWVudXMgd2l0aGluIHRoZSB0b3AgYmFyLiBVc2VmdWxsIGlmICR0b3BiYXItYmFja2dyb3VuZCBpcyB0cmFuc3BhcmVudC5cbi8vLyBAdHlwZSBDb2xvclxuJHRvcGJhci1zdWJtZW51LWJhY2tncm91bmQ6ICR0b3BiYXItYmFja2dyb3VuZCAhZGVmYXVsdDtcblxuLy8vIFNwYWNpbmcgZm9yIHRoZSB0b3AgYmFyIHRpdGxlLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvcGJhci10aXRsZS1zcGFjaW5nOiAwLjVyZW0gMXJlbSAwLjVyZW0gMCAhZGVmYXVsdDtcblxuLy8vIE1heGltdW0gd2lkdGggb2YgYDxpbnB1dD5gIGVsZW1lbnRzIGluc2lkZSB0aGUgdG9wIGJhci5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b3BiYXItaW5wdXQtd2lkdGg6IDIwMHB4ICFkZWZhdWx0O1xuXG4vLy8gQnJlYWtwb2ludCBhdCB3aGljaCB0b3AgYmFyIHN3aXRjaGVzIGZyb20gbW9iaWxlIHRvIGRlc2t0b3Agdmlldy5cbi8vLyBAdHlwZSBCcmVha3BvaW50XG4kdG9wYmFyLXVuc3RhY2stYnJlYWtwb2ludDogbWVkaXVtICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgdG9wIGJhciBjb250YWluZXIuXG5AbWl4aW4gdG9wLWJhci1jb250YWluZXIge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgfVxuXG4gIHBhZGRpbmc6ICR0b3BiYXItcGFkZGluZztcblxuICAmLFxuICB1bCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHRvcGJhci1iYWNrZ3JvdW5kO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgJHRvcGJhci1iYWNrZ3JvdW5kIGlzIGRpZmZlcm50IGZyb20gJHRvcGJhci1iYWNrZ3JvdW5kLXN1Ym1lbnVcbiAgQGlmICgkdG9wYmFyLWJhY2tncm91bmQgIT0gJHRvcGJhci1zdWJtZW51LWJhY2tncm91bmQpIHtcbiAgICB1bCB1bCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdG9wYmFyLXN1Ym1lbnUtYmFja2dyb3VuZDtcbiAgICB9XG4gIH1cblxuICAvLyBSZXN0cmFpbiB3aWR0aCBvZiBpbnB1dHMgYnkgZGVmYXVsdCB0byBtYWtlIHRoZW0gZWFzaWVyIHRvIGFycmFuZ2VcbiAgaW5wdXQge1xuICAgIG1heC13aWR0aDogJHRvcGJhci1pbnB1dC13aWR0aDtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMXJlbTtcbiAgfVxuXG4gIC8vIFRoZSBhYm92ZSBzdHlsZXMgc2hvdWxkbid0IGFwcGx5IHRvIGlucHV0IGdyb3VwIGZpZWxkc1xuICAuaW5wdXQtZ3JvdXAtZmllbGQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAwO1xuICB9XG5cbiAgaW5wdXQuYnV0dG9uIHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgd2lkdGg6IGF1dG87XG4gIH1cbn1cblxuLy8vIE1ha2VzIHNlY3Rpb25zIG9mIGEgdG9wIGJhciBzdGFjayBvbiB0b3Agb2YgZWFjaCBvdGhlci5cbkBtaXhpbiB0b3AtYmFyLXN0YWNrZWQge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgICAvLyBTdWItc2VjdGlvbnNcbiAgICAudG9wLWJhci1sZWZ0LFxuICAgIC50b3AtYmFyLXJpZ2h0IHtcbiAgICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gU3ViLXNlY3Rpb25zXG4gICAgLnRvcC1iYXItbGVmdCxcbiAgICAudG9wLWJhci1yaWdodCB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cbn1cblxuLy8vIFVuZG9lcyB0aGUgQ1NTIGFwcGxpZWQgYnkgdGhlIGB0b3AtYmFyLXN0YWNrZWQoKWAgbWl4aW4uXG5AbWl4aW4gdG9wLWJhci11bnN0YWNrIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG5cbiAgICAudG9wLWJhci1sZWZ0IHtcbiAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIH1cblxuICAgIC50b3AtYmFyLXJpZ2h0IHtcbiAgICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAudG9wLWJhci1sZWZ0LFxuICAgIC50b3AtYmFyLXJpZ2h0IHtcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi10b3AtYmFyIHtcbiAgLy8gVG9wIGJhciBjb250YWluZXJcbiAgLnRvcC1iYXIge1xuICAgIEBpbmNsdWRlIHRvcC1iYXItY29udGFpbmVyO1xuXG4gICAgLy8gU3RhY2sgb24gc21hbGwgc2NyZWVucyBieSBkZWZhdWx0XG4gICAgQGluY2x1ZGUgdG9wLWJhci1zdGFja2VkO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdG9wYmFyLXVuc3RhY2stYnJlYWtwb2ludCkge1xuICAgICAgQGluY2x1ZGUgdG9wLWJhci11bnN0YWNrO1xuICAgIH1cblxuICAgIC8vIEdlbmVyYXRlIGNsYXNzZXMgZm9yIHN0YWNraW5nIG9uIGVhY2ggc2NyZWVuIHNpemUgKGRlZmluZWQgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcylcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICYuc3RhY2tlZC1mb3ItI3skc2l6ZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUgZG93bikge1xuICAgICAgICAgICAgQGluY2x1ZGUgdG9wLWJhci1zdGFja2VkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFN1Yi1zZWN0aW9uc1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAudG9wLWJhci10aXRsZSB7XG4gICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgIG1hcmdpbjogJHRvcGJhci10aXRsZS1zcGFjaW5nO1xuICAgIH1cblxuICAgIC50b3AtYmFyLWxlZnQsXG4gICAgLnRvcC1iYXItcmlnaHQge1xuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAudG9wLWJhci10aXRsZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICAgIHBhZGRpbmc6ICR0b3BiYXItdGl0bGUtc3BhY2luZztcblxuICAgICAgLm1lbnUtaWNvbiB7XG4gICAgICAgIGJvdHRvbTogMnB4O1xuICAgICAgfVxuICAgIH1cblxuICAgIC50b3AtYmFyLWxlZnQge1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgfVxuXG4gICAgLnRvcC1iYXItcmlnaHQge1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZsb2F0XG4vLy8vXG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZsb2F0LWNsYXNzZXMge1xuICAuZmxvYXQtbGVmdCB7XG4gICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5mbG9hdC1yaWdodCB7XG4gICAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuZmxvYXQtY2VudGVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIH1cblxuICAuY2xlYXJmaXgge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgRmxleGJveCBVdGlsaXRpZXNcbi8vLy9cbi8vXG4vLy8gRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGNvdW50IG9mIHNvdXJjZSBvcmRlcmluZ2Bcbi8vLyBAdHlwZSBOdW1iZXJcbiRmbGV4LXNvdXJjZS1vcmRlcmluZy1jb3VudDogNiAhZGVmYXVsdDtcblxuLy8vIFF1aWNrbHkgZGlzYWJsZS9lbmFibGUgUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgVmFuaWxsYSBGbGV4IEhlbHBlcnMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGZsZXhib3gtcmVzcG9uc2l2ZS1icmVha3BvaW50czogdHJ1ZSAhZGVmYXVsdDtcblxuQG1peGluIGZsZXgtaGVscGVycyB7XG4gIC5mbGV4LWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgZmxleDtcbiAgfVxuXG4gIC5mbGV4LWNoaWxkLWF1dG8ge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICB9XG5cbiAgLmZsZXgtY2hpbGQtZ3JvdyB7XG4gICAgZmxleDogMSAwIGF1dG87XG4gIH1cblxuICAuZmxleC1jaGlsZC1zaHJpbmsge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICB9XG5cbiAgQGVhY2ggJGRpciwgJHByb3AgaW4gJC16Zi1mbGV4LWRpcmVjdGlvbiB7XG4gICAgLmZsZXgtZGlyLSN7JGRpcn0ge1xuICAgICAgQGluY2x1ZGUgZmxleC1kaXJlY3Rpb24oJHByb3ApO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAoJGZsZXhib3gtcmVzcG9uc2l2ZS1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgLiN7JHNpemV9LWZsZXgtY29udGFpbmVyIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZsZXg7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLiN7JHNpemV9LWZsZXgtY2hpbGQtYXV0byB7XG4gICAgICAgICAgICBmbGV4OiAxIDEgYXV0bztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuI3skc2l6ZX0tZmxleC1jaGlsZC1ncm93IHtcbiAgICAgICAgICAgIGZsZXg6IDEgMCBhdXRvO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC4jeyRzaXplfS1mbGV4LWNoaWxkLXNocmluayB7XG4gICAgICAgICAgICBmbGV4OiAwIDEgYXV0bztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAZWFjaCAkZGlyLCAkcHJvcCBpbiAkLXpmLWZsZXgtZGlyZWN0aW9uIHtcbiAgICAgICAgICAgIC4jeyRzaXplfS1mbGV4LWRpci0jeyRkaXJ9IHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgZmxleC1kaXJlY3Rpb24oJHByb3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1mbGV4LWNsYXNzZXMge1xuICAvLyBIb3Jpem9udGFsIGFsaWdubWVudCB1c2luZyBqdXN0aWZ5LWNvbnRlbnRcbiAgQGVhY2ggJGhkaXIsICRwcm9wIGluICQtemYtZmxleC1qdXN0aWZ5IHtcbiAgICAuYWxpZ24tI3skaGRpcn0ge1xuICAgICAgQGluY2x1ZGUgZmxleC1hbGlnbigkeDogJGhkaXIpO1xuICAgIH1cbiAgfVxuICBcbiAgLy8gSG9yaXpvbnRhbCBhbGlnbm1lbnQgU3BlY2lmaWNhbGx5IGZvciBWZXJ0aWNhbCBNZW51XG4gIEBlYWNoICRoZGlyLCAkcHJvcCBpbiBtYXAtcmVtb3ZlKCQtemYtZmxleC1qdXN0aWZ5LCAnanVzdGlmeScsICdzcGFjZWQnKSB7XG4gICAgLmFsaWduLSN7JGhkaXJ9IHtcbiAgICAgICYudmVydGljYWwge1xuICAgICAgICAmLm1lbnUgPiBsaSA+IGEge1xuICAgICAgICAgIEBpbmNsdWRlIGZsZXgtYWxpZ24oJHg6ICRoZGlyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFZlcnRpY2FsIGFsaWdubWVudCB1c2luZyBhbGlnbi1pdGVtcyBhbmQgYWxpZ24tc2VsZlxuICBAZWFjaCAkdmRpciwgJHByb3AgaW4gJC16Zi1mbGV4LWFsaWduIHtcbiAgICAuYWxpZ24tI3skdmRpcn0ge1xuICAgICAgQGluY2x1ZGUgZmxleC1hbGlnbigkeTogJHZkaXIpO1xuICAgIH1cblxuICAgIC5hbGlnbi1zZWxmLSN7JHZkaXJ9IHtcbiAgICAgIEBpbmNsdWRlIGZsZXgtYWxpZ24tc2VsZigkeTogJHZkaXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENlbnRyYWwgYWxpZ25tZW50IG9mIGNvbnRlbnRcbiAgLmFsaWduLWNlbnRlci1taWRkbGUge1xuICAgIEBpbmNsdWRlIGZsZXgtYWxpZ24oJHg6IGNlbnRlciwgJHk6IG1pZGRsZSk7XG4gICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICB9XG5cbiAgLy8gU291cmNlIG9yZGVyaW5nXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQge1xuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGZsZXgtc291cmNlLW9yZGVyaW5nLWNvdW50IHtcbiAgICAgIC4jeyQtemYtc2l6ZX0tb3JkZXItI3skaX0ge1xuICAgICAgICBAaW5jbHVkZSBmbGV4LW9yZGVyKCRpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBWYW5pbGxhIEZsZXhib3ggSGVscGVyc1xuICBAaW5jbHVkZSBmbGV4LWhlbHBlcnM7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLyBIaWRlIGFuIGVsZW1lbnQgYnkgZGVmYXVsdCwgb25seSBkaXNwbGF5aW5nIGl0IGFib3ZlIGEgY2VydGFpbiBzY3JlZW4gc2l6ZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gQnJlYWtwb2ludCB0byB1c2UuICoqTXVzdCBiZSBhIGJyZWFrcG9pbnQgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnRzYC4qKlxuQG1peGluIHNob3ctZm9yKCRzaXplKSB7XG4gICRzaXplOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJHNpemUpO1xuICAvLyBNYXggdmFsdWUgaXMgMC4ycHggdW5kZXIgdGhlIG5leHQgYnJlYWtwb2ludCAoMC4wMiAvIDE2ID0gMC4wMDEyNSkuXG4gIC8vIFVzZSBhIHByZWNpc2lvbiB1bmRlciAxcHggdG8gc3VwcG9ydCBicm93c2VyIHpvb20sIGJ1dCBub3QgdG8gbG93IHRvIGF2b2lkIHJvdW5kaW5nLlxuICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZvdW5kYXRpb24vZm91bmRhdGlvbi1zaXRlcy9pc3N1ZXMvMTEzMTNcbiAgJHNpemU6IC16Zi1icC10by1lbSgkc2l6ZSkgLSAuMDAxMjU7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSBkb3duKSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8vLyBIaWRlIGFuIGVsZW1lbnQgYnkgZGVmYXVsdCwgb25seSBkaXNwbGF5aW5nIGl0IHdpdGhpbiBhIGNlcnRhaW4gYnJlYWtwb2ludC5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gQnJlYWtwb2ludCB0byB1c2UuICoqTXVzdCBiZSBhIGJyZWFrcG9pbnQgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnRzYC4qKlxuQG1peGluIHNob3ctZm9yLW9ubHkoJHNpemUpIHtcbiAgJGxvd2VyLWJvdW5kLXNpemU6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkc2l6ZSk7XG4gICR1cHBlci1ib3VuZC1zaXplOiAtemYtbWFwLW5leHQoJGJyZWFrcG9pbnRzLCAkc2l6ZSk7XG5cbiAgLy8gbW9yZSBvZnRlbiB0aGFuIG5vdCB0aGlzIHdpbGwgYmUgY29ycmVjdCwganVzdCBvbmUgdGltZSByb3VuZCB0aGUgbG9vcCBpdCB3b24ndCBzbyBzZXQgaW4gc2NvcGUgaGVyZVxuICAkbG93ZXItYm91bmQ6IC16Zi1icC10by1lbSgkbG93ZXItYm91bmQtc2l6ZSkgLSAuMDAxMjU7XG4gIC8vIHRlc3QgYWN0dWFsIGxvd2VyLWJvdW5kLXNpemUsIGlmIDAgc2V0IGl0IHRvIDBlbVxuICBAaWYgc3RyaXAtdW5pdCgkbG93ZXItYm91bmQtc2l6ZSkgPT0gMCB7XG4gICAgJGxvd2VyLWJvdW5kOiAtemYtYnAtdG8tZW0oJGxvd2VyLWJvdW5kLXNpemUpO1xuICB9XG5cbiAgQGlmICR1cHBlci1ib3VuZC1zaXplID09IG51bGwge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRsb3dlci1ib3VuZCkge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJHVwcGVyLWJvdW5kOiAtemYtYnAtdG8tZW0oJHVwcGVyLWJvdW5kLXNpemUpO1xuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGxvd2VyLWJvdW5kKSwgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkdXBwZXItYm91bmQpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLy8gU2hvdyBhbiBlbGVtZW50IGJ5IGRlZmF1bHQsIGFuZCBoaWRlIGl0IGFib3ZlIGEgY2VydGFpbiBzY3JlZW4gc2l6ZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gQnJlYWtwb2ludCB0byB1c2UuICoqTXVzdCBiZSBhIGJyZWFrcG9pbnQgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnRzYC4qKlxuQG1peGluIGhpZGUtZm9yKCRzaXplKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLy8vIFNob3cgYW4gZWxlbWVudCBieSBkZWZhdWx0LCBhbmQgaGlkZSBpdCBhYm92ZSBhIGNlcnRhaW4gc2NyZWVuIHNpemUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSAtIEJyZWFrcG9pbnQgdG8gdXNlLiAqKk11c3QgYmUgYSBicmVha3BvaW50IGRlZmluZWQgaW4gYCRicmVha3BvaW50c2AuKipcbkBtaXhpbiBoaWRlLWZvci1vbmx5KCRzaXplKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUgb25seSkge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi12aXNpYmlsaXR5LWNsYXNzZXMge1xuICAvLyBCYXNpYyBoaWRpbmcgY2xhc3Nlc1xuICAuaGlkZSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLmludmlzaWJsZSB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB9XG4gIC52aXNpYmxlIHtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG5cbiAgLy8gUmVzcG9uc2l2ZSB2aXNpYmlsaXR5IGNsYXNzZXNcbiAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgIC5oaWRlLWZvci0jeyRzaXplfSB7XG4gICAgICAgIEBpbmNsdWRlIGhpZGUtZm9yKCRzaXplKTtcbiAgICAgIH1cblxuICAgICAgLnNob3ctZm9yLSN7JHNpemV9IHtcbiAgICAgICAgQGluY2x1ZGUgc2hvdy1mb3IoJHNpemUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5oaWRlLWZvci0jeyRzaXplfS1vbmx5IHtcbiAgICAgIEBpbmNsdWRlIGhpZGUtZm9yLW9ubHkoJHNpemUpO1xuICAgIH1cblxuICAgIC5zaG93LWZvci0jeyRzaXplfS1vbmx5IHtcbiAgICAgIEBpbmNsdWRlIHNob3ctZm9yLW9ubHkoJHNpemUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNjcmVlbiByZWFkZXIgdmlzaWJpbGl0eSBjbGFzc2VzXG4gIC8vIE5lZWQgYSBcImhpZGUtZm9yLXNyXCIgY2xhc3M/IEFkZCBhcmlhLWhpZGRlbj0ndHJ1ZScgdG8gdGhlIGVsZW1lbnRcbiAgLnNob3ctZm9yLXNyLFxuICAuc2hvdy1vbi1mb2N1cyB7XG4gICAgQGluY2x1ZGUgZWxlbWVudC1pbnZpc2libGU7XG4gIH1cblxuICAvLyBPbmx5IGRpc3BsYXkgdGhlIGVsZW1lbnQgd2hlbiBpdCdzIGZvY3VzZWRcbiAgLnNob3ctb24tZm9jdXMge1xuICAgICY6YWN0aXZlLFxuICAgICY6Zm9jdXMge1xuICAgICAgQGluY2x1ZGUgZWxlbWVudC1pbnZpc2libGUtb2ZmO1xuICAgIH1cbiAgfVxuXG4gIC8vIExhbmRzY2FwZSBhbmQgcG9ydHJhaXQgdmlzaWJpbGl0eVxuICAuc2hvdy1mb3ItbGFuZHNjYXBlLFxuICAuaGlkZS1mb3ItcG9ydHJhaXQge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhbmRzY2FwZSkge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHBvcnRyYWl0KSB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgLmhpZGUtZm9yLWxhbmRzY2FwZSxcbiAgLnNob3ctZm9yLXBvcnRyYWl0IHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhbmRzY2FwZSkge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQocG9ydHJhaXQpIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlXG4vLy8vXG5cbi8vIFJlbGF0aW9uYWwgTWl4aW5zXG5AaW1wb3J0ICdyZWxhdGlvbic7XG5cbi8vIEJveCBNaXhpblxuQGltcG9ydCAnYm94JztcblxuLy8gUm90YXRlIE1peGluXG5AaW1wb3J0ICdyb3RhdGUnO1xuXG4vLyBUZXh0IHV0aWxpdGllc1xuQGltcG9ydCAndGV4dC11dGlsaXRpZXMnO1xuXG4vLyBUZXh0IHRyYW5zZm9ybWF0aW9uIGNsYXNzZXNcbkBpbXBvcnQgJ3RleHQtdHJhbnNmb3JtYXRpb24nO1xuXG4vLyBUZXh0IERlY29yYXRpb24gY2xhc3Nlc1xuQGltcG9ydCAndGV4dC1kZWNvcmF0aW9uJztcblxuLy8gRm9udCBTdHlsaW5nXG5AaW1wb3J0ICdmb250LXN0eWxpbmcnO1xuXG4vLyBMaXN0IFN0eWxlIHR5cGVcbkBpbXBvcnQgJ2xpc3Qtc3R5bGUtdHlwZSc7XG5cbi8vIFJvdW5kZWQgVXRpbGl0eVxuQGltcG9ydCAncm91bmRlZCc7XG5cbi8vIEJvcmRlcmVkIFV0aWxpdHlcbkBpbXBvcnQgJ2JvcmRlcmVkJztcblxuLy8gU2hhZG93IFV0aWxpdHlcbkBpbXBvcnQgJ3NoYWRvdyc7XG5cbi8vIEFycm93IFV0aWxpdHlcbkBpbXBvcnQgJ2Fycm93JztcblxuLy8gU2VwYXJhdG9yIFV0aWxpdHlcbkBpbXBvcnQgJ3NlcGFyYXRvcic7XG5cbi8vIE92ZXJmbG93IGhlbHBlciBjbGFzc2VzXG5AaW1wb3J0ICdvdmVyZmxvdyc7XG5cbi8vIERpc3BsYXkgY2xhc3Nlc1xuQGltcG9ydCAnZGlzcGxheSc7XG5cbi8vIFBvc2l0aW9uIEhlbHBlcnNcbkBpbXBvcnQgJ3Bvc2l0aW9uJztcblxuLy8gQm9yZGVyIGJveFxuQGltcG9ydCAnYm9yZGVyLWJveCc7XG5cbi8vIEJvcmRlciBub25lIFV0aWx0eVxuQGltcG9ydCAnYm9yZGVyLW5vbmUnO1xuXG4vLyBTaXppbmcgVXRpbGl0aWVzXG5AaW1wb3J0ICdzaXppbmcnO1xuXG4vLyBTcGFjaW5nIFV0aWxpdGllc1xuQGltcG9ydCAnc3BhY2luZyc7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1jbGFzc2VzIHtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtdGV4dC11dGlsaXRpZXM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLXRleHQtdHJhbnNmb3JtYXRpb247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLXRleHQtZGVjb3JhdGlvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtZm9udC1zdHlsaW5nO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1saXN0LXN0eWxlLXR5cGU7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLXJvdW5kZWQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLWJvcmRlcmVkO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1zaGFkb3c7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLWFycm93O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1zZXBhcmF0b3I7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLW92ZXJmbG93O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1kaXNwbGF5O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1wb3NpdGlvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtYm9yZGVyLWJveDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtYm9yZGVyLW5vbmU7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLXNpemluZztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtc3BhY2luZztcbn1cbiIsIi8vLyBTZWxlY3QgYWxsIGNoaWxkcmVuIGZyb20gdGhlIGZpcnN0IHRvIGAkbnVtYC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bVtdIEZpcnN0IGBuYCBudW1iZXJzIG9mIHRvdGFsIGNoaWxkcmVuIFxuQG1peGluIGZpcnN0KCRudW0pIHtcbiAgQGlmICRudW0gPT0gMSB7XG4gICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICY6bnRoLWNoaWxkKC1uICsgI3skbnVtfSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBTZWxlY3QgdGhlIGZpcnN0IGV4YWN0IGNoaWxkXG5AbWl4aW4gZmlyc3QtY2hpbGQge1xuICAmOmZpcnN0LW9mLXR5cGUge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgYWxsIGNoaWxkcmVuIGZyb20gdGhlIGxhc3QgdG8gYCRudW1gLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtW10gTGFzdCBgbmAgbnVtYmVycyBvZiB0b3RhbCBjaGlsZHJlbiBcbkBtaXhpbiBsYXN0KCRudW0pIHtcbiAgJjpudGgtbGFzdC1jaGlsZCgtbiArICN7JG51bX0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IHRoZSBsYXN0IGV4YWN0IGNoaWxkXG5AbWl4aW4gbGFzdC1jaGlsZCB7XG4gICY6bGFzdC1vZi10eXBlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IGNoaWxkcmVuIGV2ZXJ5IGAkbnVtYC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bVtdIEV2ZXJ5IGBuYCBudW1iZXIgb2YgYWxsIGNoaWxkcmVuXG5AbWl4aW4gZXZlcnkoJG51bSkge1xuICAmOm50aC1jaGlsZCgjeyRudW19bikge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3Qgb25seSB0aGUgZmlyc3QgYW5kIGxhc3QgY2hpbGQuXG5AbWl4aW4gZmlyc3QtbGFzdCB7XG4gICY6Zmlyc3QtY2hpbGQsXG4gICY6bGFzdC1jaGlsZCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBhbGwgY2hpbGRyZW4gYWZ0ZXIgdGhlIGZpcnN0IHRvIGAkbnVtYC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bVtdIEFmdGVyIEZpcnN0IGBuYCBudW1iZXJzIG9mIHRvdGFsIGNoaWxkcmVuIFxuQG1peGluIGFmdGVyLWZpcnN0KCRudW0pIHtcbiAgJjpudGgtY2hpbGQobiArICN7JG51bSArIDF9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBhbGwgY2hpbGRyZW4gYmVmb3JlIGAkbnVtYCBmcm9tIHRoZSBsYXN0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtW10gRnJvbSBMYXN0IGBuYCBudW1iZXJzIG9mIHRvdGFsIGNoaWxkcmVuIFxuQG1peGluIGZyb20tbGFzdCgkbnVtKSB7XG4gICY6bnRoLWxhc3QtY2hpbGQoI3skbnVtfSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgdGhlIGAkbnVtYCBjaGlsZCBmcm9tIHRoZSBmaXJzdCBhbmQgdGhlIGAkbnVtYCBjaGlsZCBmcm9tIHRoZSBsYXN0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtW10gYG5gIG51bWJlciBjYWxsZWQgZnJvbSBmaXJzdCBhbmQgbGFzdCBcbkBtaXhpbiBmcm9tLWZpcnN0LWxhc3QoJG51bSkge1xuICAmOm50aC1jaGlsZCgjeyRudW19KSxcbiAgJjpudGgtbGFzdC1jaGlsZCgjeyRudW19KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBhbGwgY2hpbGRyZW4gYnV0IGAkbnVtYC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bVtdIGBuYCBudW1iZXIgdGhhdCBzaG91bGQgYmUgZXhjbHVkZWQgZnJvbSBhbGwgb3RoZXIgY2hpbGRyZW4gXG5AbWl4aW4gYWxsLWJ1dCgkbnVtKSB7XG4gICY6bm90KDpudGgtY2hpbGQoI3skbnVtfSkpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IGFsbCBjaGlsZHJlbiBiZXR3ZWVuIHRoZSBgJG51bWAgZmlyc3QgYW5kIHRoZSBgJG51bWAgbGFzdC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bVtdIGBuYCBudW1iZXIgZXhjbHVkZWQgZnJvbSBmaXJzdCBhbmQgbGFzdCBmcm9tIGFsbCBvdGhlciBjaGlsZHJlblxuQG1peGluIGFsbC1idXQtZmlyc3QtbGFzdCgkbnVtKSB7XG4gICY6bnRoLWNoaWxkKG4gKyAjeyRudW19KTpudGgtbGFzdC1jaGlsZChuICsgI3skbnVtfSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBXaWxsIG9ubHkgc2VsZWN0IHRoZSBjaGlsZCBpZiBpdCdzIHVuaXF1ZS4gVGhhdCBtZWFucyB0aGF0IGlmIHRoZXJlIGFyZSBhdCBsZWFzdCAyIGNoaWxkcmVuLCB0aGUgc3R5bGUgd2lsbCBub3QgYmUgYXBwbGllZC5cbkBtaXhpbiB1bmlxdWUge1xuICAmOm9ubHktY2hpbGQge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBXaWxsIG9ubHkgc2VsZWN0IGNoaWxkcmVuIGlmIHRoZXkgYXJlIG5vdCB1bmlxdWUuIFRoYXQgbWVhbnMgdGhhdCBpZiB0aGVyZSBhcmUgYXQgbGVhc3QgMiBjaGlsZHJlbiwgdGhlIHN0eWxlIHdpbGwgYmUgYXBwbGllZC5cbkBtaXhpbiBub3QtdW5pcXVlKCkge1xuICAmOm5vdCg6b25seS1jaGlsZCkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgYWxsIGNoaWxkcmVuIGJldHdlZW4gYCRmaXJzdGAgYW5kIGAkbGFzdGAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRmaXJzdFtdIEZpcnN0IGBudGhgIG51bWJlclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGFzdFtdIExhc3QgYG50aGAgbnVtYmVyXG5AbWl4aW4gYmV0d2VlbigkZmlyc3QsICRsYXN0KSB7XG4gICY6bnRoLWNoaWxkKG4gKyAjeyRmaXJzdH0pOm50aC1jaGlsZCgtbiArICN7JGxhc3R9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBhbGwgZXZlbiBjaGlsZHJlbi5cbkBtaXhpbiBldmVuIHtcbiAgJjpudGgtY2hpbGQoZXZlbikge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgYWxsIGV2ZW4gY2hpbGRyZW4gYmV0d2VlbiBgJGZpcnN0YCBhbmQgYCRsYXN0YC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGZpcnN0W10gRmlyc3QgYG50aGAgbnVtYmVyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsYXN0W10gTGFzdCBgbnRoYCBudW1iZXJcbkBtaXhpbiBldmVuLWJldHdlZW4oJGZpcnN0LCAkbGFzdCkge1xuICAmOm50aC1jaGlsZChldmVuKTpudGgtY2hpbGQobiArICN7JGZpcnN0fSk6bnRoLWNoaWxkKC1uICsgI3skbGFzdH0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IGFsbCBvZGQgY2hpbGRyZW4uXG5AbWl4aW4gb2RkIHtcbiAgJjpudGgtY2hpbGQob2RkKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBhbGwgb2RkIGNoaWxkcmVuIGJldHdlZW4gYCRmaXJzdGAgYW5kIGAkbGFzdGAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRmaXJzdFtdIEZpcnN0IGBudGhgIG51bWJlclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGFzdFtdIExhc3QgYG50aGAgbnVtYmVyXG5AbWl4aW4gb2RkLWJldHdlZW4oJGZpcnN0LCAkbGFzdCkge1xuICAmOm50aC1jaGlsZChvZGQpOm50aC1jaGlsZChuICsgI3skZmlyc3R9KTpudGgtY2hpbGQoLW4gKyAjeyRsYXN0fSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgYWxsIGAkbnVtYCBjaGlsZHJlbiBiZXR3ZWVuIGAkZmlyc3RgIGFuZCBgJGxhc3RgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtW10gRXZlcnkgYG5gIG51bWJlciBiZXR3ZWVuIGAkZmlyc3RgIGFuZCBgJGxhc3RgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZmlyc3RbXSBGaXJzdCBgbmAgbnVtYmVyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsYXN0W10gTGFzdCBgbmAgbnVtYmVyXG5AbWl4aW4gbnVtYmVyLWJldHdlZW4oJG51bSwgJGZpcnN0LCAkbGFzdCkge1xuICAmOm50aC1jaGlsZCgjeyRudW19bik6bnRoLWNoaWxkKG4gKyAjeyRmaXJzdH0pOm50aC1jaGlsZCgtbiArICN7JGxhc3R9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtYm94XG4vLy8vXG5cbi8vLyBCb3ggTWl4aW46IEVhc2lseSBjcmVhdGUgYSBzcXVhcmUsIHJlY3RhbmdsZSBvciBhIGNpcmNsZVxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGhbXSBXaWR0aCBvZiB0aGUgYm94XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRoZWlnaHRbJHdpZHRoXSBIZWlnaHQgb2YgdGhlIGJveCwgZGVmYXVsdHMgdG8gYCR3aWR0aGAgdG8gZWFzaWx5IG1ha2UgYSBzcXVhcmVcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRjaXJjbGVbZmFsc2VdIE1ha2VzIHRoZSBib3ggYSBjaXJjbGUsIGJ5IGRlZmF1bHQgYGZhbHNlYC5cbkBtaXhpbiBib3goXG4gICR3aWR0aCwgXG4gICRoZWlnaHQ6ICR3aWR0aCwgXG4gICRjaXJjbGU6IGZhbHNlXG4pIHtcbiAgd2lkdGg6ICR3aWR0aDtcbiAgaGVpZ2h0OiAkaGVpZ2h0O1xuICBAaWYgJGNpcmNsZSB7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlICFpbXBvcnRhbnQ7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtcm90YXRlXG4vLy8vXG5cbi8vLyBSb3RhdGUgTWl4aW46IFJvdGF0ZSBhbiBlbGVtZW50IHRvIGEgY2VydGFpbiBkZWdcbi8vLyBAcGFyYW0ge051bWJlcn0gJGRlZ1tdIERlZ3JlZSBvZiByb3RhdGlvblxuQG1peGluIHJvdGF0ZSgkZGVnKSB7XG5cdHRyYW5zZm9ybTpyb3RhdGUoJGRlZyArIGRlZyk7XG59XG5cbi8vLyBSb3RhdGVYIE1peGluOiBSb3RhdGUgYW4gZWxlbWVudCB0byBhIGNlcnRhaW4gZGVnIG9uIFgtQXhpc1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZGVnW10gRGVncmVlIG9mIHJvdGF0aW9uXG5AbWl4aW4gcm90YXRlWCgkZGVnKSB7XG5cdHRyYW5zZm9ybTpyb3RhdGVYKCRkZWcgKyBkZWcpO1xufVxuXG4vLy8gUm90YXRlWSBNaXhpbjogUm90YXRlIGFuIGVsZW1lbnQgdG8gYSBjZXJ0YWluIGRlZyBvbiBZLUF4aXNcbi8vLyBAcGFyYW0ge051bWJlcn0gJGRlZ1tdIERlZ3JlZSBvZiByb3RhdGlvblxuQG1peGluIHJvdGF0ZVkoJGRlZykge1xuXHR0cmFuc2Zvcm06cm90YXRlWSgkZGVnICsgZGVnKTtcbn1cblxuLy8vIFJvdGF0ZVogTWl4aW46IFJvdGF0ZSBhbiBlbGVtZW50IHRvIGEgY2VydGFpbiBkZWcgb24gWi1BeGlzXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRkZWdbXSBEZWdyZWUgb2Ygcm90YXRpb25cbkBtaXhpbiByb3RhdGVaKCRkZWcpIHtcblx0dHJhbnNmb3JtOnJvdGF0ZVooJGRlZyArIGRlZyk7XG59IiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS10ZXh0LXV0aWxpdGllc1xuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgdGV4dCB1dGlsaXRpZXNcbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLXV0aWxpdGllcy1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IFZhbHVlIGZvciBgdGV4dC1vdmVyZmxvd2AgdmFyaWFibGVcbi8vLyBAdHlwZSBTdHJpbmdcbiRwcm90b3R5cGUtdGV4dC1vdmVyZmxvdzogZWxsaXBzaXMgIWRlZmF1bHQ7XG5cbi8vLyBJbWFnZSBSZXBsYWNlbWVudCB1dGlsaXR5LiBgdGV4dC1oaWRlYFxuQG1peGluIHRleHQtaGlkZSB7XG4gIGZvbnQ6IDAvMCBhICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICB0ZXh0LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICBib3JkZXI6IDAgIWltcG9ydGFudDtcbn1cblxuLy8vIFRydW5jYXRpbmcgdGhlIHRleHQsIGVsaXBzaXMgYnkgZGVmYXVsdC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG92ZXJmbG93IFskcHJvdG90eXBlLXRleHQtb3ZlcmZsb3ddIFRleHQgVHJ1bmNhdGVcbkBtaXhpbiB0ZXh0LXRydW5jYXRlKFxuICAkb3ZlcmZsb3c6ICRwcm90b3R5cGUtdGV4dC1vdmVyZmxvd1xuKSB7XG4gIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG4gIHRleHQtb3ZlcmZsb3c6ICRvdmVyZmxvdzsgXG4gIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDtcbn1cblxuLy8vIE5vIHdyYXBwaW5nIG9mIHRoZSB0ZXh0LiBgdGV4dC1ub3dyYXBgXG5AbWl4aW4gdGV4dC1ub3dyYXAge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7XG59XG5cbi8vLyBXcmFwcGluZyBvZiB0aGUgdGV4dC4gYHRleHQtd3JhcGBcbkBtaXhpbiB0ZXh0LXdyYXAge1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQgIWltcG9ydGFudDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXRleHQtdXRpbGl0aWVzIHtcbiAgLnRleHQtaGlkZSB7XG4gICAgQGluY2x1ZGUgdGV4dC1oaWRlO1xuICB9XG5cbiAgLnRleHQtdHJ1bmNhdGUge1xuICAgIEBpbmNsdWRlIHRleHQtdHJ1bmNhdGU7XG4gIH1cblxuICAudGV4dC1ub3dyYXAge1xuICAgIEBpbmNsdWRlIHRleHQtbm93cmFwO1xuICB9XG5cbiAgLnRleHQtd3JhcCB7XG4gICAgQGluY2x1ZGUgdGV4dC13cmFwO1xuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLXV0aWxpdGllcy1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgLiN7JHNpemV9LXRleHQtaGlkZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0ZXh0LWhpZGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLiN7JHNpemV9LXRleHQtdHJ1bmNhdGUge1xuICAgICAgICAgICAgQGluY2x1ZGUgdGV4dC10cnVuY2F0ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuI3skc2l6ZX0tdGV4dC1ub3dyYXAge1xuICAgICAgICAgICAgQGluY2x1ZGUgdGV4dC1ub3dyYXA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLiN7JHNpemV9LXRleHQtd3JhcCB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0ZXh0LXdyYXA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLXRleHQtdHJhbnNmb3JtYXRpb25cbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIHRleHQgdHJhbnNmb3JtYXRpb24gY2xhc3Nlc1xuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtdHJhbnNmb3JtYXRpb24tYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBgdGV4dC10cmFuc2Zvcm1hdGlvbmAgY2xhc3Nlc1xuLy8vIEB0eXBlIE1hcFxuJHByb3RvdHlwZS10ZXh0LXRyYW5zZm9ybWF0aW9uOiAoXG4gIGxvd2VyY2FzZSxcbiAgdXBwZXJjYXNlLFxuICBjYXBpdGFsaXplXG4pICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBUcmFuc2Zvcm1hdGlvbiwgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS10ZXh0LXRyYW5zZm9ybWF0aW9uYFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdHJhbnNmb3JtYXRpb24gW10gVGV4dCBUcmFuc2Zvcm1hdGlvblxuQG1peGluIHRleHQtdHJhbnNmb3JtKCR0cmFuc2Zvcm1hdGlvbikge1xuICB0ZXh0LXRyYW5zZm9ybTogJHRyYW5zZm9ybWF0aW9uICFpbXBvcnRhbnQ7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS10ZXh0LXRyYW5zZm9ybWF0aW9uIHtcbiAgQGVhY2ggJHRyYW5zZm9ybWF0aW9uIGluICRwcm90b3R5cGUtdGV4dC10cmFuc2Zvcm1hdGlvbiB7XG4gICAgLnRleHQtI3skdHJhbnNmb3JtYXRpb259IHtcbiAgICAgIEBpbmNsdWRlIHRleHQtdHJhbnNmb3JtKCR0cmFuc2Zvcm1hdGlvbik7XG4gICAgfVxuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLXRyYW5zZm9ybWF0aW9uLWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgXHRAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGVhY2ggJHRyYW5zZm9ybWF0aW9uIGluICRwcm90b3R5cGUtdGV4dC10cmFuc2Zvcm1hdGlvbiB7XG4gICAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAgIC4jeyRzaXplfS10ZXh0LSN7JHRyYW5zZm9ybWF0aW9ufSB7XG4gIFx0XHRcdCAgICAgIEBpbmNsdWRlIHRleHQtdHJhbnNmb3JtKCR0cmFuc2Zvcm1hdGlvbik7XG4gIFx0XHRcdCAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLXRleHQtZGVjb3JhdGlvblxuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgdGV4dCBkZWNvcmF0aW9uIGNsYXNzZXNcbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLWRlY29yYXRpb24tYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBgdGV4dC1kZWNvcmF0aW9uYCBjbGFzc2VzXG4vLy8gQHR5cGUgTWFwXG4kcHJvdG90eXBlLXRleHQtZGVjb3JhdGlvbjogKFxuICBvdmVybGluZSxcbiAgdW5kZXJsaW5lLFxuICBsaW5lLXRocm91Z2gsXG4pICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBEZWNvcmF0aW9uLCBieSBkZWZhdWx0IGNvbWluZyB0aHJvdWdoIGEgbWFwIGAkcHJvdG90eXBlLXRleHQtZGVjb3JhdGlvbmBcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRlY29yYXRpb24gW10gVGV4dCBEZWNvcmF0aW9uXG5AbWl4aW4gdGV4dC1kZWNvcmF0aW9uKCRkZWNvcmF0aW9uKSB7XG4gIHRleHQtZGVjb3JhdGlvbjogJGRlY29yYXRpb24gIWltcG9ydGFudDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXRleHQtZGVjb3JhdGlvbiB7XG4gIEBlYWNoICRkZWNvcmF0aW9uIGluICRwcm90b3R5cGUtdGV4dC1kZWNvcmF0aW9uIHtcbiAgICAudGV4dC0jeyRkZWNvcmF0aW9ufSB7XG4gICAgICBAaW5jbHVkZSB0ZXh0LWRlY29yYXRpb24oJGRlY29yYXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1kZWNvcmF0aW9uLWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGVhY2ggJGRlY29yYXRpb24gaW4gJHByb3RvdHlwZS10ZXh0LWRlY29yYXRpb24ge1xuICAgICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICAuI3skc2l6ZX0tdGV4dC0jeyRkZWNvcmF0aW9ufSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIHRleHQtZGVjb3JhdGlvbigkZGVjb3JhdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWZvbnQtc3R5bGluZ1xuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgZm9udCBzdHlsaW5nIHR5cGVzXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1mb250LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIExldHRlciBzcGFjaW5nIGZvciBgLmZvbnQtd2lkZWBcbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm90b3R5cGUtd2lkZS1sZXR0ZXItc3BhY2luZzogcmVtLWNhbGMoNCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHdlaWdodCBmb3IgYC5mb250LW5vcm1hbGAsIGRlZmF1bHRlZCB0byBgZ2xvYmFsLXdlaWdodC1ub3JtYWxgXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLWZvbnQtbm9ybWFsOiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHdlaWdodCBmb3IgYC5mb250LWJvbGRgLCBkZWZhdWx0ZWQgdG8gYGdsb2JhbC13ZWlnaHQtYm9sZGBcbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm90b3R5cGUtZm9udC1ib2xkOiAkZ2xvYmFsLXdlaWdodC1ib2xkICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3aWRlIGxldHRlciBzcGFjaW5nIVxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGV0dGVyLXNwYWNpbmcgWyRwcm90b3R5cGUtd2lkZS1sZXR0ZXItc3BhY2luZ10gV2lkZSBsZXR0ZXIgc3BhY2luZyBmb3IgdGhlIGZvbnRcbkBtaXhpbiBmb250LXdpZGUoXG4gICRsZXR0ZXItc3BhY2luZzogJHByb3RvdHlwZS13aWRlLWxldHRlci1zcGFjaW5nXG4pIHtcbiAgbGV0dGVyLXNwYWNpbmc6ICRsZXR0ZXItc3BhY2luZztcbn1cblxuLy8vIEZvbnQgV2VpZ2h0IE5vcm1hbCwgZGVmYXVsdCB2YWx1ZSBjb21pbmcgdGhyb3VnaCBgZ2xvYmFsLXdlaWdodC1ub3JtYWxgXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3ZWlnaHQgWyRwcm90b3R5cGUtZm9udC1ub3JtYWxdIFdlaWdodCBvZiB0aGUgZm9udCAobm9ybWFsKVxuQG1peGluIGZvbnQtbm9ybWFsKFxuICAkd2VpZ2h0OiAkcHJvdG90eXBlLWZvbnQtbm9ybWFsXG4pIHtcbiAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG59XG5cbi8vLyBGb250IFdlaWdodCBCb2xkLCBkZWZhdWx0IHZhbHVlIGNvbWluZyB0aHJvdWdoIGBnbG9iYWwtd2VpZ2h0LWJvbGRgXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3ZWlnaHQgWyRwcm90b3R5cGUtZm9udC1ib2xkXSBXZWlnaHQgb2YgdGhlIGZvbnQgKGJvbGQpXG5AbWl4aW4gZm9udC1ib2xkKFxuICAkd2VpZ2h0OiAkcHJvdG90eXBlLWZvbnQtYm9sZFxuKSB7XG4gIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xufVxuXG4vLy8gRm9udCBTdHlsZSBJdGFsaWNcbkBtaXhpbiBmb250LWl0YWxpYyB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYyAhaW1wb3J0YW50O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtZm9udC1zdHlsaW5nIHtcbiAgLmZvbnQtd2lkZXtcbiAgICBAaW5jbHVkZSBmb250LXdpZGU7XG4gIH1cblxuICAuZm9udC1ub3JtYWwge1xuICAgIEBpbmNsdWRlIGZvbnQtbm9ybWFsO1xuICB9XG5cbiAgLmZvbnQtYm9sZCB7XG4gICAgQGluY2x1ZGUgZm9udC1ib2xkO1xuICB9XG5cbiAgLmZvbnQtaXRhbGljIHtcbiAgICBAaW5jbHVkZSBmb250LWl0YWxpYztcbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1mb250LWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tZm9udC13aWRle1xuICAgICAgICAgICAgQGluY2x1ZGUgZm9udC13aWRlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC4jeyRzaXplfS1mb250LW5vcm1hbCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmb250LW5vcm1hbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuI3skc2l6ZX0tZm9udC1ib2xkIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZvbnQtYm9sZDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuI3skc2l6ZX0tZm9udC1pdGFsaWMge1xuICAgICAgICAgICAgQGluY2x1ZGUgZm9udC1pdGFsaWM7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWxpc3Qtc3R5bGUtdHlwZVxuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgbGlzdCBzdHlsaW5nIHR5cGVzXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1saXN0LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIE1hcCBjb250YWluaW5nIGFsbCB0aGUgYHN0eWxlLXR5cGUtdW5vcmRlcmVkYCBjbGFzc2VzXG4vLy8gQHR5cGUgTWFwXG4kcHJvdG90eXBlLXN0eWxlLXR5cGUtdW5vcmRlcmVkOiAoXG4gIGRpc2MsXG4gIGNpcmNsZSxcbiAgc3F1YXJlXG4pICFkZWZhdWx0O1xuXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBgc3R5bGUtdHlwZS1vcmRlcmVkYCBjbGFzc2VzXG4vLy8gQHR5cGUgTWFwXG4kcHJvdG90eXBlLXN0eWxlLXR5cGUtb3JkZXJlZDogKFxuICBkZWNpbWFsLFxuICBsb3dlci1hbHBoYSxcbiAgbG93ZXItbGF0aW4sXG4gIGxvd2VyLXJvbWFuLFxuICB1cHBlci1hbHBoYSxcbiAgdXBwZXItbGF0aW4sXG4gIHVwcGVyLXJvbWFuXG4pICFkZWZhdWx0O1xuXG5cbi8vLyBTdHlsZSB0eXBlIGZvciB1bm9yZGVyZWQgTGlzdHMsIGJ5IGRlZmF1bHQgY29taW5nIHRocm91Z2ggYSBtYXAgYCRwcm90b3R5cGUtc3R5bGUtdHlwZS11bm9yZGVyZWRgXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzdHlsZS10eXBlLXVub3JkZXJlZCBbXSBTdHlsZSB0eXBlIGZvciB1bm9yZGVyZWQgTGlzdHNcbkBtaXhpbiBzdHlsZS10eXBlLXVub3JkZXJlZCgkc3R5bGUtdHlwZS11bm9yZGVyZWQpIHtcbiAgbGlzdC1zdHlsZS10eXBlOiAkc3R5bGUtdHlwZS11bm9yZGVyZWQgIWltcG9ydGFudDtcbn1cblxuLy8vIFN0eWxlIHR5cGUgZm9yIG9yZGVyZWQgTGlzdHMsIGJ5IGRlZmF1bHQgY29taW5nIHRocm91Z2ggYSBtYXAgYCRwcm90b3R5cGUtc3R5bGUtdHlwZS1vcmRlcmVkYFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3R5bGUtdHlwZS1vcmRlcmVkIFtdIFN0eWxlIHR5cGUgZm9yIG9yZGVyZWQgTGlzdHNcbkBtaXhpbiBzdHlsZS10eXBlLW9yZGVyZWQoJHN0eWxlLXR5cGUtb3JkZXJlZCkge1xuICBsaXN0LXN0eWxlLXR5cGU6ICRzdHlsZS10eXBlLW9yZGVyZWQgIWltcG9ydGFudDtcbn1cblxuQG1peGluIGxpc3QtdW5vcmRlcmVkIHtcbiAgQGVhY2ggJHN0eWxlLXR5cGUtdW5vcmRlcmVkIGluICRwcm90b3R5cGUtc3R5bGUtdHlwZS11bm9yZGVyZWQge1xuICAgIHVsLmxpc3QtI3skc3R5bGUtdHlwZS11bm9yZGVyZWR9IHtcbiAgICAgIEBpbmNsdWRlIHN0eWxlLXR5cGUtdW5vcmRlcmVkKCRzdHlsZS10eXBlLXVub3JkZXJlZCk7XG4gICAgfVxuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLWxpc3QtYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAZWFjaCAkc3R5bGUtdHlwZS11bm9yZGVyZWQgaW4gJHByb3RvdHlwZS1zdHlsZS10eXBlLXVub3JkZXJlZCB7XG4gICAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAgIHVsLiN7JHNpemV9LWxpc3QtI3skc3R5bGUtdHlwZS11bm9yZGVyZWR9IHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgc3R5bGUtdHlwZS11bm9yZGVyZWQoJHN0eWxlLXR5cGUtdW5vcmRlcmVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGxpc3Qtb3JkZXJlZCB7XG4gIEBlYWNoICRzdHlsZS10eXBlLW9yZGVyZWQgaW4gJHByb3RvdHlwZS1zdHlsZS10eXBlLW9yZGVyZWQge1xuICAgIG9sLmxpc3QtI3skc3R5bGUtdHlwZS1vcmRlcmVkfSB7XG4gICAgICBAaW5jbHVkZSBzdHlsZS10eXBlLW9yZGVyZWQoJHN0eWxlLXR5cGUtb3JkZXJlZCk7XG4gICAgfVxuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLWxpc3QtYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAZWFjaCAkc3R5bGUtdHlwZS1vcmRlcmVkIGluICRwcm90b3R5cGUtc3R5bGUtdHlwZS1vcmRlcmVkIHtcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgb2wuI3skc2l6ZX0tbGlzdC0jeyRzdHlsZS10eXBlLW9yZGVyZWR9IHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgc3R5bGUtdHlwZS1vcmRlcmVkKCRzdHlsZS10eXBlLW9yZGVyZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtbGlzdC1zdHlsZS10eXBlIHtcbiAgQGluY2x1ZGUgbGlzdC11bm9yZGVyZWQ7XG4gIEBpbmNsdWRlIGxpc3Qtb3JkZXJlZDtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtcm91bmRlZFxuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3Igcm91bmRlZCB1dGlsaXR5LlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtcm91bmRlZC1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBgcHJvdG90eXBlLWJvcmRlci1yYWRpdXNgXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLWJvcmRlci1yYWRpdXM6IHJlbS1jYWxjKDMpICFkZWZhdWx0O1xuXG4vLy8gUm91bmRlZCB1dGlsaXR5IChhbGwgY29ybmVycyk6IEFkZHMgcmFkaXVzIGNvcm5lcnMgKGFsbCBjb3JuZXJzKSB0byBhbiBlbGVtZW50IGJ5IGRlZmF1bHQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRyYWRpdXMgWyRwcm90b3R5cGUtYm9yZGVyLXJhZGl1c10gQm9yZGVyIHJhZGl1cyAoYWxsIGNvcm5lcnMpXG5AbWl4aW4gYm9yZGVyLXJhZGl1cyhcbiAgJHJhZGl1czogJHByb3RvdHlwZS1ib3JkZXItcmFkaXVzXG4pIHtcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcbn1cblxuLy8vIFJvdW5kZWQgc3F1YXJlIHV0aWxpdHkgb3IgcmVjdGFuZ2xlIHV0aWxpdHkgKGFsbCBjb3JuZXJzKTogUm91bmRzIGFsbCBjb3JuZXJzIHRvIGFuIGVsZW1lbnQgYnkgZGVmYXVsdCB0byBtYWtlIGEgcGlsbCBzaGFwZS5cbkBtaXhpbiBib3JkZXItcm91bmRlZCB7XG4gIGJvcmRlci1yYWRpdXM6IDUwMDBweCAhaW1wb3J0YW50O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtcm91bmRlZCB7XG4gIC5yb3VuZGVkIHtcbiAgICBAaW5jbHVkZSBib3JkZXItcm91bmRlZDtcblxuICAgIC5zd2l0Y2gtcGFkZGxlIHtcbiAgICAgIEBpbmNsdWRlIGJvcmRlci1yb3VuZGVkO1xuICAgICAgJjphZnRlciB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsgLy8gRm9yIHN3aXRjaGVzXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnJhZGl1cyB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cztcbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1yb3VuZGVkLWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tcm91bmRlZCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBib3JkZXItcm91bmRlZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLiN7JHNpemV9LXJhZGl1cyB7XG4gICAgICAgICAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1ib3JkZXJlZFxuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgYm9yZGVyZWQgdXRpbGl0eS5cbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLWJvcmRlcmVkLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdmFsdWUgZm9yIGBwcm90b3R5cGUtYm9yZGVyLXdpZHRoYFxuLy8vIEB0eXBlIE51bWJlclxuJHByb3RvdHlwZS1ib3JkZXItd2lkdGg6IHJlbS1jYWxjKDEpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB2YWx1ZSBmb3IgYHByb3RvdHlwZS1ib3JkZXItdHlwZWBcbi8vLyBAdHlwZSBTdHJpbmdcbiRwcm90b3R5cGUtYm9yZGVyLXR5cGU6IHNvbGlkICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB2YWx1ZSBmb3IgYHByb3RvdHlwZS1ib3JkZXItY29sb3JgIGRlZmF1bHRlZCB0byBgbWVkaXVtLWdyYXlgXG4vLy8gQHR5cGUgQ29sb3JcbiRwcm90b3R5cGUtYm9yZGVyLWNvbG9yOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXJlZCBVdGlsaXR5OiBBZGRzIGEgbGlnaHQgYm9yZGVyIHRvIGFuIGVsZW1lbnQgYnkgZGVmYXVsdC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIFskcHJvdG90eXBlLWJvcmRlci13aWR0aF0gV2lkdGggb2YgdGhlIGJvcmRlclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdHlwZSBbJHByb3RvdHlwZS1ib3JkZXItdHlwZV0gVHlwZSBvZiB0aGUgYm9yZGVyXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskcHJvdG90eXBlLWJvcmRlci1jb2xvcl0gQ29sb3Igb2YgdGhlIGJvcmRlclxuQG1peGluIGJvcmRlcmVkKFxuICAkd2lkdGg6ICRwcm90b3R5cGUtYm9yZGVyLXdpZHRoLFxuICAkdHlwZTogJHByb3RvdHlwZS1ib3JkZXItdHlwZSxcbiAgJGNvbG9yOiAkcHJvdG90eXBlLWJvcmRlci1jb2xvclxuKSB7XG4gIGJvcmRlcjogJHdpZHRoICR0eXBlICRjb2xvcjtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLWJvcmRlcmVkIHtcbiAgLmJvcmRlcmVkIHtcbiAgICBAaW5jbHVkZSBib3JkZXJlZDtcbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1ib3JkZXJlZC1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgLiN7JHNpemV9LWJvcmRlcmVkIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJvcmRlcmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1zaGFkb3dcbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIHNoYWRvdyB1dGlsaXR5LlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtc2hhZG93LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdmFsdWUgZm9yIGBwcm90b3R5cGUtYm94LXNoYWRvd2Bcbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm90b3R5cGUtYm94LXNoYWRvdzogMCAycHggNXB4IDAgcmdiYSgwLDAsMCwuMTYpLFxuICAgICAgICAgICAgICAgICAgICAgICAwIDJweCAxMHB4IDAgcmdiYSgwLDAsMCwuMTIpICFkZWZhdWx0O1xuXG4vLy8gU2hhZG93IFV0aWxpdHk6IEFkZHMgYSBsaWdodCBib3ggc2hhZG93IHRvIGFuIGVsZW1lbnQgYnkgZGVmYXVsdC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNoYWRvdyBbJHByb3RvdHlwZS1ib3gtc2hhZG93XSBCb3ggU2hhZG93IG9mIGEgY29tcG9uZW50XG5AbWl4aW4gc2hhZG93KFxuICAkc2hhZG93OiAkcHJvdG90eXBlLWJveC1zaGFkb3dcbikge1xuICBib3gtc2hhZG93OiAkc2hhZG93O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtc2hhZG93IHtcbiAgLnNoYWRvdyB7XG4gICAgQGluY2x1ZGUgc2hhZG93O1xuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLXNoYWRvdy1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgLiN7JHNpemV9LXNoYWRvdyB7XG4gICAgICAgICAgICBAaW5jbHVkZSBzaGFkb3c7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWFycm93XG4vLy8vXG5cbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIGBhcnJvd2AgZGlyZWN0aW9uXG4vLy8gQHR5cGUgTWFwXG4kcHJvdG90eXBlLWFycm93LWRpcmVjdGlvbnM6IChcbiAgZG93bixcbiAgdXAsXG4gIHJpZ2h0LFxuICBsZWZ0XG4pICFkZWZhdWx0O1xuXG4vLy8gV2lkdGggb2YgdGhlIEFycm93LCBgMC40Mzc1cmVtYCBieSBkZWZhdWx0LlxuLy8vIEB0eXBlIE51bWJlclxuJHByb3RvdHlwZS1hcnJvdy1zaXplOiAwLjQzNzVyZW07XG5cbi8vLyBDb2xvciBvZiB0aGUgQXJyb3csIGAkYmxhY2tgIGJ5IGRlZmF1bHQuXG4vLy8gQHR5cGUgQ29sb3JcbiRwcm90b3R5cGUtYXJyb3ctY29sb3I6ICRibGFjaztcblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLWFycm93IHtcbiAgQGVhY2ggJHByb3RvdHlwZS1hcnJvdy1kaXJlY3Rpb24gaW4gJHByb3RvdHlwZS1hcnJvdy1kaXJlY3Rpb25zIHtcbiAgICAuYXJyb3ctI3skcHJvdG90eXBlLWFycm93LWRpcmVjdGlvbn0ge1xuICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKFxuICAgICAgICAkcHJvdG90eXBlLWFycm93LXNpemUsIFxuICAgICAgICAkcHJvdG90eXBlLWFycm93LWNvbG9yLCBcbiAgICAgICAgJHByb3RvdHlwZS1hcnJvdy1kaXJlY3Rpb25cbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLXNlcGFyYXRvclxuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3Igc2VwYXJhdG9yLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtc2VwYXJhdG9yLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYWxpZ25tZW50IG9mIGEgc2VwYXJhdG9yLlxuLy8vIEB0eXBlIFN0cmluZ1xuJHByb3RvdHlwZS1zZXBhcmF0b3ItYWxpZ246IGNlbnRlciAhZGVmYXVsdDtcblxuLy8vIEhlaWdodCBvZiBhIHNlcGFyYXRvci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm90b3R5cGUtc2VwYXJhdG9yLWhlaWdodDogcmVtLWNhbGMoMikgIWRlZmF1bHQ7XG5cbi8vLyBXaWR0aCBvZiBhIHNlcGFyYXRvci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm90b3R5cGUtc2VwYXJhdG9yLXdpZHRoOiAzcmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiBhIHNlcGFyYXRvci5cbi8vLyBAdHlwZSBDb2xvclxuJHByb3RvdHlwZS1zZXBhcmF0b3ItYmFja2dyb3VuZDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBUb3AgTWFyZ2luIG9mIGEgc2VwYXJhdG9yLlxuLy8vIEB0eXBlIE51bWJlclxuJHByb3RvdHlwZS1zZXBhcmF0b3ItbWFyZ2luLXRvcDogJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XG5cbi8vLyBUaXRsZSBzZXBhcmF0b3IgVXRpbGl0eSwgbW9zdGx5IHVzZWQgdG8gc3R5bGUgdGhlIG1haW4gaGVhZGluZyBvZiBhIHNlY3Rpb25cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGFsaWduIFskcHJvdG90eXBlLXNlcGFyYXRvci1hbGlnbl0gLSBzZXBhcmF0b3IgQWxpZ25tZW50XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRoZWlnaHQgWyRwcm90b3R5cGUtc2VwYXJhdG9yLWhlaWdodF0gLSBXaWR0aFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggWyRwcm90b3R5cGUtc2VwYXJhdG9yLXdpZHRoXSAtIEhlaWdodFxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kIFskcHJvdG90eXBlLXNlcGFyYXRvci1iYWNrZ3JvdW5kXSAtIEJhY2tncm91bmRcbi8vLyBAcGFyYW0ge051bWJlcn0gJHRvcCBbJHByb3RvdHlwZS1zZXBhcmF0b3ItbWFyZ2luLXRvcF0gLSBNYXJnaW4gVG9wXG5AbWl4aW4gc2VwYXJhdG9yIChcbiAgJGFsaWduOiAkcHJvdG90eXBlLXNlcGFyYXRvci1hbGlnbixcbiAgJGhlaWdodDogJHByb3RvdHlwZS1zZXBhcmF0b3ItaGVpZ2h0LFxuICAkd2lkdGg6ICRwcm90b3R5cGUtc2VwYXJhdG9yLXdpZHRoLFxuICAkYmFja2dyb3VuZDogJHByb3RvdHlwZS1zZXBhcmF0b3ItYmFja2dyb3VuZCxcbiAgJHRvcDogJHByb3RvdHlwZS1zZXBhcmF0b3ItbWFyZ2luLXRvcFxuKSB7XG4gIHRleHQtYWxpZ246ICRhbGlnbiAhaW1wb3J0YW50O1xuXHRAaW5jbHVkZSBjbGVhcmZpeDtcblxuICAmOjphZnRlciB7XG4gICAgQGluY2x1ZGUgcG9zaXRpb24ocmVsYXRpdmUpO1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgYm9yZGVyLWJvdHRvbTogJGhlaWdodCBzb2xpZCAkYmFja2dyb3VuZDtcbiAgICBtYXJnaW46ICR0b3AgYXV0byAwO1xuXG4gICAgQGlmICRhbGlnbiA9PSBsZWZ0IHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgQGlmICRhbGlnbiA9PSByaWdodCB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXNlcGFyYXRvciB7XG5cdC5zZXBhcmF0b3ItY2VudGVyIHtcblx0XHRAaW5jbHVkZSBzZXBhcmF0b3IoY2VudGVyKTtcblx0fVxuXG4gIC5zZXBhcmF0b3ItbGVmdCB7XG4gICAgQGluY2x1ZGUgc2VwYXJhdG9yKGxlZnQpO1xuICB9XG5cbiAgLnNlcGFyYXRvci1yaWdodCB7XG4gICAgQGluY2x1ZGUgc2VwYXJhdG9yKHJpZ2h0KTtcbiAgfVxuXG5cdEBpZiAoJHByb3RvdHlwZS1zZXBhcmF0b3ItYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgIC4jeyRzaXplfS1zZXBhcmF0b3ItY2VudGVyIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHNlcGFyYXRvcihjZW50ZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuI3skc2l6ZX0tc2VwYXJhdG9yLWxlZnQge1xuICAgICAgICAgICAgQGluY2x1ZGUgc2VwYXJhdG9yKGxlZnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuI3skc2l6ZX0tc2VwYXJhdG9yLXJpZ2h0IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHNlcGFyYXRvcihyaWdodCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLW92ZXJmbG93XG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBvdmVyZmxvdyBoZWxwZXIgY2xhc3Nlc1xuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtb3ZlcmZsb3ctYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBgb3ZlcmZsb3dgIGNsYXNzZXNcbi8vLyBAdHlwZSBNYXBcbiRwcm90b3R5cGUtb3ZlcmZsb3c6IChcbiAgdmlzaWJsZSxcbiAgaGlkZGVuLFxuICBzY3JvbGxcbikgIWRlZmF1bHQ7XG5cbi8vLyBPdmVyZmxvdyBjbGFzc2VzLCBieSBkZWZhdWx0IGNvbWluZyB0aHJvdWdoIGEgbWFwIGAkcHJvdG90eXBlLW92ZXJmbG93YFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkb3ZlcmZsb3cgW10gT3ZlcmZsb3cgY2xhc3Nlc1xuQG1peGluIG92ZXJmbG93KCRvdmVyZmxvdykge1xuICBvdmVyZmxvdzogJG92ZXJmbG93ICFpbXBvcnRhbnQ7XG59XG5cbi8vLyBPdmVyZmxvdyBjbGFzc2VzIG9uIGhvcml6b250YWwgYXhpcywgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS1vdmVyZmxvd2Bcbi8vLyBAcGFyYW0ge1N0cmluZ30gJG92ZXJmbG93IFtdIE92ZXJmbG93IGNsYXNzZXMgKGhvcml6b250YWwgYXhpcylcbkBtaXhpbiBvdmVyZmxvdy14KCRvdmVyZmxvdykge1xuICBvdmVyZmxvdy14OiAkb3ZlcmZsb3cgIWltcG9ydGFudDtcbn1cblxuLy8vIE92ZXJmbG93IGNsYXNzZXMgb24gdmVydGljYWwgYXhpcywgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS1vdmVyZmxvd2Bcbi8vLyBAcGFyYW0ge1N0cmluZ30gJG92ZXJmbG93IFtdIE92ZXJmbG93IGNsYXNzZXMgKHZlcnRpY2FsIGF4aXMpXG5AbWl4aW4gb3ZlcmZsb3cteSgkb3ZlcmZsb3cpIHtcbiAgb3ZlcmZsb3cteTogJG92ZXJmbG93ICFpbXBvcnRhbnQ7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1vdmVyZmxvdyB7XG4gIEBlYWNoICRvdmVyZmxvdyBpbiAkcHJvdG90eXBlLW92ZXJmbG93IHtcbiAgICAub3ZlcmZsb3ctI3skb3ZlcmZsb3d9IHtcbiAgICAgIEBpbmNsdWRlIG92ZXJmbG93KCRvdmVyZmxvdyk7XG4gICAgfVxuICAgIC5vdmVyZmxvdy14LSN7JG92ZXJmbG93fSB7XG4gICAgICBAaW5jbHVkZSBvdmVyZmxvdy14KCRvdmVyZmxvdyk7XG4gICAgfVxuICAgIC5vdmVyZmxvdy15LSN7JG92ZXJmbG93fSB7XG4gICAgICBAaW5jbHVkZSBvdmVyZmxvdy15KCRvdmVyZmxvdyk7XG4gICAgfVxuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLW92ZXJmbG93LWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGVhY2ggJG92ZXJmbG93IGluICRwcm90b3R5cGUtb3ZlcmZsb3cge1xuICAgICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICAuI3skc2l6ZX0tb3ZlcmZsb3ctI3skb3ZlcmZsb3d9IHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgb3ZlcmZsb3coJG92ZXJmbG93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC4jeyRzaXplfS1vdmVyZmxvdy14LSN7JG92ZXJmbG93fSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIG92ZXJmbG93LXgoJG92ZXJmbG93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC4jeyRzaXplfS1vdmVyZmxvdy15LSN7JG92ZXJmbG93fSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIG92ZXJmbG93LXkoJG92ZXJmbG93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtZGlzcGxheVxuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgZGlzcGxheSBjbGFzc2VzXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1kaXNwbGF5LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIE1hcCBjb250YWluaW5nIGFsbCB0aGUgYGRpc3BsYXlgIGNsYXNzZXNcbi8vLyBAdHlwZSBNYXBcbiRwcm90b3R5cGUtZGlzcGxheTogKFxuICBpbmxpbmUsXG4gIGlubGluZS1ibG9jayxcbiAgYmxvY2ssXG4gIHRhYmxlLFxuICB0YWJsZS1jZWxsXG4pICFkZWZhdWx0O1xuXG4vLy8gRGlzcGxheSBjbGFzc2VzLCBieSBkZWZhdWx0IGNvbWluZyB0aHJvdWdoIGEgbWFwIGAkcHJvdG90eXBlLWRpc3BsYXlgXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRkaXNwbGF5IFtdIERpc3BsYXkgY2xhc3Nlc1xuQG1peGluIGRpc3BsYXkoJGRpc3BsYXkpIHtcbiAgZGlzcGxheTogJGRpc3BsYXkgIWltcG9ydGFudDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLWRpc3BsYXkge1xuICBAZWFjaCAkZGlzcGxheSBpbiAkcHJvdG90eXBlLWRpc3BsYXkge1xuICAgIC5kaXNwbGF5LSN7JGRpc3BsYXl9IHtcbiAgICAgIEBpbmNsdWRlIGRpc3BsYXkoJGRpc3BsYXkpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1kaXNwbGF5LWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGVhY2ggJGRpc3BsYXkgaW4gJHByb3RvdHlwZS1kaXNwbGF5IHtcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgLiN7JHNpemV9LWRpc3BsYXktI3skZGlzcGxheX0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBkaXNwbGF5KCRkaXNwbGF5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtcG9zaXRpb25cbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIHBvc2l0aW9uIGhlbHBlcnNcbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLXBvc2l0aW9uLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIE1hcCBjb250YWluaW5nIGFsbCB0aGUgYHBvc2l0aW9uYCBjbGFzc2VzXG4vLy8gQHR5cGUgTWFwXG4kcHJvdG90eXBlLXBvc2l0aW9uOiAoXG4gIHN0YXRpYyxcbiAgcmVsYXRpdmUsXG4gIGFic29sdXRlLFxuICBmaXhlZFxuKSAhZGVmYXVsdDtcblxuLy8vIHotaW5kZXggZm9yIGZpeGVkIHBvc2l0aW9uaW5nXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLXBvc2l0aW9uLXotaW5kZXg6IDk3NSAhZGVmYXVsdDtcblxuLy8vIFBvc2l0aW9uIGNsYXNzZXMsIGJ5IGRlZmF1bHQgY29taW5nIHRocm91Z2ggYSBtYXAgYCRwcm90b3R5cGUtcG9zaXRpb25gLCB3aGVyZWFzIGFsbCB0aGUgb2Zmc2V0IHZhbHVlcyBhcmUgbXVsdGlwbGllZCBieSBgJGdsb2JhbC1wb3NpdGlvbmAgd2hpY2ggYnkgZGVmYXVsdCBpcyBlcXVhbCB0byBgMXJlbWAuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRwb3NpdGlvbiBbXSBQb3NpdGlvbiBjbGFzc2VzLCBFaXRoZXIgYHN0YXRpY2AsIGByZWxhdGl2ZWAsIGBhYnNvbHV0ZWAgb3IgYGZpeGVkYFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdG9wIFtudWxsXSAtIFRvcCBvZmZzZXRcbi8vLyBAcGFyYW0ge051bWJlcn0gJHJpZ2h0IFtudWxsXSAtIFJpZ2h0IG9mZnNldFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYm90dG9tIFtudWxsXSAtIEJvdHRvbSBvZmZzZXRcbi8vLyBAcGFyYW0ge051bWJlcn0gJGxlZnQgW251bGxdIC0gTGVmdCBvZmZzZXRcbkBtaXhpbiBwb3NpdGlvbihcbiAgJHBvc2l0aW9uLFxuICAkdG9wOiBudWxsLFxuICAkcmlnaHQ6IG51bGwsXG4gICRib3R0b206IG51bGwsXG4gICRsZWZ0OiBudWxsXG4pIHtcbiAgcG9zaXRpb246ICRwb3NpdGlvbiAhaW1wb3J0YW50O1xuICBAaWYgJHRvcCAhPSBudWxsIHtcbiAgICB0b3A6ICR0b3AgKiAkZ2xvYmFsLXBvc2l0aW9uICFpbXBvcnRhbnQ7XG4gIH1cbiAgQGlmICRyaWdodCAhPSBudWxsIHtcbiAgICByaWdodDogJHJpZ2h0ICogJGdsb2JhbC1wb3NpdGlvbiAhaW1wb3J0YW50O1xuICB9XG4gIEBpZiAkYm90dG9tICE9IG51bGwge1xuICAgIGJvdHRvbTogJGJvdHRvbSAqICRnbG9iYWwtcG9zaXRpb24gIWltcG9ydGFudDtcbiAgfVxuICBAaWYgJGxlZnQgIT0gbnVsbCB7XG4gICAgbGVmdDogJGxlZnQgKiAkZ2xvYmFsLXBvc2l0aW9uICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLy8vIFBvc2l0aW9uIEZpeGVkIG9uIHRvcCBjb3JuZXJzXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR6LWluZGV4IFskcHJvdG90eXBlLXBvc2l0aW9uLXotaW5kZXhdIHotaW5kZXggZm9yIGBwb3NpdGlvbi1maXhlZC10b3BgXG5AbWl4aW4gcG9zaXRpb24tZml4ZWQtdG9wKFxuICAkei1pbmRleDogJHByb3RvdHlwZS1wb3NpdGlvbi16LWluZGV4XG4pIHtcbiAgQGluY2x1ZGUgcG9zaXRpb24oZml4ZWQsIDAsIDAsIG51bGwsIDApO1xuICB6LWluZGV4OiAkei1pbmRleDtcbn1cblxuLy8vIFBvc2l0aW9uIEZpeGVkIG9uIGJvdHRvbSBjb3JuZXJzXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR6LWluZGV4IFskcHJvdG90eXBlLXBvc2l0aW9uLXotaW5kZXhdIHotaW5kZXggZm9yIGBwb3NpdGlvbi1maXhlZC1ib3R0b21gXG5AbWl4aW4gcG9zaXRpb24tZml4ZWQtYm90dG9tKFxuICAkei1pbmRleDogJHByb3RvdHlwZS1wb3NpdGlvbi16LWluZGV4XG4pIHtcbiAgQGluY2x1ZGUgcG9zaXRpb24oZml4ZWQsIG51bGwsIDAsIDAsIDApO1xuICB6LWluZGV4OiAkei1pbmRleDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXBvc2l0aW9uIHtcbiAgLy8gUG9zaXRpb246IFN0YXRpYywgUmVsYXRpdmUsIEZpeGVkLCBBYnNvbHV0ZVxuICBAZWFjaCAkcG9zaXRpb24gaW4gJHByb3RvdHlwZS1wb3NpdGlvbiB7XG4gICAgLnBvc2l0aW9uLSN7JHBvc2l0aW9ufSB7XG4gICAgICBAaW5jbHVkZSBwb3NpdGlvbigkcG9zaXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIC8vIFBvc2l0aW9uOiBGaXhlZCBUb3AsIEZpeGVkIEJvdHRvbVxuICAucG9zaXRpb24tZml4ZWQtdG9wIHtcbiAgICBAaW5jbHVkZSBwb3NpdGlvbi1maXhlZC10b3A7XG4gIH1cbiAgLnBvc2l0aW9uLWZpeGVkLWJvdHRvbSB7XG4gICAgQGluY2x1ZGUgcG9zaXRpb24tZml4ZWQtYm90dG9tO1xuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLXBvc2l0aW9uLWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgLy8gUG9zaXRpb246IFN0YXRpYywgUmVsYXRpdmUsIEZpeGVkLCBBYnNvbHV0ZVxuICAgICAgICBAZWFjaCAkcG9zaXRpb24gaW4gJHByb3RvdHlwZS1wb3NpdGlvbiB7XG4gICAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAgIC4jeyRzaXplfS1wb3NpdGlvbi0jeyRwb3NpdGlvbn0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBwb3NpdGlvbigkcG9zaXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBvc2l0aW9uOiBGaXhlZCBUb3AsIEZpeGVkIEJvdHRvbVxuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgIC4jeyRzaXplfS1wb3NpdGlvbi1maXhlZC10b3Age1xuICAgICAgICAgICAgQGluY2x1ZGUgcG9zaXRpb24tZml4ZWQtdG9wO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC4jeyRzaXplfS1wb3NpdGlvbi1maXhlZC1ib3R0b20ge1xuICAgICAgICAgICAgQGluY2x1ZGUgcG9zaXRpb24tZml4ZWQtYm90dG9tO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1ib3JkZXItYm94XG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBib3JkZXIgYm94LlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtYm9yZGVyLWJveC1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgYm94IHV0aWxpdHlcbkBtaXhpbiBib3JkZXItYm94IHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtYm9yZGVyLWJveCB7XG4gIC5ib3JkZXItYm94IHtcbiAgICBAaW5jbHVkZSBib3JkZXItYm94O1xuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLWJvcmRlci1ib3gtYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgIC4jeyRzaXplfS1ib3JkZXItYm94IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJvcmRlci1ib3g7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWJvcmRlci1ub25lXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBib3JkZXIgbm9uZS5cbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLWJvcmRlci1ub25lLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBub25lIHV0aWxpdHlcbkBtaXhpbiBib3JkZXItbm9uZSB7XG4gIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtYm9yZGVyLW5vbmUge1xuICAuYm9yZGVyLW5vbmUge1xuICAgIEBpbmNsdWRlIGJvcmRlci1ub25lO1xuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLWJvcmRlci1ub25lLWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tYm9yZGVyLW5vbmUge1xuICAgICAgICAgICAgQGluY2x1ZGUgYm9yZGVyLW5vbmU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLXNpemluZ1xuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3Igc3BhY2luZyBjbGFzc2VzIChtYXJnaW4gYW5kIHBhZGRpbmcpXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1zaXppbmctYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBgc2l6aW5nYCBjbGFzc2VzXG4vLy8gQHR5cGUgTWFwXG4kcHJvdG90eXBlLXNpemluZzogKFxuICB3aWR0aCxcbiAgaGVpZ2h0XG4pICFkZWZhdWx0O1xuXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBzaXplcy5cbi8vLyBAdHlwZSBNYXBcbiRwcm90b3R5cGUtc2l6ZXM6IChcbiAgMjU6IDI1JSxcbiAgNTA6IDUwJSxcbiAgNzU6IDc1JSxcbiAgMTAwOiAxMDAlXG4pICFkZWZhdWx0O1xuXG4vLy8gTWF4IFdpZHRoIDEwMCB1dGlsaXR5LlxuQG1peGluIG1heC13aWR0aC0xMDAge1xuICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbn1cblxuLy8vIE1heCBIZWlnaHQgMTAwIHV0aWxpdHkuXG5AbWl4aW4gbWF4LWhlaWdodC0xMDAge1xuICBtYXgtaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1zaXppbmcge1xuICAvLyBFbGVtZW50IFNpemluZ1xuICBAZWFjaCAkc2l6aW5nIGluICRwcm90b3R5cGUtc2l6aW5nIHtcbiAgICBAZWFjaCAkbGVuZ3RoLCAkcGVyY2VudGFnZSBpbiAkcHJvdG90eXBlLXNpemVzIHtcbiAgICAgIC4jeyRzaXppbmd9LSN7JGxlbmd0aH0ge1xuICAgICAgICAjeyRzaXppbmd9OiAkcGVyY2VudGFnZSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIE1heCB3aWR0aCAmIGhlaWdodFxuICAubWF4LXdpZHRoLTEwMCB7XG4gICAgQGluY2x1ZGUgbWF4LXdpZHRoLTEwMDtcbiAgfVxuICAubWF4LWhlaWdodC0xMDAge1xuICAgIEBpbmNsdWRlIG1heC1oZWlnaHQtMTAwO1xuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLXNpemluZy1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgQGVhY2ggJHNpemluZyBpbiAkcHJvdG90eXBlLXNpemluZyB7XG4gICAgICAgICAgICBAZWFjaCAkbGVuZ3RoLCAkcGVyY2VudGFnZSBpbiAkcHJvdG90eXBlLXNpemVzIHtcbiAgICAgICAgICAgICAgLiN7JHNpemV9LSN7JHNpemluZ30tI3skbGVuZ3RofSB7XG4gICAgICAgICAgICAgICAgI3skc2l6aW5nfTogJHBlcmNlbnRhZ2UgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1zcGFjaW5nXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBzcGFjaW5nIGNsYXNzZXMgKG1hcmdpbiBhbmQgcGFkZGluZylcbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLXNwYWNpbmctYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBudW1iZXIgb2Ygc3BhY2VycyBjb3VudCAobWFyZ2luIGFuZCBwYWRkaW5nKVxuLy8vIEB0eXBlIE51bWJlclxuJHByb3RvdHlwZS1zcGFjZXJzLWNvdW50OiAzICFkZWZhdWx0O1xuXG4vLy8gTWFyZ2luIGhlbHBlciBtaXhpbiwgYWxsIHRoZSB2YWx1ZXMgYXJlIG11bHRpcGxpZWQgYnkgYCRnbG9iYWwtbWFyZ2luYCB3aGljaCBieSBkZWZhdWx0IGlzIGVxdWFsIHRvIGAxcmVtYFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdG9wIFtudWxsXSAtIE1hcmdpbiBUb3Bcbi8vLyBAcGFyYW0ge051bWJlcn0gJHJpZ2h0IFtudWxsXSAtIE1hcmdpbiBSaWdodFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYm90dG9tIFtudWxsXSAtIE1hcmdpbiBCb3R0b21cbi8vLyBAcGFyYW0ge051bWJlcn0gJGxlZnQgW251bGxdIC0gTWFyZ2luIExlZnRcbkBtaXhpbiBtYXJnaW4oXG4gICR0b3A6IG51bGwsXG4gICRyaWdodDogbnVsbCxcbiAgJGJvdHRvbTogbnVsbCxcbiAgJGxlZnQ6IG51bGxcbikge1xuICBAaWYgJHRvcCAhPSBudWxsIHtcbiAgICBtYXJnaW4tdG9wOiAkdG9wICogJGdsb2JhbC1tYXJnaW4gIWltcG9ydGFudDtcbiAgfVxuICBAaWYgJHJpZ2h0ICE9IG51bGwge1xuICAgIG1hcmdpbi1yaWdodDogJHJpZ2h0ICogJGdsb2JhbC1tYXJnaW4gIWltcG9ydGFudDtcbiAgfVxuICBAaWYgJGJvdHRvbSAhPSBudWxsIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkYm90dG9tICogJGdsb2JhbC1tYXJnaW4gIWltcG9ydGFudDtcbiAgfVxuICBAaWYgJGxlZnQgIT0gbnVsbCB7XG4gICAgbWFyZ2luLWxlZnQ6ICRsZWZ0ICogJGdsb2JhbC1tYXJnaW4gIWltcG9ydGFudDtcbiAgfVxufVxuXG4vLy8gUGFkZGluZyBoZWxwZXIgbWl4aW4sIGFsbCB0aGUgdmFsdWVzIGFyZSBtdWx0aXBsaWVkIGJ5IGAkZ2xvYmFsLXBhZGRpbmdgIHdoaWNoIGJ5IGRlZmF1bHQgaXMgZXF1YWwgdG8gYDFyZW1gXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0b3AgW251bGxdIC0gUGFkZGluZyBUb3Bcbi8vLyBAcGFyYW0ge051bWJlcn0gJHJpZ2h0IFtudWxsXSAtIFBhZGRpbmcgUmlnaHRcbi8vLyBAcGFyYW0ge051bWJlcn0gJGJvdHRvbSBbbnVsbF0gLSBQYWRkaW5nIEJvdHRvbVxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGVmdCBbbnVsbF0gLSBQYWRkaW5nIExlZnRcbkBtaXhpbiBwYWRkaW5nKFxuICAkdG9wOiBudWxsLFxuICAkcmlnaHQ6IG51bGwsXG4gICRib3R0b206IG51bGwsXG4gICRsZWZ0OiBudWxsXG4pIHtcbiAgQGlmICR0b3AgIT0gbnVsbCB7XG4gICAgcGFkZGluZy10b3A6ICR0b3AgKiAkZ2xvYmFsLXBhZGRpbmcgIWltcG9ydGFudDtcbiAgfVxuICBAaWYgJHJpZ2h0ICE9IG51bGwge1xuICAgIHBhZGRpbmctcmlnaHQ6ICRyaWdodCAqICRnbG9iYWwtcGFkZGluZyAhaW1wb3J0YW50O1xuICB9XG4gIEBpZiAkYm90dG9tICE9IG51bGwge1xuICAgIHBhZGRpbmctYm90dG9tOiAkYm90dG9tICogJGdsb2JhbC1wYWRkaW5nICFpbXBvcnRhbnQ7XG4gIH1cbiAgQGlmICRsZWZ0ICE9IG51bGwge1xuICAgIHBhZGRpbmctbGVmdDogJGxlZnQgKiAkZ2xvYmFsLXBhZGRpbmcgIWltcG9ydGFudDtcbiAgfVxufVxuXG4vLy8gTWFyZ2luIGNsYXNzZXMgZm9yIHNwZWNpZmljIGRpcmVjdGlvbiBwcm9wZXJ0aWVzXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRkaXIgW10gRGlyZWN0aW9uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzcGFjZXIgW10gU3BhY2VyXG5AbWl4aW4gbWFyZ2luLWRpcmVjdGlvbigkZGlyLCAkc3BhY2VyKSB7XG4gIEBpZiAoJGRpciA9PSB0b3ApIHsgXG4gICAgQGluY2x1ZGUgbWFyZ2luKCR0b3A6ICRzcGFjZXIpOyBcbiAgfVxuICBAZWxzZSBpZiAoJGRpciA9PSByaWdodCkgeyBcbiAgICBAaW5jbHVkZSBtYXJnaW4oJHJpZ2h0OiAkc3BhY2VyKTsgXG4gIH1cbiAgQGVsc2UgaWYgKCRkaXIgPT0gYm90dG9tKSB7IFxuICAgIEBpbmNsdWRlIG1hcmdpbigkYm90dG9tOiAkc3BhY2VyKTsgXG4gIH1cbiAgQGVsc2UgaWYgKCRkaXIgPT0gbGVmdCkgeyBcbiAgICBAaW5jbHVkZSBtYXJnaW4oJGxlZnQ6ICRzcGFjZXIpOyBcbiAgfVxuICBAZWxzZSBpZiAoJGRpciA9PSBob3Jpem9udGFsKSB7IFxuICAgIEBpbmNsdWRlIG1hcmdpbigkcmlnaHQ6ICRzcGFjZXIsICRsZWZ0OiAkc3BhY2VyKTsgXG4gIH1cbiAgQGVsc2UgaWYgKCRkaXIgPT0gdmVydGljYWwpIHsgXG4gICAgQGluY2x1ZGUgbWFyZ2luKCR0b3A6ICRzcGFjZXIsICRib3R0b206ICRzcGFjZXIpOyBcbiAgfVxufVxuXG4vLy8gUGFkZGluZyBjbGFzc2VzIGZvciBzcGVjaWZpYyBkaXJlY3Rpb24gcHJvcGVydGllc1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZGlyIFtdIERpcmVjdGlvblxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc3BhY2VyIFtdIFNwYWNlclxuQG1peGluIHBhZGRpbmctZGlyZWN0aW9uKCRkaXIsICRzcGFjZXIpIHtcbiAgQGlmICgkZGlyID09IHRvcCkgeyBcbiAgICBAaW5jbHVkZSBwYWRkaW5nKCR0b3A6ICRzcGFjZXIpOyBcbiAgfVxuICBAZWxzZSBpZiAoJGRpciA9PSByaWdodCkgeyBcbiAgICBAaW5jbHVkZSBwYWRkaW5nKCRyaWdodDogJHNwYWNlcik7IFxuICB9XG4gIEBlbHNlIGlmICgkZGlyID09IGJvdHRvbSkgeyBcbiAgICBAaW5jbHVkZSBwYWRkaW5nKCRib3R0b206ICRzcGFjZXIpOyBcbiAgfVxuICBAZWxzZSBpZiAoJGRpciA9PSBsZWZ0KSB7IFxuICAgIEBpbmNsdWRlIHBhZGRpbmcoJGxlZnQ6ICRzcGFjZXIpOyBcbiAgfVxuICBAZWxzZSBpZiAoJGRpciA9PSBob3Jpem9udGFsKSB7IFxuICAgIEBpbmNsdWRlIHBhZGRpbmcoJHJpZ2h0OiAkc3BhY2VyLCAkbGVmdDogJHNwYWNlcik7IFxuICB9XG4gIEBlbHNlIGlmICgkZGlyID09IHZlcnRpY2FsKSB7IFxuICAgIEBpbmNsdWRlIHBhZGRpbmcoJHRvcDogJHNwYWNlciwgJGJvdHRvbTogJHNwYWNlcik7IFxuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1zcGFjaW5nIHtcbiAgQGZvciAkc3BhY2VyIGZyb20gMCB0aHJvdWdoICRwcm90b3R5cGUtc3BhY2Vycy1jb3VudCB7XG4gICAgXG4gICAgQGVhY2ggJHByb3AgaW4gKG1hcmdpbiwgcGFkZGluZykge1xuICAgICAgLy8gQWxsIFNpZGVzXG4gICAgICAuI3skcHJvcH0tI3skc3BhY2VyfSB7XG4gICAgICAgIEBpZiAoJHByb3AgPT0gbWFyZ2luKSB7IFxuICAgICAgICAgIG1hcmdpbjogJHNwYWNlciAqICRnbG9iYWwtbWFyZ2luICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2UgaWYgKCRwcm9wID09IHBhZGRpbmcpIHsgXG4gICAgICAgICAgcGFkZGluZzogJHNwYWNlciAqICRnbG9iYWwtcGFkZGluZyAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBlYWNoICRkaXIgaW4gKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCwgaG9yaXpvbnRhbCwgdmVydGljYWwpIHtcbiAgICAgICAgLy8gVG9wIFNpZGVcbiAgICAgICAgLiN7JHByb3B9LSN7JGRpcn0tI3skc3BhY2VyfSB7XG4gICAgICAgICAgQGlmICgkcHJvcCA9PSBtYXJnaW4pIHsgXG4gICAgICAgICAgICBAaW5jbHVkZSBtYXJnaW4tZGlyZWN0aW9uKCRkaXIsICRzcGFjZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBAZWxzZSBpZiAoJHByb3AgPT0gcGFkZGluZykge1xuICAgICAgICAgICAgQGluY2x1ZGUgcGFkZGluZy1kaXJlY3Rpb24oJGRpciwgJHNwYWNlcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLXNwYWNpbmctYnJlYWtwb2ludHMpIHtcbiAgICBAZm9yICRzcGFjZXIgZnJvbSAwIHRocm91Z2ggJHByb3RvdHlwZS1zcGFjZXJzLWNvdW50IHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgLiN7JHNpemV9IHtcbiAgICAgICAgICAgICAgQGVhY2ggJHByb3AgaW4gKG1hcmdpbiwgcGFkZGluZykge1xuICAgICAgICAgICAgICAgIC8vIEFsbCBTaWRlc1xuICAgICAgICAgICAgICAgICYtI3skcHJvcH0tI3skc3BhY2VyfSB7XG4gICAgICAgICAgICAgICAgICBAaWYgKCRwcm9wID09IG1hcmdpbikgeyBcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAkc3BhY2VyICogJGdsb2JhbC1tYXJnaW4gIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBlbHNlIGlmICgkcHJvcCA9PSBwYWRkaW5nKSB7IFxuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAkc3BhY2VyICogJGdsb2JhbC1wYWRkaW5nICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQGVhY2ggJGRpciBpbiAodG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBob3Jpem9udGFsLCB2ZXJ0aWNhbCkge1xuICAgICAgICAgICAgICAgICAgLy8gVG9wIFNpZGVcbiAgICAgICAgICAgICAgICAgICYtI3skcHJvcH0tI3skZGlyfS0jeyRzcGFjZXJ9IHtcbiAgICAgICAgICAgICAgICAgICAgQGlmICgkcHJvcCA9PSBtYXJnaW4pIHsgXG4gICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgbWFyZ2luLWRpcmVjdGlvbigkZGlyLCAkc3BhY2VyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAZWxzZSBpZiAoJHByb3AgPT0gcGFkZGluZykgeyBcbiAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBwYWRkaW5nLWRpcmVjdGlvbigkZGlyLCAkc3BhY2VyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiaHRtbFtkYXRhLWV4dGVybmFsLXdpZGdldF0ge1xuICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci13aGl0ZTtcbn1cblxuLmV4dGVybmFsLXdpZGdldCB7XG4gICAgKiB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkaGVhZGluZy1mb250LWZhbWlseTtcbiAgICB9XG5cbiAgICBhIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cblxuICAgIC5jb2x1bW4ge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgIH1cblxuICAgIC5ldy1jb250YWluZXIge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkY29sb3ItbGlnaHQtZ3JheTtcblxuICAgICAgICAmLS1wYWRkaW5nIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IHJlbS1jYWxjKDE1KSByZW0tY2FsYygxNSkgcmVtLWNhbGMoNCkgcmVtLWNhbGMoMTUpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi0tYmctY29sb3Ige1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMTAsIDc1LCAzOSwgMC4wNSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIuZXctaGVhZGVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAuN3JlbSAxcmVtO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5ldy1oZWFkZXJfX2NpdHkge1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpO1xufVxuXG4uZXctaGVhZGVyX19sb2dvIHtcbiAgICBtYXgtd2lkdGg6IDEyMHB4O1xuICAgIG1hcmdpbi1yaWdodDogLjdyZW07XG59XG5cbi5ldy1oZWFkZXJfX2xpbmsge1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpO1xufVxuXG4uZXctaGVhZGVyX19saW5rLCAuZXctaGVhZGVyX19jaXR5IHtcbiAgICBhIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci13aGl0ZTtcblxuICAgICAgICAmOnZpc2l0ZWQge1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmV3LWhlYWRlcl9fY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTgpO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5ldy1oZWFkZXJfX2NpdHkge1xuICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgbWFyZ2luLXRvcDogNXB4O1xufVxuIiwiLmV4dGVybmFsLXdpZGdldCB7XG4gICAgLmV3LWZsZXgge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIHBhZGRpbmc6IDFyZW0gMDtcblxuICAgICAgICAuZXctc2VjdGlvbi1jb2wsXG4gICAgICAgIC5ldy1zZWN0aW9uLWZ1bGwge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5ldy1zZWN0aW9uLWNvbCB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAxcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCg1NjBweCB1cCkge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgICAgICAgICAgLmV3LXNlY3Rpb24tZnVsbCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6MTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5ldy1zZWN0aW9uLWNvbHtcbiAgICAgICAgICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCg2OTRweCB1cCkge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcblxuICAgICAgICAgICAgLmV3LXNlY3Rpb24tY29sLFxuICAgICAgICAgICAgLmV3LXNlY3Rpb24tZnVsbCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDMzJTtcblxuICAgICAgICAgICAgICAgICYtLTEsICYtLTIge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogNjYlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICYtLTMsICYtLTQge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmV3LXNlY3Rpb24tY29sIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuZXctc2VjdGlvbi1mdWxsIHtcbiAgICAgICAgICAgICAgICAuZXctZmVhdHVyZWQtcG9zdCB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZXctZmVhdHVyZWQtcG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGhlaWdodDogMTAwJTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wMykgdHJhbnNsYXRlWSgtM3B4KSB0cmFuc2xhdGVaKDApO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDE1cHggcmdiYSgkY29sb3ItYmxhY2ssIC4xNSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZXctZmVhdHVyZWQtcG9zdF9fY29udGFpbmVyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZy10b3A6IDU2LjI1JTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgei1pbmRleDogLTE7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KDU2MHB4IHVwKSB7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMzAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLndwLXBvc3QtaW1hZ2Uge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZXctZmVhdHVyZWQtcG9zdF9fb3BhY2l0eSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4zKTtcbiAgICB9XG5cbiAgICAuZXctZmVhdHVyZWQtcG9zdF9fdGl0bGUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTgpO1xuICAgICAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoMjEpO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG5cbiAgICAuZXh0ZXJuYWwtd2lkZ2V0X19oZWFkZXIge1xuICAgICAgICBoMiB7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxOCk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5ldy1zZWN0aW9uIHtcbiAgICAgICAgbWFyZ2luOiAwIDFyZW07XG4gICAgfVxuXG4gICAgLnBvcHVsYXItcG9zdHNfX2l0ZW0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogdG9wO1xuICAgICAgICBtYXJnaW46IC45cmVtIDA7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAucG9wdWxhci1wb3N0c19faXRlbS1udW1iZXIge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wMykgdHJhbnNsYXRlWSgtM3B4KSB0cmFuc2xhdGVaKDApO1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAxNXB4IHJnYmEoJGNvbG9yLWJsYWNrLCAuMTUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnBvcHVsYXItcG9zdHNfX2l0ZW0tdGl0bGUge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5wb3B1bGFyLXBvc3RzX19pdGVtLW51bWJlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5O1xuICAgICAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyMnB4O1xuICAgICAgICBoZWlnaHQ6IDIycHg7XG4gICAgICAgIGZsZXg6IDAgMCAyMnB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMjJweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAuNXJlbTtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIC41cyBjdWJpYy1iZXppZXIoMCwgMC42LCAwLjcsIDEpO1xuICAgIH1cblxuICAgIC5wb3B1bGFyLXBvc3RzX19pdGVtLXRpdGxlLCAubmV3LXBvc3RzX19pdGVtLXRpdGxlLCAucGFydG5lci1wb3N0c19faXRlbS10aXRsZSB7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTEpO1xuICAgICAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoMTMpO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAzO1xuICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgLjVzIGN1YmljLWJlemllcigwLCAwLjYsIDAuNywgMSk7XG5cbiAgICAgICAgJi0tMSwgJi0tMiwgJi0tMywgJi0tNCB7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE1KTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygxNSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubmV3LXBvc3RzX19pdGVtLCAucGFydG5lci1wb3N0c19faXRlbSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIG1hcmdpbjogLjVyZW0gMDtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIC5uZXctcG9zdHNfX2l0ZW0tdGh1bWJuYWlsLFxuICAgICAgICAgICAgLnBhcnRuZXItcG9zdHNfX2l0ZW0tdGh1bWJuYWlsIHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDMpIHRyYW5zbGF0ZVkoLTNweCkgdHJhbnNsYXRlWigwKTtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIDEwcHggMTVweCByZ2JhKCRjb2xvci1ibGFjaywgLjE1KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm5ldy1wb3N0c19faXRlbS10aXRsZSxcbiAgICAgICAgICAgIC5wYXJ0bmVyLXBvc3RzX19pdGVtLXRpdGxlIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubmV3LXBvc3RzX19pdGVtLXRodW1ibmFpbCwgLnBhcnRuZXItcG9zdHNfX2l0ZW0tdGh1bWJuYWlsIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBoZWlnaHQ6IDUwcHg7XG4gICAgICAgIGZsZXg6IDAgMCA1MHB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IC41cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItbGlnaHQtZ3JheTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgLjVzIGN1YmljLWJlemllcigwLCAwLjYsIDAuNywgMSk7XG5cbiAgICAgICAgLndwLXBvc3QtaW1hZ2Uge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubmV3LXBvc3RzX19pdGVtLWNvbnRhaW5lciwgLnBhcnRuZXItcG9zdHNfX2l0ZW0tY29udGFpbmVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIH1cblxuICAgIC5uZXctcG9zdHNfX2l0ZW0tcGFydG5lciB7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItZGFyay1ncmF5O1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDEwKTtcblxuICAgICAgICAuY29tcGFueSB7XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvci1wcmltYXJ5O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnBhcnRuZXItcG9zdHMge1xuICAgICAgICBwYWRkaW5nOiAuNnJlbSAxcmVtIC41cmVtIDFyZW07XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICAucGFybnRlci1wb3N0c19faXRlbS1jb250YWluZXIge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KDU2MHB4IHVwKSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgbWFyZ2luOiAwIC0xcmVtO1xuICAgIH1cblxuICAgIC5wYXJ0bmVyLXBvc3RzX19pdGVtIHtcbiAgICAgICAgZmxleDogMSAwIDA7XG4gICAgICAgIG1hcmdpbjogLjVyZW0gMXJlbTtcbiAgICB9XG5cbiAgICAucGFydG5lci1wb3N0c19faXRlbS1wYXJ0bmVyIHtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxMik7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbiAgICB9XG59XG4iLCIuZXctY29sdW1uLWdyaWQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLmV3LWNvbHVtbi1ncmlkX19oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tYm90dG9tOiAuNXJlbTtcblxuICAgIGgyIHtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygyMCk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgLmxpbmsge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuLmV3LWNvbHVtbi1ncmlkX19jZWxsIHtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLmV3LWNvbHVtbi1ncmlkX19pbm5lci1ibG9jayB7XG4gICAgbWFyZ2luOiByZW0tY2FsYygxNSkgMDtcblxuICAgIGgyIHtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygyMCk7XG4gICAgfVxufVxuXG4uZXctY29sdW1uLWdyaWRfX2lubmVyLWJsb2NrLS1vZmZlciB7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4uZXctY29sdW1uLWdyaWRfX2Zvb3RlciB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KDU2MHB4IHVwKSB7XG4gICAgLmV3LWNvbHVtbi1ncmlkX19oZWFkZXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cblxuICAgIC5ldy1jb2x1bW4tZ3JpZCB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgfVxuXG4gICAgLmV3LWNvbHVtbi1ncmlkX19jZWxsIHtcbiAgICAgICAgd2lkdGg6IGNhbGMoNTAlIC0gMTVweCk7XG5cbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmV3LWNvbHVtbi1ncmlkX19pbm5lci1ibG9jayB7XG4gICAgICAgIG1hcmdpbjogcmVtLWNhbGMoMTUpIDAgMCAwO1xuICAgIH1cblxuICAgIC5ldy1jb2x1bW4tZ3JpZF9faW5uZXItYmxvY2stLW9mZmVyIHtcbiAgICAgICAgbWFyZ2luOiAuNXJlbSAwO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAuZXctY29sdW1uLWdyaWRfX2hlYWRlciB7XG4gICAgICAgIC5saW5rIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5ldy1jb2x1bW4tZ3JpZF9fZm9vdGVyIHtcbiAgICAgICAgdGV4dC1hbGlnbjogc3RhcnQ7XG5cbiAgICAgICAgLmxpbmsge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5ldy1wb3N0LWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDEwKTtcbiAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcblxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpO1xuICAgIH1cbn1cblxuLmV3LXBvc3QtaXRlbV9fdGh1bWJuYWlsIHtcbiAgICBAaW5jbHVkZSB2by1kZWZhdWx0LWJhY2tncm91bmQtaW1hZ2UoKTtcbiAgICBvcmRlcjogMDtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IHJlbS1jYWxjKDEwNCk7XG4gICAgaGVpZ2h0OiByZW0tY2FsYyg3OCk7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWVkaXVtO1xuICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDApO1xuICAgIG1hcmdpbi1yaWdodDogcmVtLWNhbGMoMTApO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgei1pbmRleDogMDtcbiAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcblxuICAgIGltZyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICB9XG5cbiAgICAuZXctcG9zdC1pdGVtOmhvdmVyICYge1xuICAgICAgICBib3gtc2hhZG93OiAwIDEwcHggMTVweCByZ2JhKCRjb2xvci1ibGFjaywgLjE1KTtcbiAgICB9XG59XG5cbi5ldy1wb3N0LWl0ZW1fX3BvcHVsYXItbnVtYmVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAkc3BhY2luZy1zO1xuICAgIGxlZnQ6ICRzcGFjaW5nLXM7XG4gICAgd2lkdGg6IHJlbS1jYWxjKDI0KTtcbiAgICBoZWlnaHQ6IHJlbS1jYWxjKDI0KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbiAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygyNik7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDEyKTtcbn1cblxuLmV3LXBvc3QtaXRlbV9fY29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4uZXctcG9zdC1pdGVtX190aXRsZSB7XG4gICAgQGV4dGVuZCAlZm9udC13ZWlnaHQtYm9sZDtcbiAgICBmb250LWZhbWlseTogJGZvbnQtbW9udHNlcnJhdDtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDEyKTtcbiAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoMTYpO1xuICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDMpO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHRyYW5zaXRpb246IGNvbG9yICR0cmFuc2l0aW9uLWZhc3Q7XG59XG5cbi5ldy1wb3N0LWl0ZW1fX3Nwb25zb3Ige1xuICAgIEBleHRlbmQgJWZvbnQtd2VpZ2h0LW1lZGl1bTtcbiAgICBjb2xvcjogJGNvbG9yLWRhcmstZ3JheTtcbiAgICBmb250LWZhbWlseTogJGZvbnQtbW9udHNlcnJhdDtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDEwKTtcbiAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoMTMpO1xuICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmV3LXBvc3QtaXRlbV9fc3BvbnNvci1uYW1lIHtcbiAgICBAaW5jbHVkZSB2by1saW5rKCRjb2xvci1wcmltYXJ5KTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMjtcbiAgICBwb2ludGVyLWV2ZW50czogYWxsO1xufVxuXG5cbi5ldy1wb3N0LWl0ZW0tZmVhdHVyZWQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgaGVpZ2h0OiByZW0tY2FsYygxNzgpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wMykgdHJhbnNsYXRlWSgtM3B4KSB0cmFuc2xhdGVaKDApO1xuICAgICAgICBib3gtc2hhZG93OiAwIDEwcHggMTVweCByZ2JhKCRjb2xvci1ibGFjaywgLjE1KTtcbiAgICB9XG59XG5cbi5ldy1wb3N0LWl0ZW0tZmVhdHVyZWRfX2NvbnRhaW5lciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgei1pbmRleDogLTE7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuXG4gICAgLndwLXBvc3QtaW1hZ2Uge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgfVxufVxuXG4uZXctcG9zdC1pdGVtLWZlYXR1cmVkX19vcGFjaXR5IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjMpO1xufVxuXG4uZXctcG9zdC1pdGVtLWZlYXR1cmVkX190aXRsZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDFyZW07XG4gICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDE2KTtcbiAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoMTkpO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4uZXctcG9zdC1pdGVtLWZlYXR1cmVkX19zcG9uc29yIHtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDEwKTtcbiAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoMTMpO1xuICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgbWFyZ2luLXRvcDogJHNwYWNpbmctcztcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuXG4gICAgc3BhbiB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbn1cblxuLmV3LXBvc3QtaXRlbV9fbGlzdCB7XG4gICAgQGV4dGVuZCAldW5zdHlsZWQtbGlzdDtcbn1cblxuLmV3LXBvc3QtaXRlbV9fbGlzdC1pdGVtIHtcbiAgICBjb2xvcjogJGNvbG9yLWRhcmstZ3JheTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTApO1xuICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygxNCk7XG4gICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoNSk7XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbn1cblxuLmV3LXBvc3QtaXRlbV9fbGlzdC1pdGVtX19pY29uIHtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpO1xuICAgIHdpZHRoOiByZW0tY2FsYygxMik7XG4gICAgaGVpZ2h0OiByZW0tY2FsYygxNCk7XG4gICAgbWFyZ2luLXJpZ2h0OiByZW0tY2FsYyg4KTtcbn1cblxuIiwiLmV3LXRhYnMge1xuICAgIHVsIHtcbiAgICAgICAgQGV4dGVuZCAldW5zdHlsZWQtbGlzdDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgbWFyZ2luOiAwIDAgJHNwYWNpbmcgMDtcblxuICAgICAgICBsaSB7XG4gICAgICAgICAgICBtYXJnaW46IDAgcmVtLWNhbGMoMTgpIDAgMDtcblxuICAgICAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDIwKTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAzcHggc29saWQgJGNvbG9yLWJsYWNrO1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiByZW0tY2FsYygzKTtcblxuICAgICAgICAgICAgICAgICZbYXJpYS1zZWxlY3RlZD0nZmFsc2UnXSB7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IC41O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5ldy10YWItY29udGVudCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgICAgJlthcmlhLWhpZGRlbj0nZmFsc2UnXSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qIENvbXBvbmVudHMgKi9cbkBpbXBvcnQgJ2NvbXBvbmVudHMvYnV0dG9uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvY29tcGFueS1pdGVtJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvaWNvbi1idXR0b24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9zaGFyZS1idXR0b24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9mb3Jtcyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2ljb25zJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvb3Blbi1zdGF0dXMnO1xuQGltcG9ydCAnY29tcG9uZW50cy90YWdzJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbGlua3MnO1xuQGltcG9ydCAnY29tcG9uZW50cy9iYWRnZSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3Nwb25zb3JlZCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3NlYXJjaC1pdGVtJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZnVuZGEtaW5mbyc7XG5cbi8qIEJsb2NrcyAqL1xuQGltcG9ydCAnYmxvY2tzL3Bvc3QtbGlzdCc7XG5AaW1wb3J0ICdibG9ja3MvcmVsYXRlZC1wb3N0JztcbkBpbXBvcnQgJ2Jsb2Nrcy9nYWxsZXJ5JztcbkBpbXBvcnQgJ2Jsb2Nrcy9ub3RlJztcbkBpbXBvcnQgJ2Jsb2Nrcy9waG90by13YWxsJztcblxuLyogR3V0ZW5iZXJnICovXG5AaW1wb3J0ICdndXRlbmJlcmcvZ3V0ZW5iZXJnJztcbkBpbXBvcnQgJ2d1dGVuYmVyZy9wbGFjZWhvbGRlcic7XG4iLCIvKipcbiAqIEJ1dHRvbi5cbiAqXG4gKiAuYnV0dG9uIChzdGFuZGFyZCBlbGVtZW50KVxuICogLmJ1dHRvbi0tcmVkIChyZWQgYnV0dG9uKVxuICogLmJ1dHRvbi0tb3JhbmdlIChvcmFuZ2UgYnV0dG9uKVxuICogLmJ1dHRvbi0tY29udGFpbiAod2lkdGggYmFzZWQgb24gdGV4dCBpbiB0aGUgYnV0dG9uKVxuICogLmJ1dHRvbi0td2l0aC1pY29uIChpY29uIG9uIHRoZSByaWdodCBzaWRlKVxuICogLmJ1dHRvbi0td2l0aC1pY29uLWluZnJvbnQgKGljb24gb24gdGhlIGxlZnQgc2lkZSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG4uYnV0dG9uIHtcbiAgICBAaW5jbHVkZSB2by1idXR0b247XG59XG5cbi5idXR0b24tLXJlZCB7XG4gICAgQGluY2x1ZGUgdm8tYnV0dG9uLXZhcmlhdGlvbigkY29sb3Itd2hpdGUsICRjb2xvci1wcmltYXJ5KTtcbn1cblxuLmJ1dHRvbi0tb3JhbmdlIHtcbiAgICBAaW5jbHVkZSB2by1idXR0b24tdmFyaWF0aW9uKCRjb2xvci13aGl0ZSwgJGNvbG9yLW9yYW5nZSk7XG59XG5cbi5idXR0b24tLWdyZWVuIHtcbiAgICBAaW5jbHVkZSB2by1idXR0b24tdmFyaWF0aW9uKCRjb2xvci13aGl0ZSwgJGNvbG9yLWdyZWVuKTtcbn1cblxuLmJ1dHRvbi0tZ3JheS1saWdodCB7XG4gICAgQGluY2x1ZGUgdm8tYnV0dG9uLXZhcmlhdGlvbigkY29sb3ItZGFya2VyLWdyYXksICRjb2xvci1saWdodC1ncmF5LCAkY29sb3ItZGFya2VyLWdyYXkpO1xufVxuXG4uYnV0dG9uLS1jb250YWluIHtcbiAgICB3aWR0aDogYXV0bztcbn1cblxuLmJ1dHRvbi0tZXh0ZXJuYWwge1xuICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG46cm9vdCAuYnV0dG9uLS13aXRoLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgcGFkZGluZy1yaWdodDogcmVtLWNhbGMoNTApO1xuXG4gICAgc3ZnLCBpLCBpbWcge1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDI0KTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogcmVtLWNhbGMoMTIpO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIH1cblxuICAgIGltZyB7XG4gICAgICAgIHdpZHRoOiByZW0tY2FsYygyNCk7XG4gICAgICAgIGhlaWdodDogcmVtLWNhbGMoMjQpO1xuICAgICAgICBmaWx0ZXI6IGludmVydCgxMDAlKTtcbiAgICB9XG59XG5cbjpyb290IC5idXR0b24tLXdpdGgtaWNvbi1pbmZyb250IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHBhZGRpbmctbGVmdDogcmVtLWNhbGMoNDApO1xuXG4gICAgc3ZnLCBpLCBpbWcge1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE4KTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBsZWZ0OiByZW0tY2FsYyg5KTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICA6cm9vdCAuYnV0dG9uLS13aXRoLWljb24taW5mcm9udCB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogcmVtLWNhbGMoNTApO1xuXG4gICAgICAgIHN2ZywgaSB7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDI0KTtcbiAgICAgICAgICAgIGxlZnQ6IHJlbS1jYWxjKDEyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuOnJvb3QgLmJ1dHRvbi0taWNvbi1jaGV2cm9uIHtcbiAgICBwYWRkaW5nLWxlZnQ6IHJlbS1jYWxjKDI2KTtcblxuICAgIHN2ZywgaSB7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTApO1xuICAgICAgICBsZWZ0OiByZW0tY2FsYygxMik7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgIDpyb290IC5idXR0b24tLWljb24tY2hldnJvbiB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogcmVtLWNhbGMoNDApO1xuXG4gICAgICAgIHN2ZywgaSB7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDEyKTtcbiAgICAgICAgICAgIGxlZnQ6IHJlbS1jYWxjKDIwKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5jb21wYW55LWl0ZW0ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWxpZ2h0LWdyYXk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzO1xuXG4gICAgQGlmKCRlZGl0b3IpIHtcbiAgICAgICAgcCB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmVudHJ5ICYgKyAqIHtcbiAgICAgICAgbWFyZ2luLXRvcDogJHNwYWNpbmctbTtcbiAgICB9XG59XG5cbi5jb21wYW55LWl0ZW1fX2NvbnRhaW5lciB7XG4gICAgb3JkZXI6IDI7XG4gICAgZmxleC1ncm93OiAxO1xufVxuXG4uY29tcGFueS1pdGVtX19jb250ZW50IHtcbiAgICBwYWRkaW5nOiByZW0tY2FsYygyMCk7XG59XG5cbi5jb21wYW55LWl0ZW1fX3RpdGxlIHtcbiAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDQpO1xufVxuXG4uY29tcGFueS1pdGVtX19hZGRyZXNzIHtcbiAgICBAaW5jbHVkZSB0ZXh0LXMoKTtcbiAgICBjb2xvcjogJGNvbG9yLWRhcmtlci1ncmF5O1xufVxuXG4uY29tcGFueS1pdGVtX19pbWFnZSB7XG4gICAgQGluY2x1ZGUgdm8tZGVmYXVsdC1iYWNrZ3JvdW5kLWltYWdlKCk7XG4gICAgb3JkZXI6IDE7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1pbi1oZWlnaHQ6IHJlbS1jYWxjKDE3OCk7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgei1pbmRleDogMDtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAkYm9yZGVyLXJhZGl1cztcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogJGJvcmRlci1yYWRpdXM7XG5cbiAgICBpbWcge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICB9XG5cbiAgICBhIHtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxufVxuXG46cm9vdCAuY29tcGFueS1pdGVtX19pbWFnZS1saW5rIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHotaW5kZXg6IDE7XG4gICAgcG9pbnRlci1ldmVudHM6IGFsbDtcbn1cblxuLmNvbXBhbnktaXRlbV9fZm9vdGVyIHtcbiAgICAuYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0gb25seSkge1xuICAgIC5jb21wYW55LWl0ZW0ge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIH1cblxuICAgIC5jb21wYW55LWl0ZW1fX2ltYWdlIHtcbiAgICAgICAgd2lkdGg6IHJlbS1jYWxjKDE4MCk7XG4gICAgICAgIGhlaWdodDogdW5zZXQ7XG4gICAgICAgIG1pbi1oZWlnaHQ6IHVuc2V0O1xuICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgICB9XG5cbiAgICAuY29tcGFueS1pdGVtX19zdGF0dXMge1xuICAgICAgICAub3Blbi1zdGF0dXMge1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYyg4KTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygxMCk7XG4gICAgICAgICAgICBwYWRkaW5nOiByZW0tY2FsYyg0IDYpO1xuICAgICAgICAgICAgYm9yZGVyLXdpZHRoOiAxcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzg3cHgpIGFuZCAobWF4LXdpZHRoOiAxMTI0cHgpIHtcbiAgICAuY29tcGFueS1pdGVtX190aXRsZSxcbiAgICAuY29tcGFueS1pdGVtX19hZGRyZXNzIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogcmVtLWNhbGMoODApO1xuICAgIH1cblxuICAgIC5jb21wYW55LWl0ZW1fX3N0YXR1cyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiByZW0tY2FsYygxNyk7XG4gICAgICAgIHJpZ2h0OiByZW0tY2FsYygxOSk7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgLmNvbXBhbnktaXRlbV9fYWRkcmVzcyB7XG4gICAgICAgIEBpbmNsdWRlIHRleHQoKTtcbiAgICB9XG5cbiAgICAuY29tcGFueS1pdGVtX19pbWFnZSB7XG4gICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1lZGl1bTtcbiAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1lZGl1bTtcbiAgICB9XG59XG5cbi8qKlxuICogVmFyaWF0aW9uXG4gKi9cbi5jb21wYW55LWl0ZW0tLWhvcml6b250YWwge31cblxuLy8uY29tcGFueS1pdGVtLS1zaG9ydGNvZGUge1xuLy8gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0gZG93bikge1xuLy8gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4vLyAgICB9XG4vL31cblxuQGluY2x1ZGUgYnJlYWtwb2ludCg0ODApIHtcbiAgICAuY29tcGFueS1pdGVtLS1ob3Jpem9udGFsIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcblxuICAgICAgICAuY29tcGFueS1pdGVtX19pbWFnZSB7XG4gICAgICAgICAgICB3aWR0aDogcmVtLWNhbGMoMTgwKTtcbiAgICAgICAgICAgIGhlaWdodDogdW5zZXQ7XG4gICAgICAgICAgICBtaW4taGVpZ2h0OiB1bnNldDtcbiAgICAgICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KDEzMDApIHtcbiAgICAuY29tcGFueS1pdGVtLS1ob3Jpem9udGFsIHtcbiAgICAgICAgLmNvbXBhbnktaXRlbV9faW1hZ2Uge1xuICAgICAgICAgICAgd2lkdGg6IHJlbS1jYWxjKDI4Nyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAuZW50cnlfX3ByZXNpZGUtLWRlc2t0b3AgLmNvbXBhbnktaXRlbSB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICAgIHRvcDogY2FsYygxMzBweCArICN7JHNwYWNpbmctbH0pOyAvKiBoZWFkZXIgPSAxMzBweCArIHNwYWNpbmcgKi9cbiAgICB9XG59XG4iLCIvKipcbiAqIEljb24gQnV0dG9uLlxuXG4gKiAuaWNvbi1idXR0b24gKHN0YW5kYXJkIGVsZW1lbnQpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuLmljb24tYnV0dG9uIHtcbiAgICBAaW5jbHVkZSB2by1pY29uLWJ1dHRvbjtcbn1cblxuLmljb24tYnV0dG9uLS13aGl0ZSB7XG4gICAgQGluY2x1ZGUgdm8taWNvbi1idXR0b24tdmFyaWF0aW9uKCRjb2xvci1wcmltYXJ5LCAkY29sb3Itd2hpdGUpO1xufVxuXG4uaWNvbi1idXR0b24tLWNyb3NzIHtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDE1KTtcbn1cblxuLmljb24tYnV0dG9uLS1zdGF0aWMge1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTcpO1xuICAgIHdpZHRoOiByZW0tY2FsYyg0MCk7XG4gICAgaGVpZ2h0OiByZW0tY2FsYyg0MCk7XG59XG5cbi5pY29uLWJ1dHRvbi0tc21hbGwge1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTYpO1xuICAgIHdpZHRoOiByZW0tY2FsYygzNSk7XG4gICAgaGVpZ2h0OiByZW0tY2FsYygzNSk7XG59XG5cbi5pY29uLWJ1dHRvbi0tdHJhbnNwYXJlbnQge1xuICAgIEBpbmNsdWRlIHZvLWljb24tYnV0dG9uLXZhcmlhdGlvbigkY29sb3ItZGFyay1ncmF5LCB0cmFuc3BhcmVudCwgJGNvbG9yLWJsYWNrLCB0cmFuc3BhcmVudCk7XG59XG5cbi5pY29uLWJ1dHRvbi0tdHJhbnNwYXJlbnQuaXMtYWN0aXZlIHtcbiAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xufVxuXG4uaWNvbi1idXR0b24tLXNsaWRlciB7XG4gICAgQGluY2x1ZGUgdm8taWNvbi1idXR0b24tdmFyaWF0aW9uKCRjb2xvci13aGl0ZSwgdHJhbnNwYXJlbnQsICRjb2xvci13aGl0ZSwgdHJhbnNwYXJlbnQpO1xuXG4gICAgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsIDAuNCk7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgLmljb24tYnV0dG9uLS1jcm9zcyB7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjIpO1xuICAgIH1cbn1cbiIsIi8qKlxuICogU2hhcmUgYnV0dG9uXG5cbiAqIC5zaGFyZS1idXR0b24gKHN0YW5kYXJkIGVsZW1lbnQpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuLnNoYXJlLWJ1dHRvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIHdpZHRoOiByZW0tY2FsYyg3MCk7XG4gICAgaGVpZ2h0OiByZW0tY2FsYyg0NSk7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygyMSk7XG4gICAgYmFja2dyb3VuZDogJGNvbG9yLWJ1dHRvbi1ncmF5O1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgICAgYmFja2dyb3VuZDogZGFya2VuKCRjb2xvci1idXR0b24tZ3JheSwgMTAlKTtcbiAgICAgICAgQGluY2x1ZGUgZWxlbWVudC1ob3ZlcigpO1xuICAgIH1cblxuICAgICYtLWZhY2Vib29rIHtcbiAgICAgICAgYmFja2dyb3VuZDogIzNCNTk5ODtcblxuICAgICAgICAmOmhvdmVyLFxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGRhcmtlbigjM0I1OTk4LCAxMCUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi0tdHdpdHRlciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICMxREExRjI7XG5cbiAgICAgICAgJjpob3ZlcixcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBkYXJrZW4oIzFEQTFGMiwgMTAlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLXdoYXRzYXBwIHtcbiAgICAgICAgYmFja2dyb3VuZDogIzI1RDM2NjtcblxuICAgICAgICAmOmhvdmVyLFxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGRhcmtlbigjMjVEMzY2LCAxMCUpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgIC5zaGFyZS1idXR0b24ge1xuICAgICAgICB3aWR0aDogcmVtLWNhbGMoODApO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgIC5zaGFyZS1idXR0b24ge1xuICAgICAgICB3aWR0aDogcmVtLWNhbGMoNjgpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBWYXJpYXRpb25cbiAqL1xuQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAuc2hhcmUtYnV0dG9uLS1mbGV4aWJsZSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbn1cbiIsIi8qKlxuICogRm9ybXNcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG4kaW5wdXQtYmFja2dyb3VuZDogJGNvbG9yLXdoaXRlO1xuJGlucHV0LWJvcmRlci13aWR0aDogMXB4O1xuJGlucHV0LWJvcmRlci1zdHlsZTogc29saWQ7XG4kaW5wdXQtYm9yZGVyLWNvbG9yOiAkY29sb3ItYnV0dG9uLWdyYXk7XG4kaW5wdXQtYm9yZGVyLWZvY3VzLWNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbiRpbnB1dC1wYWRkaW5nOiAxMHB4IDE1cHg7XG4kdGV4dGFyZWEtbGluZS1oZWlnaHQ6IDEuMjVyZW07XG5cbi8qKlxuICogQmFzaWMgc3R5bGluZ1xuICovXG5cbmlucHV0Om5vdChbdHlwZV0pLFxuaW5wdXRbdHlwZT0ndGV4dCddLFxuaW5wdXRbdHlwZT0ncGFzc3dvcmQnXSxcbmlucHV0W3R5cGU9J2VtYWlsJ10sXG5pbnB1dFt0eXBlPSd1cmwnXSxcbmlucHV0W3R5cGU9J2RhdGUnXSxcbmlucHV0W3R5cGU9J21vbnRoJ10sXG5pbnB1dFt0eXBlPSd0aW1lJ10sXG5pbnB1dFt0eXBlPSdkYXRldGltZSddLFxuaW5wdXRbdHlwZT0nZGF0ZXRpbWUtbG9jYWwnXSxcbmlucHV0W3R5cGU9J3dlZWsnXSxcbmlucHV0W3R5cGU9J251bWJlciddLFxuaW5wdXRbdHlwZT0nc2VhcmNoJ10sXG5pbnB1dFt0eXBlPSd0ZWwnXSxcbnRleHRhcmVhIHtcbiAgICBiYWNrZ3JvdW5kOiAkaW5wdXQtYmFja2dyb3VuZDtcbiAgICBib3JkZXI6ICRpbnB1dC1ib3JkZXItd2lkdGggJGlucHV0LWJvcmRlci1zdHlsZSAkaW5wdXQtYm9yZGVyLWNvbG9yO1xuICAgIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG5cbiAgICAmOmZvY3VzLFxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgYm9yZGVyOiAkaW5wdXQtYm9yZGVyLXdpZHRoICRpbnB1dC1ib3JkZXItc3R5bGUgJGlucHV0LWJvcmRlci1mb2N1cy1jb2xvcjtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBwbGFjZWhvbGRlciB7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItZGFya2VyLWdyYXk7XG4gICAgfVxufVxuXG4vKipcbiAqIFRleHRhcmVhXG4gKi9cblxudGV4dGFyZWEge1xuICAgIGxpbmUtaGVpZ2h0OiAkdGV4dGFyZWEtbGluZS1oZWlnaHQ7XG59XG5cbi8qKlxuICogQ2hlY2tib3ggYW5kIHJhZGlvXG4gKi9cblxuaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLFxuaW5wdXRbdHlwZT1cInJhZGlvXCJdIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBtYXJnaW4tdG9wOiByZW0tY2FsYyg1KTtcbiAgICBtYXJnaW4tcmlnaHQ6ICRzcGFjaW5nLXM7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiByZW0tY2FsYygxNyk7XG4gICAgaGVpZ2h0OiByZW0tY2FsYygxNyk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yLWJ1dHRvbi1ncmF5O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgIHRyYW5zaXRpb246IGFsbCAkdHJhbnNpdGlvbi1mYXN0O1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAkdHJhbnNpdGlvbi1mYXN0O1xuICAgIH1cblxuICAgICYgKyBsYWJlbCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cblxuICAgICY6aG92ZXIsICY6Zm9jdXMge1xuICAgICAgICBib3JkZXItY29sb3I6ICRjb2xvci1wcmltYXJ5O1xuICAgIH1cblxuICAgICY6Y2hlY2tlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLWJ1dHRvbi1ncmF5O1xuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgYm9yZGVyLXJhZGl1czogcmVtLWNhbGMoMik7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHZpZXdCb3g9JzAgMCA4IDcnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NnIHRyYW5zZm9ybT0ndHJhbnNsYXRlKC0yIC0zKScgZmlsbD0nbm9uZScgZmlsbC1ydWxlPSdldmVub2RkJyUzRSUzQ3JlY3Qgc3Ryb2tlPSclMjNBREFEQUQnIHN0cm9rZS13aWR0aD0nLjYnIGZpbGw9JyUyM0ZGRicgeD0nLS4zJyB5PSctLjMnIHdpZHRoPScxMi42JyBoZWlnaHQ9JzEyLjYnIHJ4PScyJy8lM0UlM0NwYXRoIGQ9J000LjY5MyA5LjE2bDUuMjQ2LTUuMjk4YS4yMTQuMjE0IDAgMDAwLS4zbC0uNDk1LS41YS4yMDkuMjA5IDAgMDAtLjI5NyAwTDQuNTQ0IDcuNzExbC0xLjY5LTEuNzA4YS4yMDkuMjA5IDAgMDAtLjI5OCAwbC0uNDk1LjVhLjIxNC4yMTQgMCAwMDAgLjNMNC4zOTYgOS4xNmEuMjA5LjIwOSAwIDAwLjI5NyAweicgZmlsbD0nJTIzRjkwMDIzJy8lM0UlM0MvZyUzRSUzQy9zdmclM0VcIik7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogcmVtLWNhbGMoMTApO1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuXG4gICAgJjpjaGVja2VkIHtcbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgYm9yZGVyLXJhZGl1czogMTAwJTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgd2lkdGg6IHJlbS1jYWxjKDcpO1xuICAgICAgICBoZWlnaHQ6IHJlbS1jYWxjKDcpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiByZW0tY2FsYygyMCk7XG4gICAgfVxuXG4gICAgJjpjaGVja2VkIHtcbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5O1xuICAgICAgICB9XG4gICAgfVxufVxuXG5cbi8qKlxuICogQnV0dG9uc1xuICovXG5cbmJ1dHRvbixcbmlucHV0W3R5cGU9J2J1dHRvbiddLFxuaW5wdXRbdHlwZT0ncmVzZXQnXSxcbmlucHV0W3R5cGU9J3N1Ym1pdCddIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi8qKlxuICogU2VsZWN0XG4gKi9cblxuc2VsZWN0IHtcbiAgICBjb2xvcjogJGNvbG9yLWRhcmtlci1ncmF5O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1iYWNrZ3JvdW5kO1xuICAgIGJvcmRlcjogJGlucHV0LWJvcmRlci13aWR0aCAkaW5wdXQtYm9yZGVyLXN0eWxlICRpbnB1dC1ib3JkZXItY29sb3I7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogcmVtLWNhbGMoOSk7XG4gICAgbGluZS1oZWlnaHQ6IHJlbS1jYWxjKDIwKTtcbiAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cztcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgYmFja2dyb3VuZC1pbWFnZTpcbiAgICAgICAgbGluZWFyLWdyYWRpZW50KDQ1ZGVnLCB0cmFuc3BhcmVudCA1MCUsICRpbnB1dC1ib3JkZXItY29sb3IgNTAlKSxcbiAgICAgICAgbGluZWFyLWdyYWRpZW50KDEzNWRlZywgJGlucHV0LWJvcmRlci1jb2xvciA1MCUsIHRyYW5zcGFyZW50IDUwJSksXG4gICAgICAgIGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJGlucHV0LWJvcmRlci1jb2xvciwgJGlucHV0LWJvcmRlci1jb2xvcik7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjpcbiAgICAgICAgY2FsYygxMDAlIC0gMjBweCkgY2FsYygxZW0gKyAycHgpLFxuICAgICAgICBjYWxjKDEwMCUgLSAxNXB4KSBjYWxjKDFlbSArIDJweCksXG4gICAgICAgIGNhbGMoMTAwJSAtIDIuNWVtKSAwLjVlbTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6XG4gICAgICAgIDVweCA1cHgsXG4gICAgICAgIDVweCA1cHgsXG4gICAgICAgIDFweCAxLjVlbTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLXByaW1hcnk7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgfVxufVxuXG4vKipcbiAqIERpc2FibGVkXG4gKi9cblxuYnV0dG9uW2Rpc2FibGVkXSxcbmlucHV0W2Rpc2FibGVkXSxcbnNlbGVjdFtkaXNhYmxlZF0ge1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLyoqXG4gKiBTZWFyY2hcbiAqL1xuXG5pbnB1dFt0eXBlPSdzZWFyY2gnXSB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG59XG5cbmlucHV0W3R5cGU9J3NlYXJjaCddOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxuaW5wdXRbdHlwZT0nc2VhcmNoJ106Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLyoqXG4gKiBDb2xvclxuICovXG5cbmlucHV0W3R5cGU9J2NvbG9yJ10ge1xuICAgIGJhY2tncm91bmQ6ICRpbnB1dC1iYWNrZ3JvdW5kO1xuICAgIGJvcmRlcjogJGlucHV0LWJvcmRlci13aWR0aCAkaW5wdXQtYm9yZGVyLXN0eWxlICRpbnB1dC1ib3JkZXItY29sb3I7XG59XG5cbi8qKlxuICogUmFuZ2VcbiAqL1xuaW5wdXRbdHlwZT0ncmFuZ2UnXSB7XG4gICAgQGluY2x1ZGUgcmFuZ2Utc2xpZGVyKDEwMCUsIHJlbS1jYWxjKDIpLCByZW0tY2FsYygxMikpO1xufVxuXG4vKipcbiAqIFJlYWN0IERhdGVwaWNrZXJcbiAqL1xuLnJlYWN0LWRhdGVwaWNrZXItd3JhcHBlciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoNik7XG5cbiAgICBpbnB1dCB7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiByZW0tY2FsYyg0MCk7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDE2IDE4JyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdNMTIuODg5IDBjLjI0NSAwIC40NDQuMTk5LjQ0NC40NDR2Ljg4OWgxLjMzNGMuNzM2IDAgMS4zMzMuNTk3IDEuMzMzIDEuMzM0VjE2YzAgLjczNi0uNTk3IDEuMzMzLTEuMzMzIDEuMzMzSDEuMzMzQTEuMzMzIDEuMzMzIDAgMDEwIDE2VjIuNjY3YzAtLjczNy41OTctMS4zMzQgMS4zMzMtMS4zMzRoMS4zMzNWLjQ0NGEuNDQ0LjQ0NCAwIDExLjg5IDBsLS4wMDEuODg5aDguODg5Vi40NDRjMC0uMjQ1LjItLjQ0NC40NDUtLjQ0NHptMi4yMjIgNi4yMjJILjg5VjE2YzAgLjIyOC4xNzEuNDE2LjM5My40NDFsLjA1MS4wMDNoMTMuMzM0YS40NDUuNDQ1IDAgMDAuNDQxLS4zOTJsLjAwMy0uMDUyVjYuMjIyem0tLjQ0NC00SDEuMzMzYS40NDUuNDQ1IDAgMDAtLjQ0MS4zOTNsLS4wMDMuMDUydjIuNjY2SDE1LjExVjIuNjY3YS40NDUuNDQ1IDAgMDAtLjM5My0uNDQybC0uMDUxLS4wMDN6JyBmaWxsPSclMjM3OTc5NzknIGZpbGwtcnVsZT0nZXZlbm9kZCcvJTNFJTNDL3N2ZyUzRVwiKTtcbiAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiByZW0tY2FsYygxOCk7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDExcHggY2VudGVyO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAucmVhY3QtZGF0ZXBpY2tlci13cmFwcGVyIHtcbiAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxNik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIuaWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lO1xuICAgIHdpZHRoOiAxZW07XG4gICAgaGVpZ2h0OiAxZW07XG4gICAgZmlsbDogY3VycmVudENvbG9yO1xufVxuIiwiLyoqXG4gKiBPcGVuIHN0YXR1c1xuICogSWYgYSBjb21wYW55LCB2ZW51ZSBvciBzb21ldGhpbmcgbGlrZSB0aGF0IGlzIG9wZW4gb3IgY2xvc2VkLlxuICpcbiAqIENsYXNzZXM6XG4gKiAub3Blbi1zdGF0dXMgKHN0YW5kYXJkIGVsZW1lbnQpXG4gKiAub3Blbi1zdGF0dXMtLW9wZW4gKG9wZW4gc3RhdGUpXG4gKiAub3Blbi1zdGF0dXMtLWNsb3NlZCAoY2xvc2VkIHN0YXRlKVxuICogLm9wZW4tc3RhdHVzLS1vbi1yZXF1ZXN0IChvcGVuZWQgb24gcmVxdWVzdClcbiAqIC5vcGVuLXN0YXR1cy0tYnVsbGV0IChidWxsZXQgc3R5bGUpXG4gKiAub3Blbi1zdGF0dXMtLWJ1bGxldC1vbmx5LW1vYmlsZSAoYnVsbGV0IHN0eWxlIG9ubHkgb24gbW9iaWxlLCBkZXNrdG9wIHRoZSBub3JtYWwgdmVyc2lvbilcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5AbWl4aW4gb3Blbi1zdGF0dXMtYnVsbGV0KCRjbGFzcykge1xuICAgIHdpZHRoOiA1cHg7XG4gICAgaGVpZ2h0OiA1cHg7XG4gICAgcGFkZGluZzogMDtcbiAgICB0ZXh0LWluZGVudDogLTk5OTlweDtcblxuICAgICYjeyRjbGFzc30tLW9wZW4ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZ3JlZW47XG4gICAgfVxuXG4gICAgJiN7JGNsYXNzfS0tY2xvc2VkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWRhcmstZ3JheTtcbiAgICB9XG59XG5cbi5vcGVuLXN0YXR1cyB7XG4gICAgQGluY2x1ZGUgdm8tb3Blbi1zdGF0dXMoKTtcbn1cblxuLm9wZW4tc3RhdHVzLS1vcGVuIHt9XG5cbi5vcGVuLXN0YXR1cy0tY2xvc2VkIHtcbiAgICBAaW5jbHVkZSB2by1vcGVuLXN0YXR1cy12YXJpYXRpb24oJGNvbG9yLWRhcmstZ3JheSk7XG59XG5cbi5vcGVuLXN0YXR1cy0tb24tcmVxdWVzdCB7XG4gICAgQGluY2x1ZGUgdm8tb3Blbi1zdGF0dXMtdmFyaWF0aW9uKCk7XG59XG5cbi5vcGVuLXN0YXR1cy0tYnVsbGV0IHtcbiAgICBAaW5jbHVkZSBvcGVuLXN0YXR1cy1idWxsZXQoJik7XG59XG5cbi5vcGVuLXN0YXR1cy0tYnVsbGV0LW9ubHktbW9iaWxlIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpIHtcbiAgICAgICAgQGluY2x1ZGUgb3Blbi1zdGF0dXMtYnVsbGV0KCYpO1xuICAgIH1cbn1cblxuLy8gU21hbGwgb3Blbi1zdGF0dXMgZWxlbWVudCBvbiBicmVha3BvaW50IHNtYWxsICYgbWVkaXVtXG5AaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpIHtcbiAgICAub3Blbi1zdGF0dXMtLXNtYWxsIHtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYyg4KTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IHJlbS1jYWxjKDEwKTtcbiAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoNCA2KTtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIG9ubHkpIHtcbiAgICAub3Blbi1zdGF0dXMtLXNtYWxsLFxuICAgIC5vcGVuLXN0YXR1cy0tbWVkaXVtIHtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxMik7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygxNSk7XG4gICAgICAgIHBhZGRpbmc6IHJlbS1jYWxjKDQgMTApO1xuICAgIH1cbn1cbiIsIi8qKlxuICogVGFnc1xuICogVGFncyB1bmRlciBhIGJ1dHRvblxuICpcbiAqIENsYXNzZXM6XG4gKiAudGFnIChzdGFuZGFyZCBlbGVtZW50KVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbi50YWcge1xuICAgICR0aGlzOiAmO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBwYWRkaW5nOiAxMHB4IDE1cHggMTBweCAzMnB4O1xuICAgIGJvcmRlcjogMnB4IHNvbGlkICRjb2xvci1saWdodC1ncmF5O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHdpZHRoPSc3JyBoZWlnaHQ9JzExJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDZyB0cmFuc2Zvcm09J3RyYW5zbGF0ZSgtMTUgLTE1KScgZmlsbD0nbm9uZScgZmlsbC1ydWxlPSdldmVub2RkJyUzRSUzQ3JlY3Qgc3Ryb2tlPSclMjNFQkVCRUInIHN0cm9rZS13aWR0aD0nMicgeD0nMScgeT0nMScgd2lkdGg9JzE1OCcgaGVpZ2h0PSczOCcgcng9JzMnLyUzRSUzQ3BhdGggZD0nTTIxLjA0NiAyMC40ODVsLTQuNTU1LTQuNTU1YS41NjMuNTYzIDAgMDAtLjc5NSAwbC0uNTMxLjUzMWEuNTYyLjU2MiAwIDAwLS4wMDEuNzk1bDMuNjEgMy42MjctMy42MSAzLjYyNmEuNTYyLjU2MiAwIDAwMCAuNzk1bC41MzIuNTMxYy4yMi4yMi41NzYuMjIuNzk1IDBsNC41NTUtNC41NTVhLjU2My41NjMgMCAwMDAtLjc5NXonIGZpbGw9JyUyMzc5Nzk3OScvJTNFJTNDL2clM0UlM0Mvc3ZnJTNFXCIpO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTRweCAxMnB4O1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogJGNvbG9yLWRhcmstZ3JheTtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgICAgIEBpbmNsdWRlIGVsZW1lbnQtaG92ZXIoJ3NtYWxsJyk7XG4gICAgfVxufVxuXG4vKipcbiogQ2F0ZWdvcnkgdGFnc1xuKiBDYXRlZ29yeSB0YWdzIHRoYXQgYXJlIHVzZWQgb24gbXVsdGlwbGUgcGxhY2VzXG4qXG4qIENsYXNzZXM6XG4qIC5jYXRlZ29yeS10YWcgKHN0YW5kYXJkIGVsZW1lbnQpXG4qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiovXG5cbi5jYXRlZ29yeS10YWcge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbiAgICBwYWRkaW5nOiByZW0tY2FsYyg3IDE0KTtcbiAgICBib3JkZXItcmFkaXVzOiAzMHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5O1xuICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICAgJjpub3QoLmNhdGVnb3J5LXRhZy0tc3RhdGljKSB7XG4gICAgICAgICY6aG92ZXIsXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgICAgICAgICAgQGluY2x1ZGUgZWxlbWVudC1ob3Zlcignc21hbGwnKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmNhdGVnb3J5LXRhZy0tZ3JheSB7XG4gICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYnV0dG9uLWdyYXk7XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIGRvd24pIHtcbiAgICAuY2F0ZWdvcnktdGFnLS1zdGF0aWMge1xuICAgICAgICBwYWRkaW5nOiByZW0tY2FsYyg2IDEwKTtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxMik7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBMaW5rXG4gKiBMaW5rIHN0eWxlc1xuICpcbiAqIENsYXNzZXM6XG4gKiAubGluayAoc3RhbmRhcmQpXG4gKiAubGluay0tbW9yZSAoc3RhbmRhcmQgZ3JleSlcbiAqIC5saW5rLS1tb3JlLXJlZCAoc3RhbmRhcmQgcmVkKVxuICogLmxpbmstLWljb24gKGxpbmsgd2l0aCBpY29uKVxuICogLmxpbmstaWNvbi1pbmZyb250IChsaW5rIHdpdGggaWNvbilcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG4ubGluayB7XG4gICAgQGluY2x1ZGUgdGV4dC1ib2R5KCk7XG4gICAgY29sb3I6ICRjb2xvci1kYXJrZXItZ3JheTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgJHRyYW5zaXRpb247XG5cbiAgICBzdmcge1xuICAgICAgICBoZWlnaHQ6IC43ZW07XG4gICAgfVxuXG4gICAgJi0taWNvbixcbiAgICAmLS1pY29uLWluZnJvbnQge1xuICAgICAgICBzdmcge1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtICR0cmFuc2l0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlcixcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0cHgpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbjpyb290IC5saW5rLS1ibGFjayB7XG4gICAgY29sb3I6ICRjb2xvci1ibGFjaztcbn1cblxuOnJvb3QgLmxpbmstLXJlZCB7XG4gICAgY29sb3I6ICRjb2xvci1wcmltYXJ5O1xufVxuXG46cm9vdCAubGluay0tZ3JheSB7XG4gICAgY29sb3I6ICRjb2xvci1kYXJrZXItZ3JheTtcbn1cblxuLmxpbmstLWFycm93IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcblxuICAgIHN2ZyB7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgbWF4LWhlaWdodDogcmVtLWNhbGMoMjUpO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgJHRyYW5zaXRpb247XG4gICAgfVxufVxuXG4ubGluay0tcHJldiB7XG4gICAgc3BhbjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIG9yZGVyOiAxO1xuICAgIH1cblxuICAgIHNwYW46bGFzdC1jaGlsZCB7XG4gICAgICAgIG9yZGVyOiAwO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IHJlbS1jYWxjKDEwKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBob2N1cyB7XG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTRweClcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmxpbmstLW5leHQge1xuICAgIHNwYW46Zmlyc3QtY2hpbGQge1xuICAgICAgICBvcmRlcjogMDtcbiAgICB9XG5cbiAgICBzcGFuOmxhc3QtY2hpbGQge1xuICAgICAgICBvcmRlcjogMTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IHJlbS1jYWxjKDEwKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBob2N1cyB7XG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNHB4KVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ubGluay0tc21hbGwge1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTMpO1xufVxuIiwiLmJhZGdlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgQGV4dGVuZCAlZm9udC13ZWlnaHQtYm9sZDtcbiAgICBmb250LWZhbWlseTogJGZvbnQtbW9udHNlcnJhdDtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDEwKTtcbiAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1yZWQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yLXByaW1hcnk7XG4gICAgcGFkZGluZzogcmVtLWNhbGMoMiA2IDMgNik7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXM7XG59XG5cbi5iYWRnZS0tbWVkaXVtIHtcbiAgICBib3JkZXI6IDJweCBzb2xpZCAkY29sb3ItcHJpbWFyeTtcbiAgICBwYWRkaW5nOiByZW0tY2FsYyg0IDYpO1xufVxuXG4uYmFkZ2UtLWxhcmdlIHtcbiAgICBib3JkZXI6IDJweCBzb2xpZCAkY29sb3ItcHJpbWFyeTtcbiAgICBwYWRkaW5nOiByZW0tY2FsYyg0IDYpO1xuICAgIGhlaWdodDogZml0LWNvbnRlbnQ7XG59XG5cbi5iYWRnZS0teGxhcmdlIHtcbiAgICBib3JkZXI6IDJweCBzb2xpZCAkY29sb3ItcHJpbWFyeTtcbiAgICBoZWlnaHQ6IGZpdC1jb250ZW50O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDEyKTtcbiAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoMTYpO1xuICAgIHBhZGRpbmc6IHJlbS1jYWxjKDYgMTApO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXM7XG59XG5cbi5iYWRnZS0tb3V0bGluZSB7XG4gICAgY29sb3I6ICRjb2xvci1wcmltYXJ5O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgIC5iYWRnZS0tbGFyZ2Uge1xuICAgICAgICBwYWRkaW5nOiByZW0tY2FsYyg1IDcpO1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDEyKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IHJlbS1jYWxjKDE2KTtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAuYmFkZ2Uge1xuICAgICAgICBwYWRkaW5nOiByZW0tY2FsYyg0IDYgNSA2KTtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxMSk7XG4gICAgfVxuXG4gICAgLmJhZGdlLS1tZWRpdW0ge1xuICAgICAgICBwYWRkaW5nOiByZW0tY2FsYyg0IDYpO1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDEyKTtcbiAgICB9XG5cbiAgICAuYmFkZ2UtLWxhcmdlIHtcbiAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoOSAxMik7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpO1xuICAgICAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoMTgpO1xuICAgIH1cblxuICAgIC5iYWRnZS0teGxhcmdlIHtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxNCk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygxOCk7XG4gICAgICAgIHBhZGRpbmc6IHJlbS1jYWxjKDcgMTEpO1xuICAgIH1cbn1cbiIsIi8qKlxuICogU3BvbnNvcmVkLlxuICogVHJpZ2dlcmVkIGJ5IHNob3J0Y29kZSBbJF1cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuLnNwb25zb3JlZCB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIGNvbG9yOiAkY29sb3ItYmxhY2s7XG59XG4iLCIuc2VhcmNoLWl0ZW0ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBjb2xvcjogJGNvbG9yLWRhcmtlci1ncmF5O1xufVxuXG4uc2VhcmNoLWl0ZW1fX2FuY2hvciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAxO1xufVxuXG4uc2VhcmNoLWl0ZW1fX2lubmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLnNlYXJjaC1pdGVtX19tYWluIHtcbiAgICBtaW4taGVpZ2h0OiByZW0tY2FsYyg3MCk7XG4gICAgcGFkZGluZy1sZWZ0OiByZW0tY2FsYyg4NSk7XG4gICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMTApO1xufVxuXG4uc2VhcmNoLWl0ZW1fX2hlYWRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoOCk7XG59XG5cbi5zZWFyY2gtaXRlbV9faGVhZGVyLS1jYW5jZWxsZWQge1xuICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDgpO1xuICAgIGp1c3RpZnktY29udGVudDogbm9ybWFsO1xuXG4gICAgLmJhZGdlIHtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IHRleHQtYm90dG9tO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IHJlbS1jYWxjKDgpO1xuICAgIH1cblxuICAgIC5zZWFyY2gtaXRlbV9fdGl0bGUge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgfVxufVxuXG4uc2VhcmNoLWl0ZW1fX3RpdGxlIHtcbiAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpO1xuICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygxNik7XG4gICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoNSk7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgJHRyYW5zaXRpb247XG59XG5cbi5zZWFyY2gtaXRlbV9fYWRkcmVzcyxcbi5zZWFyY2gtaXRlbV9faWNvbi10ZXh0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTApO1xuICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygxNik7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgIHNwYW46Zmlyc3QtY2hpbGQge1xuICAgICAgICBvcmRlcjogMjtcbiAgICB9XG5cbiAgICBzcGFuOmxhc3QtY2hpbGQge1xuICAgICAgICBvcmRlcjogMTtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxMik7XG4gICAgICAgIHdpZHRoOiByZW0tY2FsYygxMCk7XG4gICAgICAgIGhlaWdodDogcmVtLWNhbGMoMTYpO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IHJlbS1jYWxjKDYpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cbn1cblxuLnNlYXJjaC1pdGVtX19jb21wYW55IHtcbiAgICBAZXh0ZW5kICVmb250LXdlaWdodC1ib2xkO1xuICAgIGNvbG9yOiAkY29sb3ItZGFya2VyLWdyYXk7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygxMCk7XG4gICAgbGluZS1oZWlnaHQ6IHJlbS1jYWxjKDE2KTtcbiAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYyg0KTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciAkdHJhbnNpdGlvbjtcbn1cblxuLnNlYXJjaC1pdGVtX19mdWxmaWxsZWQge1xuICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDQpO1xufVxuXG4uc2VhcmNoLWl0ZW1fX21ldGEge31cblxuLnNlYXJjaC1pdGVtX19saXN0IHtcbiAgICBAZXh0ZW5kICV1bnN0eWxlZC1saXN0O1xufVxuXG4uc2VhcmNoLWl0ZW1fX2xpc3QtLW9wZW5pbmctdGltZXMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgIGxpOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiByZW0tY2FsYygxMCk7XG4gICAgfVxuXG4gICAgbGk6bGFzdC1jaGlsZCB7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTApO1xuICAgICAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoMTYpO1xuICAgICAgICBjb2xvcjogJGNvbG9yLWRhcmstZ3JheTtcbiAgICB9XG59XG5cbi5zZWFyY2gtaXRlbV9fbGlzdC0taWNvbnMge1xuICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTApO1xuICAgICAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoMTYpO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAgICAgc3BhbjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICBvcmRlcjogMjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNwYW46bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBvcmRlcjogMTtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxMik7XG4gICAgICAgICAgICB3aWR0aDogcmVtLWNhbGMoMTApO1xuICAgICAgICAgICAgaGVpZ2h0OiByZW0tY2FsYygxNik7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IHJlbS1jYWxjKDYpO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAuaWNvbi0tY2hlY2sge1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvci1ncmVlbjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnNlYXJjaC1pdGVtX19pbWFnZSB7XG4gICAgQGluY2x1ZGUgdm8tZGVmYXVsdC1iYWNrZ3JvdW5kLWltYWdlKCk7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiByZW0tY2FsYyg3MCk7XG4gICAgaGVpZ2h0OiByZW0tY2FsYyg3MCk7XG4gICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMCk7XG4gICAgbWFyZ2luLXJpZ2h0OiByZW0tY2FsYygxNSk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB6LWluZGV4OiAwO1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXM7XG5cbiAgICBpbWcge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgfVxufVxuXG4uc2VhcmNoLWl0ZW0tLW52YiAuc2VhcmNoLWl0ZW1fX2ltYWdlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3Itd2hpdGU7XG5cbiAgICBpbWcge1xuICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgIH1cbn1cblxuLnNlYXJjaC1pdGVtX19iYWRnZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiByZW0tY2FsYyg1KTtcbiAgICBib3R0b206IHJlbS1jYWxjKDUpO1xuICAgIHotaW5kZXg6IDE7XG59XG5cbi5zZWFyY2gtaXRlbV9fYmFkZ2UtLWdhbGxlcnkge1xuICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB3aWR0aDogYXV0bztcbiAgICBsZWZ0OiByZW0tY2FsYygzKTtcbiAgICByaWdodDogdW5zZXQ7XG4gICAgYm90dG9tOiByZW0tY2FsYyg1KTtcbiAgICBtaW4td2lkdGg6IHJlbS1jYWxjKDMwKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvci1ibGFjaywgLjQpO1xuICAgIHBhZGRpbmc6IHJlbS1jYWxjKDMpO1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzO1xuXG4gICAgc3BhbjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTEpO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IHJlbS1jYWxjKDUpO1xuICAgICAgICBsaW5lLWhlaWdodDogMDtcbiAgICB9XG5cbiAgICBzcGFuOmxhc3QtY2hpbGQge1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDgpO1xuICAgICAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoOCk7XG4gICAgfVxufVxuXG4uc2VhcmNoLWl0ZW1fX2FjdGlvbnMge1xuICAgIEBleHRlbmQgJXVuc3R5bGVkLWxpc3Q7XG4gICAgZmxleC13cmFwOiB3cmFwO1xufVxuXG4uc2VhcmNoLWl0ZW1fX2FjdGlvbiB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoNCk7XG5cbiAgICAmLnNlYXJjaC1pdGVtX19hY3Rpb24tLWZ1bGwge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgZmxleC1iYXNpczogMTAwJTtcbiAgICAgICAgbWFyZ2luOiByZW0tY2FsYyg0KSAwO1xuICAgIH1cblxuICAgIC5idXR0b24ge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG5cbiAgICBhIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgIH1cbn1cblxuLnNlYXJjaC1pdGVtX19yZXRhaWxlciB7XG4gICAgbWF4LWhlaWdodDogcmVtLWNhbGMoMjQpO1xufVxuXG4uc2VhcmNoLWl0ZW1fX2FuY2hvciB7XG4gICAgQGluY2x1ZGUgaG9jdXMge1xuICAgICAgICAmICsgLnNlYXJjaC1pdGVtX19pbm5lciB7XG4gICAgICAgICAgICAuc2VhcmNoLWl0ZW1fX3RpdGxlIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQoMzIwKSB7XG4gICAgLnNlYXJjaC1pdGVtX19hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IHJlbS1jYWxjKC0yKTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiByZW0tY2FsYygtMik7XG4gICAgfVxuXG4gICAgLnNlYXJjaC1pdGVtX19hY3Rpb24ge1xuICAgICAgICB3aWR0aDogY2FsYyg1MCUgLSA0cHgpO1xuICAgICAgICBtYXJnaW4tbGVmdDogcmVtLWNhbGMoMik7XG4gICAgICAgIG1hcmdpbi1yaWdodDogcmVtLWNhbGMoMik7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KDcwMCkge1xuICAgIC5zZWFyY2gtaXRlbV9fYWN0aW9uIHtcbiAgICAgICAgLmJ1dHRvbiB7XG4gICAgICAgICAgICBtaW4td2lkdGg6IHJlbS1jYWxjKDIwMCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgLnNlYXJjaC1pdGVtX19pbm5lciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgfVxuXG4gICAgLnNlYXJjaC1pdGVtX19jb250ZW50IHtcbiAgICAgICAgb3JkZXI6IDE7XG4gICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB9XG5cbiAgICAuc2VhcmNoLWl0ZW1fX21haW4ge1xuICAgICAgICBtaW4taGVpZ2h0OiAwO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDQpO1xuICAgIH1cblxuICAgIC5zZWFyY2gtaXRlbV9faGVhZGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYyg2KTtcbiAgICB9XG5cbiAgICAuc2VhcmNoLWl0ZW1fX3RpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxNik7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygyMCk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgLnNlYXJjaC1pdGVtX19hZGRyZXNzLFxuICAgIC5zZWFyY2gtaXRlbV9faWNvbi10ZXh0IHtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxNCk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygyOCk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDQpO1xuXG4gICAgICAgIHNwYW46bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE3KTtcbiAgICAgICAgICAgIHdpZHRoOiByZW0tY2FsYygxMyk7XG4gICAgICAgICAgICBoZWlnaHQ6IHJlbS1jYWxjKDI4KTtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogcmVtLWNhbGMoOCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc2VhcmNoLWl0ZW1fX2NvbXBhbnkge1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IHJlbS1jYWxjKDI4KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoNCk7XG4gICAgfVxuXG4gICAgLnNlYXJjaC1pdGVtX19saXN0LS1vcGVuaW5nLXRpbWVzIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgIGxpOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIG9yZGVyOiAwO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgbGk6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBvcmRlcjogMTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IHJlbS1jYWxjKDI4KTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWShjYWxjKDEwMCUgKyAjeyRzcGFjaW5nLXhzfSkpO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc2VhcmNoLWl0ZW1fX2xpc3QtLWljb25zIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxNCk7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoMjgpO1xuXG4gICAgICAgICAgICBzcGFuOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTYpO1xuICAgICAgICAgICAgICAgIHdpZHRoOiByZW0tY2FsYygxNik7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiByZW0tY2FsYygyOCk7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiByZW0tY2FsYygxMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc2VhcmNoLWl0ZW1fX2Zvb3RlciB7XG4gICAgICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgfVxuXG4gICAgLnNlYXJjaC1pdGVtX19hY3Rpb25zIHtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIH1cblxuICAgIC5zZWFyY2gtaXRlbV9fYWN0aW9uLS1tb3JlLWluZm8ge1xuXG4gICAgfVxuXG4gICAgLnNlYXJjaC1pdGVtX19pbWFnZSB7XG4gICAgICAgIG9yZGVyOiAwO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0b3A6IHVuc2V0O1xuICAgICAgICBsZWZ0OiB1bnNldDtcbiAgICAgICAgd2lkdGg6IHJlbS1jYWxjKDI0MCk7XG4gICAgICAgIGhlaWdodDogcmVtLWNhbGMoMTgwKTtcbiAgICB9XG5cbiAgICAuc2VhcmNoLWl0ZW1fX2JhZGdlLS1nYWxsZXJ5IHtcbiAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoNik7XG4gICAgICAgIGxlZnQ6IHJlbS1jYWxjKDEyKTtcbiAgICAgICAgYm90dG9tOiByZW0tY2FsYygxMik7XG4gICAgICAgIHJpZ2h0OiB1bnNldDtcblxuICAgICAgICBzcGFuOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTgpO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiByZW0tY2FsYygxMCk7XG4gICAgICAgIH1cblxuICAgICAgICBzcGFuOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxNCk7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoMTQpO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiByZW0tY2FsYyg1KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludCg3ODApIHtcbiAgICAuc2VhcmNoLWl0ZW1fX2FjdGlvbiB7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgIH1cblxuICAgIC5zZWFyY2gtaXRlbV9fYWN0aW9uLS1tb3JlLWluZm8ge1xuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAuc2VhcmNoLWl0ZW1fX3RpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygyNCk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygzMCk7XG4gICAgfVxuXG4gICAgLnNlYXJjaC1pdGVtX19saXN0LS1vcGVuaW5nLXRpbWVzIHtcbiAgICAgICAgbGk6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zZWFyY2gtaXRlbV9fYWRkcmVzcyxcbiAgICAuc2VhcmNoLWl0ZW1fX2ljb24tdGV4dCB7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTYpO1xuICAgICAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoMjgpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYygxMik7XG5cbiAgICAgICAgc3BhbjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTgpO1xuICAgICAgICAgICAgd2lkdGg6IHJlbS1jYWxjKDE0KTtcbiAgICAgICAgICAgIGhlaWdodDogcmVtLWNhbGMoMjgpO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiByZW0tY2FsYygxMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc2VhcmNoLWl0ZW1fX2NvbXBhbnkge1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE4KTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IHJlbS1jYWxjKDI4KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMTUpO1xuICAgIH1cblxuICAgIC5zZWFyY2gtaXRlbV9fZnVsZmlsbGVkIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMTUpO1xuICAgIH1cblxuICAgIC5zZWFyY2gtaXRlbV9fbGlzdC0taWNvbnMge1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE2KTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygyOCk7XG5cbiAgICAgICAgICAgIHNwYW46bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxOCk7XG4gICAgICAgICAgICAgICAgd2lkdGg6IHJlbS1jYWxjKDE4KTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHJlbS1jYWxjKDI4KTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IHJlbS1jYWxjKDEwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zZWFyY2gtaXRlbV9fcmV0YWlsZXIge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuXG4gICAgLnNlYXJjaC1pdGVtX19pbWFnZSB7XG4gICAgICAgIHdpZHRoOiByZW0tY2FsYygzMjApO1xuICAgICAgICBoZWlnaHQ6IHJlbS1jYWxjKDI0MCk7XG4gICAgICAgIG1hcmdpbi1yaWdodDogcmVtLWNhbGMoMjApO1xuICAgIH1cblxuICAgIC5zZWFyY2gtaXRlbV9fYmFkZ2Uge1xuICAgICAgICByaWdodDogcmVtLWNhbGMoMTUpO1xuICAgICAgICBib3R0b206IHJlbS1jYWxjKDE1KTtcbiAgICB9XG5cbiAgICAuc2VhcmNoLWl0ZW1fX2JhZGdlLS1nYWxsZXJ5IHtcbiAgICAgICAgcmlnaHQ6IHVuc2V0O1xuICAgIH1cblxuICAgIC5zZWFyY2gtaXRlbV9fYWN0aW9ucyB7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KDE0NDApIHtcbiAgICAuc2VhcmNoLWl0ZW1fX2ltYWdlIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiByZW0tY2FsYyg0MCk7XG4gICAgfVxufVxuXG4vKipcbiAqIFZhcmlhdGlvbnNcbiAqL1xuLmNlbGwtLXNlYXJjaC1hZCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uY2VsbC0tc2VhcmNoLWl0ZW06bm90KDpsYXN0LWNoaWxkKSAuc2VhcmNoLWl0ZW0sXG4uY2VsbC0tc2VhcmNoLWFkOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDIwKTtcblxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgYm90dG9tOiByZW0tY2FsYygtMTApO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItbWVkaXVtLWdyYXk7XG4gICAgICAgIGhlaWdodDogcmVtLWNhbGMoMSk7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgLmNlbGwtLXNlYXJjaC1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgLnNlYXJjaC1pdGVtLFxuICAgIC5jZWxsLS1zZWFyY2gtYWQ6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDI2KTtcblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBib3R0b206IHJlbS1jYWxjKC0xMyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAuY2VsbC0tc2VhcmNoLWl0ZW06bm90KDpsYXN0LWNoaWxkKSAuc2VhcmNoLWl0ZW0sXG4gICAgLmNlbGwtLXNlYXJjaC1hZDpub3QoOmxhc3QtY2hpbGQpIC5hZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDQwKTtcblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBib3R0b206IHJlbS1jYWxjKC0yMCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIEd1aWRlXG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQoNzgwKSB7XG4gICAgLnNlYXJjaC1pdGVtLS1ndWlkZSB7XG4gICAgICAgIC5zZWFyY2gtaXRlbV9fYWN0aW9uLS1tb3JlLWluZm8ge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIE9mZmVyXG5cbi5zZWFyY2gtaXRlbS0tb2ZmZXIge1xuICAgIC5zZWFyY2gtaXRlbV9faGVhZGVyIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMik7XG4gICAgfVxuXG4gICAgLnNlYXJjaC1pdGVtX19saXN0LS1pY29ucyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIC5zZWFyY2gtaXRlbV9fZm9vdGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgfVxuXG4gICAgLnNlYXJjaC1pdGVtX19hY3Rpb25zIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAuc2VhcmNoLWl0ZW0tLW9mZmVyIHtcbiAgICAgICAgLnNlYXJjaC1pdGVtX19oZWFkZXIge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMTApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBKb2JcblxuLnNlYXJjaC1pdGVtLS1qb2Ige1xuICAgIC5pY29uLS1sb2dvLW5hdGlvbmFsZS12YWNhdHVyZWJhbmsge1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgbWF4LXdpZHRoOiByZW0tY2FsYygxMjgpO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIG1heC1oZWlnaHQ6IHJlbS1jYWxjKDI1KTtcbiAgICB9XG5cbiAgICAuc2VhcmNoLWl0ZW1fX2hlYWRlciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDIpO1xuICAgIH1cblxuICAgIC5zZWFyY2gtaXRlbV9fbGlzdC0taWNvbnMge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICBsaTpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc2VhcmNoLWl0ZW1fX2ltYWdlIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2Q5ZDhkOVxuICAgIH1cblxuICAgIC5zZWFyY2gtaXRlbV9fYWN0aW9ucyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgIC5zZWFyY2gtaXRlbS0tam9iIHtcbiAgICAgICAgLnNlYXJjaC1pdGVtX19saXN0LS1pY29ucyB7XG4gICAgICAgICAgICBsaTpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBBZ2VuZGFcblxuLnNlYXJjaC1pdGVtLS1hZ2VuZGEge1xuICAgIC5zZWFyY2gtaXRlbV9faGVhZGVyIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMik7XG4gICAgfVxuXG4gICAgLnNlYXJjaC1pdGVtX19saXN0LS1pY29ucyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICAgIGxpOm50aC1vZi10eXBlKDIpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc2VhcmNoLWl0ZW1fX2FjdGlvbnMge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgLnNlYXJjaC1pdGVtLS1hZ2VuZGEge1xuICAgICAgICAuc2VhcmNoLWl0ZW1fX2xpc3QtLWljb25zIHtcbiAgICAgICAgICAgIGxpOm50aC1vZi10eXBlKDIpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnNlYXJjaC1pdGVtX19hY3Rpb25zIHtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFN1Z2dlc3RlZFxuXG4uc2VhcmNoLWl0ZW0tLXN1Z2dlc3RlZCB7XG4gICAgLnNlYXJjaC1pdGVtX19oZWFkZXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYygyKTtcbiAgICB9XG5cbiAgICAuc2VhcmNoLWl0ZW1fX2xpc3QtLWljb25zIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgLnNlYXJjaC1pdGVtLS1zdWdnZXN0ZWQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICAgICAgLnNlYXJjaC1pdGVtX19pbm5lciB7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB9XG5cbiAgICAgICAgLnNlYXJjaC1pdGVtX19tYWluIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDE1KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zZWFyY2gtaXRlbV9fdGl0bGUge1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxOCk7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoMjYpO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zZWFyY2gtaXRlbV9fY29tcGFueSB7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE2KTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygyOCk7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYygxMCk7XG4gICAgICAgIH1cblxuICAgICAgICAuc2VhcmNoLWl0ZW1fX2xpc3Qge1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxNCk7XG4gICAgICAgIH1cblxuICAgICAgICAuc2VhcmNoLWl0ZW1fX2FjdGlvbnMge1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLnNlYXJjaC1pdGVtX19hY3Rpb24ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAuc2VhcmNoLWl0ZW1fX2ltYWdlIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiByZW0tY2FsYygyMTApO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMTApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBTZWFyY2ggaXRlbSBsYXJnZSBvbiBtb2JpbGVcblxuQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KSB7XG4gICAgLnNlYXJjaC1pdGVtLS1sYXJnZS1vbi1tb2JpbGUge1xuICAgICAgICAuc2VhcmNoLWl0ZW1fX2lubmVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB9XG5cbiAgICAgICAgLnNlYXJjaC1pdGVtX19jb250ZW50IHtcbiAgICAgICAgICAgIG9yZGVyOiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLnNlYXJjaC1pdGVtX19tYWluIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuc2VhcmNoLWl0ZW1fX2xpc3QtLW9wZW5pbmctdGltZXMge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiByZW0tY2FsYygxMik7XG4gICAgICAgICAgICByaWdodDogcmVtLWNhbGMoMTIpO1xuICAgICAgICAgICAgei1pbmRleDogMTtcblxuICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGk6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm9wZW4tc3RhdHVzLm9wZW4tc3RhdHVzLS1vdXRsaW5lLm9wZW4tc3RhdHVzLS1jbG9zZWQge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWRhcmstZ3JheTtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICRjb2xvci1kYXJrLWdyYXk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5vcGVuLXN0YXR1cy5vcGVuLXN0YXR1cy0tb3V0bGluZS5vcGVuLXN0YXR1cy0tb3BlbiB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZ3JlZW47XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItZ3JlZW47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuc2VhcmNoLWl0ZW1fX2ljb24tdGV4dCB7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygyMik7XG5cbiAgICAgICAgICAgIHNwYW46bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxMyk7XG4gICAgICAgICAgICAgICAgd2lkdGg6IHJlbS1jYWxjKDEzKTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHJlbS1jYWxjKDIwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5zZWFyY2gtaXRlbV9faW1hZ2Uge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgb3JkZXI6IDA7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogcmVtLWNhbGMoMTUwKTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDEwKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAuc2VhcmNoLWl0ZW0tLWxhcmdlLW9uLW1vYmlsZSB7XG4gICAgICAgIC5zZWFyY2gtaXRlbV9faWNvbi10ZXh0LS1jYXRlZ29yeSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBTdWdnZXN0ZWQgbGFyZ2Ugb24gbW9iaWxlXG5cbi5zZWFyY2gtaXRlbS0tc3VnZ2VzdGVkLnNlYXJjaC1pdGVtLS1sYXJnZS1vbi1tb2JpbGUge1xuICAgIC5zZWFyY2gtaXRlbV9faW1hZ2Uge1xuICAgICAgICAuc2VhcmNoLWl0ZW1fX3RpdGxlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSkge1xuICAgIC5zZWFyY2gtaXRlbS0tc3VnZ2VzdGVkLnNlYXJjaC1pdGVtLS1sYXJnZS1vbi1tb2JpbGUge1xuICAgICAgICAuc2VhcmNoLWl0ZW1fX2ltYWdlIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICB6LWluZGV4OiAwO1xuXG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogJGltYWdlLWdyYWRpZW50O1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6ICRpbWFnZS1ncmFkaWVudC1vcGFjaXR5O1xuICAgICAgICAgICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsICR0cmFuc2l0aW9uO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuc2VhcmNoLWl0ZW1fX3RpdGxlIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiByZW0tY2FsYygxMCAxNik7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICAgICAgICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnNlYXJjaC1pdGVtX19hbmNob3Ige1xuICAgICAgICAgICAgQGluY2x1ZGUgaG9jdXMge1xuICAgICAgICAgICAgICAgICYgKyAuc2VhcmNoLWl0ZW1fX2lubmVyIHtcbiAgICAgICAgICAgICAgICAgICAgLnNlYXJjaC1pdGVtX19pbWFnZTo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IC43O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC5zZWFyY2gtaXRlbV9fY29tcGFueSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5lbnRyeV9fY29udGVudCB7XG4gICAgLnNlYXJjaC1pdGVtIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjb2xvci1tZWRpdW0tZ3JheTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRzcGFjaW5nO1xuXG4gICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiBTZWFyY2ggaXRlbSBpbiBlbnRyeV9fY29udGVudC0tY29tcGFjdCAqL1xuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5MTBweCkge1xuICAgIC5lbnRyeV9fY29udGVudC5lbnRyeV9fY29udGVudC0tY29tcGFjdCB7XG4gICAgICAgIC5zZWFyY2gtaXRlbV9fYWN0aW9uIHtcbiAgICAgICAgICAgIC5idXR0b24ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0MnB4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzIwcHgpIHtcbiAgICAuZW50cnlfX2NvbnRlbnQuZW50cnlfX2NvbnRlbnQtLWNvbXBhY3Qge1xuICAgICAgICAuc2VhcmNoLWl0ZW0ge1xuICAgICAgICAgICAgLnNlYXJjaC1pdGVtX19pbWFnZSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IHJlbS1jYWxjKDIwMCk7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiByZW0tY2FsYygxNTApO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogcmVtLWNhbGMoMjApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuc2VhcmNoLWl0ZW1fX2FjdGlvbiB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoNTAlIC0gNHB4KTtcblxuICAgICAgICAgICAgICAgIC5idXR0b24ge1xuICAgICAgICAgICAgICAgICAgICBtaW4td2lkdGg6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IHJlbS1jYWxjKDggMTUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnNlYXJjaC1pdGVtX19hY3Rpb25zIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiByZW0tY2FsYygxMCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5zZWFyY2gtaXRlbV9faGVhZGVyIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYyg1KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnNlYXJjaC1pdGVtX190aXRsZSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygyMCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5zZWFyY2gtaXRlbV9fbGlzdC0taWNvbnMgbGkge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkgYW5kIChtYXgtd2lkdGg6IDcyMHB4KSB7XG4gICAgLmVudHJ5X19jb250ZW50LmVudHJ5X19jb250ZW50LS1jb21wYWN0IHtcbiAgICAgICAgLnNlYXJjaC1pdGVtIHtcbiAgICAgICAgICAgIC5zZWFyY2gtaXRlbV9faW5uZXIge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnNlYXJjaC1pdGVtX19jb250ZW50IHtcbiAgICAgICAgICAgICAgICBvcmRlcjogMjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnNlYXJjaC1pdGVtX19tYWluIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5zZWFyY2gtaXRlbV9faW1hZ2Uge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogNzUlO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBvcmRlcjogMTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyogU2VhcmNoIGl0ZW0gaW4gZW50cnlfX2NvbnRlbnQtLXdpZGUgKi9cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogOTEwcHgpIGFuZCAobWF4LXdpZHRoOiAxMDI4cHgpIHtcbiAgICAuZW50cnlfX2NvbnRlbnQuZW50cnlfX2NvbnRlbnQtLXdpZGUge1xuICAgICAgICAuc2VhcmNoLWl0ZW0ge1xuICAgICAgICAgICAgLnNlYXJjaC1pdGVtX19pbWFnZSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IHJlbS1jYWxjKDE2MCk7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiByZW0tY2FsYygxMjApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkgYW5kIChtYXgtd2lkdGg6IDkxMHB4KSB7XG4gICAgLmVudHJ5X19jb250ZW50LmVudHJ5X19jb250ZW50LS13aWRlIHtcbiAgICAgICAgLnNlYXJjaC1pdGVtIHtcbiAgICAgICAgICAgIC5zZWFyY2gtaXRlbV9faW1hZ2Uge1xuICAgICAgICAgICAgICAgIHdpZHRoOiByZW0tY2FsYygxMDQpO1xuICAgICAgICAgICAgICAgIGhlaWdodDogcmVtLWNhbGMoNzgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuc2VhcmNoLWl0ZW1fX2FjdGlvbnMge1xuICAgICAgICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgKyAxMTlweCk7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC0xMTlweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoMTUpO1xuXG4gICAgICAgICAgICAgICAgLnNlYXJjaC1pdGVtX19hY3Rpb24ge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogY2FsYyg1MCUgLSA0cHgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5zZWFyY2gtaXRlbV9fYWN0aW9uLS1tb3JlLWluZm8ge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSkge1xuICAgIC5zZWFyY2gtaXRlbSB7XG4gICAgICAgIC5zZWFyY2gtaXRlbV9faW5uZXIge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zZWFyY2gtaXRlbV9fY29udGVudCB7XG4gICAgICAgICAgICBvcmRlcjogMjtcbiAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zZWFyY2gtaXRlbV9fbWFpbiB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuc2VhcmNoLWl0ZW1fX2ltYWdlIHtcbiAgICAgICAgICAgIHdpZHRoOiByZW0tY2FsYygxMDQpO1xuICAgICAgICAgICAgaGVpZ2h0OiByZW0tY2FsYyg3OCk7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFN1Z2dlc3RlZCBzZWFyY2ggaXRlbSBtb2JpbGUgc3R5bGVcblxuQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KSB7XG4gICAgLmNlbGwtLXN1Z2dlc3RlZCAuc2VhcmNoLWl0ZW0uc2VhcmNoLWl0ZW0tLXN1Z2dlc3RlZCB7XG4gICAgICAgIC5zZWFyY2gtaXRlbV9faW5uZXIge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgfVxuXG4gICAgICAgIC5zZWFyY2gtaXRlbV9fY29udGVudCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zZWFyY2gtaXRlbV9faW1hZ2Uge1xuICAgICAgICAgICAgd2lkdGg6IHJlbS1jYWxjKDEwNCk7XG4gICAgICAgICAgICBoZWlnaHQ6IHJlbS1jYWxjKDc4KTtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgICAgICAgICAgLnNlYXJjaC1pdGVtX190aXRsZSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnNlYXJjaC1pdGVtX19iYWRnZSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnNlYXJjaC1pdGVtX19mb290ZXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5mdW5kYS1pbmZvIHtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbn1cblxuLmZ1bmRhLWluZm9fX2lubmVyIHtcblxufVxuXG4uZnVuZGEtaW5mb19fdG9wLFxuLmZ1bmRhLWluZm9fX2JvdHRvbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBwYWRkaW5nOiAkc3BhY2luZyAwIDA7XG4gICAgbWFyZ2luLWxlZnQ6IC0jeyRzcGFjaW5nfTtcbiAgICBtYXJnaW4tcmlnaHQ6IC0jeyRzcGFjaW5nfTtcblxuICAgID4gKiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICBmbGV4LWJhc2lzOiBjYWxjKDEwMCUgLSAjeyRzcGFjaW5nICogMn0pO1xuICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gI3skc3BhY2luZyAqIDJ9KTtcbiAgICAgICAgbWluLXdpZHRoOiByZW0tY2FsYygyMDApO1xuICAgICAgICBtYXJnaW4tbGVmdDogJHNwYWNpbmc7XG4gICAgICAgIG1hcmdpbi1yaWdodDogJHNwYWNpbmc7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgICAgICBmbGV4LWJhc2lzOiBjYWxjKDUwJSAtICN7JHNwYWNpbmcgKiAyfSk7XG4gICAgICAgICAgICB3aWR0aDogY2FsYyg1MCUgLSAjeyRzcGFjaW5nICogMn0pO1xuICAgICAgICB9XG5cbiAgICAgICAgPiAqIHtcbiAgICAgICAgICAgIGZsZXgtYmFzaXM6IDEwMCU7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmZ1bmRhLWluZm9fX3RvcCB7XG59XG5cbi5mdW5kYS1pbmZvX19ib3R0b20ge1xuICAgIHBhZGRpbmctdG9wOiAwO1xufVxuXG4uZnVuZGEtaW5mb19fc3BhY2VyIHtcbiAgICBoZWlnaHQ6IDFweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRDlEOUQ5O1xuICAgIG1hcmdpbi10b3A6ICRzcGFjaW5nO1xuICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuXG4gICAgJi5mdW5kYS1pbmZvX19zcGFjZXItLW5vLW1hcmdpbiB7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG4uZnVuZGEtaW5mb19fbGFiZWwge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1vcGVuLXNhbnM7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbiAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xuXG4gICAgLy8gRG90cyBpZiB0ZXh0IHRvIGxvbmdcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5mdW5kYS1pbmZvX19tZXRhLXZhbHVlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LWZhbWlseTogJGZvbnQtb3Blbi1zYW5zO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygxNCk7XG4gICAgY29sb3I6ICRjb2xvci1kYXJrZXItZ3JheTtcbn1cblxuLmZ1bmRhLWluZm9fX21ldGEtdmFsdWVfX3N1cCB7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygxMik7XG59XG5cbi5mdW5kYS1pbmZvX19saXN0IHtcbiAgICBAZXh0ZW5kICV1bnN0eWxlZC1saXN0O1xuICAgIHBhZGRpbmc6ICRzcGFjaW5nIDA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBtYXJnaW4tbGVmdDogLSN7JHNwYWNpbmctc30gIWltcG9ydGFudDtcbiAgICBtYXJnaW4tcmlnaHQ6IC0jeyRzcGFjaW5nLXN9ICFpbXBvcnRhbnQ7XG5cbiAgICA+ICoge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZmxleC1iYXNpczogY2FsYygoMTAwJSAvIDIpIC0gI3skc3BhY2luZ30pO1xuICAgICAgICB3aWR0aDogY2FsYygoMTAwJSAvIDIpIC0gI3skc3BhY2luZ30pO1xuICAgICAgICBtaW4td2lkdGg6IHJlbS1jYWxjKDE1MCk7XG4gICAgICAgIHBhZGRpbmctbGVmdDogJHNwYWNpbmctcztcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHNwYWNpbmctcztcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmctbTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICBtaW4td2lkdGg6IHJlbS1jYWxjKDIyMCk7XG4gICAgICAgICAgICBmbGV4LWJhc2lzOiBjYWxjKCgxMDAlIC8gMykgLSAjeyRzcGFjaW5nfSk7XG4gICAgICAgICAgICB3aWR0aDogY2FsYygoMTAwJSAvIDMpIC0gI3skc3BhY2luZ30pO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsaSB7XG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5mdW5kYS1pbmZvX19idXR0b24ge1xuXG59XG5cbi5mdW5kYS1pbmZvX19pY29uIHtcbiAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy1zO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG59XG5cbi5mdW5kYS1pbmZvX19tZXRhLWNvbnRhaW5lciB7XG5cbn1cblxuLmZ1bmRhLWluZm9fX21ldGEge1xuXG4gICAgJi5mdW5kYS1pbmZvX19tZXRhLS1pY29uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgICAgIC5mdW5kYS1pbmZvX19pY29uIHtcbiAgICAgICAgICAgIGZsZXgtYmFzaXM6IHJlbS1jYWxjKDMwKTtcbiAgICAgICAgICAgIGhlaWdodDogcmVtLWNhbGMoMzApO1xuICAgICAgICAgICAgd2lkdGg6IHJlbS1jYWxjKDMwKTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuXG4gICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmZ1bmRhLWluZm9fX21ldGEtY29udGFpbmVyIHtcbiAgICAgICAgICAgIGZsZXgtYmFzaXM6IDEwMCU7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgICAgICBmbGV4LWJhc2lzOiBjYWxjKDEwMCUgLSAje3JlbS1jYWxjKDMwKSArICRzcGFjaW5nfSk7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtICN7cmVtLWNhbGMoMzApICsgJHNwYWNpbmd9KTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogJHNwYWNpbmc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgICAgICAgICBmbGV4LWJhc2lzOiBjYWxjKDEwMCUgLSAje3JlbS1jYWxjKDMwKSArICRzcGFjaW5nLW19KTtcbiAgICAgICAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gI3tyZW0tY2FsYygzMCkgKyAkc3BhY2luZy1tfSk7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6ICRzcGFjaW5nLW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLmZ1bmRhLWluZm9fX21ldGEtLXN0cmVldCB7XG5cbiAgICB9XG5cbiAgICAmLmZ1bmRhLWluZm9fX21ldGEtLWFza2luZy1wcmljZSxcbiAgICAmLmZ1bmRhLWluZm9fX21ldGEtLXJlbnQtcHJpY2Uge1xuXG4gICAgICAgIC5mdW5kYS1pbmZvX19sYWJlbCB7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvci1kYXJrZXItZ3JheTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mdW5kYS1pbmZvX19tZXRhLXZhbHVlIHtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZm9udC1tb250c2VycmF0O1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygyNCk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIC5mdW5kYS1pbmZvX19tZXRhLXZhbHVlX19zdXAge1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygyMik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLmZ1bmRhLWluZm9fX21ldGEtLW9mZmVyZWQtc2luY2Uge1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6bnRoLWNoaWxkKDMpIHtcbiAgICAgICAgICAgIGZsZXgtYmFzaXM6IGNhbGMoMTAwJSAtICN7JHNwYWNpbmcgKiAyfSk7XG4gICAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gI3skc3BhY2luZyAqIDJ9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mdW5kYS1pbmZvX19sYWJlbCB7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvci1kYXJrZXItZ3JheTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mdW5kYS1pbmZvX19tZXRhLXZhbHVlIHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxNik7XG4gICAgICAgIH1cblxuICAgICAgICAuZnVuZGEtaW5mb19fbWV0YS12YWx1ZV9fc3VwIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5mdW5kYS1pbmZvX19tZXRhLS1raW5kIHtcblxuICAgIH1cblxuICAgICYuZnVuZGEtaW5mb19fbWV0YS0tcm9vbXMge1xuXG4gICAgfVxuXG4gICAgJi5mdW5kYS1pbmZvX19tZXRhLS1jb25zdHJ1Y3Rpb24teWVhciB7XG5cbiAgICB9XG5cbiAgICAmLmZ1bmRhLWluZm9fX21ldGEtLWdhcmRlbiB7XG5cbiAgICB9XG5cbiAgICAmLmZ1bmRhLWluZm9fX21ldGEtLWxpdmluZy1hcmVhIHtcblxuICAgIH1cblxuICAgICYuZnVuZGEtaW5mb19fbWV0YS0tcm9vZi10ZXJyYWNlIHtcblxuICAgIH1cblxuICAgICYuZnVuZGEtaW5mb19fbWV0YS0tYmFsY29ueSB7XG5cbiAgICB9XG5cbiAgICAmLmZ1bmRhLWluZm9fX21ldGEtLXBsb3Qge1xuXG4gICAgfVxuXG4gICAgJi5mdW5kYS1pbmZvX19tZXRhLS12aWV3LWZ1bmRhIHtcblxuICAgIH1cblxuICAgICYuZnVuZGEtaW5mb19fbWV0YS0tcGhvdG9zLWZ1bmRhIHtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICAuZnVuZGEtaW5mb19fbWV0YS12YWx1ZSB7XG4gICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgICAgICBjb2xvcjogI0E1QTVBNTtcblxuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNBNUE1QTU7XG5cbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvci1wcmltYXJ5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5wb3N0LWxpc3Qge1xufVxuXG4ucG9zdC1saXN0X19yZWFkLW1vcmUge1xufVxuXG4ucG9zdC1saXN0X19yZWFkLW1vcmUuaXMtaGlkZGVuIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4ucG9zdC1saXN0X19zbGlkZXIge1xufVxuXG4ucG9zdC1saXN0X19pdGVtLCAud3AtYmxvY2stdm8tbGlzdC1pdGVtIHtcbiAgICA+IHtcbiAgICAgICAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiB7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMTUpO1xuXG4gICAgICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmICsgKiB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoMTUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDIwKTtcblxuICAgICAgICAgICAgICAgICYgKyAqIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoMjApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDQwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgID4gKjplbXB0eTpub3QoaWZyYW1lKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgPiAqOmVtcHR5ICsgKiB7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgfVxuXG4gICAgLmxpbmtlZC1hcnRpY2xlcyB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gICAgICAgICY6OmJlZm9yZSxcbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5saW5rZWQtYXJ0aWNsZXNfX2hlYWRlciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDIwKTtcbiAgICB9XG59XG5cbi5wb3N0LWxpc3RfX2l0ZW0tY29tcGFueSB7XG4gICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoMjApO1xufVxuXG46cm9vdCAucG9zdC1saXN0X19wYWdpbmF0aW9uIHtcbiAgICBAZXh0ZW5kICV1bnN0eWxlZC1saXN0O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWFyZ2luOiByZW0tY2FsYygyMCAwKTtcblxuICAgIGxpIHtcbiAgICAgICAgbWFyZ2luOiByZW0tY2FsYygzKTtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpIHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcblxuXG4gICAgICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogcmVtLWNhbGMoMyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgJjpmaXJzdC1jaGlsZCwgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnBvc3QtbGlzdF9fYnV0dG9uIHtcbiAgICBAaW5jbHVkZSB0ZXh0LXMoKTtcbiAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoMjgpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uLWZhc3Q7XG5cbiAgICBAaW5jbHVkZSBob2N1cyB7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbiAgICB9XG59XG5cbjpyb290IC5wb3N0LWxpc3RfX2J1dHRvbltkaXNhYmxlZF0ge1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgICBvcGFjaXR5OiAuMjtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBob2N1cyB7XG4gICAgICAgIGNvbG9yOiAjY2FjYWNhO1xuICAgIH1cbn1cblxuOnJvb3QgLnBvc3QtbGlzdF9fYnV0dG9uLS1wcmV2IHtcbiAgICBtYXJnaW4tcmlnaHQ6IHJlbS1jYWxjKDEwKTtcbn1cblxuOnJvb3QgLnBvc3QtbGlzdF9fYnV0dG9uLS1uZXh0IHtcbiAgICBtYXJnaW4tbGVmdDogcmVtLWNhbGMoMTApO1xufVxuXG4ucG9zdC1saXN0X19idXR0b24tLXByZXYsXG4ucG9zdC1saXN0X19idXR0b24tLW5leHQge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSkge1xuICAgICAgICBmb250LXNpemU6IDA7XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiByZW0tY2FsYyg4KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgICAgICB3aWR0aDogcmVtLWNhbGMoMzApO1xuICAgICAgICAgICAgaGVpZ2h0OiByZW0tY2FsYygzMCk7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoMzApO1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnBvc3QtbGlzdF9fYnV0dG9uLS1wcmV2IHtcbiAgICAmOjphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMjIgMzcnJTNFJTNDcGF0aCBmaWxsPSclMjM1MzUzNTMnIGZpbGwtcnVsZT0nZXZlbm9kZCcgZD0nTS42NTYgMjAuMzIzbDE2LjAyMSAxNi4wMjFhMS45NzkgMS45NzkgMCAwMDIuNzk4IDBsMS44Ny0xLjg2OWExLjk3OSAxLjk3OSAwIDAwLjAwMi0yLjc5NEw4LjY1IDE4LjkyNCAyMS4zNDcgNi4xNjdhMS45NzkgMS45NzkgMCAwMC0uMDAzLTIuNzk1bC0xLjg2OS0xLjg2OWExLjk3OSAxLjk3OSAwIDAwLTIuNzk4IDBMLjY1NiAxNy41MjVhMS45NzkgMS45NzkgMCAwMDAgMi43OTh6Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xuICAgIH1cbn1cblxuLnBvc3QtbGlzdF9fYnV0dG9uLS1uZXh0IHtcbiAgICAmOjphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMjIgMzcnJTNFJTNDcGF0aCBmaWxsPSclMjM1MzUzNTMnIGZpbGwtcnVsZT0nZXZlbm9kZCcgZD0nTTIxLjM0NCAxNy41MjRMNS4zMjMgMS41MDRhMS45NzkgMS45NzkgMCAwMC0yLjc5OCAwTC42NTUgMy4zNzFhMS45NzkgMS45NzkgMCAwMC0uMDAyIDIuNzk1TDEzLjM1IDE4LjkyNC42NTMgMzEuNjhhMS45NzkgMS45NzkgMCAwMC4wMDMgMi43OTRsMS44NjkgMS44N2ExLjk3OSAxLjk3OSAwIDAwMi43OTggMGwxNi4wMjEtMTYuMDIyYTEuOTc5IDEuOTc5IDAgMDAwLTIuNzk5eicvJTNFJTNDL3N2ZyUzRVwiKTtcbiAgICB9XG59XG5cbi5wb3N0LWxpc3RfX2J1bGxldCB7XG4gICAgQGV4dGVuZCAlZm9udC13ZWlnaHQtYm9sZDtcbiAgICB3aWR0aDogcmVtLWNhbGMoMzApO1xuICAgIGhlaWdodDogcmVtLWNhbGMoMzApO1xuICAgIGNvbG9yOiAkY29sb3ItbWVkaXVtLWdyYXk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogcmVtLWNhbGMoMzIpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbi1mYXN0O1xuICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcblxuICAgICY6bm90KC5pcy1tb3JlLWJ1dHRvbikge1xuICAgICAgICBAaW5jbHVkZSBob2N1cyB7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXByaW1hcnk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5wb3N0LWxpc3RfX2J1bGxldC5pcy1hY3RpdmUge1xuICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXByaW1hcnk7XG4gICAgZm9udC1zaXplOiAxcmVtO1xufVxuXG4ucG9zdC1saXN0X19idWxsZXQuaXMtcHJldixcbi5wb3N0LWxpc3RfX2J1bGxldC5pcy1uZXh0IHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgY29sb3I6ICRjb2xvci1kYXJrZXItZ3JheTtcbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICA6cm9vdCAucG9zdC1saXN0X19idXR0b24tLXByZXYge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IHJlbS1jYWxjKDE2KTtcbiAgICB9XG5cbiAgICA6cm9vdCAucG9zdC1saXN0X19idXR0b24tLW5leHQge1xuICAgICAgICBtYXJnaW4tbGVmdDogcmVtLWNhbGMoMTYpO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgIC5wb3N0LWxpc3RfX2l0ZW0tY29tcGFueSB7XG4gICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDQwKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMjApO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KSB7XG4gICAgLnBvc3QtbGlzdF9fcGFnaW5hdGlvbi0tY3JvcHBlZCAucG9zdC1saXN0X19idWxsZXQge1xuXG4gICAgICAgICZbY2xhc3M9XCJwb3N0LWxpc3RfX2J1bGxldCBcIl0sICZbY2xhc3M9XCJwb3N0LWxpc3RfX2J1bGxldFwiXSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5pcy1wYWdpbmF0aW9uLXNob3duIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIH1cblxuICAgICAgICAmLmlzLW1vcmUtYnV0dG9uIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBmb250LXNpemU6IDA7XG4gICAgICAgICAgICB3aWR0aDogYXV0bztcblxuICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcuLi4nO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTApO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCAtI3tyZW0tY2FsYygzKX07XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvci1tZWRpdW0tZ3JheTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgfVxufVxuXG5AaWYgKCRlZGl0b3IpIHtcbiAgICBbZGF0YS10eXBlPVwidm8vbGlzdFwiXSB7XG4gICAgICAgIEBpbmNsdWRlIHZvLWJsb2NrLXdyYXBwZXIoJ1Bvc3QgU2xpZGVyJylcbiAgICB9XG5cbiAgICBbZGF0YS10eXBlPVwidm8vbGlzdC1pdGVtXCJdIHtcbiAgICAgICAgQGluY2x1ZGUgdm8tYmxvY2std3JhcHBlci1hbHQoJ1NsaWRlJylcbiAgICB9XG5cbiAgICBbZGF0YS10eXBlPVwidm8vZnVuZGFcIl0ge1xuICAgICAgICBAaW5jbHVkZSB2by1ibG9jay13cmFwcGVyKCdGdW5kYScpXG4gICAgfVxufVxuIiwiLnJlbGF0ZWQtcG9zdCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItbGlnaHQtZ3JheTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXM7XG59XG5cbi5yZWxhdGVkLXBvc3RfX2NvbnRhaW5lciB7XG4gICAgb3JkZXI6IDI7XG4gICAgZmxleC1ncm93OiAxO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLnJlbGF0ZWQtcG9zdF9fY29udGVudCB7XG4gICAgcGFkZGluZzogcmVtLWNhbGMoMjApO1xufVxuXG4ucmVsYXRlZC1wb3N0X190aXRsZSB7XG4gICAgY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYyg4KTtcbn1cblxuOnJvb3QgLnJlbGF0ZWQtcG9zdF9fbGlzdCB7XG4gICAgQGV4dGVuZCAldW5zdHlsZWQtbGlzdDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYyg4KTtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgbGkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IHJlbS1jYWxjKDI4KTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgc3BhbjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICBvcmRlcjogMjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNwYW46bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBvcmRlcjogMTtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxNik7XG4gICAgICAgICAgICB3aWR0aDogcmVtLWNhbGMoMTYpO1xuICAgICAgICAgICAgaGVpZ2h0OiByZW0tY2FsYygyOCk7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IHJlbS1jYWxjKDEwKTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ucmVsYXRlZC1wb3N0X19leGNlcnB0IHtcbiAgICBAaW5jbHVkZSB0ZXh0LWJvZHkoKTtcbn1cblxuLnJlbGF0ZWQtcG9zdF9faW1hZ2Uge1xuICAgIEBpbmNsdWRlIHZvLWRlZmF1bHQtYmFja2dyb3VuZC1pbWFnZSgpO1xuICAgIG9yZGVyOiAxO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtaW4taGVpZ2h0OiByZW0tY2FsYygxNzgpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHotaW5kZXg6IDA7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJGJvcmRlci1yYWRpdXM7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRib3JkZXItcmFkaXVzO1xuXG4gICAgaW1nIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgfVxufVxuXG4ucmVsYXRlZC1wb3N0X19mb290ZXIge1xuICAgIG1hcmdpbi10b3A6IGF1dG87XG5cbiAgICAuYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludCg0ODApIHtcbiAgICAucmVsYXRlZC1wb3N0IHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgbWluLWhlaWdodDogcmVtLWNhbGMoMjAwKTtcbiAgICB9XG5cbiAgICAucmVsYXRlZC1wb3N0X19pbWFnZSB7XG4gICAgICAgIHdpZHRoOiByZW0tY2FsYygxODApO1xuICAgICAgICBoZWlnaHQ6IHVuc2V0O1xuICAgICAgICBtaW4taGVpZ2h0OiB1bnNldDtcbiAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgLnJlbGF0ZWQtcG9zdCB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IHJlbS1jYWxjKDI1MCk7XG4gICAgfVxuXG4gICAgOnJvb3QgLnJlbGF0ZWQtcG9zdF9fbGlzdCB7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTYpO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IHJlbS1jYWxjKDI4KTtcblxuICAgICAgICAgICAgc3BhbjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE4KTtcbiAgICAgICAgICAgICAgICB3aWR0aDogcmVtLWNhbGMoMTgpO1xuICAgICAgICAgICAgICAgIGhlaWdodDogcmVtLWNhbGMoMjgpO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogcmVtLWNhbGMoMTApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KDEzMDApIHtcbiAgICAucmVsYXRlZC1wb3N0X19pbWFnZSB7XG4gICAgICAgIHdpZHRoOiByZW0tY2FsYygyODcpO1xuICAgIH1cbn1cblxuXG5AaWYgKCRlZGl0b3IpIHtcbiAgICAucmVsYXRlZC1wb3N0X190aXRsZSxcbiAgICAucmVsYXRlZC1wb3N0X19leGNlcnB0IHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICB9XG59XG4iLCJAaWYgKCRlZGl0b3IpIHtcbiAgICAudm8tZ2FsbGVyeSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7XG4gICAgICAgIGdyaWQtYXV0by1yb3dzOiAxZnI7XG4gICAgICAgIGdyaWQtZ2FwOiAxcmVtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICAgIH1cblxuICAgIC52by1nYWxsZXJ5X19pdGVtIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgIHBhZGRpbmctdG9wOiA3NSU7XG5cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLm5vdGUge1xuICAgIHBhZGRpbmc6IHJlbS1jYWxjKDIwKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItbGlnaHQtZ3JheTtcbiAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZWRpdW07XG5cbiAgICBwLCB1bCwgb2wge1xuICAgICAgICBAaW5jbHVkZSB0ZXh0LXMoKTtcbiAgICB9XG5cbiAgICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHtcbiAgICAgICAgQGluY2x1ZGUgdGV4dC1ib2R5KCk7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDQpO1xuICAgIH1cbn1cbiIsIi52by1ibG9jay1waG90by13YWxsIHtcblxufVxuXG4udm8tYmxvY2stcGhvdG8td2FsbF9faW5uZXIge1xuICAgIC53cC1ibG9jay1nYWxsZXJ5LS1waG90by13YWxsLFxuICAgIC52by1ibG9jay1waG90by13YWxsX193cmFwcGVyIHtcbiAgICAgICAgdWwuYmxvY2tzLWdhbGxlcnktZ3JpZCxcbiAgICAgICAgdWwudm8tYmxvY2stcGhvdG8td2FsbF9fbGlzdCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgICAgIGdyaWQtZ2FwOiAkc3BhY2luZy1zO1xuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKTtcbiAgICAgICAgICAgIGdyaWQtYXV0by1yb3dzOiByZW0tY2FsYyg3NSk7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICAgICAgICAgZ3JpZC1hdXRvLXJvd3M6IHJlbS1jYWxjKDE1MCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxpLmJsb2Nrcy1nYWxsZXJ5LWl0ZW0sXG4gICAgICAgICAgICBsaS52by1ibG9jay1waG90by13YWxsX19pdGVtIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgYWxpZ24tc2VsZjogaW5oZXJpdDtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSBkb3duKSB7XG4gICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiBhdXRvIC9zcGFuIDI7XG4gICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiBhdXRvIC9zcGFuIDI7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJjpudGgtY2hpbGQoMSksXG4gICAgICAgICAgICAgICAgJjpudGgtY2hpbGQoOCksXG4gICAgICAgICAgICAgICAgJjpudGgtY2hpbGQoMTBuICsgMSksXG4gICAgICAgICAgICAgICAgJjpudGgtY2hpbGQoMTBuICsgOClcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIGRvd24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiBhdXRvIC9zcGFuIDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogYXV0byAvc3BhbiA0O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IGF1dG8gL3NwYW4gMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiBhdXRvIC9zcGFuIDI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBmaWd1cmUge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGZpZ2NhcHRpb24ge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICRzcGFjaW5nICRzcGFjaW5nLXMgJHNwYWNpbmctcztcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDEyKTtcbiAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDBkZWcscmdiYSgkY29sb3ItYmxhY2ssLjcpLHJnYmEoJGNvbG9yLWJsYWNrLC4zKSA3MCUsdHJhbnNwYXJlbnQpO1xuICAgICAgICAgICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcblxuICAgICAgICAgICAgICAgICAgICAuc2hhcmVfX2xpc3Qge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGEsXG4gICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0gZG93bikge1xuICAgIC5sdW0tbGlnaHRib3gtaW5uZXIgaW1nIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICAgIH1cbn1cblxuLmx1bS1saWdodGJveC1jYXB0aW9uIC5zaGFyZV9fbGlzdCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHJpZ2h0OiByZW0tY2FsYygxMik7XG4gICAgYm90dG9tOiByZW0tY2FsYygxMik7XG4gICAgdG9wOiB1bnNldDtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG59XG4iLCIvKiBHdXRlbmJlcmcgc2V0dXAgKi9cbkBpbXBvcnQgJ2Jhc2UnO1xuQGltcG9ydCAnY2xhc3Nlcyc7XG5cbi8qIFdQIEJsb2NrcyAqL1xuQGltcG9ydCAnYmxvY2tzL3dwL3dwLWJsb2NrJztcbkBpbXBvcnQgJ2Jsb2Nrcy93cC93cC1ibG9jay1jb2x1bW5zJztcbkBpbXBvcnQgJ2Jsb2Nrcy93cC93cC1ibG9jay1ncm91cCc7XG5AaW1wb3J0ICdibG9ja3Mvd3Avd3AtYmxvY2stYnV0dG9uJztcbkBpbXBvcnQgJ2Jsb2Nrcy93cC93cC1ibG9jay1jb2RlJztcbkBpbXBvcnQgJ2Jsb2Nrcy93cC93cC1ibG9jay1pbWFnZSc7XG5AaW1wb3J0ICdibG9ja3Mvd3Avd3AtYmxvY2stcXVvdGUnO1xuXG4vKiBWTyBCbG9ja3MgKi9cbkBpbXBvcnQgJ2Jsb2Nrcy92by9saW5rZWQtYXJ0aWNsZXMnO1xuQGltcG9ydCAnYmxvY2tzL3ZvL2xpbmtlZC1hcnRpY2xlJztcbkBpbXBvcnQgJ2Jsb2Nrcy92by9saXN0LWl0ZW0nO1xuQGltcG9ydCAnYmxvY2tzL3ZvL2N0YSc7XG5AaW1wb3J0ICdibG9ja3Mvdm8vZ2FsbGVyeSc7XG4iLCIvKipcbiAqIEJsb2NrcyBiYXNlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cbi5lbnRyeV9fY29udGVudCB7XG4gICAgY29sb3I6ICRjb2xvci1kYXJrZXItZ3JheTtcblx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdG1hcmdpbi1yaWdodDogYXV0bztcbiAgICBAaW5jbHVkZSB0ZXh0LWJvZHkoKTtcblxuXHQ+ICoge1xuXHRcdG1heC13aWR0aDogJGJsb2NrLXdpZHRoO1xuXHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRcdG1hcmdpbi1yaWdodDogYXV0bztcblxuXHRcdCYuYWxpZ253aWRlIHtcblx0XHRcdG1heC13aWR0aDogJGJsb2NrLXdpZHRoLXdpZGU7XG5cdFx0fVxuXG5cdFx0Ji5hbGlnbmZ1bGwge1xuXHRcdFx0bWF4LXdpZHRoOiBjYWxjKDEwMCUgKyBjYWxjKCN7JGJsb2NrLWd1dHRlcn0gKiAyKSk7XG5cdFx0XHRtYXJnaW4tbGVmdDogY2FsYygjeyRibG9jay1ndXR0ZXJ9ICogLTEpO1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiBjYWxjKCN7JGJsb2NrLWd1dHRlcn0gKiAtMSk7XG5cdFx0fVxuXHR9XG5cbiAgICAmLmVudHJ5X19jb250ZW50LS13aWRlIHtcbiAgICAgICAgPiAqIHtcbiAgICAgICAgICAgICY6bm90KC5hZC0tbW9iaWxlLW9ubHkpLFxuICAgICAgICAgICAgJi5hbGlnbndpZGUsXG4gICAgICAgICAgICAmLmFsaWduZnVsbCB7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXHR1bCxcblx0b2wge1xuXHRcdGxpIHtcblx0XHRcdC8vbWFyZ2luLWxlZnQ6IDFyZW07XG5cdFx0fVxuXHR9XG5cbiAgICAvLyBMaXN0IHVub3JkZXJlZCBzdHlsZVxuICAgIHVsOm5vdChbY2xhc3NdKSB7XG4gICAgICAgIEBpbmNsdWRlIHZvLXVub3JkZXJlZC1saXN0KCk7XG4gICAgfVxuXG4gICAgb2wge1xuICAgICAgICBAZXh0ZW5kICVvcmRlcmVkLWxpc3Q7XG4gICAgfVxuXG5cdC8vIERlZmF1bHQgYmxvY2sgc3BhY2luZ1xuXHQ+ICogKyAqLFxuXHQud3AtYmxvY2stZ3JvdXAgPiAqICsgKixcblx0LndwLWJsb2NrLWdyb3VwX19pbm5lci1jb250YWluZXIgPiAqICsgKixcbiAgICAud3AtYmxvY2stdm8tbGlzdC1pdGVtID4gKiArICoge1xuXHRcdG1hcmdpbjogJGJsb2NrLXNwYWNpbmcgYXV0bztcblxuXHRcdCY6bGFzdC1jaGlsZCB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdH1cblx0fVxuXG4gICAgPiB7XG4gICAgICAgIHA6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgQGV4dGVuZCAlZm9udC13ZWlnaHQtYm9sZDtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZm9udC1tb250c2VycmF0O1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgdGV4dC1sKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYygxNSk7XG5cbiAgICAgICAgICAgICYgKyAqIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiByZW0tY2FsYygxNSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMjApO1xuXG4gICAgICAgICAgICAgICAgJiArICoge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiByZW0tY2FsYygyMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoNDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc2VjdGlvbiB7XG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoNDApO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDQwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiBNZWRpYSBFbGVtZW50c1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5zdmcsXG5pbWcsXG5lbWJlZCxcbm9iamVjdCxcbnBpY3R1cmUge1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdGhlaWdodDogYXV0bztcblx0bWF4LXdpZHRoOiAxMDAlO1xufVxuXG46cm9vdCBmaWd1cmUge1xuICAgIG1heC13aWR0aDogMTAwJTtcblxuICAgIGEge1xuICAgICAgICBAaW5jbHVkZSB2by1saW5rKCRjb2xvci1idXR0b24tZ3JheSwgJGNvbG9yLXByaW1hcnkpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBBbGlnbm1lbnRzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cbi50ZXh0LXJpZ2h0IHtcblx0dGV4dC1hbGlnbjogcmlnaHQ7XG59XG5cbi50ZXh0LWxlZnQge1xuXHR0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4udGV4dC1jZW50ZXIge1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5hbGlnbmxlZnQge1xuXHRkaXNwbGF5OiBpbmxpbmU7XG5cdGZsb2F0OiBsZWZ0O1xuXHRtYXJnaW4tcmlnaHQ6ICRibG9jay1ndXR0ZXI7XG59XG5cbi5hbGlnbnJpZ2h0IHtcblx0ZGlzcGxheTogaW5saW5lO1xuXHRmbG9hdDogcmlnaHQ7XG5cdG1hcmdpbi1sZWZ0OiAkYmxvY2stZ3V0dGVyO1xufVxuXG4uYWxpZ25jZW50ZXIge1xuXHRjbGVhcjogYm90aDtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRtYXJnaW4tcmlnaHQ6IGF1dG87XG59XG5cbi8vIEVkaXRvciBvbmx5IHN0eWxlc1xuQGlmICgkZWRpdG9yKSB7XG5cdC5lZGl0b3ItcG9zdC10aXRsZSB7XG5cdFx0LndwLWJsb2NrIHtcblx0XHRcdG1heC13aWR0aDogJGJsb2NrLXdpZHRoO1xuXHRcdH1cblx0fVxuXG5cdC5ibG9jay1lZGl0b3ItYmxvY2stbGlzdF9fbGF5b3V0IHtcbiAgICAgICAgQGluY2x1ZGUgdGV4dC1ib2R5KCk7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItZGFya2VyLWdyYXk7XG4gICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcblxuXHRcdD4gLndwLWJsb2NrIHtcblx0XHRcdG1heC13aWR0aDogJGJsb2NrLXdpZHRoO1xuXG5cdFx0XHQmW2RhdGEtYWxpZ249J3dpZGUnXSB7XG5cdFx0XHRcdG1heC13aWR0aDogJGJsb2NrLXdpZHRoLXdpZGU7XG5cdFx0XHR9XG5cblx0XHRcdCZbZGF0YS1hbGlnbj0nZnVsbCddIHtcblx0XHRcdFx0bWF4LXdpZHRoOiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIiwiLyoqXG4gKiBHZW5lcmF0ZSBjb2xvciBjbGFzc2VzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cbkBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGd1dGVuYmVyZy1jb2xvcnMge1xuXHQuaGFzLSN7JG5hbWV9LWJhY2tncm91bmQtY29sb3Ige1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcblx0fVxuXG5cdC5oYXMtI3skbmFtZX0tY29sb3Ige1xuXHRcdGNvbG9yOiAkY29sb3I7XG5cdH1cblxuXHQuaGFzLSN7JG5hbWV9LXRleHQtY29sb3Ige1xuXHRcdGNvbG9yOiAkY29sb3I7XG5cdH1cbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBncmFkaWVudCBjb2xvciBjbGFzc2VzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cbkBlYWNoICRuYW1lLCAkY29sb3IxLCAkY29sb3IyIGluICRndXRlbmJlcmctZ3JhZGllbnRzIHtcblx0Lmhhcy0jeyRuYW1lfS1ncmFkaWVudC1iYWNrZ3JvdW5kIHtcblx0XHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoJGNvbG9yMSwgMSkgMCUsIHJnYmEoJGNvbG9yMiwgMSkgMTAwJSk7XG5cdH1cbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBmb250IHNpemUgY2xhc3Nlc1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5AZWFjaCAkbmFtZSwgJGZvbnRTaXplIGluICRndXRlbmJlcmctZm9udC1zaXplcyB7XG5cdC5oYXMtI3skbmFtZX0tZm9udC1zaXplIHtcblx0XHRmb250LXNpemU6ICRmb250U2l6ZTtcblx0fVxufVxuIiwiLndwLWJsb2NrIHt9XG5cbi53cC1ibG9ja1tkYXRhLXR5cGU9XCJjb3JlL2xpc3RcIl0ge1xuICAgIHBhZGRpbmctbGVmdDogMDtcbn1cblxudWwud3AtYmxvY2tbZGF0YS10eXBlPVwiY29yZS9saXN0XCJdIHtcbiAgICAmLCB1bCB7XG4gICAgICAgIEBleHRlbmQgJXVub3JkZXJlZC1saXN0O1xuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICB9XG59XG5cbm9sLndwLWJsb2NrW2RhdGEtdHlwZT1cImNvcmUvbGlzdFwiXSB7XG4gICAgJiwgb2wge1xuICAgICAgICBAZXh0ZW5kICVvcmRlcmVkLWxpc3Q7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIH1cbn1cblxuLyoqXG4gKiBIZWFkaW5nXG4gKi9cbi53cC1ibG9ja1tkYXRhLXR5cGU9XCJjb3JlL2hlYWRpbmdcIl0ge1xuICAgIGNvbG9yOiAkY29sb3ItYmxhY2s7XG59XG4iLCIud3AtYmxvY2stY29sdW1ucyB7XG5cblx0LndwLWJsb2NrLWNvbHVtbiB7XG5cblx0fVxufVxuIiwiLndwLWJsb2NrLWdyb3VwIHtcbiAgICAqLFxuICAgIC53cC1ibG9jayB7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgJi5oYXMtYmFja2dyb3VuZCB7XG4gICAgICAgIHBhZGRpbmc6ICRibG9jay1zcGFjaW5nICRibG9jay1ndXR0ZXI7XG4gICAgICAgIEBpZiAoJGVkaXRvciAhPSB0cnVlKSB7XG5cbiAgICAgICAgICAgICY6bm90KC5hbGlnbndpZGUpOm5vdCguYWxpZ25mdWxsKSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6ICRibG9jay13aWR0aDtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgIH1cbn0iLCIud3AtYmxvY2stYnV0dG9uIHt9XG5cbi53cC1ibG9jay1idXR0b25fX2xpbmsge1xuICAgIEBpbmNsdWRlIHZvLWJ1dHRvbigpO1xufVxuXG4ud3AtYmxvY2stYnV0dG9uX19saW5rLmhhcy1yZWQtYmFja2dyb3VuZC1jb2xvciB7XG4gICAgQGluY2x1ZGUgdm8tYnV0dG9uLXZhcmlhdGlvbigkY29sb3Itd2hpdGUsICRjb2xvci1yZWQpO1xufVxuXG4ud3AtYmxvY2stYnV0dG9uX19saW5rLmhhcy1vcmFuZ2UtYmFja2dyb3VuZC1jb2xvciB7XG4gICAgQGluY2x1ZGUgdm8tYnV0dG9uLXZhcmlhdGlvbigkY29sb3Itd2hpdGUsICRjb2xvci1vcmFuZ2UpO1xufVxuXG4ud3AtYmxvY2stYnV0dG9uX19saW5rLmhhcy1kYXJrLWdyYXktYmFja2dyb3VuZC1jb2xvciB7XG4gICAgQGluY2x1ZGUgdm8tYnV0dG9uLXZhcmlhdGlvbigkY29sb3Itd2hpdGUsICRjb2xvci1kYXJrLWdyYXkpO1xufVxuIiwiLndwLWJsb2NrLWNvZGUge1xuXG5cdGNvZGUge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG92ZXJmbG93LXg6IHNjcm9sbDtcblx0fVxuXG59IiwiLndwLWJsb2NrLWltYWdlIHtcbiAgICBmaWd1cmUge1xuICAgICAgICBsaW5lLWhlaWdodDogMDtcbiAgICB9XG5cbiAgICBmaWdjYXB0aW9uIHtcbiAgICAgICAgQGluY2x1ZGUgdGV4dC1zKCk7XG4gICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDEwKTtcbiAgICB9XG59XG4iLCIud3AtYmxvY2stcXVvdGUge1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTgpO1xuICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuXG4gICAgJi5pcy1zdHlsZS1sYXJnZSB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxuXG4gICAgcCB7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbiAgICB9XG59IiwiLyoqXG4gKiBCbG9jayBzdHlsZVxuICovXG4ubGlua2VkLWFydGljbGVzIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogcmVtLWNhbGMoMjAgMTUgMjAgMTUpO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1saWdodC1ncmF5O1xuICAgIHotaW5kZXg6IDA7XG59XG5cbi5saW5rZWQtYXJ0aWNsZXNfX2hlYWRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMjApO1xufVxuXG4ubGlua2VkLWFydGljbGVzX190aXRsZSB7XG4gICAgY29sb3I6ICRjb2xvci1ibGFjaztcbn1cblxuOnJvb3QgLmxpbmtlZC1hcnRpY2xlc19fbGlzdCB7XG4gICAgQGV4dGVuZCAldW5zdHlsZWQtbGlzdDtcblxuICAgIGxpIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDYpO1xuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgLmxpbmtlZC1hcnRpY2xlcyB7XG4gICAgICAgIHBhZGRpbmc6IHJlbS1jYWxjKDMwIDE1IDMwIDE1KTtcbiAgICB9XG5cbiAgICA6cm9vdCAubGlua2VkLWFydGljbGVzX19saXN0IHtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMTApO1xuXG4gICAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAubGlua2VkLWFydGljbGVzIHtcbiAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoNTAgMTUgNTAgMTUpO1xuICAgIH1cblxuICAgIC5saW5rZWQtYXJ0aWNsZXNfX2hlYWRlciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDQwKTtcbiAgICB9XG5cbiAgICA6cm9vdCAubGlua2VkLWFydGljbGVzX19saXN0IHtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMjApO1xuXG4gICAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKipcbiAqIExpbmtlZCBhcnRpY2xlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBQYXJ0IG9mIGFuIGl0ZW1cbiAqIC0tc21hbGxcbiAqIC0tbGFyZ2VcbiAqL1xuLmxpbmtlZC1hcnRpY2xlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5saW5rZWQtYXJ0aWNsZV9faWNvbiB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygxMCk7XG4gICAgd2lkdGg6IHJlbS1jYWxjKDE4KTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gJHRyYW5zaXRpb24tZmFzdDtcbn1cblxuLmxpbmtlZC1hcnRpY2xlX190aXRsZSB7XG4gICAgQGV4dGVuZCAlZm9udC13ZWlnaHQtYm9sZDtcbiAgICBAaW5jbHVkZSB0ZXh0LXhzKCk7XG4gICAgY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgICBmb250LWZhbWlseTogJGZvbnQtbW9udHNlcnJhdDtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciAkdHJhbnNpdGlvbi1mYXN0O1xufVxuXG4ubGlua2VkLWFydGljbGVfX2lubmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xufVxuXG4ubGlua2VkLWFydGljbGVfX2FuY2hvciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAxO1xufVxuXG4ubGlua2VkLWFydGljbGVfX2lubmVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG59XG5cbi5saW5rZWQtYXJ0aWNsZV9fY29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIG9yZGVyOiAyO1xufVxuXG4ubGlua2VkLWFydGljbGVfX2V4Y2VycHQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygxNCk7XG4gICAgbGluZS1oZWlnaHQ6IHJlbS1jYWxjKDIxKTtcbn1cblxuLmxpbmtlZC1hcnRpY2xlX19pbWFnZSB7XG4gICAgQGluY2x1ZGUgdm8tZGVmYXVsdC1iYWNrZ3JvdW5kLWltYWdlKCk7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiByZW0tY2FsYygxMDQpO1xuICAgIGhlaWdodDogcmVtLWNhbGMoNzgpO1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1lZGl1bTtcbiAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYygwKTtcbiAgICBtYXJnaW4tcmlnaHQ6IHJlbS1jYWxjKDEwKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHotaW5kZXg6IDA7XG5cbiAgICBpbWcge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgfVxufVxuXG4ubGlua2VkLWFydGljbGVfX2FuY2hvciB7XG4gICAgQGluY2x1ZGUgaG9jdXMge1xuICAgICAgICAmICsgLmxpbmtlZC1hcnRpY2xlX19pbm5lciB7XG4gICAgICAgICAgICAubGlua2VkLWFydGljbGVfX3RpdGxlIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbjpyb290IC5saW5rZWQtYXJ0aWNsZS0tc21hbGwge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoMTYpO1xuICAgIHBhZGRpbmc6IHJlbS1jYWxjKDQgMCk7XG4gICAgY29sb3I6ICRjb2xvci1ibGFjaztcblxuICAgIEBpbmNsdWRlIGhvY3VzIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1wcmltYXJ5O1xuXG4gICAgICAgIC5saW5rZWQtYXJ0aWNsZV9fdGl0bGUge1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvci1wcmltYXJ5O1xuICAgICAgICB9XG5cbiAgICAgICAgLmxpbmtlZC1hcnRpY2xlX19pY29uIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0cHgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgIDpyb290IC5saW5rZWQtYXJ0aWNsZS0tc21hbGwge1xuICAgICAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoMjApO1xuXG4gICAgICAgIEBpbmNsdWRlIGhvY3VzIHtcbiAgICAgICAgICAgIC5saW5rZWQtYXJ0aWNsZV9faWNvbiB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDZweCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubGlua2VkLWFydGljbGVfX2ljb24ge1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDExKTtcbiAgICAgICAgd2lkdGg6IHJlbS1jYWxjKDI0KTtcbiAgICB9XG5cbiAgICAubGlua2VkLWFydGljbGVfX3RpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxNik7XG4gICAgfVxufVxuXG4ubGlua2VkLWFydGljbGUtLWxhcmdlIHtcbiAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYygxNSk7XG5cbiAgICAubGlua2VkLWFydGljbGVfX3RpdGxlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHRyYW5zaXRpb246IGNvbG9yICR0cmFuc2l0aW9uLWZhc3Q7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgIC5saW5rZWQtYXJ0aWNsZS0tbGFyZ2Uge1xuICAgICAgICAubGlua2VkLWFydGljbGVfX3RpdGxlIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTgpO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IHJlbS1jYWxjKDIwKTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDEwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5saW5rZWQtYXJ0aWNsZV9fZXhjZXJwdCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIC5saW5rZWQtYXJ0aWNsZV9faW1hZ2Uge1xuICAgICAgICAgICAgd2lkdGg6IHJlbS1jYWxjKDE3Nyk7XG4gICAgICAgICAgICBoZWlnaHQ6IHJlbS1jYWxjKDE3Nyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAubGlua2VkLWFydGljbGUtLWxhcmdlIHtcbiAgICAgICAgLmxpbmtlZC1hcnRpY2xlX190aXRsZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDI0KTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygzMCk7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYygxNSk7XG4gICAgICAgIH1cblxuICAgICAgICAubGlua2VkLWFydGljbGVfX2V4Y2VycHQge1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxNik7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoMjgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmxpbmtlZC1hcnRpY2xlX19pbWFnZSB7XG4gICAgICAgICAgICB3aWR0aDogcmVtLWNhbGMoMjAwKTtcbiAgICAgICAgICAgIGhlaWdodDogcmVtLWNhbGMoMjAwKTtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogcmVtLWNhbGMoNDApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AaWYgKCRlZGl0b3IpIHtcbiAgICAubGlua2VkLWFydGljbGVfX3RpdGxlIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICB9XG4gICAgLmxpbmtlZC1hcnRpY2xlX19leGNlcnB0IHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG59XG4iLCIud3AtYmxvY2stdm8tbGlzdC1pdGVtIHtcbiAgICB1bCwgb2wge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgfVxufVxuIiwiLndwLWJsb2NrLXZvLWN0YSB7fVxuIiwiLy8gaGlkZSB0aGUgdXBsb2FkIGJ1dHRvbiBvZiB0aGUgTWVkaWFQbGFjZWhvbGRlciBndXRlbmJlcmcgY29tcG9uZW50IGJlY2F1c2UgdGhlIFdQIE9mZmxvYWQgTWVkaWEgcGx1Z2luIGRvZXMgbm90IHJlcGxhY2UgdGhlIGltYWdlcyBjb3JyZWN0bHlcbmRpdltkYXRhLXR5cGU9XCJ2by9nYWxsZXJ5XCJdIC5ibG9jay1lZGl0b3ItbWVkaWEtcGxhY2Vob2xkZXJfX3VwbG9hZC1idXR0b24ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4iLCIuZWRpdG9yLXBsYWNlaG9sZGVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItbWVkaXVtLWdyYXk7XG4gICAgZm9udC1zaXplOiAycmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6ICRjb2xvci1kYXJrZXItZ3JheTtcbiAgICBwYWRkaW5nOiAkc3BhY2luZy1sICRzcGFjaW5nLW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuIiwiLyoqXG4gKiBRdWljayAmIERpcnR5IHNvbHV0aW9ucyAtIFBsZWFzZSBrZWVwIHRoaXMgZmlsZSBhcyBjbGVhbiBhcyBwb3NzaWJsZSFcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFFQTs7Ozs7O0dBTUc7QUFFSCxjQUFjO0FDVmQ7OztHQUdHO0FDSEg7OztHQUdHO0FBSUgsWUFBWTtBQUdaLGlCQUFpQjtBQVdqQixnQkFBZ0I7QUFPaEIsYUFBYTtBQW9CYix3QkFBd0I7QVlo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 */
