@charset "UTF-8";
/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */
/**
 * 1. Change the default font family in all browsers (opinionated).
 * 2. Prevent adjustments of font size after orientation changes in IE and iOS.
 */
html {
  font-family: sans-serif;
  /* 1 */
  -ms-text-size-adjust: 100%;
  /* 2 */
  -webkit-text-size-adjust: 100%;
  /* 2 */
}

/* apply a natural box layout model to all elements, but allowing components to change */
html {
  box-sizing: border-box;
}

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

/**
 * Remove the margin in all browsers (opinionated).
 */
body {
  margin: 0;
}

/* HTML5 display definitions
   ========================================================================== */
/**
 * Add the correct display in IE 9-.
 * 1. Add the correct display in Edge, IE, and Firefox.
 * 2. Add the correct display in IE.
 */
article,
aside,
details,
figcaption,
figure,
footer,
header,
main,
menu,
nav,
section,
summary {
  /* 1 */
  display: block;
}

/**
 * Add the correct display in IE 9-.
 */
audio,
canvas,
progress,
video {
  display: inline-block;
}

/**
 * Add the correct display in iOS 4-7.
 */
audio:not([controls]) {
  display: none;
  height: 0;
}

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

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

/* Links
   ========================================================================== */
/**
 * 1. Remove the gray background on active links in IE 10.
 * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
 */
a {
  background-color: transparent;
  /* 1 */
  -webkit-text-decoration-skip: objects;
  /* 2 */
}

/**
 * Remove the outline on focused links when they are also active or hovered
 * in all browsers (opinionated).
 */
a:active,
a:hover {
  outline-width: 0;
}

/* Text-level semantics
   ========================================================================== */
/**
 * 1. Remove the bottom border in Firefox 39-.
 * 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 */
}

/**
 * Prevent the duplicate application of `bolder` by the next rule in Safari 6.
 */
b,
strong {
  font-weight: inherit;
}

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

/**
 * Add the correct font style in Android 4.3-.
 */
dfn {
  font-style: italic;
}

/**
 * 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;
}

/**
 * Add the correct background and color in IE 9-.
 */
mark {
  background-color: #ff0;
  color: #000;
}

/**
 * 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;
}

/**
 * Hide the overflow in IE.
 */
svg:not(:root) {
  overflow: hidden;
}

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

/**
 * Add the correct margin in IE 8.
 */
figure {
  margin: 1em 40px;
}

/**
 * 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 */
}

/* Forms
   ========================================================================== */
/**
 * 1. Change font properties to `inherit` in all browsers (opinionated).
 * 2. Remove the margin in Firefox and Safari.
 */
button,
input,
select,
textarea {
  font: inherit;
  /* 1 */
  margin: 0;
  /* 2 */
}

/**
 * Restore the font weight unset by the previous rule.
 */
optgroup {
  font-weight: bold;
}

/**
 * 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;
}

/**
 * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
 *    controls in Android 4.
 * 2. Correct the inability to style clickable types in iOS and Safari.
 */
button,
html [type="button"],
[type="reset"],
[type="submit"] {
  -webkit-appearance: button;
  /* 2 */
}

/**
 * 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;
}

/**
 * Change the border, margin, and padding in all browsers (opinionated).
 */
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}

/**
 * 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 */
}

/**
 * Remove the default vertical scrollbar in IE.
 */
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 and cancel buttons in Chrome and Safari on OS X.
 */
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}

/**
 * Correct the text style of placeholders in Chrome, Edge, and Safari.
 */
::-webkit-input-placeholder {
  color: inherit;
  opacity: 0.54;
}

/**
 * 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 */
}

/**
 *  remove ios styling. Only use on buttons and search inputs
 */
button, [type="search"], [type="button"] {
  -webkit-appearance: none;
  border-radius: 0;
  padding: 0;
}

input[type="number"] {
  -moz-appearance: textfield;
}

input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

.assistive-text {
  clip: rect(1px, 1px, 1px, 1px);
  position: absolute !important;
  white-space: nowrap;
  height: 1px;
  width: 1px;
  overflow: hidden;
}

.assistive-text:hover, .assistive-text:active, .assistive-text:focus {
  font-size: .875em;
  font-weight: bold;
  line-height: normal;
  z-index: 100000;
  top: 5px;
  left: 5px;
  display: block;
  clip: auto !important;
  width: auto;
  height: auto;
  padding: 15px 23px 14px;
  text-decoration: none;
  color: #21759b;
  border-radius: 3px;
  background-color: #f1f1f1;
  box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6);
}

.hide {
  display: none;
}

@-webkit-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@-webkit-keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}

@keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}

@-webkit-keyframes slideInLeft {
  from {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInLeft {
  from {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@-webkit-keyframes slideInRight {
  from {
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInRight {
  from {
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@-webkit-keyframes slideOutRight {
  from {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@keyframes slideOutRight {
  from {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@keyframes slideOutDown {
  from {
    transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    transform: translate3d(0, 100%, 0);
  }
}

@keyframes slideOutDown {
  from {
    transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    transform: translate3d(0, 100%, 0);
  }
}

.slideOutDown {
  animation-name: slideOutDown;
}

@keyframes slideOutLeft {
  from {
    transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    transform: translate3d(-100%, 0, 0);
  }
}

.slideOutLeft {
  animation-name: slideOutLeft;
}

@-webkit-keyframes slideInDown {
  from {
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInDown {
  from {
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@-webkit-keyframes slideInUp {
  from {
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInUp {
  from {
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@-webkit-keyframes bounce {
  0% {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    visibility: visible;
  }
  50% {
    -webkit-transform: translate3d(0, 30px, 0);
    transform: translate3d(0, 30px, 0);
    visibility: visible;
  }
  100% {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    visibility: visible;
  }
}

@keyframes bounce {
  0% {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    visibility: visible;
  }
  50% {
    -webkit-transform: translate3d(0, 30px, 0);
    transform: translate3d(0, 30px, 0);
    visibility: visible;
  }
  100% {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    visibility: visible;
  }
}

@-webkit-keyframes MoonImageAnimation {
  0% {
    opacity: .15;
  }
  75% {
    opacity: 1;
  }
  85% {
    opacity: 0;
  }
  100% {
    opacity: .15;
  }
}

@keyframes MoonImageAnimation {
  0% {
    opacity: .15;
  }
  75% {
    opacity: 1;
  }
  85% {
    opacity: 0;
  }
  100% {
    opacity: .15;
  }
}

@-webkit-keyframes MoonGradientRise {
  0% {
    transform: translateY(0);
  }
  85% {
    transform: translateY(100%);
  }
  100% {
    transform: translateY(0);
  }
}

@keyframes MoonGradientRise {
  0% {
    transform: translateY(0);
  }
  85% {
    transform: translateY(100%);
  }
  100% {
    transform: translateY(0);
  }
}

@-webkit-keyframes MoonTypeReveal {
  0% {
    letter-spacing: inherit;
  }
  85% {
    letter-spacing: .15em;
  }
  100% {
    letter-spacing: .15em;
  }
}

@keyframes MoonTypeReveal {
  0% {
    letter-spacing: inherit;
  }
  85% {
    letter-spacing: .15em;
  }
  100% {
    letter-spacing: .15em;
  }
}

body {
  font-family: "Muli", "Trebuchet MS", sans-serif;
  line-height: 1.625;
  font-size: 1em;
  -webkit-font-smoothing: antialiased;
  -moz-font-smoothing: antialiased;
}

h1,
h2,
h3,
h4,
h5,
h6,
.alpha,
.beta,
.gamma,
.delta,
.epsilon,
.zeta {
  margin-top: 0;
  font-weight: 700;
}

.alpha {
  color: #434343;
  font-size: 2.25em;
  line-height: 1.05;
}

.alpha:before {
  display: block;
  content: "";
  height: 0.1666em;
  width: 4.1677em;
  background: #f3ad00;
  margin-bottom: 0.35em;
}

.alpha:after {
  display: none;
}

h2,
.beta {
  color: #434343;
  font-size: 2em;
  margin-bottom: 1em;
  line-height: 1.0625;
}

h2:after,
.beta:after {
  margin-top: 0.4em;
  display: block;
  content: "";
  height: 0.1875em;
  width: 3.125em;
  background: #f3ad00;
}

h2.alternate,
.beta.alternate {
  padding: 0.5em 0 0.25em;
  margin-bottom: 0.5em;
}

h2.alternate:after,
.beta.alternate:after {
  margin-top: 0;
  display: block;
  content: "";
  height: 0.1875em;
  width: 3.125em;
  background: #4872b4;
  position: absolute;
  top: 0.8em;
  margin-bottom: 1em;
}

.premiere-date {
  color: #777777;
  font-size: 2em;
  margin-bottom: 0.5em;
  line-height: 1.0625;
}

.overline {
  margin-bottom: 1.5em;
}

.overline h1,
.overline .alpha {
  line-height: 1.05;
  margin-bottom: 0.2em;
}

.overline h1:before,
.overline .alpha:before {
  display: none;
}

.overline:before {
  margin-top: 0.4em;
  margin-bottom: 0.75em;
  display: block;
  content: "";
  height: 0.375em;
  width: 9.375em;
  background: #f3ad00;
}

.js .alpha:before, .js .alpha:after,
.js h2:before,
.js h2:after,
.js .beta:before,
.js .beta:after,
.js .overline:before,
.js .overline:after {
  -webkit-transition: width 0.75s ease-in-out;
  -ms-transition: width 0.75s ease-in-out;
  transition: width 0.75s ease-in-out;
  width: 0;
}

.js .overline.animate:before {
  width: 9.375em;
}

.js .alpha.animate:before,
.js h2.alpha.animate:before {
  width: 4.1677em;
}

.js h2.animate:after,
.js .beta.animate:after {
  width: 3.125em;
}

h3,
.gamma {
  line-height: 1.25;
  color: #434343;
  font-size: 1.625em;
}

h4,
.delta {
  color: #999999;
  font-size: 1.5em;
  line-height: 1.07;
}

h5,
.epislon {
  color: black;
  font-size: 1.375em;
  line-height: 1.08;
}

h6,
.zeta {
  color: #777777;
  font-family: "Roboto Slab", serif;
  text-transform: uppercase;
  font-size: 0.875em;
  letter-spacing: 0.0714em;
}

p {
  margin: 0 0 1.666667em;
  font-size: 1.125em;
}

p:empty {
  display: none;
}

.plugin-container ol,
.plugin-container ul {
  font-size: 1.125em;
  margin: 0 0 1.666667em;
  padding-left: 1.5em;
}

@media (min-width: 40.625em) {
  .plugin-container ol,
  .plugin-container ul {
    padding-left: 2.5em;
  }
}

.plugin-container ol li,
.plugin-container ul li {
  margin-bottom: 1em;
}

.plugin-container ol {
  padding-left: 2em;
}

@media (min-width: 40.625em) {
  .plugin-container ol {
    padding-left: 3em;
  }
}

.plugin-container ul {
  list-style: none;
}

.plugin-container ul li {
  position: relative;
  padding-left: 0.5em;
}

.plugin-container ul li:before {
  display: inline-block;
  position: absolute;
  top: 0;
  left: -0.5em;
  line-height: 1.5;
  content: "\2022";
  color: #f3ad00;
}

.two-up:after {
  display: table;
  clear: both;
  content: '';
}

.two-up:before {
  display: table;
  clear: both;
  content: '';
}

.two-up li {
  margin-bottom: 3em;
}

@media (min-width: 40.625em) {
  .two-up li {
    width: 47.36842%;
    float: left;
  }
  .two-up li:nth-child(2n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .two-up li:nth-child(2n + 2) {
    margin-left: 52.63158%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 68.75em) {
  .two-up li {
    width: 48.71795%;
    float: left;
  }
  .two-up li:nth-child(2n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .two-up li:nth-child(2n + 2) {
    margin-left: 51.28205%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 81.25em) {
  .two-up li {
    width: 49.15254%;
    float: left;
  }
  .two-up li:nth-child(2n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .two-up li:nth-child(2n + 2) {
    margin-left: 50.84746%;
    margin-right: -100%;
    clear: none;
  }
}

.three-up:after {
  display: table;
  clear: both;
  content: '';
}

.three-up:before {
  display: table;
  clear: both;
  content: '';
}

.three-up li {
  margin-bottom: 3em;
}

@media (min-width: 40.625em) {
  .three-up li {
    width: 47.36842%;
    float: left;
  }
  .three-up li:nth-child(2n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .three-up li:nth-child(2n + 2) {
    margin-left: 52.63158%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 68.75em) {
  .three-up li {
    width: 31.61538%;
    float: left;
  }
  .three-up li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .three-up li:nth-child(3n + 2) {
    margin-left: 34.17949%;
    margin-right: -100%;
    clear: none;
  }
  .three-up li:nth-child(3n + 3) {
    margin-left: 68.35897%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 81.25em) {
  .three-up li {
    width: 32.20339%;
    float: left;
  }
  .three-up li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .three-up li:nth-child(3n + 2) {
    margin-left: 33.89831%;
    margin-right: -100%;
    clear: none;
  }
  .three-up li:nth-child(3n + 3) {
    margin-left: 67.79661%;
    margin-right: -100%;
    clear: none;
  }
}

.four-up:after {
  display: table;
  clear: both;
  content: '';
}

.four-up:before {
  display: table;
  clear: both;
  content: '';
}

.four-up h3.delta {
  font-size: 1.375em !important;
  line-height: 1.1 !important;
}

.four-up li {
  margin-bottom: 3em;
}

@media (min-width: 40.625em) {
  .four-up li {
    width: 47.36842%;
    float: left;
  }
  .four-up li:nth-child(2n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .four-up li:nth-child(2n + 2) {
    margin-left: 52.63158%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 68.75em) {
  .four-up li {
    width: 31.61538%;
    float: left;
  }
  .four-up li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .four-up li:nth-child(3n + 2) {
    margin-left: 34.17949%;
    margin-right: -100%;
    clear: none;
  }
  .four-up li:nth-child(3n + 3) {
    margin-left: 68.35897%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 81.25em) {
  .four-up li {
    width: 23.72881%;
    float: left;
  }
  .four-up li:nth-child(4n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .four-up li:nth-child(4n + 2) {
    margin-left: 25.42373%;
    margin-right: -100%;
    clear: none;
  }
  .four-up li:nth-child(4n + 3) {
    margin-left: 50.84746%;
    margin-right: -100%;
    clear: none;
  }
  .four-up li:nth-child(4n + 4) {
    margin-left: 76.27119%;
    margin-right: -100%;
    clear: none;
  }
}

.four-up p {
  font-size: 1em;
  line-height: 1.5;
}

@media (min-width: 40.625em) {
  .five-up {
    margin-bottom: 3em;
    display: grid;
    grid-gap: 1.5em;
    justify-content: space-between;
    align-content: start;
    grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr;
  }
}

@media (min-width: 81.25em) {
  .five-up {
    grid-template-columns: 1fr 1fr 1fr 1fr;
  }
}

.five-up h3.delta {
  font-size: 1.375em !important;
  line-height: 1.1 !important;
}

.five-up li {
  margin-bottom: 1.5em;
  box-sizing: border-box;
}

@media (min-width: 40.625em) {
  .five-up li:nth-child(1) {
    grid-column: 1 / span 3;
    grid-row: 1;
  }
}

@media (min-width: 68.75em) {
  .five-up li:nth-child(1) {
    grid-column: 1 / span 2;
    grid-row: 1;
  }
}

@media (min-width: 81.25em) {
  .five-up li:nth-child(1) {
    grid-column: 1 / 2;
    grid-row: 1;
  }
}

@media (min-width: 40.625em) {
  .five-up li:nth-child(2) {
    grid-column: 4 / span 3;
    grid-row: 1;
  }
}

@media (min-width: 68.75em) {
  .five-up li:nth-child(2) {
    grid-column: 3 / span 2;
    grid-row: 1;
  }
}

@media (min-width: 81.25em) {
  .five-up li:nth-child(2) {
    grid-column: 2 / 3;
    grid-row: 1;
  }
}

@media (min-width: 40.625em) {
  .five-up li:nth-child(3) {
    grid-column: 1 / span 3;
    grid-row: 2;
  }
}

@media (min-width: 68.75em) {
  .five-up li:nth-child(3) {
    grid-column: 5 / span 2;
    grid-row: 1;
  }
}

@media (min-width: 81.25em) {
  .five-up li:nth-child(3) {
    grid-column: 1 / 1;
    grid-row: 2;
  }
}

@media (min-width: 40.625em) {
  .five-up li:nth-child(4) {
    grid-column: 4 / span 3;
    grid-row: 2;
  }
}

@media (min-width: 68.75em) {
  .five-up li:nth-child(4) {
    grid-column: 1 / span 3;
    grid-row: 2;
  }
}

@media (min-width: 81.25em) {
  .five-up li:nth-child(4) {
    grid-column: 2 / 3;
    grid-row: 2;
  }
}

@media (min-width: 40.625em) {
  .five-up li:nth-child(5) {
    grid-column: 1 / span 6;
    grid-row: 3;
    align-items: center;
  }
}

@media (min-width: 68.75em) {
  .five-up li:nth-child(5) {
    grid-column: 4 / span 3;
    grid-row: 2;
    align-items: center;
  }
}

@media (min-width: 81.25em) {
  .five-up li:nth-child(5) {
    grid-column: 3 / span 2;
    grid-row: 1 / span 2;
    align-items: center;
  }
}

.five-up li p {
  font-size: 1em;
  line-height: 1.5;
}

@supports not (display: grid) {
  .five-up:after {
    display: table;
    clear: both;
    content: '';
  }
  .five-up:before {
    display: table;
    clear: both;
    content: '';
  }
  .five-up li {
    margin-bottom: 3em;
  }
  @media (min-width: 40.625em) {
    .five-up li {
      width: 47.36842%;
      float: left;
    }
    .five-up li:nth-child(2n + 1) {
      margin-left: 0;
      margin-right: -100%;
      clear: both;
      margin-left: 0;
    }
    .five-up li:nth-child(2n + 2) {
      margin-left: 52.63158%;
      margin-right: -100%;
      clear: none;
    }
  }
  @media (min-width: 68.75em) {
    .five-up li {
      width: 31.61538%;
      float: left;
    }
    .five-up li:nth-child(3n + 1) {
      margin-left: 0;
      margin-right: -100%;
      clear: both;
      margin-left: 0;
    }
    .five-up li:nth-child(3n + 2) {
      margin-left: 34.17949%;
      margin-right: -100%;
      clear: none;
    }
    .five-up li:nth-child(3n + 3) {
      margin-left: 68.35897%;
      margin-right: -100%;
      clear: none;
    }
  }
  @media (min-width: 81.25em) {
    .five-up li {
      width: 32.20339%;
      float: left;
    }
    .five-up li:nth-child(3n + 1) {
      margin-left: 0;
      margin-right: -100%;
      clear: both;
      margin-left: 0;
    }
    .five-up li:nth-child(3n + 2) {
      margin-left: 33.89831%;
      margin-right: -100%;
      clear: none;
    }
    .five-up li:nth-child(3n + 3) {
      margin-left: 67.79661%;
      margin-right: -100%;
      clear: none;
    }
  }
}

.six-up li {
  margin-bottom: 3em;
}

.six-up li p {
  font-size: 1em;
  line-height: 1.5;
}

@media (min-width: 40.625em) {
  .six-up li {
    width: 47.36842%;
    float: left;
  }
  .six-up li:nth-child(2n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .six-up li:nth-child(2n + 2) {
    margin-left: 52.63158%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 68.75em) {
  .six-up li {
    width: 31.81818%;
    float: left;
  }
  .six-up li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .six-up li:nth-child(3n + 2) {
    margin-left: 34.09091%;
    margin-right: -100%;
    clear: none;
  }
  .six-up li:nth-child(3n + 3) {
    margin-left: 68.18182%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 81.25em) {
  .six-up li {
    width: 23.72881%;
    float: left;
  }
  .six-up li:nth-child(4n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .six-up li:nth-child(4n + 2) {
    margin-left: 25.42373%;
    margin-right: -100%;
    clear: none;
  }
  .six-up li:nth-child(4n + 3) {
    margin-left: 50.84746%;
    margin-right: -100%;
    clear: none;
  }
  .six-up li:nth-child(4n + 4) {
    margin-left: 76.27119%;
    margin-right: -100%;
    clear: none;
  }
  .six-up li:nth-child(5), .six-up li:nth-child(6) {
    width: 47.36842%;
    float: left;
  }
  .six-up li:nth-child(5):nth-child(2n + 1), .six-up li:nth-child(6):nth-child(2n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .six-up li:nth-child(5):nth-child(2n + 2), .six-up li:nth-child(6):nth-child(2n + 2) {
    margin-left: 52.63158%;
    margin-right: -100%;
    clear: none;
  }
  .six-up li:nth-child(5) p, .six-up li:nth-child(6) p {
    font-size: 1.125em;
    line-height: 1.625;
  }
}

.social-list {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  text-align: center;
}

.social-list a {
  display: inline-block;
  width: 2em;
  height: 2em;
}

.social-list a svg path {
  -webkit-transition: fill 0.3s ease-in-out;
  -ms-transition: fill 0.3s ease-in-out;
  transition: fill 0.3s ease-in-out;
}

.social-list li {
  display: inline-block;
  padding: 0 .25em;
  text-align: center;
  -webkit-box-flex: 1;
  -ms-flex-positive: 1;
  flex-grow: 1;
}

.social-list svg .background {
  fill: #777777;
}

.social-list svg .color {
  fill: white;
}

.teaser-list {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.teaser-list li {
  list-style: none;
}

.teaser-list dd {
  margin: 0;
}

.teaser-item figure {
  margin: 0 0 0.75em;
  position: relative;
  overflow: hidden;
  padding-bottom: 56.25%;
}

.teaser-item figure a {
  display: block;
  width: 100%;
  height: 100%;
}

.teaser-item figure img {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  display: block;
  width: 100%;
}

.teaser-item p {
  margin-bottom: 0;
}

.teaser-item h3 {
  margin-bottom: 0.375em;
}

.teaser-item h3 .passport-icon {
  max-width: 1em;
  max-height: 1em;
}

.teaser-item .zeta {
  margin-bottom: 0.375em;
  display: inline-block;
}

.teaser-item .icon {
  position: absolute;
  bottom: 0;
  left: 0;
  display: inline-block;
  width: 3.125em;
  height: 3.125em;
  background: rgba(23, 65, 137, 0.75);
}

.teaser-item .icon img {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  max-width: 1.5625em;
  max-height: 1.5625em;
  width: auto;
  height: auto;
}

.collection-item figure {
  padding-bottom: 27.5%;
}

.js .teaser-item.slide-in-item {
  -webkit-animation-duration: 0.5s;
  animation-duration: 0.5s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-name: slideInUp;
  animation-name: slideInUp;
}

.js .teaser-item.hidden-item {
  display: none;
}

.plugin-block, .plugin-list-block {
  margin-bottom: 3em;
}

.plugin-block:after, .plugin-list-block:after {
  display: table;
  clear: both;
  content: '';
}

.plugin-block:before, .plugin-list-block:before {
  display: table;
  clear: both;
  content: '';
}

.plugin-block h3 {
  border-bottom: 0.0625em solid #999999;
  margin-bottom: 1.5em;
}

.plugin-container h3 {
  margin-bottom: 0.1875em;
}

.plugin-list-block ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.plugin-list-block ul:after {
  display: table;
  clear: both;
  content: '';
}

.plugin-list-block ul:before {
  display: table;
  clear: both;
  content: '';
}

.plugin-list-block ul li {
  list-style: none;
}

.plugin-list-block ul dd {
  margin: 0;
}

.alpha + .plugin-block, .alpha + .plugin-list-block {
  margin-top: 3em;
}

.plugin-container figure {
  margin-bottom: 1.5em;
}

.plugin-container figure img {
  display: block;
}

.plugin-container figure.center {
  display: block;
  margin: 15px auto;
}

*[style*="float: left"], .left {
  float: none !important;
  display: block;
  margin: 0 auto 2.25em auto;
}

@media (min-width: 40.625em) {
  *[style*="float: left"], .left {
    display: inherit;
    float: left !important;
    margin-right: 1.5em;
    margin-bottom: 0.75em !important;
  }
}

*[style*="float: right"], .right {
  float: none !important;
  display: block;
  margin: 0 auto 2.25em auto;
}

@media (min-width: 40.625em) {
  *[style*="float: right"], .right {
    display: inherit;
    float: right !important;
    margin-left: 1.5em;
    margin-bottom: 0.75em !important;
  }
}

.center {
  margin-bottom: 1.5em;
  text-align: center;
}

/**
 * wallop.css
 *
 * @fileoverview Default styles for wallop – recommended
 *
 * @author Pedro Duarte
 * @author http://pedroduarte.me/wallop
 */
.carousel-container *:focus {
  outline: 0.125em solid #f3ad00;
}

.carousel-container .full-screen,
.carousel-container .slides-pagination {
  display: none;
}

.carousel-container .Wallop-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  grid-gap: 3px;
  padding: 0;
}

.carousel-container .Wallop-list .Wallop-item:before {
  display: none;
}

@media (min-width: 68.75em) {
  .carousel-container .Wallop-list {
    width: 150%;
    margin-left: -25%;
  }
}

@media (min-width: 95.625em) {
  .carousel-container .Wallop-list {
    width: 200%;
    margin-left: -50%;
  }
}

.js {
  /*
    This element groups all the items, but not the buttons
    It's a recommendation but it's very likely
    you'll want to hide any overflow from the items
    Especially when doing animations such as scale
   */
  /*
    This is the item element
    By default, they are all hidden and
    positioned absolute
    I recommend always having .Wallop-item--current
    in your markup by default (probably on the first element)
   */
  /*
    This is the current item element
    All we do here, is make it visible again reset
    the position to static. Could also be relative
   */
}

.js .carousel-container {
  overflow: hidden;
  margin-bottom: 3em;
  background: black;
}

@media (min-width: 68.75em) {
  .js .carousel-container {
    padding-top: 1em;
  }
}

.js .carousel-container .slides-pagination {
  display: inherit;
}

.js .Wallop-list {
  width: inherit;
}

.js .carousel.expanded .slides-pagination,
.js .carousel.expanded .full-screen {
  display: none;
}

.js .plugin-container .Wallop {
  position: relative;
  -webkit-animation-duration: 0.45s;
  animation-duration: 0.45s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
}

.js .plugin-container .Wallop.entering-fullscreen {
  -webkit-animation-name: slideInDown;
  animation-name: slideInDown;
}

.js .plugin-container .Wallop.exiting-fullscreen {
  animation-name: slideOutDown;
}

.js .plugin-container .Wallop.entering-back {
  -webkit-animation-name: fadeIn;
  animation-name: fadeIn;
}

.js .plugin-container .Wallop.viewing-full {
  position: fixed;
  height: 100%;
  width: 100%;
  left: 0;
  top: 0;
  z-index: 2147483647;
  background: black;
}

.js .plugin-container .Wallop.viewing-full button {
  z-index: 1;
}

.js .plugin-container .Wallop.viewing-full .slides-pagination {
  right: 20%;
  top: calc(75vh + 1em);
}

.js .plugin-container .Wallop.viewing-full .full-screen {
  left: 20%;
  top: calc(75vh + 1.15em);
}

.js .plugin-container .Wallop.viewing-full .Wallop-item {
  border-bottom: none;
  color: white;
  background: transparent;
  height: 100%;
  width: 100%;
}

.js .plugin-container .Wallop.viewing-full .Wallop-item.Wallop-item--current figure {
  margin: 0 auto;
  width: 60%;
}

.js .plugin-container .Wallop.viewing-full .Wallop-item.Wallop-item--current figure .media-container {
  display: inline-block;
  height: 75vh;
  width: 100%;
  padding-top: 1em;
}

.js .plugin-container .Wallop.viewing-full .Wallop-item.Wallop-item--current figure figcaption {
  margin: 3em auto 0 auto;
  padding: 0;
  max-width: 60vw;
}

.js .plugin-container .Wallop.viewing-full .Wallop-item.Wallop-item--current figure .see-more {
  left: calc(20% - 0.45em);
  top: calc(75vh + 7.75em);
}

.js .plugin-container .Wallop.viewing-full .Wallop-item.Wallop-item--current figure .hide-more {
  right: 20%;
}

.js .plugin-container .Wallop.viewing-full .Wallop-item.Wallop-item--current figure.long-caption.expanded figcaption {
  padding-top: 3em;
}

.js .plugin-container .Wallop-list {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
  display: inherit;
  position: relative;
  overflow: hidden;
}

.js .plugin-container .Wallop-list li {
  list-style: none;
}

.js .plugin-container .Wallop-list dd {
  margin: 0;
}

.js .plugin-container .Wallop-item {
  visibility: hidden;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  padding-left: 0;
  margin-bottom: 0;
  color: white;
}

.js .plugin-container .Wallop-item .media-container {
  display: block;
  height: 24em;
  position: relative;
}

@media (min-width: 68.75em) {
  .js .plugin-container .Wallop-item .media-container {
    height: 32.8125em;
  }
}

.js .plugin-container .Wallop-item .media-container img {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  max-height: 100%;
  max-width: 90%;
}

@media (min-width: 68.75em) {
  .js .plugin-container .Wallop-item .media-container img {
    max-width: 100%;
  }
}

.js .plugin-container .Wallop-item h4 {
  margin-bottom: 0.25em;
}

.js .carousel-item-caption {
  padding: 0.5em 1.5em;
  text-align: left;
}

.js .plugin-container .Wallop-item--current {
  visibility: visible;
  position: relative;
  text-align: center;
}

.js .plugin-container .Wallop-item--current figure {
  display: inline-block;
  width: 100%;
}

.js .plugin-container .Wallop-item--current figure.long-caption .hide-more,
.js .plugin-container .Wallop-item--current figure.long-caption .see-more {
  display: none;
}

@media (min-width: 68.75em) {
  .js .plugin-container .Wallop-item--current figure.long-caption figcaption {
    -webkit-transition: max-height 1s ease-in-out;
    -ms-transition: max-height 1s ease-in-out;
    transition: max-height 1s ease-in-out;
    max-height: 15em;
    overflow: hidden;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption p {
    max-height: 4.5em;
    min-height: 4.5em;
    overflow: hidden;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .see-more {
    border: none;
    background: none;
    box-shadow: none;
    -webkit-transition: color 0.3s ease-in-out;
    -ms-transition: color 0.3s ease-in-out;
    transition: color 0.3s ease-in-out;
    display: inline-block;
    color: #bb0b0e;
    position: absolute;
    left: calc(5% - 0.45em);
    top: 40.25em;
    padding: 0 0.45em;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .see-more:hover, .js .plugin-container .Wallop-item--current figure.long-caption .see-more:focus, .js .plugin-container .Wallop-item--current figure.long-caption .see-more:active {
    box-shadow: none;
    border: none;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .see-more:hover {
    color: #f3ad00;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .hide-more {
    border: none;
    background: none;
    box-shadow: none;
    -webkit-transition: all 0.3s ease-in-out;
    -ms-transition: all 0.3s ease-in-out;
    transition: all 0.3s ease-in-out;
    display: inline-block;
    opacity: 0;
    width: 2em;
    height: 2em;
    position: absolute;
    right: 5%;
    z-index: 1;
    display: none;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .hide-more:hover, .js .plugin-container .Wallop-item--current figure.long-caption .hide-more:focus, .js .plugin-container .Wallop-item--current figure.long-caption .hide-more:active {
    box-shadow: none;
    border: none;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .hide-more:hover svg {
    fill: #f3ad00;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .hide-more svg {
    -webkit-transition: fill 0.3s ease-in-out;
    -ms-transition: fill 0.3s ease-in-out;
    transition: fill 0.3s ease-in-out;
    position: absolute;
    top: 50%;
    left: 50%;
    -webkit-transform: translate(-50%, -50%);
    -ms-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
    pointer-events: none;
    max-width: 1em;
    max-height: 1em;
    fill: white;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption.expanded {
    padding-bottom: 8.55em;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption.expanded figcaption {
    max-height: 100%;
    position: absolute;
    padding: 3em 5% 1.5em 5%;
    max-width: inherit;
    bottom: 0;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption.expanded p {
    max-height: inherit;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption.expanded .hide-more {
    display: inline-block;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption.expanded .see-more {
    display: none;
  }
}

.js .plugin-container .Wallop-item--current figure img {
  display: inline-block;
}

.js .plugin-container .Wallop-item--current h4 {
  color: white;
}

.js .plugin-container .Wallop-item--current figcaption,
.js .plugin-container .Wallop-item--current .caption {
  padding: 1.5em 0 0 0;
  background: rgba(0, 0, 0, 0.75);
  text-align: left;
  color: white;
  font-style: normal;
  max-width: 90%;
  margin: 1.5em auto 0 auto;
}

.js .plugin-container .Wallop-item--current figcaption p,
.js .plugin-container .Wallop-item--current .caption p {
  margin-bottom: 0.55em;
}

.js .plugin-container .Wallop-item--current figcaption span,
.js .plugin-container .Wallop-item--current .caption span {
  height: auto;
  display: block;
  margin-top: 3em;
}

.js .plugin-container .Wallop-item--current figcaption.credit,
.js .plugin-container .Wallop-item--current .caption.credit {
  display: block;
  position: relative;
  padding: 0 0 0 30px !important;
}

.js .plugin-container .Wallop-item--current figcaption.credit:before,
.js .plugin-container .Wallop-item--current .caption.credit:before {
  content: "";
  display: block;
  width: 20px;
  height: 20px;
  position: absolute;
  left: 0;
  top: 3px;
  background: url(../images/icon-camera.svg) no-repeat left top;
  background-size: contain;
}

.js .Wallop-buttonPrevious,
.js .Wallop-buttonNext {
  border: none;
  background: none;
  box-shadow: none;
}

.js .Wallop-buttonPrevious:hover, .js .Wallop-buttonPrevious:focus, .js .Wallop-buttonPrevious:active,
.js .Wallop-buttonNext:hover,
.js .Wallop-buttonNext:focus,
.js .Wallop-buttonNext:active {
  box-shadow: none;
  border: none;
}

.js .Wallop-buttonPrevious svg,
.js .Wallop-buttonNext svg {
  height: 1em;
  width: 1em;
}

.js .Wallop-buttonPrevious svg path,
.js .Wallop-buttonNext svg path {
  -webkit-transition: fill 0.3s ease-in-out;
  -ms-transition: fill 0.3s ease-in-out;
  transition: fill 0.3s ease-in-out;
  fill: white;
  opacity: 0.85;
}

.js .Wallop-buttonPrevious:hover svg path,
.js .Wallop-buttonNext:hover svg path {
  fill: #f3ad00;
}

.js .full-screen {
  padding: 0.75em 1.5em;
  text-align: center;
  display: inline-block;
  color: #999999;
  border: 0;
  -webkit-transition: color 0.3s ease-in-out;
  -ms-transition: color 0.3s ease-in-out;
  transition: color 0.3s ease-in-out;
  background: none;
  padding: 0.3em 0.45em 0.5em 0.45em;
  text-transform: uppercase;
  font-weight: 700;
  position: absolute;
  top: 37.5em;
  left: 5%;
  display: none;
  line-height: 0;
  z-index: 1;
}

.js .full-screen * {
  vertical-align: middle;
}

@media (min-width: 68.75em) {
  .js .full-screen {
    display: inline-block;
  }
}

.js .full-screen .full-screen-icon {
  -webkit-transition: fill 0.3s ease-in-out;
  -ms-transition: fill 0.3s ease-in-out;
  transition: fill 0.3s ease-in-out;
  fill: white;
  width: 1.25em;
  height: 1.25em;
  display: inline-block;
  margin-right: 0.5em;
  margin-bottom: -0.05em;
}

.js .full-screen:hover {
  color: #f3ad00;
}

.js .full-screen:hover .full-screen-icon {
  fill: #f3ad00;
}

.js .slides-pagination {
  margin: 0;
  position: absolute;
  top: 27.75em;
  right: 5%;
  font-weight: 700;
  z-index: 1;
}

@media (min-width: 68.75em) {
  .js .slides-pagination {
    top: 37.75em;
  }
}

.js .slides-pagination .count {
  color: #999999;
  float: left;
  margin: -0.05em 1em 0 0;
}

.js .slides-pagination button {
  display: inline-block;
}

.js .slides-pagination button:first-of-type {
  margin-right: 0.75em;
}

.js .plugin-container .video-gallery {
  max-width: 44em;
  margin: 0 auto;
}

.js .plugin-container .video-gallery .slides-pagination,
.js .plugin-container .video-gallery .full-screen {
  top: 0.5em;
}

@media (min-width: 68.75em) {
  .js .plugin-container .video-gallery .slides-pagination,
  .js .plugin-container .video-gallery .full-screen {
    top: 23.75em;
  }
}

@media (min-width: 81.25em) {
  .js .plugin-container .video-gallery .slides-pagination,
  .js .plugin-container .video-gallery .full-screen {
    top: 25.75em;
  }
}

@media (min-width: 68.75em) {
  .js .plugin-container .video-gallery .full-screen {
    left: calc(5% - 0.45em);
  }
}

.js .plugin-container .video-gallery .caption {
  padding: 0;
  margin: 0 auto;
  margin-bottom: 1.5em;
}

@media (min-width: 68.75em) {
  .js .plugin-container .video-gallery .caption {
    margin-top: 3.75em;
  }
}

.js .plugin-container .video-gallery .cove-container {
  margin-top: 2.25em;
}

@media (min-width: 68.75em) {
  .js .plugin-container .video-gallery .cove-container {
    margin-top: 0;
  }
}

.js .plugin-container .video-gallery.viewing-full {
  max-width: 100%;
}

.js .plugin-container .video-gallery.viewing-full .slides-pagination {
  right: calc(50% - 23em);
  top: 28em;
}

.js .plugin-container .video-gallery.viewing-full .full-screen {
  left: calc(50% - 23em);
  top: 28em;
}

.js .plugin-container .video-gallery.viewing-full .Wallop-item--current.Wallop-item {
  height: 100vh;
}

.js .plugin-container .video-gallery.viewing-full .cove-wrapper {
  width: 40em;
  margin: 1.5em auto 0 auto;
}

.js .plugin-container .video-gallery.viewing-full .cove-container {
  margin: 0;
}

.js .plugin-container .video-gallery.viewing-full .caption {
  max-width: 100%;
}

/**
 * wallop--slide.css
 *
 * @fileoverview Slide animation for wallop
 *
 * @author Pedro Duarte
 * @author http://pedroduarte.me/wallop
 */
/* the 10ms animation-delay fixed some weird rendering issues with iPhone */
.Wallop--slide .Wallop-item--showPrevious {
  -webkit-animation: slideFromLeft 350ms 10ms linear both;
  -moz-animation: slideFromLeft 350ms 10ms linear both;
  -ms-animation: slideFromLeft 350ms 10ms linear both;
  animation: slideFromLeft 350ms 10ms linear both;
}

.Wallop--slide .Wallop-item--showNext {
  -webkit-animation: slideFromRight 350ms 10ms linear both;
  -moz-animation: slideFromRight 350ms 10ms linear both;
  -ms-animation: slideFromRight 350ms 10ms linear both;
  animation: slideFromRight 350ms 10ms linear both;
}

.Wallop--slide .Wallop-item--hidePrevious,
.Wallop--slide .Wallop-item--hideNext {
  visibility: visible;
}

.Wallop--slide .Wallop-item--hidePrevious {
  -webkit-animation: slideToLeft 350ms 10ms linear both;
  -moz-animation: slideToLeft 350ms 10ms linear both;
  -ms-animation: slideToLeft 350ms 10ms linear both;
  animation: slideToLeft 350ms 10ms linear both;
}

.Wallop--slide .Wallop-item--hideNext {
  -webkit-animation: slideToRight 350ms 10ms linear both;
  -moz-animation: slideToRight 350ms 10ms linear both;
  -ms-animation: slideToRight 350ms 10ms linear both;
  animation: slideToRight 350ms 10ms linear both;
}

@-webkit-keyframes slideFromLeft {
  0% {
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@-moz-keyframes slideFromLeft {
  0% {
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@-ms-keyframes slideFromLeft {
  0% {
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@keyframes slideFromLeft {
  0% {
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@-webkit-keyframes slideFromRight {
  0% {
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@-moz-keyframes slideFromRight {
  0% {
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@-ms-keyframes slideFromRight {
  0% {
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@keyframes slideFromRight {
  0% {
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@-webkit-keyframes slideToLeft {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@-moz-keyframes slideToLeft {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@-ms-keyframes slideToLeft {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@keyframes slideToLeft {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@-webkit-keyframes slideToRight {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@-moz-keyframes slideToRight {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@-ms-keyframes slideToRight {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@keyframes slideToRight {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

.accordion-toggle {
  display: none;
}

.js .accordion-toggle {
  border: none;
  background: none;
  display: block;
  width: 100%;
  text-align: left;
  text-transform: uppercase;
  color: #bb0b0e;
  font-size: 1.25em;
  font-weight: 700;
  position: relative;
  margin-bottom: 1.5em;
  padding-bottom: 0.5em;
  border-bottom: 0.125em solid #999999;
}

.js .accordion-toggle * {
  vertical-align: middle;
}

.js .accordion-toggle:hover {
  border-bottom: 0.125em solid #999999;
}

.js .accordion-toggle svg {
  display: inline-block;
  margin-top: -.15em;
  height: .75em;
  width: .75em;
  fill: #bb0b0e;
}

.js .accordion-toggle .vertical {
  -webkit-transition: transform 0.25s ease-in-out;
  -ms-transition: transform 0.25s ease-in-out;
  transition: transform 0.25s ease-in-out;
  -ms-transform-origin: center;
  transform-origin: center;
}

.js .accordion-toggle.open .vertical {
  -ms-transform: scaleY(0);
  transform: scaleY(0);
}

.js .accordion-content {
  display: none;
}

.js .accordion-content.open {
  display: block;
}

.filters {
  background: #d0dbed;
  padding: 1.5em;
  margin-bottom: 1.5em;
  position: relative;
  /* CAUTION: IE hackery ahead */
}

.filters:after {
  display: table;
  clear: both;
  content: '';
}

.filters:before {
  display: table;
  clear: both;
  content: '';
}

.filters fieldset {
  padding: 0;
  margin: 0;
  margin-bottom: 1.5em;
  border: none;
}

.filters fieldset input[type='radio'] {
  position: absolute;
  left: -9999px;
}

.filters fieldset input[type='radio']:checked + label {
  background-color: #4872b4;
  color: white;
  border: 0.125em solid #4872b4;
}

.filters fieldset input[type='radio']:focus + label {
  border: 0.125em solid #f3ad00;
}

.filters fieldset label {
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
  background: white;
  padding: .2em 1.5em;
  font-weight: 700;
  color: #4872b4;
  display: inline-block;
  border: .125em solid white;
}

.filters fieldset label:first-of-type {
  border-radius: 1.25em 0 0 1.25em;
  padding-right: 1.15em;
}

.filters fieldset label:last-of-type {
  border-radius: 0 1.25em 1.25em 0;
  padding-left: 1.15em;
}

@media (min-width: 81.25em) {
  .filters fieldset label {
    width: 12.8125em;
    text-align: center;
  }
}

@media (min-width: 68.75em) {
  .filters fieldset {
    display: inline-block;
    margin-bottom: 0;
    margin-right: 0.75em;
  }
}

@media only screen and (max-width: 23.75em) {
  .filters fieldset {
    font-size: 3.85vw;
  }
}

.filters .label {
  display: inline-block;
  margin-bottom: 0.75em;
  font-weight: 700;
  color: #434343;
}

@media (min-width: 68.75em) {
  .filters .label {
    margin-bottom: 0;
    margin-right: 0.375em;
  }
}

@media (min-width: 81.25em) {
  .filters .label {
    margin-right: 0.75em;
  }
}

.filters .styled-select {
  background: white;
  position: relative;
  display: inline-block;
  width: 100%;
  margin-bottom: 0.75em;
  border: .125em solid white;
}

.filters .styled-select.focused {
  border: 0.125em solid #f3ad00;
}

.filters .styled-select.focused:after {
  border-color: #f3ad00 #f3ad00 #f3ad00 #4872b4;
}

.filters .styled-select:after {
  position: absolute;
  top: -.125em;
  right: -.125em;
  content: '';
  background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNDAgNDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDQwIDQwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4uc3Qwe2ZpbGw6IzQ4NzJCNDt9LnN0MXtmaWxsOiNGRkZGRkY7fTwvc3R5bGU+PHJlY3QgY2xhc3M9InN0MCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTEyLjMsMTdsNy43LDcuN2w3LjctNy43bC0xLjctMS44bC01LjksNmwtNS45LTZMMTIuMywxN3oiLz48L3N2Zz4=);
  background-repeat: no-repeat;
  background-position: center;
  background-color: #4872b4;
  height: calc(100% + .25em);
  width: 2.49em;
  pointer-events: none;
  border: 0.125em solid #4872b4;
  border-left: none;
}

.filters .styled-select:before {
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
  right: 0;
  content: '';
  display: inline-block;
  background-color: white;
  height: 100%;
  width: 5.25em \9;
}

@media (min-width: 68.75em) {
  .filters .styled-select {
    width: inherit;
    margin: 0;
    margin-right: 0.75em;
  }
}

@media (min-width: 81.25em) {
  .filters .styled-select {
    margin-right: 1.5em;
  }
}

.filters select {
  padding: .2em .75em .19em .75em;
  display: inline-block;
  width: 100%;
  font-weight: 700;
  color: #4872b4;
  border: none;
  box-shadow: none;
  border-radius: 0;
  background: transparent;
  background: none;
  padding-right: 4em;
  background-image: none;
  -webkit-appearance: none;
}

.filters select::-ms-expand {
  display: none;
  /* remove default arrow on ie10 and ie11 */
}

.filters .sorting {
  display: inline-block;
  width: 100%;
}

.filters .sorting .styled-select {
  margin-right: 0;
}

@media (min-width: 68.75em) {
  .filters .sorting {
    width: inherit;
    float: right;
  }
}

.filters .submit {
  clear: both;
  margin-top: 1.5em;
}

.filters .submit input[type='submit'] {
  padding: .25em .5em;
}

@media (min-width: 68.75em) {
  .filters form * {
    vertical-align: middle;
  }
}

@media (min-width: 81.25em) {
  .filters {
    font-size: 1.0625em;
  }
}

@media (min-width: 95.625em) {
  .filters {
    font-size: 1.125em;
  }
}

.filter-target.loading {
  -webkit-animation-duration: 0.35s;
  animation-duration: 0.35s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-name: fadeIn;
  animation-name: fadeIn;
  position: relative;
  opacity: 0;
}

.filter-target.loading:before {
  content: 'Loading...';
  display: inline-block;
  position: absolute;
  width: 100%;
  height: 100%;
  text-align: center;
  top: 0;
  left: 0;
  background-color: white;
  color: #434343;
  font-weight: 700;
  text-align: center;
  font-size: 1.25em;
  padding: 1.5em;
  z-index: 9;
  opacity: 1;
}

.filter-target.loaded ul {
  -webkit-animation-duration: 0.5s;
  animation-duration: 0.5s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-name: slideInUp;
  animation-name: slideInUp;
}

.js .filters select:focus {
  outline: none;
}

.js .filters .submit {
  display: none;
}

.related-films {
  margin: 3em 0;
}

.related-films img {
  width: 100%;
}

.related-films ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.related-films ul:after {
  display: table;
  clear: both;
  content: '';
}

.related-films ul:before {
  display: table;
  clear: both;
  content: '';
}

.related-films ul li {
  list-style: none;
}

.related-films ul dd {
  margin: 0;
}

.related-films ul li {
  width: 44.44444%;
  float: left;
  margin-bottom: 11.11111%;
}

.related-films ul li:nth-child(2n + 1) {
  margin-left: 0;
  margin-right: -100%;
  clear: both;
  margin-left: 0;
}

.related-films ul li:nth-child(2n + 2) {
  margin-left: 55.55556%;
  margin-right: -100%;
  clear: none;
}

@media (min-width: 40.625em) {
  .related-films ul li {
    width: 29.73684%;
    float: left;
    margin-bottom: 3em;
  }
  .related-films ul li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .related-films ul li:nth-child(3n + 2) {
    margin-left: 35%;
    margin-right: -100%;
    clear: none;
  }
  .related-films ul li:nth-child(3n + 3) {
    margin-left: 70%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 68.75em) {
  .related-films ul li {
    width: 31.61538%;
    float: left;
    margin-bottom: 2.5641%;
  }
  .related-films ul li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .related-films ul li:nth-child(3n + 2) {
    margin-left: 34.17949%;
    margin-right: -100%;
    clear: none;
  }
  .related-films ul li:nth-child(3n + 3) {
    margin-left: 68.35897%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 81.25em) {
  .related-films ul li {
    width: 18.64407%;
    float: left;
  }
  .related-films ul li:nth-child(5n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .related-films ul li:nth-child(5n + 2) {
    margin-left: 20.33898%;
    margin-right: -100%;
    clear: none;
  }
  .related-films ul li:nth-child(5n + 3) {
    margin-left: 40.67797%;
    margin-right: -100%;
    clear: none;
  }
  .related-films ul li:nth-child(5n + 4) {
    margin-left: 61.01695%;
    margin-right: -100%;
    clear: none;
  }
  .related-films ul li:nth-child(5n + 5) {
    margin-left: 81.35593%;
    margin-right: -100%;
    clear: none;
  }
}

.email-signup-form input, .email-signup-form button {
  font-family: 'Roboto Slab', serif;
  padding: 0.75em 1.5em;
}

.email-signup-form .email-field {
  display: block;
  margin-bottom: 0.75em;
  width: 100%;
  border: 1px solid #777777;
}

.email-signup-form .email-field::placeholder {
  text-transform: uppercase;
}

.email-signup-form .zip-code-field {
  display: block;
  margin-bottom: 0.75em;
  width: 100%;
  border: 1px solid #777777;
  text-transform: uppercase;
}

.email-signup-form .note {
  display: block;
  width: 100%;
  text-align: left;
  margin-bottom: 0.75em;
  font-size: .85em;
  margin-top: 0.75em;
}

.email-signup-form button[type='submit'] {
  border: none;
  background: none;
  box-shadow: none;
  padding: 0.75em 1.5em;
  text-align: center;
  display: inline-block;
  color: white;
  background-color: #243757;
  border: 0;
  padding-right: 3em;
  position: relative;
  -webkit-transition: background 0.3s ease-in-out;
  -ms-transition: background 0.3s ease-in-out;
  transition: background 0.3s ease-in-out;
  text-transform: uppercase;
  width: 9em;
  z-index: 2;
}

.email-signup-form button[type='submit']:hover, .email-signup-form button[type='submit']:focus, .email-signup-form button[type='submit']:active {
  box-shadow: none;
  border: none;
}

.email-signup-form button[type='submit'] * {
  vertical-align: middle;
}

.email-signup-form button[type='submit'] svg {
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
  fill: white;
  right: 1em;
  display: inline-block;
  width: 1em;
  height: 1em;
}

.email-signup-form button[type='submit']:hover {
  background: #1d2c45;
}

.email-signup-form button[type='submit']:before {
  content: '';
  display: inline-block;
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  z-index: -1;
  box-shadow: 0px 0px 0 #243757,1px 1px 0 #243757,2px 2px 0 #243757,3px 3px 0 #243757,4px 4px 0 #243757,5px 5px 0 #243757,6px 6px 0 #243757,7px 7px 0 #243757,8px 8px 0 #243757,9px 9px 0 #243757,10px 10px 0 #243757,11px 11px 0 #243757,12px 12px 0 #243757,13px 13px 0 #243757,14px 14px 0 #243757,15px 15px 0 #243757,16px 16px 0 #243757,17px 17px 0 #243757,18px 18px 0 #243757,19px 19px 0 #243757,20px 20px 0 #243757,21px 21px 0 #243757,22px 22px 0 #243757,23px 23px 0 #243757,24px 24px 0 #243757,25px 25px 0 #243757,26px 26px 0 #243757,27px 27px 0 #243757,28px 28px 0 #243757,29px 29px 0 #243757,30px 30px 0 #243757,31px 31px 0 #243757,32px 32px 0 #243757,33px 33px 0 #243757,34px 34px 0 #243757,35px 35px 0 #243757,36px 36px 0 #243757,37px 37px 0 #243757,38px 38px 0 #243757,39px 39px 0 #243757,40px 40px 0 #243757,41px 41px 0 #243757,42px 42px 0 #243757,43px 43px 0 #243757,44px 44px 0 #243757,45px 45px 0 #243757,46px 46px 0 #243757,47px 47px 0 #243757,48px 48px 0 #243757,49px 49px 0 #243757,50px 50px 0 #243757,51px 51px 0 #243757,52px 52px 0 #243757,53px 53px 0 #243757,54px 54px 0 #243757,55px 55px 0 #243757,56px 56px 0 #243757,57px 57px 0 #243757,58px 58px 0 #243757,59px 59px 0 #243757,60px 60px 0 #243757,61px 61px 0 #243757,62px 62px 0 #243757,63px 63px 0 #243757,64px 64px 0 #243757,65px 65px 0 #243757,66px 66px 0 #243757,67px 67px 0 #243757,68px 68px 0 #243757,69px 69px 0 #243757,70px 70px 0 #243757,71px 71px 0 #243757,72px 72px 0 #243757,73px 73px 0 #243757,74px 74px 0 #243757,75px 75px 0 #243757,76px 76px 0 #243757,77px 77px 0 #243757,78px 78px 0 #243757,79px 79px 0 #243757,80px 80px 0 #243757,81px 81px 0 #243757,82px 82px 0 #243757,83px 83px 0 #243757,84px 84px 0 #243757,85px 85px 0 #243757,86px 86px 0 #243757,87px 87px 0 #243757,88px 88px 0 #243757,89px 89px 0 #243757,90px 90px 0 #243757,91px 91px 0 #243757,92px 92px 0 #243757,93px 93px 0 #243757,94px 94px 0 #243757,95px 95px 0 #243757,96px 96px 0 #243757,97px 97px 0 #243757,98px 98px 0 #243757,99px 99px 0 #243757,100px 100px 0 #243757,101px 101px 0 #243757,102px 102px 0 #243757,103px 103px 0 #243757,104px 104px 0 #243757,105px 105px 0 #243757,106px 106px 0 #243757,107px 107px 0 #243757,108px 108px 0 #243757,109px 109px 0 #243757,110px 110px 0 #243757,111px 111px 0 #243757,112px 112px 0 #243757,113px 113px 0 #243757,114px 114px 0 #243757,115px 115px 0 #243757,116px 116px 0 #243757,117px 117px 0 #243757,118px 118px 0 #243757,119px 119px 0 #243757,120px 120px 0 #243757,121px 121px 0 #243757,122px 122px 0 #243757,123px 123px 0 #243757,124px 124px 0 #243757,125px 125px 0 #243757,126px 126px 0 #243757,127px 127px 0 #243757,128px 128px 0 #243757,129px 129px 0 #243757,130px 130px 0 #243757,131px 131px 0 #243757,132px 132px 0 #243757,133px 133px 0 #243757,134px 134px 0 #243757,135px 135px 0 #243757,136px 136px 0 #243757,137px 137px 0 #243757,138px 138px 0 #243757,139px 139px 0 #243757,140px 140px 0 #243757,141px 141px 0 #243757,142px 142px 0 #243757,143px 143px 0 #243757,144px 144px 0 #243757,145px 145px 0 #243757,146px 146px 0 #243757,147px 147px 0 #243757,148px 148px 0 #243757,149px 149px 0 #243757,150px 150px 0 #243757,151px 151px 0 #243757,152px 152px 0 #243757,153px 153px 0 #243757,154px 154px 0 #243757,155px 155px 0 #243757,156px 156px 0 #243757,157px 157px 0 #243757,158px 158px 0 #243757,159px 159px 0 #243757,160px 160px 0 #243757,161px 161px 0 #243757,162px 162px 0 #243757,163px 163px 0 #243757,164px 164px 0 #243757,165px 165px 0 #243757,166px 166px 0 #243757,167px 167px 0 #243757,168px 168px 0 #243757,169px 169px 0 #243757,170px 170px 0 #243757,171px 171px 0 #243757,172px 172px 0 #243757,173px 173px 0 #243757,174px 174px 0 #243757,175px 175px 0 #243757,176px 176px 0 #243757,177px 177px 0 #243757,178px 178px 0 #243757,179px 179px 0 #243757,180px 180px 0 #243757,181px 181px 0 #243757,182px 182px 0 #243757,183px 183px 0 #243757,184px 184px 0 #243757,185px 185px 0 #243757,186px 186px 0 #243757,187px 187px 0 #243757,188px 188px 0 #243757,189px 189px 0 #243757,190px 190px 0 #243757,191px 191px 0 #243757,192px 192px 0 #243757,193px 193px 0 #243757,194px 194px 0 #243757,195px 195px 0 #243757,196px 196px 0 #243757,197px 197px 0 #243757,198px 198px 0 #243757,200px 200px 0 rgba(0, 0, 0, 0);
  opacity: .35;
}

.homepage-hero-item {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}

.homepage-hero-item:empty {
  display: none;
}

.homepage-hero-item img {
  display: block;
  width: 100%;
}

.homepage-hero-item img.blackAndWhite {
  -webkit-filter: grayscale(1);
  filter: grayscale(1);
}

.homepage-hero-item .title {
  padding: 0.75em 1.5em;
  background: #ac0b0e;
  color: white;
  float: none !important;
  margin-bottom: 0 !important;
}

.homepage-hero-item .title .zeta {
  color: white;
  display: block;
  margin-bottom: 1.5em;
}

.homepage-hero-item .title.right {
  margin-left: 0 !important;
}

.homepage-hero-item .title.left {
  margin-right: 0 !important;
}

.homepage-hero-item .title .alpha {
  text-transform: uppercase;
  font-family: 'Josefin Sans', sans-serif;
  color: white;
  font-size: 2em;
  margin-bottom: 0;
  line-height: 1.2;
}

.homepage-hero-item .title .alpha:before {
  display: none;
}

.homepage-hero-item .watch {
  text-decoration: none;
  background: transparent;
  padding: 0.75em 1.5em;
  text-align: center;
  display: inline-block;
  color: white;
  border-color: white;
  border-width: 0.0625em;
  border-style: solid;
  -webkit-transition: background 0.3s ease-in-out;
  -ms-transition: background 0.3s ease-in-out;
  transition: background 0.3s ease-in-out;
  padding-right: 3em;
  position: relative;
}

.homepage-hero-item .watch:hover {
  text-decoration: none;
}

.homepage-hero-item .watch:active {
  text-decoration: none;
}

.homepage-hero-item .watch:visited {
  text-decoration: none;
}

.homepage-hero-item .watch:focus {
  text-decoration: none;
}

.homepage-hero-item .watch * {
  vertical-align: middle;
}

.homepage-hero-item .watch svg {
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
  fill: white;
  right: 1em;
  display: inline-block;
  width: 1em;
  height: 1em;
}

.homepage-hero-item .watch.zeta {
  display: inline-block;
  font-size: 1em;
}

.homepage-hero-item .watch:hover {
  background: rgba(255, 255, 255, 0.5);
}

@media (min-width: 68.75em) {
  .homepage-hero-item {
    position: relative;
  }
  .homepage-hero-item .title {
    width: 48.71795%;
    float: left;
    margin-right: 2.5641%;
    position: absolute;
    left: 0;
    bottom: 15%;
    padding: 1.5em 3em;
    background: none;
  }
  .homepage-hero-item .title.left {
    left: 0;
    margin-right: 0;
  }
  .homepage-hero-item .title.right {
    right: 0;
    margin-right: 0;
    left: inherit;
  }
  .homepage-hero-item .title .alpha {
    font-size: 3em;
  }
  .homepage-hero-item .title * {
    position: relative;
    z-index: 3;
  }
  .homepage-hero-item .title:after {
    content: '';
    position: absolute;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    z-index: 1;
  }
  @supports (mix-blend-mode: multiply) {
    .homepage-hero-item .title:after {
      background: rgba(255, 255, 255, 0.2);
    }
  }
  .homepage-hero-item .title:before {
    background: rgba(0, 0, 0, 0.6);
    content: '';
    position: absolute;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    z-index: 2;
  }
  @supports (mix-blend-mode: multiply) {
    .homepage-hero-item .title:before {
      background: #d90002;
      mix-blend-mode: multiply;
    }
  }
}

@media (min-width: 81.25em) {
  .homepage-hero-item .title {
    width: 40.67797%;
    float: left;
    margin-right: 1.69492%;
  }
}

.pagination {
  margin: 3em 0;
  text-align: center;
}

.pagination .load-more {
  display: none;
}

@media (min-width: 81.25em) {
  .pagination {
    margin: 4.5em 0;
  }
  .pagination .title {
    width: 40.67797%;
    float: left;
    margin-right: 1.69492%;
  }
}

.js .pagination .load-more {
  display: inline-block;
  padding: 0.75em 1.5em;
  text-align: center;
  display: inline-block;
  color: white;
  background-color: #bb0b0e;
  border: 0;
  -webkit-transition: background 0.35s ease-in-out;
  -ms-transition: background 0.35s ease-in-out;
  transition: background 0.35s ease-in-out;
}

.js .pagination .load-more * {
  vertical-align: middle;
}

.js .pagination .load-more:hover {
  background: #8c0007;
}

.js .pagination .page-numbers {
  display: none;
}

.no-results {
  font-weight: 700;
  text-align: center;
  font-weight: 1.25em;
  padding: 1.5em;
  color: #434343;
}

.no-results.error {
  color: #bb0b0e;
}

.no-results.error b {
  display: block;
}

.appended-item {
  -webkit-animation-duration: 0.5s;
  animation-duration: 0.5s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-name: slideInUp;
  animation-name: slideInUp;
}

.modular-signup {
  position: relative;
  padding: 30px 0;
}

.modular-signup .form-row {
  display: flex;
  flex-flow: row;
  justify-content: space-between;
  margin: 20px 0;
}

@media (max-width: 600px) {
  .modular-signup .form-row {
    display: block;
  }
}

.modular-signup .form-row.noflex {
  flex: none;
  display: block;
}

.modular-signup .form-row.noflex input {
  height: 30px;
}

.modular-signup .pot {
  display: none;
}

.modular-signup input {
  height: 60px;
  padding: 15px;
  box-sizing: border-box;
  font-size: 16px;
  line-height: 20px;
  font-family: "Muli", "Trebuchet MS";
  text-transform: uppercase;
  color: #777777;
  background-color: #e9e9e9;
  border: none;
  font-weight: 400;
}

.modular-signup input:first-child {
  margin-right: 20px;
}

@media (max-width: 600px) {
  .modular-signup input:first-child {
    margin-bottom: 20px;
  }
}

.modular-signup input.half {
  width: 50%;
}

@media (max-width: 600px) {
  .modular-signup input.half {
    width: 100%;
  }
}

.modular-signup input.short {
  width: 35%;
}

@media (max-width: 600px) {
  .modular-signup input.short {
    width: 100%;
  }
}

.modular-signup input.newsletter-checkbox {
  padding: 0;
  line-height: 1;
  margin-bottom: 0;
}

@media (max-width: 500px) {
  .modular-signup input.newsletter-checkbox {
    float: left;
  }
}

.modular-signup .submit {
  display: block;
  height: 60px;
  background-color: #bb0b0e;
  font-family: "Roboto Slab", serif;
  font-weight: 700;
  border: 0;
  opacity: 1;
  outline: none;
  color: #e9e9e9;
  letter-spacing: 1px;
  text-transform: uppercase;
  padding: 15px;
  box-sizing: border-box;
  font-size: 16px;
  line-height: 20px;
  position: relative;
  padding-right: 40px;
  transition: background-color 0.3s ease-in-out;
}

.modular-signup .submit:hover {
  background-color: #8c0007;
}

.modular-signup .submit svg {
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
  fill: white;
  right: 1em;
  display: inline-block;
  width: 1em;
  height: 1em;
}

.modular-signup label {
  line-height: 30px;
  vertical-align: top;
  display: inline;
  font-family: "Muli", "Trebuchet MS";
  border: none;
  font-weight: 400;
}

.inline-email-signup {
  text-align: center;
  overflow: hidden;
  background: url("../images/bg-triangle-newsletter.png");
  margin: 55px 0;
  width: 100%;
  position: relative;
  padding: 30px;
}

@media (max-width: 600px) {
  .inline-email-signup {
    margin: 25px 0;
  }
}

.inline-email-signup .note {
  -webkit-box-ordinal-group: 2;
  -ms-flex-order: 1;
  order: 1;
  text-align: left;
  display: block;
  margin-bottom: 10px;
  color: #fff;
  font-size: 14px;
}

.inline-email-signup .headline {
  width: 100%;
  padding: 0 10%;
}

.inline-email-signup h3 {
  text-align: left;
  margin-bottom: 10px;
  font-weight: normal;
  color: #fff !important;
}

.inline-email-signup .email-signup-form {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
  width: 100%;
  padding-right: 10%;
  color: #ffffff;
}

.inline-email-signup .email-signup-form .email-field {
  float: left;
  display: inline-block;
  margin-bottom: 0;
  margin-right: 1%;
  margin-left: 0;
  width: 45%;
}

@media (max-width: 650px) {
  .inline-email-signup .email-signup-form .email-field {
    width: 100%;
    float: none;
    display: block;
    margin-right: 0;
    margin-bottom: 10px;
  }
}

.inline-email-signup .email-signup-form .zip-code-field {
  float: left;
  display: inline-block;
  margin-bottom: 0;
  width: 30%;
}

@media (max-width: 650px) {
  .inline-email-signup .email-signup-form .zip-code-field {
    width: 100%;
    float: none;
    display: block;
    margin-bottom: 10px;
  }
}

.inline-email-signup .email-signup-form button[type="submit"] {
  width: 24%;
  display: inline-block;
}

@media (max-width: 650px) {
  .inline-email-signup .email-signup-form button[type="submit"] {
    width: 100%;
    float: none;
    display: block;
    margin-bottom: 10px;
  }
}

.inline-email-signup .email-signup-form .note {
  width: 75%;
}

.film-listings ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.film-listings ul li {
  list-style: none;
}

.film-listings ul dd {
  margin: 0;
}

.film-listings ul li {
  margin-bottom: 3em;
}

.film-listings ul li:after {
  display: table;
  clear: both;
  content: '';
}

.film-listings ul li:before {
  display: table;
  clear: both;
  content: '';
}

@media (min-width: 81.25em) {
  .film-listings ul li {
    margin-bottom: 1.5em;
  }
}

@media (min-width: 40.625em) {
  .film-listings .image {
    width: 34.21053%;
    float: left;
    margin-right: 5.26316%;
  }
}

@media (min-width: 68.75em) {
  .film-listings .image {
    width: 48.71795%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .film-listings .image {
    width: 49.15254%;
    float: left;
    margin-right: 1.69492%;
  }
}

.film-listings .description h3 {
  margin-bottom: 0;
}

.film-listings .description .zeta {
  display: block;
  margin-top: 0.375em;
  margin-bottom: 0.75em;
}

.film-listings .description p {
  margin-bottom: 0.75em;
}

.film-listings .description .parts {
  color: #777777;
  font-weight: 700;
}

.film-listings .description .parts a:not(:last-of-type):after {
  content: '|';
  color: #999999;
  font-weight: 400;
  display: inline-block;
  margin-left: .4375em;
  margin-right: .3125em;
  line-height: 1;
}

@media (min-width: 40.625em) {
  .film-listings .description {
    width: 60.52632%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 68.75em) {
  .film-listings .description {
    width: 48.71795%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .film-listings .description {
    width: 49.15254%;
    float: right;
    margin-right: 0;
  }
  .film-listings .description p {
    margin-bottom: 1.5em;
  }
}

.film-detail-hero-item {
  margin: 0;
  margin-top: 3em;
}

.film-detail-hero-item img {
  display: block;
  width: 100%;
}

.film-detail-hero-item .mp4-wrapper {
  position: relative;
}

.film-detail-hero-item .mp4-wrapper .hero {
  width: 100%;
  padding-top: 56%;
  position: relative;
}

.film-detail-hero-item .mp4-wrapper .hero video {
  object-fit: cover;
  width: 100%;
  height: auto;
  position: absolute;
  top: 0;
  left: 0;
}

.film-detail-hero-item .mp4-wrapper .hero button.play-pause {
  width: 34px;
  height: 34px;
  background: transparent url(../images/button_video_play.png) no-repeat 0 0;
  background-size: 34px 68px;
  position: absolute;
  top: 10px;
  right: 10px;
  display: block;
  outline: none;
  border: none;
  opacity: 0.35;
}

.film-detail-hero-item .mp4-wrapper .hero button.play-pause.paused {
  background-position: 0 -34px;
}

.film-detail-hero-item .title {
  padding: 0.75em 1.5em 1em 1.5em;
  background: #ac0b0e;
  color: white;
  float: none !important;
  margin-bottom: 0 !important;
}

.film-detail-hero-item .title.right {
  margin-left: 0 !important;
}

.film-detail-hero-item .title.left {
  margin-right: 0 !important;
}

.film-detail-hero-item .title .alpha {
  text-transform: uppercase;
  font-family: "Josefin Sans", sans-serif;
  color: white;
  font-size: 2em;
  margin-bottom: 0;
  line-height: 1.2;
  display: block;
  padding-top: 0.25em;
}

.film-detail-hero-item .title .alpha:before {
  display: none;
}

.film-detail-hero-item .title .zeta {
  display: inline-block;
  color: white;
  margin-bottom: 0.5em;
}

.film-detail-hero-item .title .underline {
  display: inline-block;
  font-size: 4vw;
  font-weight: 700;
}

@media (min-width: 40.625em) {
  .film-detail-hero-item .title .underline {
    font-size: 1.5em;
  }
}

@media (min-width: 81.25em) {
  .film-detail-hero-item .title .zeta {
    margin-bottom: 1.5em;
  }
  .film-detail-hero-item .title .underline {
    margin-top: 0.5em;
  }
}

.film-detail-hero-item .overlay {
  font-size: 3vw;
}

@media (min-width: 40.625em) {
  .film-detail-hero-item .overlay {
    font-size: inherit;
  }
}

.film-detail-hero-item .watch-link {
  text-decoration: none;
  display: block;
  position: relative;
  font-size: 3vw;
}

.film-detail-hero-item .watch-link:hover {
  text-decoration: none;
}

.film-detail-hero-item .watch-link:active {
  text-decoration: none;
}

.film-detail-hero-item .watch-link:visited {
  text-decoration: none;
}

.film-detail-hero-item .watch-link:focus {
  text-decoration: none;
}

.film-detail-hero-item .watch-link .alpha {
  -webkit-transition: color 0.35s ease-in-out;
  -ms-transition: color 0.35s ease-in-out;
  transition: color 0.35s ease-in-out;
}

.film-detail-hero-item .watch-link .alpha:after {
  display: table;
  clear: both;
  content: '';
}

.film-detail-hero-item .watch-link .alpha:before {
  display: table;
  clear: both;
  content: '';
}

.film-detail-hero-item .watch-link .alpha:before {
  display: none;
}

.film-detail-hero-item .watch-link .alpha .title-copy {
  float: left;
  width: calc(100% - 2em);
  padding-top: 0.125em;
}

.film-detail-hero-item .watch-link .alpha .title-copy:after {
  -webkit-transition: all 0.3s ease-in-out;
  -ms-transition: all 0.3s ease-in-out;
  transition: all 0.3s ease-in-out;
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  background: white;
  height: 1px;
  width: 100%;
  visibility: hidden;
  -ms-transform: scaleX(0);
  transform: scaleX(0);
}

.film-detail-hero-item .watch-link .alpha .play-icon {
  max-height: 1.25em;
  max-width: 1.25em;
  display: inline-block;
  float: left;
  margin-right: 0.5em;
}

.film-detail-hero-item .watch-link .alpha .play-icon path {
  -webkit-transition: fill 0.35s ease-in-out;
  -ms-transition: fill 0.35s ease-in-out;
  transition: fill 0.35s ease-in-out;
  fill: white;
}

.film-detail-hero-item .watch-link:hover .title-copy {
  position: relative;
}

.film-detail-hero-item .watch-link:hover .title-copy:after {
  visibility: visible;
  -ms-transform: scaleX(1);
  transform: scaleX(1);
}

@media (min-width: 40.625em) {
  .film-detail-hero-item .watch-link {
    font-size: inherit;
  }
}

@media (min-width: 68.75em) {
  .film-detail-hero-item {
    position: relative;
  }
  .film-detail-hero-item .title {
    position: absolute;
    bottom: 15%;
    padding: 1.5em 1.875em;
    background: none;
  }
  .film-detail-hero-item .title.left {
    width: 55.12821%;
    float: left;
    margin-right: 2.5641%;
    left: 0;
    padding-right: 0.25em;
  }
  .film-detail-hero-item .title.right {
    width: 55.12821%;
    float: right;
    margin-right: 0;
    right: 0;
    padding-right: 0.25em;
  }
  .film-detail-hero-item .title .alpha {
    font-size: 3em;
  }
  .film-detail-hero-item .title * {
    position: relative;
    z-index: 3;
  }
  .film-detail-hero-item .title:after {
    content: "";
    position: absolute;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    z-index: 1;
  }
  @supports (mix-blend-mode: multiply) {
    .film-detail-hero-item .title:after {
      background: rgba(255, 255, 255, 0.2);
    }
  }
  .film-detail-hero-item .title:before {
    background: rgba(0, 0, 0, 0.6);
    content: "";
    position: absolute;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    z-index: 2;
  }
  @supports (mix-blend-mode: multiply) {
    .film-detail-hero-item .title:before {
      background: #d90002;
      mix-blend-mode: multiply;
    }
  }
}

@media (min-width: 81.25em) {
  .film-detail-hero-item .title.left {
    width: 47.0339%;
    float: left;
    margin-right: 1.69492%;
    left: 0;
  }
  .film-detail-hero-item .title.right {
    width: 47.0339%;
    float: right;
    margin-right: 0;
    right: 0;
  }
}

@media (min-width: 95.625em) {
  .film-detail-hero-item .title.left {
    width: 40.67797%;
    float: left;
    margin-right: 1.69492%;
  }
  .film-detail-hero-item .title.right {
    width: 40.67797%;
    float: right;
    margin-right: 0;
  }
}

.film-detail-hero-item .watch-link + .zeta {
  margin-top: 1.5em;
}

.film-detail-hero-item .title-copy + .zeta {
  margin-top: 1.5em;
}

.film-detail-hero-item .zeta + .watch-link .alpha {
  padding-top: 0;
}

.film-sub-nav {
  background: #174189;
  color: white;
  -webkit-transition: background 0.3s ease-in-out;
  -ms-transition: background 0.3s ease-in-out;
  transition: background 0.3s ease-in-out;
  margin-bottom: 1.5em;
}

.film-sub-nav:after {
  display: table;
  clear: both;
  content: '';
}

.film-sub-nav:before {
  display: table;
  clear: both;
  content: '';
}

.film-sub-nav a {
  text-decoration: none;
  display: inline-block;
  color: white;
  text-transform: uppercase;
  font-size: 1.125em;
}

.film-sub-nav a:hover {
  text-decoration: none;
}

.film-sub-nav a:active {
  text-decoration: none;
}

.film-sub-nav a:visited {
  text-decoration: none;
}

.film-sub-nav a:focus {
  text-decoration: none;
}

.film-sub-nav a:hover {
  color: white;
  text-decoration: none;
}

.film-sub-nav ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.film-sub-nav ul li {
  list-style: none;
}

.film-sub-nav ul dd {
  margin: 0;
}

@media (min-width: 68.75em) {
  .film-sub-nav {
    margin-bottom: 3em;
  }
}

.film-parts,
.tab-mobile-toggle {
  display: none;
}

.film-parts {
  position: relative;
}

@media (min-width: 81.25em) {
  .film-parts {
    width: 27.9661%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 95.625em) {
  .film-parts {
    width: 23.72881%;
    float: right;
    margin-right: 0;
  }
}

.info-tabs .tab-link {
  -webkit-transition: background 0.5s ease-in-out;
  -ms-transition: background 0.5s ease-in-out;
  transition: background 0.5s ease-in-out;
  padding: 0.5625em 1em;
  width: 100%;
}

.info-tabs .tab-link:hover {
  background: #103066;
}

.info-tabs .tab-link.active {
  background: #103066;
  cursor: default;
}

@media (min-width: 81.25em) {
  .info-tabs .tab-list {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
  }
  .info-tabs .tab-list li {
    display: inline-block;
  }
  .info-tabs .tab-list li a {
    padding: 1.3em 1.5em;
  }
}

@media (min-width: 81.25em) {
  .info-tabs {
    width: 70.33898%;
    float: left;
    margin-right: 1.69492%;
  }
}

@media (min-width: 95.625em) {
  .info-tabs {
    width: 74.57627%;
    float: left;
    margin-right: 1.69492%;
  }
}

.tab-panel .tab-panel-title {
  margin-bottom: 0.25em;
}

.tab-panel .part-content {
  margin-top: 3em;
}

.tab-panel .bio figure {
  text-align: center;
  margin: 0 auto;
  margin-bottom: 1.5em;
}

.tab-panel .bio figure span {
  height: 75vw;
  width: 75vw;
  display: inline-block;
  position: relative;
  overflow: hidden;
  border-radius: 50%;
}

.tab-panel .bio figure img {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  object-fit: cover;
  min-height: 100%;
  min-width: 100%;
}

@media (min-width: 40.625em) {
  .tab-panel .bio figure span {
    width: 10em;
    height: 10em;
  }
}

@media (min-width: 68.75em) {
  .tab-panel .bio {
    display: grid;
    grid-template-columns: 2.5fr 4fr;
  }
  .tab-panel .bio figure,
  .tab-panel .bio .bio-content {
    display: inline-block;
  }
  .tab-panel .bio figure {
    width: 30%;
    vertical-align: top;
  }
  .tab-panel .bio figure span {
    width: 12.5em;
    height: 12.5em;
  }
  .tab-panel .bio .bio-content {
    width: 65%;
  }
  @supports (display: grid) {
    .tab-panel .bio figure,
    .tab-panel .bio .bio-content {
      width: auto;
      vertical-align: inherit;
    }
    .tab-panel .bio figure {
      align-content: center;
    }
  }
}

@media (min-width: 81.25em) {
  .tab-panel .bio figure span {
    width: 15em;
    height: 15em;
  }
}

@media (min-width: 95.625em) {
  .tab-panel .bio figure span {
    width: 20em;
    height: 20em;
  }
}

.tab-panel .pdf-links strong {
  display: inline-block;
  margin-right: 0.5em;
}

.tab-panel .pdf-links .part-download {
  display: inline-block;
}

.tab-panel .pdf-links .part-download:not(:last-of-type):after {
  content: "|";
  color: #999999;
  font-weight: 400;
  display: inline-block;
  margin-left: 0.4375em;
  margin-right: 0.3125em;
  line-height: 1;
  vertical-align: text-top;
}

.tab-panel .single-download {
  display: inline-block;
}

@media (min-width: 40.625em) {
  .tab-panel {
    width: 73.68421%;
    float: left;
    margin-right: 5.26316%;
    float: none;
  }
}

@media (min-width: 68.75em) {
  .tab-panel {
    width: 74.35897%;
    float: left;
    margin-right: 2.5641%;
    float: none;
  }
}

@media (min-width: 81.25em) {
  .tab-panel {
    max-width: 65.25em;
  }
}

@media (min-width: 81.25em) {
  .related-feature-list .filters .label {
    margin-left: -4.1875em;
  }
}

.related-feature-list .filters form {
  text-align: center;
}

.related-feature-list .filters form fieldset label {
  width: 100%;
}

.related-feature-list .filters form fieldset label:first-of-type {
  border-radius: 0;
}

.related-feature-list .filters form fieldset label:last-of-type {
  border-radius: 0;
}

@media only screen and (min-width: 45.3125em) {
  .related-feature-list .filters form fieldset label {
    width: 7.5em;
  }
  .related-feature-list .filters form fieldset label:first-of-type {
    border-radius: 1.25em 0 0 1.25em;
    padding-right: 1.15em;
  }
  .related-feature-list .filters form fieldset label:last-of-type {
    border-radius: 0 1.25em 1.25em 0;
    padding-left: 1.15em;
  }
}

@media (min-width: 68.75em) {
  .related-feature-list .filters form fieldset label {
    width: 10em;
  }
}

@media only screen and (max-width: 23.75em) {
  .related-feature-list .filters form fieldset label {
    font-size: 4.85vw;
  }
}

.js .film-parts {
  display: block;
}

.js .part-selection {
  font-size: 1.125em;
  text-transform: uppercase;
  display: block;
  margin: 0.25em 0.3em;
}

.js .part-selection:after {
  display: table;
  clear: both;
  content: '';
}

.js .part-selection:before {
  display: table;
  clear: both;
  content: '';
}

.js .part-selection .instruction {
  display: none;
}

.js .part-selection button {
  height: 3.8175em;
  width: 100%;
  position: relative;
  z-index: 2;
  background: white;
  text-align: left;
  border: 0.0625em solid #999999;
  border-bottom: none;
  padding: 0.25em 1em;
  text-transform: uppercase;
  color: #434343;
  position: relative;
}

.js .part-selection button .part {
  width: calc(100% - 1em);
  font-weight: 700;
}

.js .part-selection button .part span {
  display: block;
  font-size: 0.777em;
  color: #4872b4;
}

.js .part-selection button svg {
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
  max-height: 1em;
  max-width: 1em;
  right: 1em;
  fill: #999999;
  transform-origin: 50% 22.5%;
}

.js .part-selection button.close-state svg {
  transform: rotate(180deg);
}

.js .film-parts-large {
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
  padding: 0.25em 0.35em;
  width: 100%;
  position: absolute;
  right: 0;
  top: 4.05em;
  position: absolute;
  z-index: 1;
  overflow: hidden;
  visibility: hidden;
  max-height: 0;
}

.js .film-parts-large.open {
  max-height: 20em;
  visibility: visible;
}

.js .film-parts-large a {
  -webkit-transition: background 0.5s ease-in-out;
  -ms-transition: background 0.5s ease-in-out;
  transition: background 0.5s ease-in-out;
  background: white;
  padding: 0.25em 1em;
  width: 100%;
  color: #434343;
  border: 0.0625em solid #999999;
}

.js .film-parts-large a span {
  display: block;
  font-size: 0.777em;
  color: #4872b4;
}

.js .film-parts-large a:hover {
  background: #e6e6e6;
}

.js .film-parts-large a:hover span {
  color: #4872b4;
}

.js .film-parts-large a.active {
  background: #e6e6e6;
  cursor: default;
}

.js .film-parts-large a.active span {
  color: #4872b4;
}

.js .film-parts-large li:not(:last-of-type) a {
  border-bottom: none;
}

@media (min-width: 68.75em) {
  .js .film-parts-large {
    top: 4.35em;
    padding: 0.25em 0.35em;
  }
}

.js .tab-mobile-toggle {
  background: transparent;
  padding: 0.75em 1.5em;
  text-align: center;
  display: inline-block;
  color: white;
  border-color: white;
  border-width: 0.0625em;
  border-style: solid;
  text-align: left;
  display: inline-block;
  position: relative;
  height: 3.8175em;
  width: calc(100% - 0.65em);
  margin: 0.3em;
  font-size: 1.125em;
  text-transform: uppercase;
}

.js .tab-mobile-toggle * {
  vertical-align: middle;
}

.js .tab-mobile-toggle.mutiple-episodes {
  margin: 0 0.3em 0.3em 0.3em;
}

.js .tab-mobile-toggle span {
  display: inline-block;
  margin-right: 1.5em;
  padding-bottom: 0.15em;
}

.js .tab-mobile-toggle:hover, .js .tab-mobile-toggle:focus, .js .tab-mobile-toggle:active {
  border: 0.0625em solid 0.0625em;
}

.js .tab-mobile-toggle svg {
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
  max-height: 1em;
  max-width: 1em;
  right: 1em;
  fill: white;
  transform-origin: 50% 22.5%;
}

.js .tab-mobile-toggle.close-state svg {
  transform: rotate(180deg);
}

@media (min-width: 81.25em) {
  .js .tab-mobile-toggle {
    display: none;
  }
}

.js .info-tabs .tab-list.menu {
  visibility: hidden;
  overflow: hidden;
  max-height: 0;
  width: 100%;
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
}

.js .info-tabs .tab-list.menu.open {
  visibility: visible;
  max-height: 20em;
}

@media (min-width: 81.25em) {
  .js .info-tabs .tab-list.menu {
    visibility: visible;
    max-height: inherit;
  }
}

.js .tab-panel {
  -webkit-animation-duration: 0.5s;
  animation-duration: 0.5s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  margin-top: 1.5em;
  display: none;
}

.js .tab-panel.default {
  display: block;
}

.js .tab-panel.open {
  display: block;
  -webkit-animation-name: fadeIn;
  animation-name: fadeIn;
}

@media (min-width: 81.25em) {
  .js .tab-panel {
    max-width: 65.25em;
  }
}

.film-shop-links {
  margin: 3.75em 0;
  clear: both;
}

.film-shop-links img {
  max-width: 6.25em;
}

.film-shop-links * {
  vertical-align: middle;
}

.film-shop-links a {
  display: inline-block;
}

.film-shop-links ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.film-shop-links ul li {
  list-style: none;
}

.film-shop-links ul dd {
  margin: 0;
}

.film-shop-links ul li {
  display: inline-block;
}

.film-shop-links ul li:not(:first-of-type) {
  margin-left: 1em;
}

.film-funders {
  margin-bottom: 3.75em;
  text-align: center;
}

.film-funders * {
  vertical-align: middle;
}

.film-funders a {
  display: inline-block;
}

.film-funders img {
  max-width: 10em;
}

.film-funders ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.film-funders ul li {
  list-style: none;
}

.film-funders ul dd {
  margin: 0;
}

.film-funders ul li {
  display: inline-block;
  margin-bottom: 1em;
}

.film-funders ul li:not(:first-of-type) {
  margin-left: 1em;
}

@media (min-width: 68.75em) {
  .film-funders {
    text-align: left;
  }
}

.film-title {
  margin-bottom: 0;
}

.film-title .passport-icon {
  max-width: 1.15em;
  max-height: 1.15em;
  padding-right: 0.25em;
}

.premiere-date {
  color: #4872b4;
}

.tagline {
  font-weight: 700;
  display: block;
  font-size: 1.25em;
  color: #999999;
  text-transform: uppercase;
}

.feature-listings:after {
  display: table;
  clear: both;
  content: '';
}

.feature-listings:before {
  display: table;
  clear: both;
  content: '';
}

.feature-list:after {
  display: table;
  clear: both;
  content: '';
}

.feature-list:before {
  display: table;
  clear: both;
  content: '';
}

.feature-list li {
  margin-bottom: 3em;
}

@media (min-width: 68.75em) {
  .feature-list li {
    width: 31.53846%;
    float: left;
    margin-right: 2.5641%;
  }
  .feature-list li:nth-child(3n) {
    float: right;
    margin-right: 0;
  }
  .feature-list li:nth-child(3n+1) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-child(5) {
    width: 65.64103%;
    float: left;
    margin-right: 2.5641%;
    float: right;
    margin-right: 0;
  }
  .feature-list li:nth-of-type(6) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(7) {
    clear: none;
  }
  .feature-list li:nth-of-type(8) {
    float: right;
    margin-right: 0;
    margin-right: 2.5641%;
    clear: none;
  }
  .feature-list li:nth-of-type(9) {
    width: 65.64103%;
    float: left;
    margin-right: 2.5641%;
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(10) {
    float: right;
    margin-right: 0;
    clear: none;
  }
  .feature-list li:nth-of-type(11) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(12) {
    float: left;
  }
  .feature-list li:nth-of-type(13) {
    float: right;
    margin-right: 0;
    clear: none;
  }
  .feature-list li:nth-of-type(14) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(15) {
    width: 65.64103%;
    float: left;
    margin-right: 2.5641%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .feature-list li {
    width: 32.20339%;
    float: left;
    margin-right: 1.69492%;
  }
  .feature-list li:nth-child(3n) {
    float: right;
    margin-right: 0;
  }
  .feature-list li:nth-child(3n+1) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-child(5) {
    width: 66.10169%;
    float: left;
    margin-right: 1.69492%;
    float: right;
    margin-right: 0;
  }
  .feature-list li:nth-of-type(6) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(7) {
    clear: none;
  }
  .feature-list li:nth-of-type(8) {
    float: right;
    margin-right: 0;
    margin-right: 1.69492%;
    clear: none;
  }
  .feature-list li:nth-of-type(9) {
    width: 66.10169%;
    float: left;
    margin-right: 1.69492%;
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(10) {
    float: right;
    margin-right: 0;
    clear: none;
  }
  .feature-list li:nth-of-type(11) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(12) {
    float: left;
  }
  .feature-list li:nth-of-type(13) {
    float: right;
    margin-right: 0;
    clear: none;
  }
  .feature-list li:nth-of-type(14) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(15) {
    width: 66.10169%;
    float: left;
    margin-right: 1.69492%;
    float: right;
    margin-right: 0;
  }
}

.features-paginated li {
  margin-bottom: 3em;
}

@media (min-width: 68.75em) {
  .features-paginated li {
    width: 31.53846%;
    float: left;
  }
  .features-paginated li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .features-paginated li:nth-child(3n + 2) {
    margin-left: 34.10256%;
    margin-right: -100%;
    clear: none;
  }
  .features-paginated li:nth-child(3n + 3) {
    margin-left: 68.20513%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 81.25em) {
  .features-paginated li {
    width: 32.20339%;
    float: left;
  }
  .features-paginated li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .features-paginated li:nth-child(3n + 2) {
    margin-left: 33.89831%;
    margin-right: -100%;
    clear: none;
  }
  .features-paginated li:nth-child(3n + 3) {
    margin-left: 67.79661%;
    margin-right: -100%;
    clear: none;
  }
}

.feature .overline:after {
  display: table;
  clear: both;
  content: '';
}

.feature .overline:before {
  display: table;
  clear: both;
  content: '';
}

.feature .overline .zeta {
  display: block;
}

.feature .overline + h4 {
  margin-top: -0.65em;
}

.feature .overline .intro-content {
  max-width: 45em;
  margin: 0 auto;
}

.feature .overline .intro {
  margin: 1em 0 0 0;
  font-size: 1.25em;
}

.feature .overline .byline {
  margin-top: 1.5em;
  color: #777777;
  font-weight: 700;
  vertical-align: middle;
}

.feature .overline .byline + .social-sharing {
  margin-top: 0.75em;
}

@media (min-width: 40.625em) {
  .feature .overline .byline + .social-sharing {
    margin-top: 1.8em;
  }
}

@media (min-width: 40.625em) {
  .feature .overline .byline {
    display: inline-block;
    margin-right: 2.25em;
  }
}

.feature .overline .social-sharing {
  display: none;
  color: #777777;
  font-weight: 700;
  margin-top: 1.5em;
  vertical-align: middle;
}

.feature .overline .social-sharing span {
  display: inline-block;
  margin-top: 0.015em;
}

.feature .overline .social-sharing ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
  display: inline-block;
  vertical-align: middle;
  height: 1.95em;
}

.feature .overline .social-sharing ul li {
  list-style: none;
}

.feature .overline .social-sharing ul dd {
  margin: 0;
}

.feature .overline .social-sharing li {
  display: inline-block;
  padding: 0;
  margin: 0;
  position: relative;
  width: 1.95em;
  height: 1.95em;
  margin-right: 0.1em;
}

.feature .overline .social-sharing li:first-of-type {
  margin-left: 0.25em;
}

.feature .overline .social-sharing li .copy-url-container {
  background: #eaa700;
  padding: 1em;
  font-weight: 400;
  font-size: 1em;
  color: white;
}

.feature .overline .social-sharing li .copy-url-container label {
  display: inline-block;
  margin-bottom: 0.25em;
  font-size: 0.95em;
}

.feature .overline .social-sharing li .copy-url-container textarea {
  vertical-align: middle;
  max-width: 100%;
}

.feature .overline .social-sharing li button {
  border: none;
  background: none;
  box-shadow: none;
  padding: 0;
}

.feature .overline .social-sharing li button:hover, .feature .overline .social-sharing li button:focus, .feature .overline .social-sharing li button:active {
  box-shadow: none;
  border: none;
}

.feature .overline .social-sharing li a,
.feature .overline .social-sharing li button {
  display: inline-block;
  width: 100%;
  height: 100%;
  padding: 0.1em;
}

.feature .overline .social-sharing li svg {
  overflow: visible;
}

.feature .overline .social-sharing li svg .color {
  fill: white;
}

.feature .overline .social-sharing li svg .facebook {
  fill: #4073b7;
}

.feature .overline .social-sharing li svg .twitter {
  fill: #28a9e0;
}

.feature .overline .social-sharing li svg .mailto {
  fill: #8db729;
}

.feature .overline .social-sharing li svg .copy {
  fill: #eaa700;
}

.feature .overline .social-sharing li:before {
  display: none;
}

@media (min-width: 68.75em) {
  .feature .overline .intro-content {
    max-width: inherit;
    width: 61.53846%;
    float: left;
    margin-right: 2.5641%;
  }
  .feature .overline .ad-block {
    text-align: right;
    width: 35.89744%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .feature .overline .intro-content {
    width: 70.33898%;
    float: left;
    margin-right: 1.69492%;
  }
  .feature .overline .ad-block {
    width: 27.9661%;
    float: right;
    margin-right: 0;
  }
}

.feature .mp4-wrapper {
  position: relative;
  margin-bottom: 30px;
}

.feature .mp4-wrapper .hero {
  width: 100%;
  padding-top: 56%;
  position: relative;
}

.feature .mp4-wrapper .hero video {
  object-fit: cover;
  width: 100%;
  height: auto;
  position: absolute;
  top: 0;
  left: 0;
}

.feature .mp4-wrapper .hero button.play-pause {
  width: 34px;
  height: 34px;
  background: transparent url(../images/button_video_play.png) no-repeat 0 0;
  background-size: 34px 68px;
  position: absolute;
  top: 10px;
  right: 10px;
  display: block;
  outline: none;
  border: none;
  opacity: 0.35;
}

.feature .mp4-wrapper .hero button.play-pause.paused {
  background-position: 0 -34px;
}

.feature .mp4-wrapper .caption-wrapper {
  padding: 10px 0;
}

.feature .feature-content {
  max-width: 44.53125em;
  margin: 0 auto;
}

@media only screen and (min-width: 57.8125em) {
  .feature .center.large-media img {
    max-width: inherit;
    width: 57.8125em;
    margin-left: -6.640625em;
  }
}

@media (min-width: 68.75em) {
  .feature .right.medium-media {
    max-width: inherit;
    margin-right: -5em;
  }
}

@media (min-width: 68.75em) {
  .feature .left.medium-media {
    max-width: inherit;
    margin-left: -5em;
  }
}

.js .feature .overline .social-sharing {
  display: block;
}

@media (min-width: 40.625em) {
  .js .feature .overline .social-sharing {
    display: inline-block;
  }
}

.js .feature .overline .copy-url-container {
  position: absolute;
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
  top: -6em;
  width: 15em;
  left: -10em;
  opacity: 0;
  z-index: -1;
}

.js .feature .overline .copy-url-container.open {
  opacity: 1;
  z-index: 1;
}

.js .feature .overline .copy-url-container button {
  position: absolute;
  right: 1em;
  top: 0.65em;
  width: 1.5em;
  height: 1.5em;
  padding: 0;
}

.js .feature .overline .copy-url-container button svg {
  width: 1.24em;
  height: 1.24em;
  fill: white;
}

@media (min-width: 68.75em) {
  .js .feature .overline .copy-url-container {
    width: 24em;
  }
  .js .feature .overline .copy-url-container textarea {
    width: calc(100% - 7em);
  }
}

@media (min-width: 68.75em) {
  .js .feature .ad-block.desktop {
    padding: 0 0 1.5em 0;
    margin-top: -1.5em;
  }
}

.collection-page .collection-detail-hero-item {
  margin-bottom: 3em;
}

.collection-page .collection-detail-hero-item img {
  width: 100%;
}

.collection-page .collection-section {
  position: relative;
  padding: 2em 0;
  width: 100%;
}

.collection-page .collection-section.no_title {
  padding: 0 0 2em;
}

.collection-page .collection-section:after {
  content: "";
  width: 100vw;
  position: absolute;
  left: calc(-100vw / 2 + 50%);
  right: 0;
  top: 0;
  height: 100%;
  z-index: -1;
}

.collection-page .collection-section.white:after {
  background-color: #ffff;
}

.collection-page .collection-section.grey:after {
  background-color: rgba(227, 227, 227, 0.75);
  background-image: url("../images/bg-deco-circle.png");
  background-size: 18em 18em;
}

.grid {
  z-index: 1;
}

.feature-full-width {
  width: 50%;
  margin: 0 auto;
  float: none;
  margin-bottom: 15px !important;
  min-width: 700px;
}

@media (max-width: 1024px) {
  .feature-full-width {
    width: 100%;
    min-width: 0;
  }
}

.feature-full-width.alt {
  padding: 0;
  margin-top: 0;
  margin-bottom: 45px;
}

.feature-full-width h3 {
  font-family: "Muli", sans-serif !important;
  font-size: 32px !important;
  line-height: 34px !important;
  font-weight: 700 !important;
  font-style: normal !important;
}

.feature-full-width h3:not(.white) {
  color: #434343 !important;
}

.feature-full-width .overline {
  margin-left: auto;
  margin-right: auto;
  margin-bottom: 0;
}

.feature-full-width .overline:after {
  display: table;
  clear: both;
  content: '';
}

.feature-full-width .overline:before {
  display: table;
  clear: both;
  content: '';
}

.feature-full-width .overline.flat {
  margin-bottom: 25px;
}

.feature-full-width .overline .zeta {
  display: block;
  margin-top: 20px;
}

.feature-full-width .overline + h4 {
  margin-top: -0.65em;
}

.feature-full-width .overline .intro-content {
  max-width: 45em;
  margin: 0 auto;
}

.feature-full-width .overline .intro {
  margin: 1em 0 0 0;
  font-size: 1.375em;
}

.feature-full-width .overline .byline {
  margin-top: 1.5em;
  color: #777777;
  font-weight: 700;
  vertical-align: middle;
}

.feature-full-width .overline .byline + .social-sharing {
  margin-top: 0.75em;
}

@media (min-width: 40.625em) {
  .feature-full-width .overline .byline + .social-sharing {
    margin-top: 1.8em;
  }
}

@media (min-width: 40.625em) {
  .feature-full-width .overline .byline {
    display: inline-block;
    margin-right: 2.25em;
  }
}

.feature-full-width .overline .social-sharing {
  display: none;
  color: #777777;
  font-weight: 700;
  margin-top: 1.5em;
  vertical-align: middle;
}

.feature-full-width .overline .social-sharing span {
  display: inline-block;
  margin-top: 0.015em;
}

.feature-full-width .overline .social-sharing ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
  display: inline-block;
  vertical-align: middle;
  height: 1.95em;
}

.feature-full-width .overline .social-sharing ul li {
  list-style: none;
}

.feature-full-width .overline .social-sharing ul dd {
  margin: 0;
}

.feature-full-width .overline .social-sharing li {
  display: inline-block;
  padding: 0;
  margin: 0;
  position: relative;
  width: 1.95em;
  height: 1.95em;
  margin-right: 0.1em;
}

.feature-full-width .overline .social-sharing li:first-of-type {
  margin-left: 0.25em;
}

.feature-full-width .overline .social-sharing li .copy-url-container {
  background: #eaa700;
  padding: 1em;
  font-weight: 400;
  font-size: 1em;
  color: white;
}

.feature-full-width .overline .social-sharing li .copy-url-container label {
  display: inline-block;
  margin-bottom: 0.25em;
  font-size: 0.95em;
}

.feature-full-width .overline .social-sharing li .copy-url-container textarea {
  vertical-align: middle;
  max-width: 100%;
}

.feature-full-width .overline .social-sharing li button {
  border: none;
  background: none;
  box-shadow: none;
  padding: 0;
}

.feature-full-width .overline .social-sharing li button:hover, .feature-full-width .overline .social-sharing li button:focus, .feature-full-width .overline .social-sharing li button:active {
  box-shadow: none;
  border: none;
}

.feature-full-width .overline .social-sharing li a,
.feature-full-width .overline .social-sharing li button {
  display: inline-block;
  width: 100%;
  height: 100%;
  padding: 0.1em;
}

.feature-full-width .overline .social-sharing li svg {
  overflow: visible;
}

.feature-full-width .overline .social-sharing li svg .color {
  fill: white;
}

.feature-full-width .overline .social-sharing li svg .facebook {
  fill: #4073b7;
}

.feature-full-width .overline .social-sharing li svg .twitter {
  fill: #28a9e0;
}

.feature-full-width .overline .social-sharing li svg .mailto {
  fill: #8db729;
}

.feature-full-width .overline .social-sharing li svg .copy {
  fill: #eaa700;
}

.feature-full-width .overline .social-sharing li:before {
  display: none;
}

@media (min-width: 68.75em) {
  .feature-full-width .overline .intro-content {
    max-width: inherit;
    width: 61.53846%;
    float: left;
    margin-right: 2.5641%;
  }
  .feature-full-width .overline .ad-block {
    text-align: right;
    width: 35.89744%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .feature-full-width .overline .intro-content {
    width: 70.33898%;
    float: left;
    margin-right: 1.69492%;
  }
  .feature-full-width .overline .ad-block {
    width: 27.9661%;
    float: right;
    margin-right: 0;
  }
}

.feature-full-width .feature-content {
  max-width: 44.53125em;
  margin: 0 auto;
}

.feature-full-width p + figure.full-width {
  margin: 55px auto 35px !important;
}

.feature-full-width figure {
  display: block;
}

.feature-full-width figure.full-width {
  float: none !important;
}

.feature-full-width figure.full-width.center {
  background-position: center center;
}

.feature-full-width figure.full-width.left {
  background-position: left center;
}

.feature-full-width figure.full-width.right {
  background-position: right center;
}

.feature-full-width figure.full-width .media-container {
  display: block;
  width: 100vw;
  height: auto;
  background-repeat: no-repeat;
  background-size: cover;
  margin-left: calc(-100vw / 2 + 50%);
}

.feature-full-width figure.full-width .media-container img {
  display: block;
  width: 100vw;
  height: auto;
  object-fit: cover;
  margin-left: calc(-100vw / 2 + 50%);
  max-width: 100vw;
}

@media (max-width: 1024px) {
  .feature-full-width figure.full-width .media-container {
    height: auto;
  }
  .feature-full-width figure.full-width .media-container img {
    position: relative;
    left: 0;
    top: 0;
    transform: none;
  }
}

.feature-full-width figure.full-width figcaption {
  width: 100vw;
  text-align: left;
  padding: 10px 0;
  margin-left: calc(-100vw / 2 + 55%);
}

@media (max-width: 1200px) {
  .feature-full-width figure.full-width figcaption {
    width: 95vw;
  }
}

.feature-full-width figure img:not(.cropped) {
  max-width: 1200px;
  width: 200%;
  margin-left: calc(-600px + 50%);
}

@media (max-width: 1200px) {
  .feature-full-width figure img:not(.cropped) {
    width: 100%;
    margin: 0 auto;
  }
}

.feature-full-width figure figcaption {
  text-align: left;
  padding: 10px 0;
  margin-left: calc(-600px + 50%);
}

.feature-full-width figure figcaption.cropped {
  margin-left: auto;
}

.feature-full-width figure figcaption span {
  display: block;
}

@media (max-width: 1200px) {
  .feature-full-width figure figcaption {
    margin: 0;
  }
}

.feature-full-width .cove-wrapper {
  max-width: 1200px;
  width: 200%;
  margin-left: calc(-600px + 50%);
  position: relative;
  margin-top: 35px;
  margin-bottom: 35px;
}

@media (max-width: 1200px) {
  .feature-full-width .cove-wrapper {
    margin: 35px auto;
    width: 100%;
  }
}

.feature-full-width .cove-wrapper .caption {
  padding: 15px 0 0;
}

.feature-full-width .carousel-container {
  width: 200%;
  max-width: 1200px;
  margin-left: calc(-600px + 50%);
  margin-top: 55px;
  margin-bottom: 55px;
}

@media (max-width: 1200px) {
  .feature-full-width .carousel-container {
    margin: 0;
    width: 100%;
  }
}

.feature-full-width .carousel-container figure {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

.feature-full-width .carousel-container figure img,
.feature-full-width .carousel-container img {
  max-width: 100%;
  height: auto;
  width: auto;
  display: block;
  margin: 0;
}

.feature-full-width .carousel-container figcaption .caption {
  margin: 0 !important;
  margin-bottom: 30px !important;
}

.feature-full-width .carousel-container figcaption .credit {
  display: block;
  position: relative;
  padding: 0 0 0 30px !important;
}

.feature-full-width .carousel-container figcaption .credit:before {
  content: "";
  display: block;
  width: 20px;
  height: 20px;
  position: absolute;
  left: 0;
  top: 3px;
  background: url(../images/icon-camera.svg) no-repeat left top;
  background-size: contain;
}

.feature-full-width q {
  margin: 55px auto;
  max-width: 95%;
  display: block;
  color: #174189;
  font-family: "Roboto Slab", sans-serif;
  font-size: 22px;
  line-height: 40px;
  max-width: 575px;
  font-weight: 700;
}

@media (max-width: 500px) {
  .feature-full-width q {
    margin: 25px 0;
  }
}

.feature-full-width q:before, .feature-full-width q:after {
  display: inline;
  content: '"';
  background: none;
  height: auto;
  position: relative;
  left: auto;
  left: unset;
  top: auto;
  top: unset;
  transform: none;
}

.feature-full-width .related-features-block {
  position: relative;
  margin-top: 55px;
  margin-bottom: 55px;
  margin-left: calc(-975px / 2 + 50%);
  max-width: 975px;
  padding-bottom: 25px;
  width: 100vw;
}

@media (max-width: 975px) {
  .feature-full-width .related-features-block {
    width: 100%;
    margin-left: 0;
  }
}

@media (max-width: 500px) {
  .feature-full-width .related-features-block {
    margin-top: 35px;
    margin-bottom: 35px;
  }
}

.feature-full-width .related-features-block:after {
  position: absolute;
  width: 100%;
  display: block;
  content: "";
  height: 25px;
  border-top: 3px solid #e6e6e6;
  z-index: -1;
}

.feature-full-width .related-features-block h3.heading {
  background-color: #fff;
  display: inline-block;
  padding-right: 5px;
  font-size: 22px !important;
  line-height: 26px !important;
  margin-bottom: 25px !important;
}

.feature-full-width .related-features-block h3.heading:before {
  position: absolute;
  width: 100%;
  display: block;
  content: "";
  height: 25px;
  border-bottom: 3px solid #e6e6e6;
  top: -8px;
  z-index: -1;
}

.feature-full-width .related-features-block ul.list {
  display: inline-flex;
  justify-content: space-evenly;
  flex-flow: row;
  flex-wrap: wrap;
  position: relative;
  list-style-type: none;
  padding-left: 0;
  width: 100%;
}

@media (max-width: 975px) {
  .feature-full-width .related-features-block ul.list {
    display: block;
  }
}

.feature-full-width .related-features-block ul.list li {
  position: relative;
  width: 50%;
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}

.feature-full-width .related-features-block ul.list li:before, .feature-full-width .related-features-block ul.list li:after {
  display: none;
}

@media (max-width: 975px) {
  .feature-full-width .related-features-block ul.list li {
    width: 100%;
    margin-bottom: 25px;
  }
}

.feature-full-width .related-features-block ul.list li:nth-child(odd) {
  padding-right: 27px;
}

@media (min-width: 975px) {
  .feature-full-width .related-features-block ul.list li:nth-child(even) {
    padding-left: 27px;
  }
}

.feature-full-width .related-features-block ul.list .related-item {
  position: relative;
  display: flex;
}

@media (max-width: 500px) {
  .feature-full-width .related-features-block ul.list .related-item {
    display: block;
  }
}

.feature-full-width .related-features-block ul.list .related-item .image {
  margin-right: 15px;
}

@media (max-width: 500px) {
  .feature-full-width .related-features-block ul.list .related-item .image {
    margin-right: 0;
  }
}

.feature-full-width .related-features-block ul.list .related-item a.thumbnail-image {
  position: relative;
  display: block;
  width: 224px;
  min-height: 126px;
  background-size: contain;
  background-position: center top;
}

@media (max-width: 500px) {
  .feature-full-width .related-features-block ul.list .related-item a.thumbnail-image {
    width: 100%;
    min-height: 0;
    padding-top: 56.65%;
    margin-bottom: 15px;
  }
}

.feature-full-width .related-features-block ul.list .related-item .details .type {
  font-family: "Roboto Slab", sans-serif;
  color: #777777;
  text-transform: uppercase;
  display: block;
  font-weight: 700;
  margin-bottom: 0;
  font-size: 14px;
  line-height: 20px;
}

.feature-full-width .related-features-block ul.list .related-item .details .title-link {
  font-size: 18px;
  line-height: 22px;
}

.feature-full-width .related-features-block ul.list .related-item .details .text p,
.feature-full-width .related-features-block ul.list .related-item .details .text i,
.feature-full-width .related-features-block ul.list .related-item .details .text b {
  font-family: "Muli", sans-serif;
  font-size: 16px;
  line-height: 22px;
  font-weight: 400;
  margin-bottom: 0;
}

.about-collection {
  width: 100%;
  max-width: 725px;
  margin-left: auto;
  margin-top: 30px;
  margin-right: auto;
  background-color: #e9e9e9;
  padding: 30px 35px;
}

.about-collection:first-child {
  margin-top: 80px;
}

.about-collection .heading {
  display: block;
  font-size: 24px;
  line-height: 28px;
  padding-bottom: 20px;
  color: #777;
}

.about-collection .heading a {
  color: #bb0b0e;
}

.about-collection .heading a:hover {
  color: #8c0007;
  text-decoration: none;
}

.about-collection .about-details {
  display: flex;
  justify-content: space-between;
}

@media (max-width: 768px) {
  .about-collection .about-details {
    display: block;
  }
}

.about-collection .about-details .image {
  width: 40%;
}

@media (max-width: 768px) {
  .about-collection .about-details .image {
    width: 100%;
  }
}

.about-collection .about-details .image img {
  display: block;
  width: 100%;
  height: auto;
  max-width: 224px;
}

@media (max-width: 768px) {
  .about-collection .about-details .image img {
    margin: 0 auto 30px;
  }
}

.about-collection .about-details .description {
  width: 60%;
}

@media (max-width: 768px) {
  .about-collection .about-details .description {
    width: 100%;
  }
}

.full-width-image {
  position: relative;
  width: 100%;
  max-width: 100vw;
  max-height: 785px;
  height: auto;
  z-index: -1;
}

.full-width-image .mp4-wrapper {
  position: relative;
  margin-bottom: 30px;
  max-height: 785px;
}

.full-width-image .mp4-wrapper .hero {
  width: 100%;
  padding-top: 49%;
  position: relative;
  max-height: 785px;
}

.full-width-image .mp4-wrapper .hero video {
  object-fit: cover;
  width: 100%;
  height: auto;
  position: absolute;
  display: block;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  max-height: 785px;
  max-width: 1366px;
}

.full-width-image .mp4-wrapper .hero button.play-pause {
  width: 34px;
  height: 34px;
  background: transparent url(../images/button_video_play.png) no-repeat 0 0;
  background-size: 34px 68px;
  position: absolute;
  top: 10px;
  right: 10px;
  display: block;
  outline: none;
  border: none;
  opacity: 0.35;
}

.full-width-image .mp4-wrapper .hero button.play-pause.paused {
  background-position: 0 -34px;
}

.full-width-image .mp4-wrapper .caption-wrapper {
  padding: 15px 0;
  max-width: 1366px;
  margin: 0 auto;
}

@media (max-width: 1200px) {
  .full-width-image .mp4-wrapper .caption-wrapper {
    padding: 15px 10px;
  }
}

.full-width-image figure {
  width: auto;
  max-width: 100%;
  display: block;
}

.full-width-image figure.center .media-container {
  background-position: center center;
}

.full-width-image figure.left .media-container {
  background-position: left center;
}

.full-width-image figure.right .media-container {
  background-position: right center;
}

.full-width-image figure .media-container {
  overflow: hidden;
  position: relative;
  height: 785px;
  display: block;
  width: 100%;
  background-size: cover;
}

@media (max-width: 1200px) {
  .full-width-image figure .media-container {
    height: 510px;
  }
}

@media (max-width: 1024px) {
  .full-width-image figure .media-container {
    height: auto;
  }
  .full-width-image figure .media-container img {
    position: relative;
    left: 0;
    top: 0;
    transform: none;
  }
}

.full-width-image figure img {
  display: block;
  width: 100%;
  max-width: 100vw;
  position: absolute;
  height: auto;
  margin: 0 auto;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}

.full-width-image figure figcaption {
  bottom: 0;
  display: block;
  text-align: left;
  max-width: 15%;
  margin: 20px 0 0 2%;
}

@media (max-width: 1200px) {
  .full-width-image figure figcaption {
    max-width: 95%;
    margin: 20px auto;
  }
}

.full-width-image figure figcaption span.desc {
  display: block;
  position: relative;
  padding: 5px 0 0 30px !important;
}

.full-width-image figure figcaption span.desc:before {
  content: "";
  display: block;
  width: 20px;
  height: 20px;
  position: absolute;
  left: 0;
  top: 9px;
  background: url(../images/icon-camera.svg) no-repeat left top;
  background-size: contain;
}

.js .feature-full-width .overline.flat:before {
  display: none;
}

.js .feature-full-width .overline .social-sharing {
  display: block;
}

@media (min-width: 40.625em) {
  .js .feature-full-width .overline .social-sharing {
    display: inline-block;
  }
}

.js .feature-full-width .overline .copy-url-container {
  position: absolute;
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
  top: -6em;
  width: 15em;
  left: -10em;
  opacity: 0;
  z-index: -1;
}

.js .feature-full-width .overline .copy-url-container.open {
  opacity: 1;
  z-index: 1;
}

.js .feature-full-width .overline .copy-url-container button {
  position: absolute;
  right: 1em;
  top: 0.65em;
  width: 1.5em;
  height: 1.5em;
  padding: 0;
}

.js .feature-full-width .overline .copy-url-container button svg {
  width: 1.24em;
  height: 1.24em;
  fill: white;
}

@media (min-width: 68.75em) {
  .js .feature-full-width .overline .copy-url-container {
    width: 24em;
  }
  .js .feature-full-width .overline .copy-url-container textarea {
    width: calc(100% - 7em);
  }
}

.js .feature-full-width .ad-block.open {
  background-color: transparent;
  position: relative;
  border-top: 1px solid #bebebe;
  border-bottom: 1px solid #bebebe;
  margin: 75px 0;
}

@media (max-width: 500px) {
  .js .feature-full-width .ad-block.open {
    margin: 25px 0;
  }
}

.js .feature-full-width .ad-block.open:before, .js .feature-full-width .ad-block.open:after {
  background: transparent !important;
}

.js .feature-full-width .ad-block .ad {
  display: block;
  margin: 0 auto;
}

.search-results ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.search-results ul li {
  list-style: none;
}

.search-results ul dd {
  margin: 0;
}

.search-results ul li {
  margin-bottom: 3em;
}

.search-results ul li:after {
  display: table;
  clear: both;
  content: '';
}

.search-results ul li:before {
  display: table;
  clear: both;
  content: '';
}

@media (min-width: 81.25em) {
  .search-results ul li {
    margin-bottom: 1.5em;
  }
}

@media (min-width: 40.625em) {
  .search-results .image {
    width: 34.21053%;
    float: left;
    margin-right: 5.26316%;
  }
}

@media (min-width: 68.75em) {
  .search-results .image {
    width: 23.07692%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .search-results .image {
    width: 19.49153%;
    float: left;
    margin-right: 1.69492%;
  }
}

.search-results .description h3 {
  margin-bottom: 0;
}

.search-results .description p {
  margin-bottom: 0.75em;
}

@media (min-width: 40.625em) {
  .search-results .description {
    width: 60.52632%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 68.75em) {
  .search-results .description {
    width: 48.71795%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .search-results .description {
    width: 53.38983%;
    float: left;
    margin-right: 1.69492%;
  }
  .search-results .description p {
    margin-bottom: 1.5em;
  }
}

.newsletter-dialog {
  display: none;
}

.js .newsletter-dialog {
  display: block;
}

.newsletter-dialog.general {
  background-color: rgba(0, 0, 0, 0.85);
  color: white;
  position: fixed;
  height: 100vh;
  width: 100%;
  z-index: 10002;
  top: 0;
  left: 0;
  text-align: center;
}

.newsletter-dialog.general:after {
  content: "";
  display: block;
  width: 100%;
  height: 100vh;
  background: url("../images/bg-triangle-footer.png");
  background-size: 11.75em 11.125em;
  color: #4872b4;
  position: relative;
  z-index: 50;
}

@media screen and (min-width: 68.75em) and (min-height: 37.5em) {
  .newsletter-dialog.general:after {
    margin-top: 12.5em;
  }
}

.newsletter-dialog.general.dismissed {
  -webkit-animation-duration: 0.35s;
  animation-duration: 0.35s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  animation-name: slideOutDown;
}

.newsletter-dialog.general[aria-hidden="true"] {
  display: none;
}

.newsletter-dialog.general div[role="dialog"] {
  overflow-y: scroll;
  max-height: 80vh;
}

@media screen and (min-height: 37.5em) {
  .newsletter-dialog.general div[role="dialog"] {
    max-height: inherit;
    overflow: visible;
  }
}

.newsletter-dialog.general div[role="document"] {
  max-width: 50em;
  margin: 1em auto 0 auto;
  width: 95%;
  position: relative;
}

@media screen and (min-width: 68.75em) and (min-height: 37.5em) {
  .newsletter-dialog.general div[role="document"] {
    margin-top: 0;
    top: 12.5vh;
  }
}

.newsletter-dialog.general .gamma {
  color: white;
}

@media (min-width: 68.75em) {
  .newsletter-dialog.general .gamma {
    font-size: 2.25em;
  }
}

.newsletter-dialog.general .dimsiss {
  border: none;
  background: none;
  box-shadow: none;
  position: absolute;
  right: 0;
  top: -2.5em;
  display: inline-block;
  border-radius: 100%;
}

.newsletter-dialog.general .dimsiss:hover, .newsletter-dialog.general .dimsiss:focus, .newsletter-dialog.general .dimsiss:active {
  box-shadow: none;
  border: none;
}

.newsletter-dialog.general .dimsiss svg {
  -webkit-transition: fill 0.5s ease-in-out;
  -ms-transition: fill 0.5s ease-in-out;
  transition: fill 0.5s ease-in-out;
  width: 2em;
  height: 2em;
  fill: white;
  display: block;
}

.newsletter-dialog.general .dimsiss:hover svg {
  fill: #f3ad00;
}

.newsletter-dialog.general h1 {
  margin: 1.5em 0 0.5em 0;
  text-transform: uppercase;
  line-height: 1;
}

@media (min-width: 68.75em) {
  .newsletter-dialog.general h1 {
    margin-top: 2em;
  }
}

.newsletter-dialog.general h1 .logo-type {
  max-width: 13em;
  max-height: 0.95em;
}

.newsletter-dialog.general h1 span {
  font-size: 0.75em;
}

@media (min-width: 68.75em) {
  .newsletter-dialog.general h1 span {
    font-size: 1.2em;
  }
}

.newsletter-dialog.general .email-signup-form {
  margin-top: 1.5em;
  padding-bottom: 1.5em;
}

.newsletter-dialog.general .email-signup-form button[type="submit"] {
  padding-right: 1.5em;
  background: #f3ad00;
  color: #243757;
  margin-top: 1.5em;
  display: block;
  width: 100%;
}

.newsletter-dialog.general .email-signup-form button[type="submit"]:before {
  content: none;
}

.newsletter-dialog.general .email-signup-form button[type="submit"]:hover {
  background: #da9b00;
}

@media (min-width: 68.75em) {
  .newsletter-dialog.general .email-signup-form button[type="submit"] {
    display: inline-block;
    width: inherit;
  }
  .newsletter-dialog.general .email-signup-form button[type="submit"]:before {
    content: "";
  }
}

.newsletter-dialog.general .email-signup-form .note {
  display: block;
  font-size: 1em;
  text-align: center;
}

@media (min-width: 68.75em) {
  .newsletter-dialog.general .email-signup-form .note {
    font-size: 1.25em;
  }
}

@media (min-width: 68.75em) {
  .newsletter-dialog.general .email-signup-form .email-field,
  .newsletter-dialog.general .email-signup-form .zip-code-field {
    float: left;
  }
  .newsletter-dialog.general .email-signup-form .email-field {
    width: 55%;
  }
  .newsletter-dialog.general .email-signup-form .zip-code-field {
    width: 44%;
    margin-left: 1%;
  }
}

.newsletter-dialog.vote {
  background-color: rgba(0, 0, 0, 0.85);
  color: white;
  position: fixed;
  height: 100vh;
  width: 100%;
  z-index: 10002;
  top: 0;
  left: 0;
  text-align: center;
}

.newsletter-dialog.vote.dismissed {
  -webkit-animation-duration: 0.35s;
  animation-duration: 0.35s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  animation-name: slideOutDown;
}

.newsletter-dialog.vote[aria-hidden="true"] {
  display: none;
}

.newsletter-dialog.vote div[role="dialog"] {
  overflow-y: scroll;
  max-height: 90vh;
  margin-top: 4.5vh;
}

@media screen and (min-height: 750vh) {
  .newsletter-dialog.vote div[role="dialog"] {
    max-height: inherit;
    overflow: visible;
  }
}

.newsletter-dialog.vote div[role="document"] {
  max-width: 600px;
  margin: 6vh auto 0;
  width: 95%;
  position: relative;
  border: 10px solid #fcc320;
  background-color: #3c225e;
}

@media screen and (min-width: 68.75em) and (min-height: 750px) {
  .newsletter-dialog.vote div[role="document"] {
    margin-top: 0;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
  }
}

.newsletter-dialog.vote .gamma {
  color: #ebe3d7;
  font-weight: 400;
}

@media (max-width: 500px) {
  .newsletter-dialog.vote .gamma {
    font-size: 20px;
  }
}

@media (min-width: 68.75em) {
  .newsletter-dialog.vote .gamma {
    font-size: 30px;
  }
}

.newsletter-dialog.vote .dimsiss {
  border: none;
  background: none;
  box-shadow: none;
  position: absolute;
  display: inline-block;
  border-radius: 100%;
  right: -0.5em;
  top: -3em;
}

.newsletter-dialog.vote .dimsiss:hover, .newsletter-dialog.vote .dimsiss:focus, .newsletter-dialog.vote .dimsiss:active {
  box-shadow: none;
  border: none;
}

.newsletter-dialog.vote .dimsiss svg {
  -webkit-transition: fill 0.5s ease-in-out;
  -ms-transition: fill 0.5s ease-in-out;
  transition: fill 0.5s ease-in-out;
  width: 2em;
  height: 2em;
  fill: #fcc320;
  display: block;
}

@media (min-width: 675px) {
  .newsletter-dialog.vote .dimsiss {
    right: -2.5em;
    top: -2.5em;
  }
}

.newsletter-dialog.vote #newsletter-dialog-title {
  margin: 0 0 0.5em 0;
  text-transform: uppercase;
  line-height: 1;
  font-size: 25px;
  color: #ebe3d7;
}

.newsletter-dialog.vote #newsletter-dialog-title .logo-type {
  max-width: 8em;
  max-height: 0.92em;
}

.newsletter-dialog.vote span.under {
  display: block;
  margin: 5px auto;
  font-size: 24px;
  font-family: "Muli", sans-serif;
  color: #fcc320;
  font-weight: 500;
  text-transform: uppercase;
}

.newsletter-dialog.vote .vote-image {
  position: relative;
  max-width: 600px;
  width: 100%;
  margin: 0;
  padding: 0;
  height: auto;
}

@media (max-width: 500px) {
  .newsletter-dialog.vote .vote-image {
    background: url(../images/vote_image_header.jpg) no-repeat center center;
    background-size: cover;
    height: 150px;
  }
  .newsletter-dialog.vote .vote-image img {
    display: none;
  }
}

.newsletter-dialog.vote .title-wrapper {
  background-color: #3c225e;
  position: relative;
  display: block;
  padding: 10px;
  margin: -87px auto 0;
  height: 87px;
  width: 100%;
}

@media (min-width: 650px) {
  .newsletter-dialog.vote .title-wrapper {
    width: 70%;
  }
}

@media (max-width: 500px) {
  .newsletter-dialog.vote .title-wrapper {
    margin-top: 0;
  }
}

.newsletter-dialog.vote .title-wrapper .vote-headline {
  background: url(../images/title_the-vote.png) no-repeat center center;
  background-size: contain;
  max-width: 300px;
  width: 100%;
  height: 57px;
  display: block;
  margin: 0 auto 15px;
  text-indent: -99999px;
}

@media (max-width: 500px) {
  .newsletter-dialog.vote .title-wrapper .vote-headline {
    max-width: 80%;
  }
}

.newsletter-dialog.vote .email-signup-form {
  padding: 20px 40px;
}

.newsletter-dialog.vote .email-signup-form button[type="submit"] {
  padding-right: 1.5em;
  background: #f3ad00;
  color: #243757;
  margin-top: 1.5em;
  display: block;
  width: 100%;
  cursor: pointer;
}

.newsletter-dialog.vote .email-signup-form button[type="submit"]:hover {
  background: #da9b00;
}

@media (min-width: 68.75em) {
  .newsletter-dialog.vote .email-signup-form button[type="submit"] {
    display: inline-block;
    width: inherit;
  }
  .newsletter-dialog.vote .email-signup-form button[type="submit"]:before {
    content: "";
  }
}

.newsletter-dialog.vote .email-signup-form button[type="submit"]:before {
  box-shadow: none !important;
}

.newsletter-dialog.vote .email-signup-form .note {
  display: block;
  font-size: 20px;
  color: #ebe3d7;
  text-align: center;
}

@media (max-width: 650px) {
  .newsletter-dialog.vote .email-signup-form .note {
    font-size: 14px;
  }
}

@media (min-width: 40.625em) {
  .newsletter-dialog.vote .email-signup-form .email-field,
  .newsletter-dialog.vote .email-signup-form .zip-code-field {
    float: left;
  }
  .newsletter-dialog.vote .email-signup-form .email-field {
    width: 55%;
  }
  .newsletter-dialog.vote .email-signup-form .zip-code-field {
    width: 44%;
    margin-left: 1%;
  }
}

#sticky-header {
  width: 100%;
  -webkit-transform: translate3d(0px, 0px, 0px);
  transform: translate3d(0px, 0px, 0px);
}

.sticky #sticky-header {
  top: 0;
  position: fixed;
  -webkit-animation-duration: 0.5s;
  animation-duration: 0.5s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-name: slideInDown;
  animation-name: slideInDown;
}

.site-header ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.site-header ul li {
  list-style: none;
}

.site-header ul dd {
  margin: 0;
}

.site-header .secondary {
  background: #333;
  text-align: center;
  color: white;
}

.site-header .secondary:after {
  display: table;
  clear: both;
  content: '';
}

.site-header .secondary:before {
  display: table;
  clear: both;
  content: '';
}

.site-header .secondary * {
  vertical-align: middle;
}

.site-header .secondary .title {
  display: block;
  margin-bottom: 0.75em;
}

.site-header .secondary .header-social {
  display: none;
}

.site-header .secondary .header-social .social-list {
  width: 70%;
  margin: 0 auto;
}

.site-header .secondary .header-social .social-list a {
  display: block;
}

.site-header .secondary .header-social .social-list a:hover svg .background {
  fill: black;
}

.site-header .secondary .header-social:after {
  display: table;
  clear: both;
  content: '';
}

.site-header .secondary .header-social:before {
  display: table;
  clear: both;
  content: '';
}

@media (min-width: 40.625em) {
  .site-header .secondary .header-social {
    width: 47.36842%;
    float: left;
    margin-right: 5.26316%;
    display: block;
    margin-top: .75em;
  }
}

@media (min-width: 68.75em) {
  .site-header .secondary .header-social {
    width: 40.67797%;
    float: left;
    margin-right: 1.69492%;
    margin-top: 0;
    text-align: left;
  }
  .site-header .secondary .header-social .title {
    display: inline-block;
    margin-bottom: 0;
    font-size: .8125em;
  }
  .site-header .secondary .header-social .social-list {
    width: auto;
    display: inline-block;
  }
}

.site-header .secondary .header-sponsors {
  margin-top: 0.75em;
  margin-bottom: 0.75em;
}

.site-header .secondary .header-sponsors ul {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
  line-height: 1;
}

.site-header .secondary .header-sponsors ul:after {
  display: table;
  clear: both;
  content: '';
}

.site-header .secondary .header-sponsors ul:before {
  display: table;
  clear: both;
  content: '';
}

.site-header .secondary .header-sponsors li {
  display: inline-block;
  margin: .25em .5em;
}

.site-header .secondary .header-sponsors a {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
}

.site-header .secondary .header-sponsors .title {
  margin-bottom: .25em;
}

.site-header .secondary .header-sponsors img {
  max-height: 3.125em;
  max-width: 7.375em;
}

@media (min-width: 40.625em) {
  .site-header .secondary .header-sponsors {
    width: 47.36842%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 68.75em) {
  .site-header .secondary .header-sponsors {
    width: 57.62712%;
    float: right;
    margin-right: 0;
    margin-top: 0;
    margin-bottom: 0;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: end;
    -ms-flex-pack: end;
    justify-content: flex-end;
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center;
  }
  .site-header .secondary .header-sponsors .title {
    display: inline-block;
    font-size: .8125em;
    vertical-align: middle;
    margin-bottom: 0;
  }
  .site-header .secondary .header-sponsors .sponsor {
    display: inline-block;
  }
}

@media (min-width: 81.25em) {
  .site-header .secondary .header-sponsors img {
    max-height: 3.125em;
    max-width: 8.375em;
  }
}

@media (min-width: 68.75em) {
  .site-header .secondary .grid {
    margin-top: .5em;
    margin-bottom: .5em;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center;
  }
}

.site-header .primary {
  background: #174189;
  position: relative;
  z-index: 10;
}

.site-header .primary .grid {
  position: relative;
}

.site-header .primary .header-logo {
  position: relative;
  margin: 0;
  line-height: 0;
  width: 72.22222%;
  float: left;
  margin-right: 11.11111%;
}

.site-header .primary .header-logo a {
  display: block;
  padding: .45em;
}

.site-header .primary .header-logo a svg {
  max-height: .5em;
}

.site-header .primary .header-logo a svg .type {
  fill: white;
}

@media (min-width: 40.625em) {
  .site-header .primary .header-logo a svg {
    max-height: .75em;
  }
}

.site-header .primary .header-logo .logo-type {
  display: inline-block;
  max-width: 100%;
}

@media (min-width: 40.625em) {
  .site-header .primary .header-logo {
    width: 73.68421%;
    float: left;
    margin-right: 5.26316%;
  }
}

@media (min-width: 68.75em) {
  .site-header .primary .header-logo {
    width: 23.07692%;
    float: left;
    margin-right: 2.5641%;
    padding-top: .2em;
  }
}

@media (min-width: 81.25em) {
  .site-header .primary .header-logo {
    padding-top: 0;
    width: 32.20339%;
    float: left;
    margin-right: 1.69492%;
  }
  .site-header .primary .header-logo a {
    padding: .55em .45em .45em .45em;
  }
  .site-header .primary .header-logo a svg {
    max-height: 1em;
  }
}

.site-header .primary .main-nav-toggle {
  border: none;
  background: none;
  box-shadow: none;
  display: none;
  position: absolute;
  top: 0;
  right: 5%;
  width: 2.75em;
  height: 2.75em;
  overflow: hidden;
  padding: .5em;
  text-align: center;
}

.site-header .primary .main-nav-toggle:hover, .site-header .primary .main-nav-toggle:focus, .site-header .primary .main-nav-toggle:active {
  box-shadow: none;
  border: none;
}

.site-header .primary .main-nav-toggle svg {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  display: inline-block;
  width: 1.5em;
}

.site-header .primary .main-nav-toggle .one, .site-header .primary .main-nav-toggle .two, .site-header .primary .main-nav-toggle .three {
  -webkit-transition: all .35s linear;
  transition: all .35s linear;
  -webkit-transform: rotate(0deg) scale(1);
  transform: rotate(0deg) scale(1);
  -webkit-transform-origin: 0 50%;
  transform-origin: 0 50%;
  fill: white;
}

.site-header .primary .main-nav-toggle.close-state .one {
  -webkit-transform: rotateZ(-45deg) scale(0.95);
  transform: rotateZ(-45deg) scale(0.95);
  -webkit-transform-origin: 11.5em 5em;
  transform-origin: 11.5em 5em;
}

.site-header .primary .main-nav-toggle.close-state .two {
  -webkit-transform: translateY(-25em);
  transform: translateY(-25em);
}

.site-header .primary .main-nav-toggle.close-state .three {
  -webkit-transform: rotateZ(45deg) scale(0.95);
  transform: rotateZ(45deg) scale(0.95);
  -webkit-transform-origin: 11.5em 5em;
  transform-origin: 11.5em 5em;
}

@media (min-width: 40.625em) {
  .site-header .primary .main-nav-toggle {
    width: 3.3em;
    height: 3.3em;
  }
}

.site-header .primary .dropdown-menu {
  clear: both;
}

@media (min-width: 68.75em) {
  .site-header .primary .dropdown-menu {
    width: 74.35897%;
    float: right;
    margin-right: 0;
    clear: none;
  }
}

@media (min-width: 81.25em) {
  .site-header .primary .dropdown-menu {
    width: 66.10169%;
    float: right;
    margin-right: 0;
  }
}

.site-header .primary .header-main-navigation {
  font-size: 1.125em;
  font-family: 'Josefin Sans', sans-serif;
  text-transform: uppercase;
  margin-bottom: 1.5em;
}

@media (min-width: 68.75em) {
  .site-header .primary .header-main-navigation {
    width: 61.2069%;
    float: left;
    margin-right: 3.44828%;
    clear: none;
    margin-bottom: 0;
  }
}

@media (min-width: 81.25em) {
  .site-header .primary .header-main-navigation {
    width: 61.53846%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 68.75em) {
  .site-header .primary .header-main-navigation ul {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
  }
}

.site-header .primary .header-main-navigation ul li {
  border-bottom: 1px solid #777777;
}

.site-header .primary .header-main-navigation ul li a {
  text-decoration: none;
  display: block;
  padding: 1.1em 1em .9em 1em;
  color: white;
  position: relative;
}

.site-header .primary .header-main-navigation ul li a:hover {
  text-decoration: none;
}

.site-header .primary .header-main-navigation ul li a:active {
  text-decoration: none;
}

.site-header .primary .header-main-navigation ul li a:visited {
  text-decoration: none;
}

.site-header .primary .header-main-navigation ul li a:focus {
  text-decoration: none;
}

.site-header .primary .header-main-navigation ul li a:after {
  -webkit-transition: background 0.5s ease-in-out;
  -ms-transition: background 0.5s ease-in-out;
  transition: background 0.5s ease-in-out;
  width: 100%;
  height: .3333em;
  content: '';
  display: block;
  position: absolute;
  bottom: 0;
  left: 0;
}

.site-header .primary .header-main-navigation ul li a:hover:after, .site-header .primary .header-main-navigation ul li a.active:after {
  background: #f3ad00;
}

@media (min-width: 68.75em) {
  .site-header .primary .header-main-navigation ul li {
    text-align: center;
    display: inline-block;
    border-bottom: none;
    flex-grow: 1;
  }
}

.site-header .primary .search {
  position: relative;
  font-size: 1.125em;
  margin-bottom: 1.5em;
}

.site-header .primary .search .search-input {
  display: inline-block;
  height: 2.25em;
  padding: 0 0 0 1em;
  width: 100%;
  border: 1px solid #777777;
  padding-right: 2.5em;
}

.site-header .primary .search .search-button {
  border: none;
  background: none;
  box-shadow: none;
  position: absolute;
  top: .15em;
  right: .45em;
  display: inline-block;
  height: 2em;
  width: 2em;
  padding: .15em;
  background: white;
}

.site-header .primary .search .search-button:hover, .site-header .primary .search .search-button:focus, .site-header .primary .search .search-button:active {
  box-shadow: none;
  border: none;
}

@media (min-width: 68.75em) {
  .site-header .primary .search {
    width: 22.41379%;
    float: left;
    margin-right: 3.44828%;
    margin-top: .7em;
    margin-bottom: 0;
  }
}

@media (min-width: 81.25em) {
  .site-header .primary .search {
    width: 23.07692%;
    float: left;
    margin-right: 2.5641%;
  }
}

.site-header .shop {
  margin-bottom: 1.5em;
  display: block;
  padding: .5em .5em .5em 1em;
  border-bottom: 1px solid #777777;
}

.site-header .shop svg {
  height: 2.5em;
  width: 2.5em;
  fill: white;
}

.site-header .shop svg path {
  -webkit-transition: fill 0.25s ease-in-out;
  -ms-transition: fill 0.25s ease-in-out;
  transition: fill 0.25s ease-in-out;
}

.site-header .shop:hover svg path {
  fill: #f3ad00;
}

@media (min-width: 68.75em) {
  .site-header .shop {
    width: 9.48276%;
    float: right;
    margin-right: 0;
    border: none;
    padding: 0;
    display: inline-block;
    text-align: center;
    margin-top: .75em;
    margin-bottom: 0;
  }
}

@media (min-width: 81.25em) {
  .site-header .shop {
    width: 10.25641%;
    float: right;
    margin-right: 0;
  }
}

.js .site-header .primary .main-nav-toggle {
  display: inline-block;
}

@media (min-width: 68.75em) {
  .js .site-header .primary .main-nav-toggle {
    display: none;
  }
}

.js .js-dropdown-menu {
  visibility: hidden;
  overflow: hidden;
  max-height: 0;
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
}

@media (min-width: 68.75em) {
  .js .js-dropdown-menu {
    visibility: visible;
    max-height: inherit;
  }
}

.js .js-dropdown-menu.open {
  visibility: visible;
  max-height: 35em;
}

.js .header-main-navigation.open + .header-search.open {
  margin-top: 1.5em;
}

.cms-ready .primary.fixed {
  position: relative;
}

.site-footer ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
  margin-bottom: 1.5em;
}

.site-footer ul li {
  list-style: none;
}

.site-footer ul dd {
  margin: 0;
}

.site-footer .credit-heading {
  font-size: 1em;
  color: #ffffff;
}

.footer-links {
  padding: 0 0 0.75em 0;
  background: url("../images/bg-triangle-footer.png");
  background-size: 11.75em 11.125em;
  color: #4872b4;
}

.footer-links:before {
  display: block;
  content: "";
  background-image: url("../images/bg-american-flag.jpg");
  background-repeat: no-repeat;
  background-position: center;
  padding-bottom: 6.5%;
  background-size: cover;
  margin-bottom: 4.5em;
}

.footer-links a {
  display: inline-block;
  color: white;
  text-transform: uppercase;
}

.footer-links a:hover {
  color: white;
}

.footer-links ul li {
  margin-bottom: 0.75em;
}

@media (min-width: 81.25em) {
  .footer-links ul li {
    margin-bottom: 1.5em;
  }
}

@media screen and (max-width: 95.625em) and (orientation: portrait) {
  .footer-links:before {
    padding-bottom: 15%;
  }
}

@media (min-width: 40.625em) {
  .footer-navigation {
    width: 47.36842%;
    float: left;
    margin-right: 5.26316%;
    min-height: 15em;
  }
  .footer-navigation ul {
    -moz-column-count: 2;
    -webkit-column-count: 2;
    column-count: 2;
  }
  .footer-navigation ul:after {
    display: table;
    clear: both;
    content: '';
  }
  .footer-navigation ul:before {
    display: table;
    clear: both;
    content: '';
  }
}

@media (min-width: 68.75em) {
  .footer-navigation {
    width: 48.71795%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .footer-navigation {
    width: 57.62712%;
    float: left;
    margin-right: 1.69492%;
  }
  .footer-navigation ul {
    -moz-column-count: 3;
    -webkit-column-count: 3;
    column-count: 3;
  }
}

.footer-production-by {
  margin-bottom: 1.5em;
}

.footer-production-by .wgbh {
  fill: white;
  width: 6em;
  max-height: 3em;
}

.footer-production-by ul {
  margin-top: 1.5em;
}

@media (min-width: 40.625em) {
  .footer-production-by {
    width: 47.36842%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 68.75em) {
  .footer-production-by {
    width: 48.71795%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .footer-production-by {
    width: 19.49153%;
    float: left;
    margin-right: 1.69492%;
  }
}

.footer-funding {
  color: white;
}

.footer-funding ul li {
  margin-bottom: 1.5em;
}

.footer-funding svg {
  width: 12em;
  max-height: 12em;
}

.footer-funding svg * {
  fill: white;
}

@media (min-width: 40.625em) {
  .footer-funding {
    width: 47.36842%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 68.75em) {
  .footer-funding {
    width: 48.71795%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .footer-funding {
    width: 19.49153%;
    float: right;
    margin-right: 0;
  }
}

.footer-copyright {
  display: inline-block;
  color: #ffffff;
  margin-bottom: 1.5em;
}

.footer-copyright span {
  display: block;
}

@media (min-width: 40.625em) {
  .footer-copyright {
    width: 47.36842%;
    float: left;
    margin-right: 5.26316%;
    clear: both;
    padding-top: 2.75vw;
    margin-bottom: 0;
  }
}

@media (min-width: 68.75em) {
  .footer-copyright {
    width: 48.71795%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .footer-copyright {
    padding-top: 2.925vw;
    width: 32.20339%;
    float: left;
    margin-right: 1.69492%;
  }
}

.footer-logo-type {
  display: block;
  font-size: 4vw;
  line-height: 1.275;
}

.footer-logo-type svg {
  fill: #243757;
  max-height: 3.875em;
}

@media (min-width: 40.625em) {
  .footer-logo-type {
    width: 47.36842%;
    float: right;
    margin-right: 0;
    text-align: center;
  }
}

@media (min-width: 68.75em) {
  .footer-logo-type {
    width: 48.71795%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .footer-logo-type {
    width: 66.10169%;
    float: right;
    margin-right: 0;
    font-size: 3.5vw;
  }
}

.connect-social {
  background-image: url("../images/bg-triangle-newsletter.png");
  background-size: 11.75em 11.125em;
  color: white;
  margin-bottom: 4.5em;
  overflow-x: hidden;
}

.connect-social h3 {
  color: white;
}

.connect-social .email-signup {
  text-align: center;
  padding: 1.5em 0;
  overflow: hidden;
}

.connect-social .email-signup h3 {
  margin-bottom: 0.769em;
}

.connect-social .email-signup .email-signup-form .note {
  -webkit-box-ordinal-group: 2;
  -ms-flex-order: 1;
  order: 1;
}

.connect-social .email-signup.vote .headline {
  padding: 0 10% 0 0;
  width: 100%;
}

.connect-social .email-signup.vote .headline .vote-headline {
  background: url(../images/title_the-vote.png) no-repeat center center;
  background-size: contain;
  max-width: 300px;
  width: 100%;
  height: 57px;
  display: block;
  margin: 0 auto;
  text-indent: -99999px;
}

@media (max-width: 500px) {
  .connect-social .email-signup.vote .headline .vote-headline {
    max-width: 80%;
    margin: 0;
  }
}

.connect-social .email-signup .headline {
  width: 100%;
  padding: 0 10%;
}

@media (min-width: 40.625em) {
  .connect-social .email-signup {
    width: 47.36842%;
    float: left;
    margin-right: 5.26316%;
    position: relative;
  }
  .connect-social .email-signup .email-signup-form {
    width: 80%;
    margin: 0 auto;
  }
}

@media (min-width: 68.75em) {
  .connect-social .email-signup {
    width: 48.71795%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .connect-social .email-signup {
    width: 57.62712%;
    float: left;
    margin-right: 1.69492%;
  }
  .connect-social .email-signup.vote h3 {
    text-align: center;
    margin-bottom: 15px;
  }
  .connect-social .email-signup h3 {
    text-align: left;
    margin-bottom: 15px;
  }
  .connect-social .email-signup .email-signup-form {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
    flex-wrap: wrap;
    width: 100%;
    padding-right: 10%;
  }
  .connect-social .email-signup .email-signup-form .email-field {
    float: left;
    display: inline-block;
    margin-bottom: 0;
    margin-right: 1%;
    margin-left: 0;
    width: 45%;
  }
  .connect-social .email-signup .email-signup-form .zip-code-field {
    float: left;
    display: inline-block;
    margin-bottom: 0;
    width: 30%;
  }
  .connect-social .email-signup .email-signup-form button[type="submit"] {
    width: 24%;
    display: inline-block;
  }
  .connect-social .email-signup .email-signup-form .note {
    width: 75%;
  }
}

@media (min-width: 95.625em) {
  .connect-social .email-signup .email-signup-form button[type="submit"] {
    width: 19%;
  }
}

.connect-social .footer-social-links {
  text-align: center;
  padding: 3em 0;
  background: #243757;
  width: 110%;
  margin-left: -5%;
}

.connect-social .footer-social-links .social-list {
  margin-bottom: 0;
  width: 70%;
  margin: 0 auto;
}

.connect-social .footer-social-links .social-list a {
  width: 3em;
  height: 3em;
}

.connect-social .footer-social-links .social-list a:hover svg .background {
  fill: #835d00;
}

.connect-social .footer-social-links .social-list svg {
  width: 100%;
  height: 100%;
}

.connect-social .footer-social-links .social-list svg .background {
  fill: #f3ad00;
}

.connect-social .footer-social-links .hashtag {
  display: block;
}

@media (min-width: 40.625em) {
  .connect-social .footer-social-links {
    width: 47.36842%;
    float: right;
    margin-right: 0;
    position: relative;
    padding-left: 5.625%;
    margin-left: inherit;
  }
  .connect-social .footer-social-links:before {
    content: "";
    position: absolute;
    background: white;
    height: 100%;
    top: 0;
    right: 100%;
    width: calc(5.26316% * 2);
  }
  .connect-social .footer-social-links:after {
    content: "";
    position: absolute;
    height: 100%;
    width: 11.25%;
    background: #243757;
    top: 0;
    left: 100%;
  }
  .connect-social .footer-social-links .social-list {
    width: 90%;
  }
}

@media (min-width: 68.75em) {
  .connect-social .footer-social-links {
    width: 48.71795%;
    float: right;
    margin-right: 0;
  }
  .connect-social .footer-social-links .social-list {
    display: inline-block;
    width: auto;
  }
  .connect-social .footer-social-links:before {
    width: 5.26316%;
  }
}

@media (min-width: 81.25em) {
  .connect-social .footer-social-links {
    width: 40.67797%;
    float: right;
    margin-right: 0;
    padding-left: 0;
  }
  .connect-social .footer-social-links:after {
    width: 50%;
  }
  .connect-social .footer-social-links:before {
    width: 4%;
    right: 100%;
  }
}

@media (min-width: 95.625em) {
  .connect-social .footer-social-links:after {
    width: calc((100vw - 1400px) / 2);
  }
}

@media (min-width: 40.625em) {
  .connect-social .grid {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
  }
}

.ad-block {
  max-height: 0;
  padding: 0;
  visibility: hidden;
  line-height: 0;
}

.js .ad-block {
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
  position: relative;
  text-align: center;
}

.js .ad-block.open.ad-side-interior:before, .js .ad-block.open.ad-side-interior:after {
  background: none;
}

.js .ad-block.open {
  padding: 1.5em 0 3em;
  max-height: 25em;
  visibility: visible;
  z-index: inherit;
  line-height: inherit;
}

.js .ad-block.open .ad {
  display: inline-block;
}

.js .ad-block.open:before, .js .ad-block.open:after {
  content: '';
  position: absolute;
  height: 100%;
  width: 100%;
  top: 0;
  left: 0;
}

.js .ad-block.open:before {
  background: url("../images/bg-deco-circle.png");
  background-size: 18em 18em;
  z-index: -2;
}

.js .ad-block.open:after {
  z-index: -1;
  background: rgba(227, 227, 227, 0.5);
}

.js .ad-block.open.footer-ad {
  padding-top: 2.25em;
  padding-bottom: 2.625em;
  margin-bottom: 4.5em;
}

.js .ad-block .ad {
  margin: 0 auto;
  position: relative;
  display: inline-block;
  display: none;
}

.js .ad-block .ad:after {
  display: table;
  clear: both;
  content: '';
}

.js .ad-block .ad:before {
  display: table;
  clear: both;
  content: '';
}

.js .ad-block .ad div {
  clear: both;
}

.js .ad-block .ad span, .js .ad-block .ad a {
  font-size: .75em;
  float: left;
}

.js .ad-block .ad a {
  float: right;
  color: #174189;
}

.js .ad-block .ad button {
  border: none;
  background: none;
  box-shadow: none;
  background: #777777;
  width: 1.5em;
  height: 1.5em;
  position: absolute;
  top: 1.25em;
  right: 0;
}

.js .ad-block .ad button:hover, .js .ad-block .ad button:focus, .js .ad-block .ad button:active {
  box-shadow: none;
  border: none;
}

.js .ad-block .ad button svg {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  width: 75%;
  height: 75%;
}

@media (min-width: 68.75em) {
  .js .ad-block .ad button {
    width: 2em;
    height: 2em;
  }
}

.shop-ad {
  background: white;
  text-align: center;
  padding-top: 4.5em;
  padding-bottom: 4.5em;
}

.shop-ad a {
  display: inline-block;
  position: relative;
}

.shop-ad a.mobile {
  background-image: url("../images/amex_shop_mobile.jpg");
  background-repeat: no-repeat;
  width: 20em;
  height: 6.25em;
}

.shop-ad a.desktop {
  background-image: url("../images/amex_shop_desktop.jpg");
  background-repeat: no-repeat;
  width: 75em;
  height: 9.375em;
}

.connect-social + .shop-ad {
  padding-top: 0;
}

@media (min-width: 68.75em) {
  .ad-interior-content {
    width: 61.53846%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .ad-interior-content {
    width: 66.10169%;
    float: left;
    margin-right: 1.69492%;
  }
}

@media (min-width: 68.75em) {
  .ad-side-interior {
    margin-top: 1.5em;
    width: 35.89744%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .ad-side-interior {
    width: 32.20339%;
    float: right;
    margin-right: 0;
  }
}

:-webkit-full-screen-ancestor:not(iframe) .pbs-cleanslate, :-webkit-full-screen-ancestor:not(iframe) .site-header, :-webkit-full-screen-ancestor:not(iframe) .ad-block, :-webkit-full-screen-ancestor:not(iframe) .cms, :-webkit-full-screen-ancestor:not(iframe) .teaser-item, :-webkit-full-screen-ancestor:not(iframe) .site-footer,
:-webkit-full-screen-ancestor:not(iframe) .film-sub-nav, :-webkit-full-screen-ancestor:not(iframe) .Wallop-buttonPrevious, :-webkit-full-screen-ancestor:not(iframe) .Wallop-buttonNext, :-webkit-full-screen-ancestor:not(iframe) .accordion-toggle, :-webkit-full-screen-ancestor:not(iframe) .tab-panel, :-webkit-full-screen-ancestor:not(iframe) .full-screen {
  display: none !important;
}

body {
  overflow-x: hidden;
}

body.fixed {
  position: fixed;
  left: 0;
  top: 0;
  width: 100%;
}

iframe {
  background: #999999;
}

img {
  max-width: 100%;
}

a {
  -webkit-transition: color 0.3s ease-in-out;
  -ms-transition: color 0.3s ease-in-out;
  transition: color 0.3s ease-in-out;
  color: #bb0b0e;
  text-decoration: none;
  font-weight: 700;
}

a:hover {
  color: #8c0007;
  text-decoration: underline;
}

.call-to-action {
  -webkit-transition: all 0.5s ease-in-out;
  -ms-transition: all 0.5s ease-in-out;
  transition: all 0.5s ease-in-out;
  background: #bb0b0e;
  color: white;
  border-radius: .4375em;
  font-weight: 700;
  text-transform: uppercase;
  font-size: 1.125em;
  padding: 1em 3.5em;
  position: relative;
  top: 0;
}

.call-to-action:hover {
  color: white;
  background: #a30a0c;
  text-decoration: none;
}

.call-to-action:active {
  top: .2777777778em;
}

figure {
  margin: 0;
}

figcaption, .caption {
  font-size: .85em;
  color: #999999;
  font-style: italic;
}

figcaption p, .caption p {
  margin: 0;
}

.caption h4, .caption .delta {
  margin: .25em 0;
  font-style: normal;
}

q {
  display: block;
  color: #999999;
  font-size: 1.15em;
  margin: 1.5em 5%;
  position: relative;
}

q:before {
  content: '';
  position: absolute;
  height: 110%;
  width: .5em;
  background: #999999;
  left: -1.5em;
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
}

@media (min-width: 68.75em) {
  q {
    margin-left: 10%;
    margin-right: 10%;
  }
}

cite {
  display: block;
  font-size: 1.25em;
  margin: 1.5em 5%;
  color: #999999;
}

@media (min-width: 68.75em) {
  cite {
    margin-left: 10%;
    margin-right: 10%;
    position: relative;
  }
  cite:before {
    content: '';
    position: absolute;
    display: inline-block;
    top: 0;
    left: -3.5em;
    background: url("../images/quote.svg") no-repeat;
    background-size: 2.5em;
    width: 2.5em;
    height: 2.5em;
  }
}

.jump-link:before {
  display: block;
  content: "";
  height: 6em;
  margin: -6em 0 0;
}

.jump-link.site-footer:before {
  height: 9em;
  margin: -9em 0 0;
}

.cove-wrapper {
  margin-bottom: 1.5em;
}

.cove-container:before {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  z-index: 3;
  color: white;
  content: 'Video Requires Javascript';
}

.js .cove-container:before {
  content: none;
}

.cove-container {
  position: relative;
  height: 0;
  padding-bottom: 56.25%;
  background: transparent;
  -webkit-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-name: fadeIn;
  animation-name: fadeIn;
}

.cove-container iframe {
  background: transparent;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 2;
}

.grid {
  max-width: 87.5em;
  margin-left: auto;
  margin-right: auto;
  padding: 0 5%;
}

.grid:after {
  content: " ";
  display: block;
  clear: both;
}

.grid:after {
  display: table;
  clear: both;
  content: '';
}

.grid:before {
  display: table;
  clear: both;
  content: '';
}

@media (min-width: 95.625em) {
  .grid {
    padding: 0;
  }
}

.grid.full {
  max-width: 100%;
  padding: 0;
}

.plugin-item-block:after {
  display: table;
  clear: both;
  content: '';
}

.plugin-item-block:before {
  display: table;
  clear: both;
  content: '';
}

.page {
  margin-top: 3em;
  margin-bottom: 3em;
}

.page:after {
  display: table;
  clear: both;
  content: '';
}

.page:before {
  display: table;
  clear: both;
  content: '';
}

.right-arrow {
  fill: white;
  max-width: 2em;
  max-height: 2em;
}

.passport-icon {
  vertical-align: middle;
  margin-top: -.15em;
  max-width: 1.25em;
  max-height: 1.25em;
}

.related-feature-list {
  clear: both;
  margin-bottom: 3em;
  margin-top: 3em;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5jc3MiLCJzb3VyY2VzIjpbIm1haW4uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvX2JyZWFrcG9pbnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fY29udGV4dC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19oZWxwZXJzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3BhcnNlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19xdWVyeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3NpbmdsZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvc2luZ2xlL19kZWZhdWx0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fZG91YmxlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQtcGFpci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kb3VibGUtc3RyaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL190cmlwbGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3RyaXBsZS9fZGVmYXVsdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3Jlc29sdXRpb24vX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbm8tcXVlcnkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fcmVzcG9uZC10by5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19sZWdhY3ktc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3MvX3N1c3kuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9fc3VzeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L19zdS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L191dGlsaXRpZXMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdmFsaWRhdGlvbi5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19ncmlkLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19mbG9hdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc2hhcmVkLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zdXBwb3J0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3N1cHBvcnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcHJlZml4LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JhY2tncm91bmQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYm94LXNpemluZy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19yZW0uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fY2xlYXJmaXguc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19pbnNwZWN0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fb3V0cHV0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fZGlyZWN0aW9uLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fYmFja2dyb3VuZC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2NvbnRhaW5lci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX21hcmdpbnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19wYWRkaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19jb250YWluZXIuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX3NwYW4uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2VuZC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9faXNvbGF0ZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NldHRpbmdzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fdmFsaWRhdGlvbi5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dyaWRzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYm94LXNpemluZy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRleHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19iYWNrZ3JvdW5kLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGFpbmVyLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc3Bhbi5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2d1dHRlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19pc29sYXRlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ2FsbGVyeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3Jvd3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19tYXJnaW5zLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcGFkZGluZy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JsZWVkLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYnJlYWtwb2ludC1wbHVnaW4uc2NzcyIsIl9ub3JtYWxpemUuc2NzcyIsIl9jb25maWcuc2NzcyIsIl9taXhpbnMuc2NzcyIsIl9hbmltYXRpb25zLnNjc3MiLCJfdHlwb2dyYXBoeS5zY3NzIiwiX2dyaWRIZWxwZXJzLnNjc3MiLCJfc29jaWFsLnNjc3MiLCJfdGVhc2VySXRlbS5zY3NzIiwiX3BsYWNlaG9sZGVycy5zY3NzIiwiX2Nhcm91c2VsLnNjc3MiLCJfYWNjb3JkaW9ucy5zY3NzIiwiX2ZpbHRlcnMuc2NzcyIsIl9yZWxhdGVkRmlsbXMuc2NzcyIsIl9uZXdzbGV0dGVyRm9ybS5zY3NzIiwiX2hvbWVQYWdlSGVyby5zY3NzIiwiX3BhZ2luYXRpb24uc2NzcyIsIl9zbmlwcGV0cy5zY3NzIiwiX2ZpbG1MaXN0LnNjc3MiLCJfZmlsbURldGFpbC5zY3NzIiwiX2ZlYXR1cmVMaXN0aW5ncy5zY3NzIiwiX2ZlYXR1cmVEZXRhaWwuc2NzcyIsIl9jb2xsZWN0aW9uRGV0YWlsLnNjc3MiLCJfZmVhdHVyZUZ1bGxXaWR0aC5zY3NzIiwiX3NlYXJjaFJlc3VsdHMuc2NzcyIsIl9uZXdzbGV0dGVyTW9kYWwuc2NzcyIsIl9oZWFkZXIuc2NzcyIsIl9mb290ZXIuc2NzcyIsIl9jb25uZWN0LnNjc3MiLCJfYWRzLnNjc3MiLCJfZ2xvYmFsR2VuZXJhbC5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vYmFzZSBzdHVmZlxuQGltcG9ydCBcImJyZWFrcG9pbnRcIjtcbkBpbXBvcnQgXCJzdXN5XCI7XG5AaW1wb3J0IFwibm9ybWFsaXplXCI7XG5AaW1wb3J0IFwiY29uZmlnXCI7XG5AaW1wb3J0IFwibWl4aW5zXCI7XG5AaW1wb3J0IFwiYW5pbWF0aW9uc1wiO1xuQGltcG9ydCBcInR5cG9ncmFwaHlcIjtcbkBpbXBvcnQgXCJncmlkSGVscGVyc1wiO1xuXG4vLyBzbWFsbCByZXVzYWJsZSBjb21wb25lbnRzXG5AaW1wb3J0IFwic29jaWFsXCI7XG5AaW1wb3J0IFwidGVhc2VySXRlbVwiO1xuQGltcG9ydCBcInBsYWNlaG9sZGVyc1wiO1xuQGltcG9ydCBcImNhcm91c2VsXCI7XG5AaW1wb3J0IFwiYWNjb3JkaW9uc1wiO1xuQGltcG9ydCBcImZpbHRlcnNcIjtcbkBpbXBvcnQgXCJyZWxhdGVkRmlsbXNcIjtcbkBpbXBvcnQgXCJuZXdzbGV0dGVyRm9ybVwiO1xuQGltcG9ydCBcImhvbWVQYWdlSGVyb1wiO1xuQGltcG9ydCBcInBhZ2luYXRpb25cIjtcbkBpbXBvcnQgXCJzbmlwcGV0c1wiO1xuXG4vLyBwYWdlc1xuQGltcG9ydCBcImZpbG1MaXN0XCI7XG5AaW1wb3J0IFwiZmlsbURldGFpbFwiO1xuQGltcG9ydCBcImZlYXR1cmVMaXN0aW5nc1wiO1xuQGltcG9ydCBcImZlYXR1cmVEZXRhaWxcIjtcbkBpbXBvcnQgXCJjb2xsZWN0aW9uRGV0YWlsXCI7XG5AaW1wb3J0IFwiZmVhdHVyZUZ1bGxXaWR0aFwiO1xuQGltcG9ydCBcInNlYXJjaFJlc3VsdHNcIjtcblxuLy8gaGlnaCBsZXZlbCBjb21wb25lbnRzXG5AaW1wb3J0IFwibmV3c2xldHRlck1vZGFsXCI7XG5AaW1wb3J0IFwiaGVhZGVyXCI7XG5AaW1wb3J0IFwiZm9vdGVyXCI7XG5AaW1wb3J0IFwiY29ubmVjdFwiO1xuQGltcG9ydCBcImFkc1wiO1xuXG4vL2dlbmVyYWwgZ2xvYmFsXG5AaW1wb3J0IFwiZ2xvYmFsR2VuZXJhbFwiO1xuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kQnJlYWtwb2ludC1TZXR0aW5nczogKFxuICAnZGVmYXVsdCBtZWRpYSc6IGFsbCxcbiAgJ2RlZmF1bHQgZmVhdHVyZSc6IG1pbi13aWR0aCxcbiAgJ2RlZmF1bHQgcGFpcic6IHdpZHRoLFxuXG4gICdmb3JjZSBhbGwgbWVkaWEgdHlwZSc6IGZhbHNlLFxuICAndG8gZW1zJzogZmFsc2UsXG4gICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnOiB0cnVlLFxuXG4gICdubyBxdWVyaWVzJzogZmFsc2UsXG4gICdubyBxdWVyeSBmYWxsYmFja3MnOiBmYWxzZSxcblxuICAnYmFzZSBmb250IHNpemUnOiAxNnB4LFxuXG4gICdsZWdhY3kgc3ludGF4JzogZmFsc2Vcbik7XG5cbiRicmVha3BvaW50OiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJicmVha3BvaW50L3NldHRpbmdzXCI7XG5AaW1wb3J0ICdicmVha3BvaW50L2NvbnRleHQnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9oZWxwZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcGFyc2Vycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L25vLXF1ZXJ5JztcblxuQGltcG9ydCAnYnJlYWtwb2ludC9yZXNwb25kLXRvJztcblxuQGltcG9ydCBcImJyZWFrcG9pbnQvbGVnYWN5LXNldHRpbmdzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBsZWdhY3ktc2V0dGluZ3Mtd2FybmluZztcblxuICAvLyBSZXNldCBjb250ZXh0c1xuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcblxuICAkYnJlYWtwb2ludDogYnJlYWtwb2ludCgkcXVlcnksIGZhbHNlKTtcblxuICAkcXVlcnktc3RyaW5nOiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnknKTtcbiAgJHF1ZXJ5LWZhbGxiYWNrOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnZmFsbGJhY2snKTtcblxuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnY29udGV4dCBob2xkZXInKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnkgY291bnQnKSAhZ2xvYmFsO1xuXG4gIC8vIEFsbG93IGZvciBhbiBhcy1uZWVkZWQgb3ZlcnJpZGUgb3IgdXNhZ2Ugb2Ygbm8gcXVlcnkgZmFsbGJhY2suXG4gIEBpZiAkbm8tcXVlcnkgIT0gZmFsc2Uge1xuICAgICRxdWVyeS1mYWxsYmFjazogJG5vLXF1ZXJ5O1xuICB9XG5cbiAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJ25vLXF1ZXJ5JywgJHF1ZXJ5LWZhbGxiYWNrKTtcbiAgfVxuXG4gIC8vIFByaW50IE91dCBRdWVyeSBTdHJpbmdcbiAgQGlmIG5vdCBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpIHtcbiAgICBAbWVkaWEgI3skcXVlcnktc3RyaW5nfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpICE9IGZhbHNlIG9yIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykgPT0gdHJ1ZSB7XG5cbiAgICAkdHlwZTogdHlwZS1vZihicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykpO1xuICAgICRwcmludDogZmFsc2U7XG5cbiAgICBAaWYgKCR0eXBlID09ICdib29sJykge1xuICAgICAgJHByaW50OiB0cnVlO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ2xpc3QnKSB7XG4gICAgICBAZWFjaCAkd3JhcHBlciBpbiBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09ICR3cmFwcGVyIHtcbiAgICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXcml0ZSBGYWxsYmFja1xuICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSBhbmQgKCRwcmludCA9PSB0cnVlKSB7XG4gICAgICAkdHlwZS1mYWxsYmFjazogdHlwZS1vZigkcXVlcnktZmFsbGJhY2spO1xuXG4gICAgICBAaWYgKCR0eXBlLWZhbGxiYWNrICE9ICdib29sJykge1xuICAgICAgICAjeyRxdWVyeS1mYWxsYmFja30gJiB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG59XG5cblxuQG1peGluIG1xKCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSGFzIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaGFzKCRzZXR0aW5nKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludCwgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0KCRzZXR0aW5nKSB7XG4gIEBpZiBicmVha3BvaW50LWhhcygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkYnJlYWtwb2ludCwgJHNldHRpbmcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEJyZWFrcG9pbnQtU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaWYgKHN0ci1pbmRleCgkc2V0dGluZywgJy0nKSBvciBzdHItaW5kZXgoJHNldHRpbmcsICdfJykpIGFuZCBzdHItaW5kZXgoJHNldHRpbmcsICcgJykgPT0gbnVsbCB7XG4gICAgQHdhcm4gXCJXb3JkcyBpbiBCcmVha3BvaW50IHNldHRpbmdzIHNob3VsZCBiZSBzZXBhcmF0ZWQgYnkgc3BhY2VzLCBub3QgZGFzaGVzIG9yIHVuZGVyc2NvcmVzLiBQbGVhc2UgcmVwbGFjZSBkYXNoZXMgYW5kIHVuZGVyc2NvcmVzIGJldHdlZW4gd29yZHMgd2l0aCBzcGFjZXMuIFNldHRpbmdzIHdpbGwgbm90IHdvcmsgYXMgZXhwZWN0ZWQgdW50aWwgY2hhbmdlZC5cIjtcbiAgfVxuICAkYnJlYWtwb2ludDogbWFwLW1lcmdlKCRicmVha3BvaW50LCAoJHNldHRpbmc6ICR2YWx1ZSkpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJGJyZWFrcG9pbnQtY2hhbmdlOiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBia3B0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuQG1peGluIGJrcHQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVtb3ZlIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJHNldHRpbmdzKSA9PSAxIHtcbiAgICAkc2V0dGluZ3M6IG50aCgkc2V0dGluZ3MsIDEpO1xuICB9XG5cbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkYnJlYWtwb2ludDogbWFwLXJlbW92ZSgkYnJlYWtwb2ludCwgJHNldHRpbmcpICFnbG9iYWw7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgJGJyZWFrcG9pbnQtcmVzZXQ6IGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIGJrcHQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gICRicmVha3BvaW50LXJlc2V0OiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncyk7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIEJyZWFrcG9pbnQgVmFyaWFibGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpO1xuJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEhhcyBDb250ZXh0XG4vLyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHlvdSBhcmUgaW5zaWRlIGEgQnJlYWtwb2ludCBxdWVyeVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIHtcbiAgQGlmIGxlbmd0aCgkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50KSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBHZXQgQ29udGV4dFxuLy8gJGZlYXR1cmU6IElucHV0IGZlYXR1cmUgdG8gZ2V0IGl0J3MgY3VycmVudCBNUSBjb250ZXh0LiBSZXR1cm5zIGZhbHNlIGlmIG5vIGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGZlYXR1cmUpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKSB7XG4gICAgJGdldDogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gICAgLy8gU3BlY2lhbCBoYW5kbGluZyBvZiBuby1xdWVyeSBmcm9tIGdldCBzaWRlIHNvIC9mYWxzZS8gcHJlcGVuZHMgYXJlbid0IHJldHVybmVkXG4gICAgQGlmICRmZWF0dXJlID09ICduby1xdWVyeScge1xuICAgICAgQGlmIHR5cGUtb2YoJGdldCkgPT0gJ2xpc3QnIGFuZCBsZW5ndGgoJGdldCkgPiAxIGFuZCBudGgoJGdldCwgMSkgPT0gZmFsc2Uge1xuICAgICAgICAkZ2V0OiBudGgoJGdldCwgbGVuZ3RoKCRnZXQpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQHJldHVybiAkZ2V0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIGFuZCAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgIEByZXR1cm4gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHNldCBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSkge1xuICBAaWYgJHZhbHVlID09ICdtb25vY2hyb21lJyB7XG4gICAgJGZlYXR1cmU6ICdtb25vY2hyb21lJztcbiAgfVxuXG4gICRjdXJyZW50OiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgQGlmICRjdXJyZW50IGFuZCBsZW5ndGgoJGN1cnJlbnQpID09ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgIEB3YXJuIFwiWW91IGhhdmUgYWxyZWFkeSBxdWVyaWVkIGFnYWluc3QgYCN7JGZlYXR1cmV9YC4gVW5leHBlY3RlZCB0aGluZ3MgbWF5IGhhcHBlbiBpZiB5b3UgcXVlcnkgYWdhaW5zdCB0aGUgc2FtZSBmZWF0dXJlIG1vcmUgdGhhbiBvbmNlIGluIHRoZSBzYW1lIGBhbmRgIHF1ZXJ5LiBCcmVha3BvaW50IGlzIG92ZXJ3cml0aW5nIHRoZSBjdXJyZW50IGNvbnRleHQgd2l0aCBgI3skdmFsdWV9YFwiO1xuICB9XG5cbiAgQGlmIG5vdCBtYXAtaGFzLWtleSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSkge1xuICAgICR2LWhvbGRlcjogKCk7XG4gICAgQGZvciAkaSBmcm9tIDEgdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHYtaG9sZGVyOiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHYtaG9sZGVyKTtcbiAgICBAZm9yICRpIGZyb20gJGxlbmd0aCB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IC0gMSB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHJlc2V0IGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cyB7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbnZlcnRzIHRoZSBpbnB1dCB2YWx1ZSB0byBCYXNlIEVNc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSkge1xuICAkdmFsdWUtdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIC8vIFdpbGwgY29udmVydCByZWxhdGl2ZSBFTXMgaW50byByb290IEVNcy5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIGFuZCB0eXBlLW9mKGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKSA9PSAnbnVtYmVyJyBhbmQgJHZhbHVlLXVuaXQgPT0gJ2VtJyB7XG4gICAgJGJhc2UtdW5pdDogdW5pdChicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSk7XG5cbiAgICBAaWYgJGJhc2UtdW5pdCA9PSAncHgnIG9yICRiYXNlLXVuaXQgPT0gJyUnIG9yICRiYXNlLXVuaXQgPT0gJ2VtJyBvciAkYmFzZS11bml0ID09ICdwdCcge1xuICAgICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKSAvIGJhc2UtY29udmVyc2lvbihicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSkgKiAxZW07XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICcje2JyZWFrcG9pbnQtZ2V0KFxcJ2Jhc2UgZm9udCBzaXplXFwnKX0gaXMgbm90IHNldCBpbiB2YWxpZCB1bml0cyBmb3IgZm9udCBzaXplISc7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSkge1xuICAkdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIEBpZiAkdW5pdCA9PSAncHgnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDE2cHggKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJyUnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDEwMCUgKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ2VtJyB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ3B0JyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxMnB0ICogMWVtO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbi8vICAgIEB3YXJuICdFdmVyeXRoaW5nIGlzIHRlcnJpYmxlISBXaGF0IGhhdmUgeW91IGRvbmU/ISc7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIGhhdmUgYSBtaW4vbWF4IHBhaXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWluLW1heC1mZWF0dXJlczogJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvci1pbmRleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2Utd2lkdGgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9ub2Nocm9tZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzb2x1dGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4tbWF4KCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LW1pbi1tYXgtZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBoYXZlIGEgc3RyaW5nIHZhbHVlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXN0cmluZy1mZWF0dXJlczogICdvcmllbnRhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NhbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWFzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbHVtaW5vc2l0eSc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXN0cmluZy12YWx1ZSgkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiBicmVha3BvaW50LW1pbi1tYXgoJGl0ZW0pIHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWluLSN7JGl0ZW19JyBvciAkZmVhdHVyZSA9PSAnbWF4LSN7JGl0ZW19JyB7XG4gICAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBpcyBhIG1lZGlhIHR5cGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWVkaWEtdHlwZXM6ICAnYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JyYWlsbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnZW1ib3NzZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFuZGhlbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvamVjdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdzY3JlZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlZWNoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICd0dic7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLW1lZGlhKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRtZWRpYSBpbiAkYnJlYWtwb2ludC1tZWRpYS10eXBlcyB7XG4gICAgQGlmICgkZmVhdHVyZSA9PSAkbWVkaWEpIG9yICgkZmVhdHVyZSA9PSAnbm90ICN7JG1lZGlhfScpIG9yICgkZmVhdHVyZSA9PSAnb25seSAjeyRtZWRpYX0nKSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIHN0YW5kIGFsb25lXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXM6ICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3ItaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dyaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbm9jaHJvbWUnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLXJlc29sdXRpb24oJGZlYXR1cmUpIHtcbiAgJHJlc29sdXRpb25zOiAnZGV2aWNlLXBpeGVsLXJhdGlvJywgJ2Rwcic7XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSB7XG4gICAgJHJlc29sdXRpb25zOiBhcHBlbmQoJHJlc29sdXRpb25zLCAncmVzb2x1dGlvbicpO1xuICB9XG5cbiAgQGVhY2ggJHJlc28gaW4gJHJlc29sdXRpb25zIHtcbiAgICBAaWYgaW5kZXgoJGZlYXR1cmUsICRyZXNvKSBvciBpbmRleCgkZmVhdHVyZSwgJ21pbi0jeyRyZXNvfScpIG9yIGluZGV4KCRmZWF0dXJlLCAnbWF4LSN7JHJlc299Jykge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQYXJzZXIgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJwYXJzZXJzL3F1ZXJ5XCI7XG5AaW1wb3J0IFwicGFyc2Vycy9zaW5nbGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL2RvdWJsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvdHJpcGxlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy9yZXNvbHV0aW9uXCI7XG5cbiRNZW1vLUV4aXN0czogZnVuY3Rpb24tZXhpc3RzKG1lbW8tZ2V0KSBhbmQgZnVuY3Rpb24tZXhpc3RzKG1lbW8tc2V0KTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEZ1bmN0aW9uXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50KCRxdWVyeSwgJGNvbnRleHRzLi4uKSB7XG4gICRydW46IHRydWU7XG4gICRyZXR1cm46ICgpO1xuXG4gIC8vIEdyYWIgdGhlIE1lbW8gT3V0cHV0IGlmIE1lbW9pemF0aW9uIGNhbiBiZSBhIHRoaW5nXG4gIEBpZiAkTWVtby1FeGlzdHMge1xuICAgICRyZXR1cm46IG1lbW8tZ2V0KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnQgJHF1ZXJ5ICRjb250ZXh0cyk7XG5cbiAgICBAaWYgJHJldHVybiAhPSBudWxsIHtcbiAgICAgICRydW46IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBub3QgJE1lbW8tRXhpc3RzIG9yICRydW4ge1xuICAgIC8vIEludGVybmFsIFZhcmlhYmxlc1xuICAgICRxdWVyeS1zdHJpbmc6ICcnO1xuICAgICRxdWVyeS1mYWxsYmFjazogZmFsc2U7XG4gICAgJHJldHVybjogKCk7XG5cbiAgICAvLyBSZXNlcnZlIEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRob2xkZXItY29udGV4dDogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjtcbiAgICAkaG9sZGVyLXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50O1xuXG4gICAgLy8gUmVzZXQgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG5cblxuICAgIC8vIFRlc3QgdG8gc2VlIGlmIGl0J3MgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdFxuICAgICRvci1saXN0OiBpZihsaXN0LXNlcGFyYXRvcigkcXVlcnkpID09ICdjb21tYScsIHRydWUsIGZhbHNlKTtcblxuXG4gICAgQGlmICgkb3ItbGlzdCA9PSBmYWxzZSBhbmQgYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSBmYWxzZSkge1xuICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkcXVlcnkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkbGVuZ3RoOiBsZW5ndGgoJHF1ZXJ5KTtcblxuICAgICAgJGxhc3Q6IG50aCgkcXVlcnksICRsZW5ndGgpO1xuICAgICAgJHF1ZXJ5LWZhbGxiYWNrOiBicmVha3BvaW50LW5vLXF1ZXJ5KCRsYXN0KTtcblxuICAgICAgQGlmICgkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2UpIHtcbiAgICAgICAgJGxlbmd0aDogJGxlbmd0aCAtIDE7XG4gICAgICB9XG5cbiAgICAgIEBpZiAoYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSB0cnVlKSB7XG4gICAgICAgICRtcTogKCk7XG5cbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkbXE6IGFwcGVuZCgkbXEsIG50aCgkcXVlcnksICRpKSwgY29tbWEpO1xuICAgICAgICB9XG5cbiAgICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkbXEpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcXVlcnktc3RyaW5nOiAnJztcbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkcXVlcnktc3RyaW5nOiAkcXVlcnktc3RyaW5nICsgaWYoJGkgPT0gMSwgJycsICcsICcpICsgYnJlYWtwb2ludC1wYXJzZShudGgoJHF1ZXJ5LCAkaSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJHJldHVybjogKCdxdWVyeSc6ICRxdWVyeS1zdHJpbmcsXG4gICAgICAgICdmYWxsYmFjayc6ICRxdWVyeS1mYWxsYmFjayxcbiAgICAgICAgJ2NvbnRleHQgaG9sZGVyJzogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcixcbiAgICAgICAgJ3F1ZXJ5IGNvdW50JzogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudFxuICAgICk7XG4gICAgQGlmIGxlbmd0aCgkY29udGV4dHMpID4gMCBhbmQgbnRoKCRjb250ZXh0cywgMSkgIT0gZmFsc2Uge1xuICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCduby1xdWVyeScsICRxdWVyeS1mYWxsYmFjayk7XG4gICAgICB9XG4gICAgICAkY29udGV4dC1tYXA6ICgpO1xuICAgICAgQGVhY2ggJGNvbnRleHQgaW4gJGNvbnRleHRzIHtcbiAgICAgICAgJGNvbnRleHQtbWFwOiBtYXAtbWVyZ2UoJGNvbnRleHQtbWFwLCAoJGNvbnRleHQ6IGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGNvbnRleHQpKSk7XG4gICAgICB9XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKGNvbnRleHQ6ICRjb250ZXh0LW1hcCkpO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xuXG4gICAgQGlmICRNZW1vLUV4aXN0cyB7XG4gICAgICAkaG9sZGVyOiBtZW1vLXNldChicmVha3BvaW50LCBicmVha3BvaW50ICRxdWVyeSAkY29udGV4dHMsICRyZXR1cm4pO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmFsIEJyZWFrcG9pbnQgUGFyc2VyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlKCRxdWVyeSkge1xuICAvLyBJbmNyZWFzZSBudW1iZXIgb2YgJ2FuZCcgcXVlcmllc1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50ICsgMSAhZ2xvYmFsO1xuXG4gIC8vIFNldCB1cCBNZWRpYSBUeXBlXG4gICRxdWVyeS1wcmludDogJyc7XG5cbiAgJGZvcmNlLWFsbDogKChicmVha3BvaW50LWdldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnKSA9PSB0cnVlKSBhbmQgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgPT0gJ2FsbCcpKTtcbiAgJGVtcHR5LW1lZGlhOiB0cnVlO1xuICBAaWYgKCRmb3JjZS1hbGwgPT0gdHJ1ZSkgb3IgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgIT0gJ2FsbCcpIHtcbiAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAkcXVlcnktcHJpbnQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJyk7XG4gICAgJGVtcHR5LW1lZGlhOiBmYWxzZTtcbiAgfVxuXG5cbiAgJHF1ZXJ5LXJlc29sdXRpb246IGZhbHNlO1xuXG4gICRxdWVyeS1ob2xkZXI6IGJyZWFrcG9pbnQtcGFyc2UtcXVlcnkoJHF1ZXJ5KTtcblxuXG5cbiAgLy8gTG9vcCBvdmVyIGVhY2ggcGFyc2VkIG91dCBxdWVyeSBhbmQgd3JpdGUgaXQgdG8gJHF1ZXJ5LXByaW50XG4gICRmaXJzdDogdHJ1ZTtcblxuICBAZWFjaCAkZmVhdHVyZSBpbiAkcXVlcnktaG9sZGVyIHtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJGZlYXR1cmUpO1xuXG4gICAgLy8gUGFyc2UgYSBzaW5nbGUgZmVhdHVyZVxuICAgIEBpZiAoJGxlbmd0aCA9PSAxKSB7XG4gICAgICAvLyBGZWF0dXJlIGlzIGN1cnJlbnRseSBhIGxpc3QsIGdyYWIgdGhlIGFjdHVhbCB2YWx1ZVxuICAgICAgJGZlYXR1cmU6IG50aCgkZmVhdHVyZSwgMSk7XG5cbiAgICAgIC8vIE1lZGlhIFR5cGUgbXVzdCBieSBjb252ZW50aW9uIGJlIHRoZSBmaXJzdCBpdGVtLCBzbyBpdCdzIHNhZmUgdG8gZmxhdCBvdmVycmlkZSAkcXVlcnktcHJpbnQsIHdoaWNoIHJpZ2h0IG5vdyBzaG91bGQgb25seSBiZSB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlXG4gICAgICBAaWYgKGJyZWFrcG9pbnQtaXMtbWVkaWEoJGZlYXR1cmUpKSB7XG4gICAgICAgIEBpZiAoJGZvcmNlLWFsbCA9PSB0cnVlKSBvciAoJGZlYXR1cmUgIT0gJ2FsbCcpIHtcbiAgICAgICAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICRmZWF0dXJlO1xuICAgICAgICAgICRlbXB0eS1tZWRpYTogZmFsc2U7XG5cbiAgICAgICAgICAvLyBTZXQgQ29udGV4dFxuICAgICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1lZGlhLCAkcXVlcnktcHJpbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSBkb3VibGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDIpIHtcbiAgICAgIEBpZiAoYnJlYWtwb2ludC1pcy1yZXNvbHV0aW9uKCRmZWF0dXJlKSAhPSBmYWxzZSkge1xuICAgICAgICAkcXVlcnktcmVzb2x1dGlvbjogJGZlYXR1cmU7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IG51bGw7XG4gICAgICAgIC8vIElmIGl0J3MgYSBzdHJpbmcvbnVtYmVyIHBhaXIsXG4gICAgICAgIC8vIHdlIGNoZWNrIHRvIHNlZSBpZiBvbmUgaXMgYSBzaW5nbGUtc3RyaW5nIHZhbHVlLFxuICAgICAgICAvLyB0aGVuIHdlIHBhcnNlIGl0IGFzIGEgbm9ybWFsIGRvdWJsZVxuICAgICAgICAkYWxwaGE6IG50aCgkZmVhdHVyZSwgMSk7XG4gICAgICAgICRiZXRhOiBudGgoJGZlYXR1cmUsIDIpO1xuICAgICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRhbHBoYSkgb3IgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRiZXRhKSB7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGFscGhhLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGJldGEsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSB0cmlwbGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDMpIHtcbiAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgIH1cblxuICB9XG5cbiAgQGlmICgkcXVlcnktcmVzb2x1dGlvbiAhPSBmYWxzZSkge1xuICAgICRxdWVyeS1wcmludDogYnJlYWtwb2ludC1idWlsZC1yZXNvbHV0aW9uKCRxdWVyeS1wcmludCwgJHF1ZXJ5LXJlc29sdXRpb24sICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgfVxuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGZlYXR1cmUgdGhhdCdzIGJlZW4gZGV0ZWN0ZWQgc28gZmFyIGFuZCBhcHBlbmQgJ2ZhbHNlJyB0byB0aGUgdGhlIHZhbHVlIGxpc3QgdG8gaW5jcmVtZW50IHRoZWlyIGNvdW50ZXJzXG4gIEBlYWNoICRmLCAkdiBpbiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyIHtcbiAgICAkdi1ob2xkZXI6ICR2O1xuICAgICRsZW5ndGg6IGxlbmd0aCgkdi1ob2xkZXIpO1xuICAgIEBpZiBsZW5ndGgoJHYtaG9sZGVyKSA8ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgQGZvciAkaSBmcm9tICRsZW5ndGggdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICAgIEBpZiAkZiA9PSAnbWVkaWEnIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG5cbiAgQHJldHVybiAkcXVlcnktcHJpbnQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1xdWVyeSgkcXVlcnkpIHtcbiAgLy8gUGFyc2UgZmVhdHVyZXMgb3V0IG9mIGFuIGluZGl2aWR1YWwgcXVlcnlcbiAgJGZlYXR1cmUtaG9sZGVyOiAoKTtcbiAgJHF1ZXJ5LWhvbGRlcjogKCk7XG4gICRsZW5ndGg6IGxlbmd0aCgkcXVlcnkpO1xuXG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgIC8vIElmIHdlJ3ZlIGdvdCBhIHN0cmluZy9udW1iZXIsIG51bWJlci9zdHJpbmcsIGNoZWNrIHRvIHNlZSBpZiBpdCdzIGEgdmFsaWQgc3RyaW5nL251bWJlciBwYWlyIG9yIHR3byBzaW5nbGVzXG4gICAgQGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIG9yICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ3N0cmluZycpIHtcblxuICAgICAgJG51bWJlcjogJyc7XG4gICAgICAkdmFsdWU6ICcnO1xuXG4gICAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycge1xuICAgICAgICAkbnVtYmVyOiBudGgoJHF1ZXJ5LCAyKTtcbiAgICAgICAgJHZhbHVlOiBudGgoJHF1ZXJ5LCAxKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcjogbnRoKCRxdWVyeSwgMSk7XG4gICAgICAgICR2YWx1ZTogbnRoKCRxdWVyeSwgMik7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgdmFsdWUgY2FuIGJlIGEgc2luZ2xlIHZhbHVlLCBjaGVjayB0byBzZWUgaWYgdGhlIG51bWJlciBwYXNzZWQgaW4gaXMgYSB2YWxpZCBpbnB1dCBmb3Igc2FpZCBzaW5nbGUgdmFsdWUuIEZvcnR1bmF0ZWx5LCBhbGwgY3VycmVudCBzaW5nbGUtdmFsdWUgb3B0aW9ucyBvbmx5IGFjY2VwdCB1bml0bGVzcyBudW1iZXJzLCBzbyB0aGlzIGNoZWNrIGlzIGVhc3kuXG4gICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCR2YWx1ZSkge1xuICAgICAgICBAaWYgdW5pdGxlc3MoJG51bWJlcikge1xuICAgICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCR2YWx1ZSwgJG51bWJlciwgc3BhY2UpO1xuICAgICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgYSBtZWRpYSB0eXBlLCBzcGxpdCB0aGUgcXVlcnlcbiAgICAgIEBpZiBicmVha3BvaW50LWlzLW1lZGlhKCR2YWx1ZSkge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMSkpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMikpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBJZiBpdCdzIG5vdCBhIHNpbmdsZSBmZWF0dXJlLCB3ZSdyZSBqdXN0IGdvaW5nIHRvIGFzc3VtZSBpdCdzIGEgcHJvcGVyIHN0cmluZy92YWx1ZSBwYWlyLCBhbmQgcm9sbCB3aXRoIGl0LlxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkdmFsdWUsICRudW1iZXIsIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG5cbiAgICB9XG4gICAgLy8gSWYgdGhleSdyZSBib3RoIG51bWJlcnMsIHdlIGFzc3VtZSBpdCdzIGEgZG91YmxlIGFuZCByb2xsIHdpdGggdGhhdFxuICAgIEBlbHNlIGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIHtcbiAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgIH1cbiAgICAvLyBJZiB0aGV5J3JlIGJvdGggc3RyaW5ncyBhbmQgbmVpdGhlciBhcmUgc2luZ2xlcywgd2Ugcm9sbCB3aXRoIHRoYXQuXG4gICAgQGVsc2UgaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnc3RyaW5nJykge1xuICAgICAgQGlmIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDIpKSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGxlbmd0aCA9PSAzIHtcbiAgICAvLyBJZiB3ZSd2ZSBnb3QgdGhyZWUgaXRlbXMgYW5kIG5vbmUgaXMgYSBsaXN0LCB3ZSBjaGVjayB0byBzZWVcbiAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgIT0gJ2xpc3QnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSAhPSAnbGlzdCcgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMykpICE9ICdsaXN0JyB7XG4gICAgICAvLyBJZiBub25lIG9mIHRoZSBpdGVtcyBhcmUgc2luZ2xlIHN0cmluZyB2YWx1ZXMgYW5kIG5vbmUgb2YgdGhlIHZhbHVlcyBhcmUgbWVkaWEgdmFsdWVzLCB3ZSdyZSBnb29kLlxuICAgICAgQGlmIChub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMykpKSBhbmQgICgobm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDMpKSkpIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCRmZWF0dXJlLWhvbGRlciwgbnRoKCRxdWVyeSwgMyksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBsZXQncyBjaGVjayB0byBzZWUgaWYgdGhlIGZpcnN0IGl0ZW0gaXMgYSBtZWRpYSB0eXBlXG4gICAgICBAZWxzZSBpZiBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDEpKSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAxKSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDIpLCBudGgoJHF1ZXJ5LCAzKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgaXRlbSwgb3IgaWYgaXQncyBub3QgYSBzcGVjaWFsIGNhc2UgZG91YmxlIG9yIHRyaXBsZSwgd2UgY2FuIHNpbXBseSByZXR1cm4gdGhlIHF1ZXJ5LlxuICBAcmV0dXJuICRxdWVyeTtcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwic2luZ2xlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgZmVhdHVyZSB0aGF0IGNhbiBzdGFuZCBhbG9uZSwgd2UgbGV0IGl0XG4gIEBpZiAoYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSkge1xuICAgICRwYXJzZWQ6ICRmZWF0dXJlO1xuICAgIC8vIFNldCBDb250ZXh0XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICRmZWF0dXJlKTtcbiAgfVxuICAvLyBJZiBpdCdzIG5vdCBhIHN0YW5kIGFsb25lIGZlYXR1cmUsIHdlIHBhc3MgaXQgb2ZmIHRvIHRoZSBkZWZhdWx0IGhhbmRsZXIuXG4gIEBlbHNlIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpO1xuICB9XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJygnICsgJHBhcnNlZCArICcpJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpIHtcbiAgJGRlZmF1bHQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IGZlYXR1cmUnKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZGVmYXVsdCwgJGZlYXR1cmUpO1xuXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIGFuZCAodHlwZS1vZigkZmVhdHVyZSkgPT0gJ251bWJlcicpIHtcbiAgICBAcmV0dXJuICcjeyRkZWZhdWx0fTogI3ticmVha3BvaW50LXRvLWJhc2UtZW0oJGZlYXR1cmUpfSc7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJyN7JGRlZmF1bHR9OiAjeyRmZWF0dXJlfSc7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHQtcGFpclwiO1xuQGltcG9ydCBcImRvdWJsZS9kb3VibGUtc3RyaW5nXCI7XG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gICRmaXJzdDogbnRoKCRmZWF0dXJlLCAxKTtcbiAgJHNlY29uZDogbnRoKCRmZWF0dXJlLCAyKTtcblxuICAvLyBJZiB3ZSd2ZSBnb3QgdHdvIG51bWJlcnMsIHdlIGtub3cgd2UgbmVlZCB0byB1c2UgdGhlIGRlZmF1bHQgcGFpciBiZWNhdXNlIHRoZXJlIGFyZSBubyBtZWRpYSBxdWVyaWVzIHRoYXQgaGFzIGEgbWVkaWEgZmVhdHVyZSB0aGF0IGlzIGEgbnVtYmVyXG4gIEBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YoJHNlY29uZCkgPT0gJ251bWJlcicge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdC1wYWlyKCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cbiAgLy8gSWYgdGhleSBhcmUgYm90aCBzdHJpbmdzLCB3ZSBzZW5kIGl0IHRocm91Z2ggdGhlIHN0cmluZyBwYXJzZXJcbiAgQGVsc2UgaWYgdHlwZS1vZigkZmlyc3QpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKCRzZWNvbmQpID09ICdzdHJpbmcnIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuICAvLyBJZiBpdCdzIGEgc3RyaW5nL251bWJlciBwYWlyLCB3ZSBwYXJzZSBpdCBhcyBhIG5vcm1hbCBkb3VibGVcbiAgQGVsc2Uge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLWRlZmF1bHQoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxlYWRlciArICRwYXJzZWQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0LXBhaXIoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRkZWZhdWx0OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBwYWlyJyk7XG4gICRtaW46ICcnO1xuICAkbWF4OiAnJztcblxuICAvLyBTb3J0IGludG8gbWluIGFuZCBtYXhcbiAgJG1pbjogbWluKCRmaXJzdCwgJHNlY29uZCk7XG4gICRtYXg6IG1heCgkZmlyc3QsICRzZWNvbmQpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1pbi0jeyRkZWZhdWx0fSwgJG1pbik7XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1heC0jeyRkZWZhdWx0fSwgJG1heCk7XG5cbiAgLy8gTWFrZSB0aGVtIEVNcyBpZiBuZWVkIGJlXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkbWluOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1pbik7XG4gICAgJG1heDogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtYXgpO1xuICB9XG5cbiAgQHJldHVybiAnKG1pbi0jeyRkZWZhdWx0fTogI3skbWlufSkgYW5kIChtYXgtI3skZGVmYXVsdH06ICN7JG1heH0pJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRmZWF0dXJlOiAnJztcbiAgJHZhbHVlOiAnJztcblxuICAvLyBUZXN0IHRvIHNlZSB3aGljaCBpcyB0aGUgZmVhdHVyZSBhbmQgd2hpY2ggaXMgdGhlIHZhbHVlXG4gIEBpZiAoYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJGZpcnN0KSA9PSB0cnVlKSB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2UgaWYgKGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRzZWNvbmQpID09IHRydWUpIHtcbiAgICAkZmVhdHVyZTogJHNlY29uZDtcbiAgICAkdmFsdWU6ICRmaXJzdDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJOZWl0aGVyICN7JGZpcnN0fSBub3IgI3skc2Vjb25kfSBpcyBhIHZhbGlkIG1lZGlhIHF1ZXJ5IG5hbWUuXCI7XG4gIH1cblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKTtcblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknO1xufSIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1kZWZhdWx0KCRmaXJzdCwgJHNlY29uZCkge1xuICAkZmVhdHVyZTogJyc7XG4gICR2YWx1ZTogJyc7XG5cbiAgQGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnc3RyaW5nJyB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRmZWF0dXJlOiAkc2Vjb25kO1xuICAgICR2YWx1ZTogJGZpcnN0O1xuICB9XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSk7XG5cbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICR2YWx1ZTogYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSk7XG4gIH1cblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknXG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRyaXBsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXRyaXBsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuXG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIHNlcGFyYXRlIHRoZSBzdHJpbmcgZmVhdHVyZXMgZnJvbSB0aGUgdmFsdWUgbnVtYmVyc1xuICAkc3RyaW5nOiBudWxsO1xuICAkbnVtYmVyczogbnVsbDtcbiAgQGVhY2ggJHZhbCBpbiAkZmVhdHVyZSB7XG4gICAgQGlmIHR5cGUtb2YoJHZhbCkgPT0gc3RyaW5nIHtcbiAgICAgICRzdHJpbmc6ICR2YWw7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRudW1iZXJzKSA9PSAnbnVsbCcge1xuICAgICAgICAkbnVtYmVyczogJHZhbDtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcnM6IGFwcGVuZCgkbnVtYmVycywgJHZhbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkc3RyaW5nLCBudGgoJG51bWJlcnMsIDEpLCBudGgoJG51bWJlcnMsIDIpKTtcblxuICBAcmV0dXJuICRsZWFkZXIgKyAkcGFyc2VkO1xuXG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkZmVhdHVyZSwgJGZpcnN0LCAkc2Vjb25kKSB7XG5cbiAgLy8gU29ydCBpbnRvIG1pbiBhbmQgbWF4XG4gICRtaW46IG1pbigkZmlyc3QsICRzZWNvbmQpO1xuICAkbWF4OiBtYXgoJGZpcnN0LCAkc2Vjb25kKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtaW4tI3skZmVhdHVyZX0sICRtaW4pO1xuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtYXgtI3skZmVhdHVyZX0sICRtYXgpO1xuXG4gIC8vIE1ha2UgdGhlbSBFTXMgaWYgbmVlZCBiZVxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJG1pbjogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtaW4pO1xuICAgICRtYXg6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWF4KTtcbiAgfVxuXG4gIEByZXR1cm4gJyhtaW4tI3skZmVhdHVyZX06ICN7JG1pbn0pIGFuZCAobWF4LSN7JGZlYXR1cmV9OiAjeyRtYXh9KSc7XG59XG4iLCJAaW1wb3J0IFwicmVzb2x1dGlvbi9yZXNvbHV0aW9uXCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWJ1aWxkLXJlc29sdXRpb24oJHF1ZXJ5LXByaW50LCAkcXVlcnktcmVzb2x1dGlvbiwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIEBpZiBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykgYW5kICRxdWVyeS1yZXNvbHV0aW9uIHtcbiAgICAkcmVzb2x1dGlvbnM6IGJyZWFrcG9pbnQtbWFrZS1yZXNvbHV0aW9ucygkcXVlcnktcmVzb2x1dGlvbik7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCRyZXNvbHV0aW9ucyk7XG4gICAgJHF1ZXJ5LWhvbGRlcjogJyc7XG5cbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgJHF1ZXJ5OiAnI3skcXVlcnktcHJpbnR9ICN7JGxlYWRlcn0je250aCgkcmVzb2x1dGlvbnMsICRpKX0nO1xuICAgICAgQGlmICRpID09IDEge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiAkcXVlcnk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6ICcjeyRxdWVyeS1ob2xkZXJ9LCAjeyRxdWVyeX0nO1xuICAgICAgfVxuICAgIH1cblxuICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gUmV0dXJuIHdpdGggYXR0YWNoZWQgcmVzb2x1dGlvblxuICAgIEByZXR1cm4gJHF1ZXJ5LXByaW50O1xuICB9XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1tYWtlLXJlc29sdXRpb25zKCRyZXNvbHV0aW9uKSB7XG4gICRsZW5ndGg6IGxlbmd0aCgkcmVzb2x1dGlvbik7XG5cbiAgJG91dHB1dDogKCk7XG5cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgJGZlYXR1cmU6ICcnO1xuICAgICR2YWx1ZTogJyc7XG5cbiAgICAvLyBGaW5kIHdoaWNoIGlzIG51bWJlclxuICAgIEBpZiB0eXBlLW9mKG50aCgkcmVzb2x1dGlvbiwgMSkpID09ICdudW1iZXInIHtcbiAgICAgICR2YWx1ZTogbnRoKCRyZXNvbHV0aW9uLCAxKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHZhbHVlOiBudGgoJHJlc29sdXRpb24sIDIpO1xuICAgIH1cblxuICAgIC8vIERldGVybWluZSBtaW4vbWF4L3N0YW5kYXJkXG4gICAgQGlmIGluZGV4KCRyZXNvbHV0aW9uLCAnbWluLXJlc29sdXRpb24nKSB7XG4gICAgICAkZmVhdHVyZTogJ21pbi0nO1xuICAgIH1cbiAgICBAZWxzZSBpZiBpbmRleCgkcmVzb2x1dGlvbiwgJ21heC1yZXNvbHV0aW9uJykge1xuICAgICAgJGZlYXR1cmU6ICdtYXgtJztcbiAgICB9XG5cbiAgICAkc3RhbmRhcmQ6ICcoI3skZmVhdHVyZX1yZXNvbHV0aW9uOiAjeyR2YWx1ZX0pJztcblxuICAgIC8vIElmIHdlJ3JlIG5vdCBkZWFsaW5nIHdpdGggZHBweCxcbiAgICBAaWYgdW5pdCgkdmFsdWUpICE9ICdkcHB4JyB7XG4gICAgICAkYmFzZTogOTZkcGk7XG4gICAgICBAaWYgdW5pdCgkdmFsdWUpID09ICdkcGNtJyB7XG4gICAgICAgICRiYXNlOiAyNDMuODRkcGNtO1xuICAgICAgfVxuICAgICAgLy8gV3JpdGUgb3V0IGZlYXR1cmUgdGVzdHNcbiAgICAgICR3ZWJraXQ6ICcnO1xuICAgICAgJG1vejogJyc7XG4gICAgICAkd2Via2l0OiAnKC13ZWJraXQtI3skZmVhdHVyZX1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAkbW96OiAnKCN7JGZlYXR1cmV9LW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAvLyBBcHBlbmQgdG8gb3V0cHV0XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHN0YW5kYXJkLCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHdlYmtpdCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRtb3osIHNwYWNlKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHdlYmtpdDogJyc7XG4gICAgICAkbW96OiAnJztcbiAgICAgICR3ZWJraXQ6ICcoLXdlYmtpdC0jeyRmZWF0dXJlfWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRtb3o6ICcoI3skZmVhdHVyZX0tbW96LWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRmYWxsYmFjazogJygjeyRmZWF0dXJlfXJlc29sdXRpb246ICN7JHZhbHVlIC8gMWRwcHggKiA5NmRwaX0pJztcbiAgICAgIC8vIEFwcGVuZCB0byBvdXRwdXRcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkc3RhbmRhcmQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkd2Via2l0LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJG1veiwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRmYWxsYmFjaywgc3BhY2UpO1xuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbm8tcXVlcnkoJHF1ZXJ5KSB7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gJ2xpc3QnIHtcbiAgICAka2V5d29yZDogbnRoKCRxdWVyeSwgMSk7XG5cbiAgICBAaWYgdHlwZS1vZigka2V5d29yZCkgPT0gJ3N0cmluZycgYW5kICgka2V5d29yZCA9PSAnbm8tcXVlcnknIG9yICRrZXl3b3JkID09ICdubyBxdWVyeScgb3IgJGtleXdvcmQgPT0gJ2ZhbGxiYWNrJykge1xuICAgICAgQHJldHVybiBudGgoJHF1ZXJ5LCAyKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGVmYXVsdCB0aGUgQnJlYWtwb2ludHMgdmFyaWFibGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnRzOiAoKSAhZGVmYXVsdDtcbiRCUkVBS1BPSU5UUzogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVzcG9uZC10byBBUEkgTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHJlc3BvbmQtdG8oJGNvbnRleHQsICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGlmIGxlbmd0aCgkYnJlYWtwb2ludHMpID4gMCBhbmQgbGVuZ3RoKCRCUkVBS1BPSU5UUykgPT0gMCB7XG4gICAgQHdhcm4gXCJJbiBvcmRlciB0byBhdm9pZCB2YXJpYWJsZSBuYW1lc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gYWRkIGJyZWFrcG9pbnRzIGZvciByZXNwb25kLXRvLiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50czogYWRkLWJyZWFrcG9pbnQoKWAgdG8gYEBpbmNsdWRlIGFkZC1icmVha3BvaW50KClgLiBUaGUgYGFkZC1icmVha3BvaW50KClgIGZ1bmN0aW9uIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLlwiO1xuICAgICRCUkVBS1BPSU5UUzogJGJyZWFrcG9pbnRzICFnbG9iYWw7XG4gICAgJGJyZWFrcG9pbnRzOiAoKSAhZ2xvYmFsO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJEJSRUFLUE9JTlRTKSAhPSAnbWFwJyB7XG4gICAgLy8gSnVzdCBpbiBjYXNlIHNvbWVvbmUgd3JpdGVzIGdpYmJlcmlzaCB0byB0aGUgJGJyZWFrcG9pbnRzIHZhcmlhYmxlLlxuICAgIEB3YXJuIFwiWW91ciBicmVha3BvaW50cyBhcmVuJ3QgYSBtYXAhIGByZXNwb25kLXRvYCBleHBlY3RzIGEgbWFwLiBQbGVhc2UgY2hlY2sgdGhlIHZhbHVlIG9mICRCUkVBS1BPSU5UUyB2YXJpYWJsZS5cIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtYXAtZ2V0KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpLCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkY29udGV4dCkge1xuICAgIEB3YXJuIFwiYCN7JGNvbnRleHR9YCBpc24ndCBhIGRlZmluZWQgYnJlYWtwb2ludCEgUGxlYXNlIGFkZCBpdCB1c2luZyBgJGJyZWFrcG9pbnRzOiBhZGQtYnJlYWtwb2ludChgI3skY29udGV4dH1gLCAkdmFsdWUpO2BcIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJZb3UgaGF2ZW4ndCBjcmVhdGVkIGFueSBicmVha3BvaW50cyB5ZXQhIE1ha2Ugc29tZSBhbHJlYWR5ISBgQGluY2x1ZGUgYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0KWBcIjtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFkZCBCcmVha3BvaW50IHRvIEJyZWFrcG9pbnRzXG4vLyBUT0RPOiBSZW1vdmUgZnVuY3Rpb24gaW4gbmV4dCByZWxlYXNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQsICRvdmVyd3JpdGU6IGZhbHNlKSB7XG4gICRvdXRwdXQ6ICgkbmFtZTogJGJrcHQpO1xuXG4gIEBpZiBsZW5ndGgoJGJyZWFrcG9pbnRzKSA9PSAwIHtcbiAgICBAcmV0dXJuICRvdXRwdXQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBhbmQgJG92ZXJ3cml0ZSAhPSB0cnVlIHtcbiAgICAgIEB3YXJuIFwiWW91IGFscmVhZHkgaGF2ZSBhIGJyZWFrcG9pbnQgbmFtZWQgYCN7JG5hbWV9YCwgcGxlYXNlIGNob29zZSBhbm90aGVyIGJyZWFrcG9pbnQgbmFtZSwgb3IgcGFzcyBpbiBgJG92ZXJ3cml0ZTogdHJ1ZWAgdG8gb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBicmVha3BvaW50LlwiO1xuICAgICAgQHJldHVybiAkYnJlYWtwb2ludHM7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgQHJldHVybiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnRzLCAkb3V0cHV0KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdCwgJG92ZXJ3cml0ZTogZmFsc2UpIHtcbiAgJG91dHB1dDogKCRuYW1lOiAkYmtwdCk7XG5cbiAgQGlmIGxlbmd0aCgkQlJFQUtQT0lOVFMpID09IDAge1xuICAgICRCUkVBS1BPSU5UUzogJG91dHB1dCAhZ2xvYmFsO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkbmFtZSkgYW5kICRvdmVyd3JpdGUgIT0gdHJ1ZSB7XG4gICAgICBAd2FybiBcIllvdSBhbHJlYWR5IGhhdmUgYSBicmVha3BvaW50IG5hbWVkIGAjeyRuYW1lfWAsIHBsZWFzZSBjaG9vc2UgYW5vdGhlciBicmVha3BvaW50IG5hbWUsIG9yIHBhc3MgaW4gYCRvdmVyd3JpdGU6IHRydWVgIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgYnJlYWtwb2ludC5cIjtcbiAgICAgICRCUkVBS1BPSU5UUzogJEJSRUFLUE9JTlRTICFnbG9iYWw7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgJEJSRUFLUE9JTlRTOiBtYXAtbWVyZ2UoJEJSRUFLUE9JTlRTLCAkb3V0cHV0KSAhZ2xvYmFsO1xuICAgIH1cbiAgfVxufVxuXG5AZnVuY3Rpb24gZ2V0LWJyZWFrcG9pbnQoJG5hbWU6IGZhbHNlKSB7XG4gIEBpZiAkbmFtZSA9PSBmYWxzZSB7XG4gICAgQHJldHVybiAkQlJFQUtQT0lOVFM7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkQlJFQUtQT0lOVFMsICRuYW1lKTtcbiAgfVxufVxuIiwiQG1peGluIGxlZ2FjeS1zZXR0aW5ncy13YXJuaW5nIHtcbiAgJGxlZ2FjeVZhcnM6IChcbiAgICAnZGVmYXVsdC1tZWRpYSc6ICdkZWZhdWx0IG1lZGlhJyxcbiAgICAnZGVmYXVsdC1mZWF0dXJlJzogJ2RlZmF1bHQgZmVhdHVyZScsXG4gICAgJ2ZvcmNlLW1lZGlhLWFsbCc6ICdmb3JjZSBhbGwgbWVkaWEgdHlwZScsXG4gICAgJ3RvLWVtcyc6ICd0byBlbXMnLFxuICAgICdyZXNvbHV0aW9ucyc6ICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLFxuICAgICduby1xdWVyaWVzJzogJ25vIHF1ZXJpZXMnLFxuICAgICduby1xdWVyeS1mYWxsYmFja3MnOiAnbm8gcXVlcnkgZmFsbGJhY2tzJyxcbiAgICAnYmFzZS1mb250LXNpemUnOiAnYmFzZSBmb250IHNpemUnLFxuICAgICdsZWdhY3ktc3ludGF4JzogJ2xlZ2FjeSBzeW50YXgnXG4gICk7XG5cbiAgQGVhY2ggJGxlZ2FjeSwgJG5ldyBpbiAkbGVnYWN5VmFycyB7XG4gICAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtJyArICRsZWdhY3kpIHtcbiAgICAgIEB3YXJuIFwiSW4gb3JkZXIgdG8gYXZvaWQgdmFyaWFibGUgbmFtc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gY2hhbmdlIHNldHRpbmdzIGZvciBCcmVha3BvaW50LiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50LSN7JGxlZ2FjeX06IHt7c2V0dGluZ319YCB0byBgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJyN7JG5ld30nLCB7e3NldHRpbmd9fSlgLiBWYXJpYWJsZSBzZXR0aW5ncywgYXMgd2VsbCBhcyB0aGlzIHdhcm5pbmcgd2lsbCBiZSBkZXByZWNhdGVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXCJcbiAgICB9XG4gIH07XG5cbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIEhhbmQgY29ycmVjdCBlYWNoIHNldHRpbmdcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtbWVkaWEnKSBhbmQgJGJyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYSAhPSBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBtZWRpYScsICRicmVha3BvaW50LWRlZmF1bHQtbWVkaWEpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZScpIGFuZCAkYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUgIT0gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgZmVhdHVyZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBmZWF0dXJlJywgJGJyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwnKSBhbmQgJGJyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsICE9IGJyZWFrcG9pbnQtZ2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnLCAkYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LXRvLWVtcycpIGFuZCAkYnJlYWtwb2ludC10by1lbXMgIT0gYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgndG8gZW1zJywgJGJyZWFrcG9pbnQtdG8tZW1zKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1yZXNvbHV0aW9ucycpIGFuZCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyAhPSBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcmllcycpIGFuZCAkYnJlYWtwb2ludC1uby1xdWVyaWVzICE9IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyaWVzJywgJGJyZWFrcG9pbnQtbm8tcXVlcmllcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzJykgYW5kICRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyAhPSBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyeSBmYWxsYmFja3MnLCAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWJhc2UtZm9udC1zaXplJykgYW5kICRicmVha3BvaW50LWJhc2UtZm9udC1zaXplICE9IGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnYmFzZSBmb250IHNpemUnLCAkYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCcpIGFuZCAkYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4ICE9IGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4Jykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdsZWdhY3kgc3ludGF4JywgJGJyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCk7XG4gIH1cbn0iLCIvLyBTdXN5XG4vLyA9PT09XG5cbkBpbXBvcnQgJ3N1c3kvbGFuZ3VhZ2Uvc3VzeSc7XG4iLCIvLyBTdXN5IE5leHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbiRzdXN5LXZlcnNpb246IDIuMTtcblxuQGltcG9ydCBcIi4uL3N1XCI7XG5AaW1wb3J0IFwiLi4vb3V0cHV0L2Zsb2F0XCI7XG5cbkBpbXBvcnQgXCJzdXN5L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3VzeS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3VzeS9ncmlkc1wiO1xuQGltcG9ydCBcInN1c3kvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1c3kvY29udGV4dFwiO1xuQGltcG9ydCBcInN1c3kvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1c3kvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic3VzeS9zcGFuXCI7XG5AaW1wb3J0IFwic3VzeS9ndXR0ZXJzXCI7XG5AaW1wb3J0IFwic3VzeS9pc29sYXRlXCI7XG5AaW1wb3J0IFwic3VzeS9nYWxsZXJ5XCI7XG5AaW1wb3J0IFwic3VzeS9yb3dzXCI7XG5AaW1wb3J0IFwic3VzeS9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic3VzeS9wYWRkaW5nXCI7XG5AaW1wb3J0IFwic3VzeS9ibGVlZFwiO1xuQGltcG9ydCBcInN1c3kvYnJlYWtwb2ludC1wbHVnaW5cIjtcbiIsIi8vIFN1XG4vLyA9PVxuXG5AaW1wb3J0IFwic3UvdXRpbGl0aWVzXCI7XG5AaW1wb3J0IFwic3Uvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3UvZ3JpZFwiO1xuIiwiLy8gTWFwIEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIFRydW5jYXRlIExpc3Rcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgbGlzdCwgdHJ1bmNhdGVkIHRvIGEgZ2l2ZW4gbGVuZ3RoXG5AZnVuY3Rpb24gX3N1c3ktdHJ1bmNhdGUtbGlzdChcbiAgJGxpc3QsXG4gICRsZW5ndGhcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGxpc3QpIHtcbiAgICAkX3JldHVybjogaWYoJGkgPD0gJGxlbmd0aCwgYXBwZW5kKCRfcmV0dXJuLCBudGgoJGxpc3QsICRpKSksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBHZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFJldHVybiBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWdldChcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogJG1hcDtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgdHlwZS1vZigkX3JldHVybikgPT0gbWFwIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtZ2V0KCRfcmV0dXJuLCAka2V5KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgU2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBTZXQgYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1zZXQoXG4gICRtYXAsXG4gICRrZXlzLXZhbHVlLi4uXG4pIHtcbiAgJF92YWx1ZTogbnRoKCRrZXlzLXZhbHVlLCAtMSk7XG4gICRfa2V5czogX3N1c3ktdHJ1bmNhdGUtbGlzdCgka2V5cy12YWx1ZSwgbGVuZ3RoKCRrZXlzLXZhbHVlKSAtIDEpO1xuICAkX2xlbmd0aDogbGVuZ3RoKCRfa2V5cyk7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRfbGVuZ3RoIHtcbiAgICAkX246IDAgLSAkaTtcbiAgICAkX2xldmVsOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRfa2V5cywgJF9sZW5ndGggKyAkX24pO1xuICAgICRfbGV2ZWw6IF9zdXN5LWRlZXAtZ2V0KCRtYXAsICRfbGV2ZWwuLi4pO1xuICAgICRfbWVyZ2U6IG50aCgkX2tleXMsICRfbik7XG4gICAgJF9tZXJnZTogKCRfbWVyZ2U6ICRfdmFsdWUpO1xuICAgICRfcmV0dXJuOiBpZigkX2xldmVsLCBtYXAtbWVyZ2UoJF9sZXZlbCwgJF9tZXJnZSksICRfbWVyZ2UpO1xuICAgICRfdmFsdWU6ICRfcmV0dXJuO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIE1lcmdlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gMiBvYmplY3RzIG9mIGFueSBkZXB0aCwgbWVyZ2VkXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1tZXJnZShcbiAgJG1hcDEsXG4gICRtYXAyXG4pIHtcblxuICBAaWYgdHlwZS1vZigkbWFwMSkgIT0gbWFwIG9yIHR5cGUtb2YoJG1hcDIpICE9IG1hcCB7XG4gICAgJG1hcDE6ICRtYXAyO1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcDIge1xuICAgICAgJF9uZXc6ICgka2V5OiBfc3VzeV9kZWVwLW1lcmdlKG1hcC1nZXQoJG1hcDEsICRrZXkpLCAkdmFsdWUpKTtcbiAgICAgICRtYXAxOiBtYXAtbWVyZ2UoJG1hcDEsICRfbmV3KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRtYXAxO1xufVxuXG5cbi8vIERlZXAgSGFzLUtleVxuLy8gLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiB0cnVlIGlmIGEgZGVlcCBrZXkgZXhpc3RzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1oYXMta2V5KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiBudWxsO1xuICAkX3N0b3A6IGZhbHNlO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiBub3QoJF9zdG9wKSB7XG4gICAgICAkX3JldHVybjogbWFwLWhhcy1rZXkoJG1hcCwgJGtleSk7XG4gICAgfVxuXG4gICAgQGlmICRfcmV0dXJuIHtcbiAgICAgICRtYXA6IG1hcC1nZXQoJG1hcCwgJGtleSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3N0b3A6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNldHRpbmdzXG4vLyA9PT09PT09PVxuXG4vLyBWZXJzaW9uXG4vLyAtLS0tLS0tXG4kc3UtdmVyc2lvbjogMS4xO1xuXG5cbi8vIERlZmF1bHQgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFRoZSBiYXNpYyBzZXR0aW5nc1xuJHN1c3ktZGVmYXVsdHM6IChcbiAgY29sdW1uczogNCxcbiAgZ3V0dGVyczogLjI1LFxuKTtcblxuXG4vLyBVc2VyIFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIERlZmluZSB0aGUgJHN1c3kgdmFyaWFibGUgd2l0aCBhIG1hcCBvZiB5b3VyIG93biBzZXR0aW5ncy5cbi8vIC0gU2V0IEVJVEhFUiAkY29sdW1uLXdpZHRoIE9SICRjb250YWluZXJcbi8vIC0gVXNlICRjb2x1bW4td2lkdGggZm9yIHN0YXRpYyBsYXlvdXRzXG4kc3VzeTogKCkgIWRlZmF1bHQ7XG5cblxuLy8gU3VzeSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogQWRkIGRlZmF1bHRzIHRvIFN1c3lcbkBtaXhpbiBzdXN5LWRlZmF1bHRzKFxuICAkZGVmYXVsdHNcbikge1xuICAkc3VzeS1kZWZhdWx0czogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkZGVmYXVsdHMpICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBTZXRcbi8vIC0tLS0tLS0tXG4vLyBDaGFuZ2Ugb25lIHNldHRpbmdcbi8vIC0gJGtleSAgIDogc2V0dGluZyBuYW1lXG4vLyAtICR2YWx1ZSA6IHNldHRpbmcgdmFsdWVcbkBtaXhpbiBzdXN5LXNldChcbiAgJGtleS12YWx1ZS4uLlxuKSB7XG4gICRzdXN5OiBfc3VzeS1kZWVwLXNldCgkc3VzeSwgJGtleS12YWx1ZS4uLikgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IEdldFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybiBvbmUgc2V0dGluZyBmcm9tIGEgZ3JpZFxuLy8gLSAka2V5ICAgICA6IDxrZXl3b3JkPlxuLy8gLSAkbGF5b3V0ICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBzdXN5LWdldChcbiAgJGtleSxcbiAgJGxheW91dDogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkc3VzeSlcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX29wdGlvbnM6ICRsYXlvdXQgJHN1c3kgJHN1c3ktZGVmYXVsdHM7XG4gICRfYnJlYWs6IGZhbHNlO1xuICAkX3JldHVybjogbnVsbDtcblxuICBAZWFjaCAkb3B0IGluICRfb3B0aW9ucyB7XG4gICAgQGlmIHR5cGUtb2YoJG9wdCkgPT0gbWFwIGFuZCBub3QoJF9icmVhaykge1xuICAgICAgJF9rZXlzZXQ6IF9zdXN5LWRlZXAtaGFzLWtleSgkb3B0LCAka2V5Li4uKTtcbiAgICAgIEBpZiAkX2tleXNldCB7XG4gICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLWdldCgkb3B0LCAka2V5Li4uKTtcbiAgICAgICAgJF9icmVhazogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gTWF0aCBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09PT09PT1cblxuXG4vLyBWYWxpZCBDb2x1bW5zXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgY29sdW1uIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1ucyhcbiAgJGNvbHVtbnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGNvbHVtbnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRjb2x1bW5zKSB7XG4gICAgJHJldHVybjogJGNvbHVtbnM7XG4gIH0gQGVsc2UgaWYgJHR5cGUgPT0gbGlzdCB7XG4gICAgJGZhaWw6IG51bGw7XG4gICAgQGVhY2ggJGNvbCBpbiAkY29sdW1ucyB7XG4gICAgICBAaWYgdHlwZS1vZigkY29sKSA9PSBudW1iZXIge1xuICAgICAgICAkZmFpbDogJGZhaWwgb3IgaWYodW5pdGxlc3MoJGNvbCksIG51bGwsIHRydWUpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRmYWlsOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICAkcmV0dXJuOiBpZigkZmFpbCwgJHJldHVybiwgJGNvbHVtbnMpO1xuICB9XG5cbiAgQGlmICRyZXR1cm4gIT0gJGNvbHVtbnMgYW5kIG5vdCgkc2lsZW50KSB7XG4gICAgJHJldHVybjogbnVsbDtcbiAgICAkd2FybjogJyRjb2x1bW5zIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIgb3IgbGlzdCBvZiB1bml0bGVzcyBudW1iZXJzLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skY29sdW1uc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG5cbi8vIFZhbGlkIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBndXR0ZXIgc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1ndXR0ZXJzKFxuICAkZ3V0dGVycyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkZ3V0dGVycyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGd1dHRlcnMpIHtcbiAgICAkcmV0dXJuOiAkZ3V0dGVycztcbiAgfSBAZWxzZSBpZiBub3QoJHNpbGVudCkge1xuICAgICR3YXJuOiAnJGd1dHRlcnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlci4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGd1dHRlcnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIENvbHVtbiBtYXRoXG4vLyA9PT09PT09PT09PVxuXG5cbi8vIElzIFN5bW1ldHJpY2FsXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGEgZ3JpZCBpcyBzeW1tZXRyaWNhbC5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBpcy1zeW1tZXRyaWNhbChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlmKHR5cGUtb2YoJGNvbHVtbnMpID09IG51bWJlciwgJGNvbHVtbnMsIG51bGwpO1xufVxuXG5cbi8vIFN1c3kgQ291bnRcbi8vIC0tLS0tLS0tLS1cbi8vIEZpbmQgdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIGEgZ2l2ZW4gbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1jb3VudChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSBvciBsZW5ndGgoJGNvbHVtbnMpO1xufVxuXG5cbi8vIFN1c3kgU3VtXG4vLyAtLS0tLS0tLVxuLy8gRmluZCB0aGUgdG90YWwgc3VtIG9mIGNvbHVtbi11bml0cyBpbiBhIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3ktc3VtKFxuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG5cbiAgJHNwcmVhZDogaWYoJHNwcmVhZCA9PSB3aWRlLCAwLCBpZigkc3ByZWFkID09IHdpZGVyLCAxLCAtMSkpO1xuICAkZ3V0dGVyLXN1bTogKHN1c3ktY291bnQoJGNvbHVtbnMpICsgJHNwcmVhZCkgKiAkZ3V0dGVycztcbiAgJGNvbHVtbi1zdW06IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICBAaWYgbm90KCRjb2x1bW4tc3VtKSB7XG4gICAgQGVhY2ggJGNvbHVtbiBpbiAkY29sdW1ucyB7XG4gICAgICAkY29sdW1uLXN1bTogKCRjb2x1bW4tc3VtIG9yIDApICsgJGNvbHVtbjtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4tc3VtICsgJGd1dHRlci1zdW07XG59XG5cblxuLy8gU3VzeSBTbGljZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IG9mIGNvbHVtbnMgYXQgYSBnaXZlbiBsb2NhdGlvbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LXNsaWNlKFxuICAkc3BhbixcbiAgJGxvY2F0aW9uLFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRzdWItY29sdW1uczogJHNwYW47XG5cbiAgQGlmIG5vdChpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykpIHtcbiAgICAkbG9jYXRpb246ICRsb2NhdGlvbiBvciAxO1xuICAgICRzdWItY29sdW1uczogKCk7XG4gICAgQGZvciAkaSBmcm9tICRsb2NhdGlvbiB0byAoJGxvY2F0aW9uICsgJHNwYW4pIHtcbiAgICAgICRzdWItY29sdW1uczogYXBwZW5kKCRzdWItY29sdW1ucywgbnRoKCRjb2x1bW5zLCAkaSkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHN1Yi1jb2x1bW5zO1xufVxuXG5cbi8vIFN1c3lcbi8vIC0tLS1cbi8vIEZpbmQgdGhlIHN1bSBvZiBhIGNvbHVtbi1zcGFuLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3koXG4gICRzcGFuLFxuICAkbG9jYXRpb24gICAgIDogZmFsc2UsXG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgICAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgJHNwYW46IHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xuXG4gIEByZXR1cm4gc3VzeS1zdW0oJHNwYW4sICRndXR0ZXJzLCAkc3ByZWFkKTtcbn1cbiIsIi8vIEZsb2F0IEFQSVxuLy8gPT09PT09PT09XG5cbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuQGltcG9ydCBcImZsb2F0L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcImZsb2F0L3NwYW5cIjtcbkBpbXBvcnQgXCJmbG9hdC9lbmRcIjtcbkBpbXBvcnQgXCJmbG9hdC9pc29sYXRlXCI7XG4iLCIvLyBTaGFyZWQgQVBJXG4vLyA9PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0XCI7XG5cbkBpbXBvcnQgXCJzaGFyZWQvaW5zcGVjdFwiO1xuQGltcG9ydCBcInNoYXJlZC9vdXRwdXRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvZGlyZWN0aW9uXCI7XG5AaW1wb3J0IFwic2hhcmVkL2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic2hhcmVkL21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzaGFyZWQvcGFkZGluZ1wiO1xuXG5cblxuIiwiLy8gU3VzeSBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0L3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3ByZWZpeFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1cHBvcnQvcmVtXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9jbGVhcmZpeFwiO1xuIiwiLy8gQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBTdXBwb3J0IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IGZhbHNlLFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHRydWUsXG4gICAgYmFja2dyb3VuZC1vcHRpb25zOiBmYWxzZSxcbiAgICBicmVha3BvaW50OiB0cnVlLFxuICAgIGJveC1zaXppbmc6IHRydWUsXG4gICAgcmVtOiB0cnVlLFxuICApLFxuKSk7XG5cblxuLy8gU3VzeSBTdXBwb3J0IFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZW5kIHByb3BlcnR5LXZhbHVlIHBhaXJzIHRvIHRoZSBwcm9wZXIgc3VwcG9ydCBtb2R1bGVzLlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktc3VwcG9ydChcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAvLyBCYWNrZ3JvdW5kIFN1cHBvcnRcbiAgQGlmICRwcm9wID09IGJhY2tncm91bmQtaW1hZ2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1pbWFnZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLXNpemUge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1zaXplKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtb3JpZ2luIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtb3JpZ2luKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtY2xpcCB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWNsaXAoJHZhbCk7XG4gIH1cblxuICAvLyBCb3gtU2l6aW5nIFN1cHBvcnRcbiAgQGVsc2UgaWYgJHByb3AgPT0gYm94LXNpemluZyB7XG4gICAgQGluY2x1ZGUgc3VzeS1ib3gtc2l6aW5nKCR2YWwpO1xuICB9XG5cbiAgLy8gUmVtIFN1cHBvcnRcbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuXG5cbi8vIFN1c3kgU3VwcG9ydCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIHN1cHBvcnQgb2YgYSBmZWF0dXJlLlxuLy8gLSAkZmVhdHVyZSAgICAgICA6IDxzdHJpbmc+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgXCJyZW1cIiBvciBcImJveC1zaXppbmdcIlxuLy8gLSAkcmVxdWlyZW1lbnRzICA6IDxtYXA+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgKHZhcmlhYmxlOiByZW0td2l0aC1weC1mYWxsYmFjaywgbWl4aW46IHJlbSlcbi8vIC0gJHdhcm4gICAgICAgICAgOiA8Ym9vbD5cbkBmdW5jdGlvbiBzdXN5LXN1cHBvcnQoXG4gICRmZWF0dXJlLFxuICAkcmVxdWlyZW1lbnRzOiAoKSxcbiAgJHdhcm46IHRydWVcbikge1xuICAkX3N1cHBvcnQ6IHN1c3ktZ2V0KHVzZS1jdXN0b20gJGZlYXR1cmUpO1xuXG4gIEBpZiAkX3N1cHBvcnQge1xuICAgICRfZmFpbDogZmFsc2U7XG5cbiAgICBAZWFjaCAkX3R5cGUsICRfcmVxIGluICRyZXF1aXJlbWVudHMge1xuICAgICAgQGVhY2ggJF9pIGluICRfcmVxIHtcblxuICAgICAgICAkX3Bhc3MgOiBudWxsO1xuXG4gICAgICAgIC8vIHNhc3MgMy41IG9yIGdyZWF0ZXJcbiAgICAgICAgQGlmIGZ1bmN0aW9uLWV4aXN0cygnZ2V0LWZ1bmN0aW9uJykge1xuICAgICAgICAgICRfcGFzczogY2FsbChnZXQtZnVuY3Rpb24odW5xdW90ZShcIiN7JF90eXBlfS1leGlzdHNcIikpLCAkX2kpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHNhc3MgMy40IG9yIGxlc3NcbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICRfcGFzczogY2FsbCh1bnF1b3RlKFwiI3skX3R5cGV9LWV4aXN0c1wiKSwgJF9pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiBub3QoJF9wYXNzKSB7XG4gICAgICAgICAgJF9mYWlsOiB0cnVlO1xuICAgICAgICAgIEBpZiAkd2FybiB7XG4gICAgICAgICAgICBAd2FybiBcIllvdSByZXF1ZXN0ZWQgY3VzdG9tIHN1cHBvcnQgb2YgI3skZmVhdHVyZX0sIGJ1dCB0aGUgI3skX2l9ICN7JF90eXBlfSBpcyBub3QgYXZhaWxhYmxlLlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfc3VwcG9ydDogaWYoJF9mYWlsLCBmYWxzZSwgJF9zdXBwb3J0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdXBwb3J0O1xufVxuIiwiLy8gU3VzeSBQcmVmaXhcbi8vID09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgc2ltcGxlIHByZWZpeGVkIHByb3BlcnRpZXMuXG4vLyAtICRwcm9wICAgICAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgICAgIDogPGNzcyB2YWx1ZT5cbi8vIC0gWyRwcmVmaXhdICA6IDxicm93c2VyIHByZWZpeCBsaXN0PlxuQG1peGluIHN1c3ktcHJlZml4KFxuICAkcHJvcCxcbiAgJHZhbCxcbiAgJHByZWZpeDogb2ZmaWNpYWxcbikge1xuICBAZWFjaCAkZml4IGluICRwcmVmaXgge1xuICAgICRmaXg6IGlmKCRmaXggPT0gb2ZmaWNpYWwgb3Igbm90KCRmaXgpLCAkcHJvcCwgJy0jeyRmaXh9LSN7JHByb3B9Jyk7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJGZpeCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIEJhY2tncm91bmQgUHJvcGVydGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBJbWFnZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1pbWFnZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtaW1hZ2UoXG4gICRpbWFnZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1pbWFnZSwgKG1peGluOiBiYWNrZ3JvdW5kLWltYWdlKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2UuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2U7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIFNpemVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtc2l6ZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtc2l6ZShcbiAgJHNpemVcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLXNpemUpKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKCRzaXplKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgT3JpZ2luXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1vcmlnaW4+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbihcbiAgJG9yaWdpblxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtb3JpZ2luKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtb3JpZ2luKCRvcmlnaW4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJG9yaWdpbjtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgQ2xpcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWNsaXA+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWNsaXAoXG4gICRjbGlwXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1jbGlwKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtY2xpcCgkY2xpcCk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXA7XG4gIH1cbn1cbiIsIi8vIEJveCBTaXppbmdcbi8vID09PT09PT09PT1cblxuLy8gQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRtb2RlbDogPGJveC1zaXppbmc+XG5AbWl4aW4gc3VzeS1ib3gtc2l6aW5nKFxuICAkbW9kZWw6IGNvbnRlbnQtYm94XG4pIHtcbiAgQGlmICRtb2RlbCB7XG4gICAgQGlmIHN1c3ktc3VwcG9ydChib3gtc2l6aW5nLCAobWl4aW46IGJveC1zaXppbmcpLCAkd2FybjogZmFsc2UpIHtcbiAgICAgIEBpbmNsdWRlIGJveC1zaXppbmcoJG1vZGVsKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwcmVmaXg6IChtb3osIHdlYmtpdCwgb2ZmaWNpYWwpO1xuICAgICAgQGluY2x1ZGUgc3VzeS1wcmVmaXgoYm94LXNpemluZywgJG1vZGVsLCAkcHJlZml4KTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIHJlbSBTdXBwb3J0XG4vLyA9PT09PT09PT09PVxuXG4vLyByZW1cbi8vIC0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIG91dHB1dCBkaXJlY3RseS5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXJlbShcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAkX3JlcXM6IChcbiAgICB2YXJpYWJsZTogcmh5dGhtLXVuaXQgcmVtLXdpdGgtcHgtZmFsbGJhY2ssXG4gICAgbWl4aW46IHJlbSxcbiAgKTtcbiAgQGlmIHN1c3ktc3VwcG9ydChyZW0sICRfcmVxcywgJHdhcm46IGZhbHNlKSBhbmQgJHJoeXRobS11bml0ID09IHJlbSB7XG4gICAgQGluY2x1ZGUgcmVtKCRwcm9wLCAkdmFsKTtcbiAgfSBAZWxzZSB7XG4gICAgI3skcHJvcH06ICR2YWw7XG4gIH1cbn1cbiIsIi8vIFN1c3kgRmFsbGJhY2sgQ2xlYXJmaXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBDbGVhcmZpeFxuLy8gLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuQG1peGluIHN1c3ktY2xlYXJmaXgge1xuICBAaWYgc3VzeS1zdXBwb3J0KGNsZWFyZml4LCAobWl4aW46IGNsZWFyZml4KSkge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9IEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIERlYnVnZ2luZ1xuLy8gPT09PT09PT09XG5cbi8vIFN1c3kgSW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBPdXRwdXQgYXJndW1lbnRzIHBhc3NlZCB0byBhIGluc3BlY3QuXG4vLyAtICRtaXhpbiAgOiA8c3VzeSBtaXhpbj5cbi8vIC0gJGluc3BlYyAgIDogPG1peGluIGFyZ3VtZW50cz5cblxuQG1peGluIHN1c3ktaW5zcGVjdChcbiAgJG1peGluLFxuICAkaW5zcGVjdFxuKSB7XG4gICRzaG93OiBmYWxzZTtcblxuICBAZWFjaCAkaXRlbSBpbiAkaW5zcGVjdCB7XG4gICAgQGlmIGluZGV4KCRpdGVtLCBpbnNwZWN0KSB7XG4gICAgICAkc2hvdzogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAaWYgJHNob3cgb3Igc3VzeS1nZXQoZGVidWcgaW5zcGVjdCkge1xuICAgIC1zdXN5LSN7JG1peGlufTogaW5zcGVjdCgkaW5zcGVjdCk7XG4gIH1cbn1cbiIsIi8vIE91dHB1dFxuLy8gPT09PT09XG5cbi8vIE91dHB1dFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgQ1NTIHdpdGggcHJvcGVyIGJyb3dzZXIgc3VwcG9ydC5cbi8vIC0gJHN0eWxlcyAgOiA8bWFwIG9mIGNzcyBwcm9wZXJ0eS12YWx1ZSBwYWlycz5cbkBtaXhpbiBvdXRwdXQoXG4gICRzdHlsZXNcbikge1xuICBAZWFjaCAkcHJvcCwgJHZhbCBpbiAkc3R5bGVzIHtcbiAgICBAaW5jbHVkZSBzdXN5LXN1cHBvcnQoJHByb3AsICR2YWwpO1xuICB9XG59XG4iLCIvLyBEaXJlY3Rpb24gSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBGbG93IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGZsb3c6IGx0cixcbikpO1xuXG4vLyBHZXQgRGlyZWN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBvciAndG8nIGRpcmVjdGlvbiBvZiBhIGx0ciBvciBydGwgZmxvdy5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbi8vIC0gWyRrZXldICAgOiBmcm9tIHwgdG9cbkBmdW5jdGlvbiBnZXQtZGlyZWN0aW9uKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRrZXk6IGZyb21cbikge1xuICAkcmV0dXJuOiBpZigkZmxvdyA9PSBydGwsIChmcm9tOiByaWdodCwgdG86IGxlZnQpLCAoZnJvbTogbGVmdCwgdG86IHJpZ2h0KSk7XG4gIEByZXR1cm4gbWFwLWdldCgkcmV0dXJuLCAka2V5KTtcbn1cblxuLy8gVG9cbi8vIC0tXG4vLyBSZXR1cm4gdGhlICd0bycgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIHRvKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIHRvKTtcbn1cblxuLy8gRnJvbVxuLy8gLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIGZyb20oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgZnJvbSk7XG59XG4iLCIvLyBHcmlkIEJhY2tncm91bmQgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG4vLyAtIFN1Yi1waXhlbCByb3VuZGluZyBjYW4gbGVhZCB0byBzZXZlcmFsIHBpeGVscyB2YXJpYXRpb24gYmV0d2VlbiBicm93c2Vycy5cblxuLy8gR3JpZCBCYWNrZ3JvdW5kIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkaW1hZ2U6IGJhY2tncm91bmQtaW1hZ2Vcbi8vIC0gJHNpemU6IGJhY2tncm91bmQtc2l6ZVxuLy8gLSAkY2xpcDogYmFja2dyb3VuZC1jbGlwXG4vLyAtIFskZmxvd106IGx0ciB8IHJ0bFxuQG1peGluIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQgKFxuICAkaW1hZ2UsXG4gICRzaXplOiBudWxsLFxuICAkY2xpcDogbnVsbCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZSxcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplLFxuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwLFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGZyb20oJGZsb3cpIHRvcCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTaGFyZWQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgICAgICAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBjb250YWluZXItb3V0cHV0KFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgJG91dHB1dDogKFxuICAgICN7JHByb3BlcnR5fTogJHdpZHRoIG9yIDEwMCUsXG4gICAgbWFyZ2luLWxlZnQ6IG50aCgkanVzdGlmeSwgMSksXG4gICAgbWFyZ2luLXJpZ2h0OiBudGgoJGp1c3RpZnksIDIpLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIE1hcmdpbnMgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBNYXJnaW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIG1hcmdpbi1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBQYWRkaW5nIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gUGFkZGluZyBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIHBhZGRpbmctb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRiZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IENvbnRhaW5lclxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gZmxvYXQtY29udGFpbmVyKFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1jbGVhcmZpeDtcbiAgQGluY2x1ZGUgY29udGFpbmVyLW91dHB1dCgkd2lkdGgsICRqdXN0aWZ5LCAkcHJvcGVydHkpO1xufVxuIiwiLy8gRmxvYXQgU3BhbiBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IFNwYW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkd2lkdGggICAgICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb2F0XSAgICAgICAgICAgOiBmcm9tIHwgdG9cbi8vIC0gWyRtYXJnaW4tYmVmb3JlXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRtYXJnaW4tYWZ0ZXJdICAgIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWJlZm9yZV0gIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWFmdGVyXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgICAgICAgICAgIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtc3Bhbi1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tLFxuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGwsXG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbCxcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsLFxuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGwsXG4gICRmbG93ICAgICAgICAgICAgIDogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG8gICAgIDogdG8oJGZsb3cpO1xuICAkZnJvbSAgIDogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoOiAkd2lkdGgsXG4gICAgZmxvYXQ6IGlmKCRmbG9hdCA9PSB0bywgJHRvLCBudWxsKSBvciBpZigkZmxvYXQgPT0gZnJvbSwgJGZyb20sIG51bGwpLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRwYWRkaW5nLWFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IEVuZHMgQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEVuZCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGxhc3QtZmxvdzogdG8sXG4pKTtcblxuLy8gRmxvYXQgTGFzdFxuLy8gLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWxhc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGxhc3QtZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgbGFzdC1mbG93KSxcbiAgJG1hcmdpbjogMFxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogaWYoJGxhc3QtZmxvdyA9PSB0bywgJHRvLCBudWxsKSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuLy8gRmxvYXQgRmlyc3Rcbi8vIC0tLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtZmlyc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3tmcm9tKCRmbG93KX06IDAsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgSXNvbGF0aW9uIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBJc29sYXRlIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHB1c2ggICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGlzb2xhdGUtb3V0cHV0KFxuICAkcHVzaCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6ICRmcm9tLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJHB1c2gsXG4gICAgbWFyZ2luLSN7JHRvfTogLTEwMCUsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU3VzeSBTZXR0aW5nc1xuLy8gPT09PT09PT09PT09PVxuXG4vLyBTdXN5IExhbmd1YWdlIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IGZsdWlkLFxuICBvdXRwdXQ6IGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGNlbnRlcixcbiAgZ3V0dGVyLXBvc2l0aW9uOiBhZnRlcixcbiAgZ2xvYmFsLWJveC1zaXppbmc6IGNvbnRlbnQtYm94LFxuICBkZWJ1ZzogKFxuICAgIGltYWdlOiBoaWRlLFxuICAgIGNvbG9yOiByZ2JhKCM2NmYsIC4yNSksXG4gICAgb3V0cHV0OiBiYWNrZ3JvdW5kLFxuICAgIHRvZ2dsZTogdG9wIHJpZ2h0LFxuICApLFxuKSk7XG5cblxuLy8gVmFsaWQgS2V5d29yZCBWYWx1ZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEU6IERPTlQnVCBUT1VDSFxuJHN1c3kta2V5d29yZHM6IChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBzdGF0aWMgZmx1aWQsXG4gIG91dHB1dDogaXNvbGF0ZSBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBsZWZ0IGNlbnRlciByaWdodCxcbiAgZmxvdzogbHRyIHJ0bCxcbiAgZ3V0dGVyLXBvc2l0aW9uOiBiZWZvcmUgYWZ0ZXIgc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWMsXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3ggY29udGVudC1ib3gsXG4gIHNwYW46IGZ1bGwsXG4gIGVkZ2U6IGZpcnN0IGFscGhhIGxhc3Qgb21lZ2EgZnVsbCxcbiAgc3ByZWFkOiBuYXJyb3cgd2lkZSB3aWRlcixcbiAgZ3V0dGVyLW92ZXJyaWRlOiBuby1ndXR0ZXJzIG5vLWd1dHRlcixcbiAgcm9sZTogbmVzdCxcbiAgY2xlYXI6IGJyZWFrIG5vYnJlYWssXG4gIGRlYnVnIGltYWdlOiBzaG93IGhpZGUgc2hvdy1jb2x1bW5zIHNob3ctYmFzZWxpbmUsXG4gIGRlYnVnIG91dHB1dDogYmFja2dyb3VuZCBvdmVybGF5LFxuKTtcblxuXG4vLyBQYXJzZSBTdXN5IEtleXdvcmRzIGFuZCBNYXBzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc2V0dGluZ3MoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBzdHJpbmdzXG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gc3RyaW5nIHtcbiAgICAgICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRzdXN5LWtleXdvcmRzIHtcbiAgICAgICAgICBAaWYgaW5kZXgoJHZhbHVlLCAkaXRlbSkge1xuICAgICAgICAgICAgJF9rZXktdmFsdWU6IGFwcGVuZCgka2V5LCAkaXRlbSk7XG4gICAgICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1zZXQoJF9yZXR1cm4sICRfa2V5LXZhbHVlLi4uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIC8vIG1hcHNcbiAgICAgIH0gQGVsc2UgaWYgdHlwZS1vZigkaXRlbSkgPT0gbWFwIHtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgQ29sdW1ucyAmIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtbGF5b3V0KFxuICAkc2hvcnRcbikge1xuICAkX3JldHVybjogKCk7XG4gICRfY29sdW1uczogKCk7XG4gICRfZ3V0dGVyczogbnVsbDtcblxuICBAaWYgbm90KHVuaXRsZXNzKG50aChudGgoJHNob3J0LCAxKSwgMSkpKSB7XG4gICAgJF9ndXR0ZXJzOiBudGgoJHNob3J0LCAxKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9jb2x1bW5zOiAoY29sdW1uczogbnRoKCRzaG9ydCwgMSkpO1xuICAgICRfZ3V0dGVyczogaWYobGVuZ3RoKCRzaG9ydCkgPiAxLCBudGgoJHNob3J0LCAyKSwgJF9ndXR0ZXJzKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRfZ3V0dGVycykgPT0gbGlzdCBhbmQgbGVuZ3RoKCRfZ3V0dGVycykgPiAwIHtcbiAgICAkX2d1dHRlcnM6IChcbiAgICAgIGd1dHRlcnM6IG50aCgkX2d1dHRlcnMsIDIpIC8gbnRoKCRfZ3V0dGVycywgMSksXG4gICAgICBjb2x1bW4td2lkdGg6IG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICk7XG4gIH0gQGVsc2Uge1xuICAgICRfZ3V0dGVyczogaWYoJF9ndXR0ZXJzLCAoZ3V0dGVyczogJF9ndXR0ZXJzKSwgKCkpO1xuICB9XG5cbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9jb2x1bW5zKTtcbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9ndXR0ZXJzKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEdyaWQvQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3JpZChcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiBwYXJzZS1zZXR0aW5ncygkc2hvcnQpO1xuICAkX2xheW91dDogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBudW1iZXIgb3IgbGlzdFxuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBvciB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qgb3IgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgICAkX2xheW91dDogYXBwZW5kKCRfbGF5b3V0LCAkaXRlbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjb250YWluZXI6ICRpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2xheW91dDogaWYobGVuZ3RoKCRfbGF5b3V0KSA+IDAsIHBhcnNlLWxheW91dCgkX2xheW91dCksICRfbGF5b3V0KTtcbiAgfVxuXG4gIEByZXR1cm4gbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2xheW91dCk7XG59XG5cblxuLy8gUGFyc2UgU3BhblxuLy8gLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNwYW4oXG4gICRzaG9ydCxcbiAgJGtleTogc3BhblxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgJF9hdDogaW5kZXgoJHNob3J0LCBhdCk7XG5cbiAgICBAaWYgJF9hdCB7XG4gICAgICAkX2xvY2k6ICRfYXQgKyAxO1xuICAgICAgJF9sb2NhdGlvbjogbnRoKCRzaG9ydCwgJF9sb2NpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChsb2NhdGlvbjogJF9sb2NhdGlvbikpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9hdCwgbnVsbCk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2xvY2ksIG51bGwpO1xuICAgIH1cblxuICAgICRfaTogMTtcbiAgICAkX3NwYW46ICgpO1xuXG4gICAgQHdoaWxlICRfaSA8PSBsZW5ndGgoJHNob3J0KSB7XG4gICAgICAkX3RoaXM6IG50aCgkc2hvcnQsICRfaSk7XG5cbiAgICAgIEBpZiB0eXBlLW9mKCRfdGhpcykgPT0gbnVtYmVyIHtcbiAgICAgICAgJF9zcGFuOiBhcHBlbmQoJF9zcGFuLCAkX3RoaXMpO1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgfSBAZWxzZSBpZiAkX3RoaXMgPT0gb2Yge1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgICAkX2k6IGxlbmd0aCgkc2hvcnQpICsgMTtcbiAgICAgIH1cblxuICAgICAgJF9pOiAkX2kgKyAxO1xuICAgIH1cblxuICAgIEBpZiBsZW5ndGgoJF9zcGFuKSA+IDAge1xuICAgICAgJF9zcGFuOiBpZihsZW5ndGgoJF9zcGFuKSA9PSAxLCBudGgoJF9zcGFuLCAxKSwgJF9zcGFuKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgka2V5OiAkX3NwYW4pKTtcbiAgICB9XG5cbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCBwYXJzZS1ncmlkKCRzaG9ydCkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3V0dGVycyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfZ3V0dGVyczogcGFyc2Utc3Bhbigkc2hvcnQsIGd1dHRlci1vdmVycmlkZSk7XG4gICRfc3Bhbjogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkX2d1dHRlcnMpO1xuXG4gIEBpZiAkX3NwYW4gYW5kIG5vdChtYXAtZ2V0KCRfZ3V0dGVycywgY29sdW1ucykpIHtcbiAgICAkX2NvbnRleHQ6ICgpO1xuICAgICRfbmV3OiAoKTtcblxuICAgIEBlYWNoICRpdGVtIGluICRfc3BhbiB7XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAkX2NvbnRleHQ6IGFwcGVuZCgkX2NvbnRleHQsICRpdGVtKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkX25ldzogYXBwZW5kKCRfbmV3LCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9jb250ZXh0OiBwYXJzZS1ncmlkKCRfY29udGV4dCk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMCwgbnVsbCwgJF9uZXcpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDEsIG50aCgkX25ldywgMSksICRfbmV3KTtcbiAgICAkX25ldzogKGd1dHRlci1vdmVycmlkZTogaWYoJF9uZXcgIT0gJF9zcGFuLCAkX25ldywgJF9zcGFuKSk7XG5cbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfbmV3KTtcbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfY29udGV4dCk7XG4gIH1cblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cbiIsIi8vIFZhbGlkYXRpb25cbi8vID09PT09PT09PT1cblxuXG4vLyBWYWxpZGF0ZSBDb2x1bW4gTWF0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW4tbWF0aChcbiAgJG1hdGgsXG4gICRjb2x1bW4td2lkdGhcbikge1xuICBAaWYgJG1hdGggPT0gc3RhdGljIGFuZCBub3QoJGNvbHVtbi13aWR0aCkge1xuICAgIEBlcnJvciAnU3RhdGljIG1hdGggcmVxdWlyZXMgYSB2YWxpZCBjb2x1bW4td2lkdGggc2V0dGluZy4nO1xuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXdpZHRoO1xufVxuIiwiLy8gR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFNldCBhIG5ldyBsYXlvdXQgdXNpbmcgYSBzaG9ydGhhbmRcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiBsYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxheW91dCwgJGluc3BlY3QpO1xufVxuXG5cbi8vIFVzZSBHcmlkXG4vLyAtLS0tLS0tLVxuLy8gVXNlIGFuIGFyYml0cmFyeSBsYXlvdXQgZm9yIGEgc2VjdGlvbiBvZiBjb2RlXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gd2l0aC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkb2xkICAgICAgOiAkc3VzeTtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdCh3aXRoLWxheW91dCwgJGluc3BlY3QpO1xuXG4gIEBjb250ZW50O1xuXG4gICRzdXN5OiAkb2xkICFnbG9iYWw7XG59XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFJldHVybiBhIHBhcnNlZCBsYXlvdXQgbWFwIGJhc2VkIG9uIHNob3J0aGFuZCBzeW50YXhcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGxheW91dChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICBAcmV0dXJuIHBhcnNlLWdyaWQoJGxheW91dCk7XG59XG5cblxuLy8gR2V0IExheW91dFxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmV3IGxheW91dCBiYXNlZCBvbiBjdXJyZW50IGFuZCBnaXZlbiBzZXR0aW5nc1xuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQGZ1bmN0aW9uIF9nZXQtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGxheW91dDogbGF5b3V0KCRsYXlvdXQpO1xuICBAcmV0dXJuIGlmKCRjbGVhbiwgJGxheW91dCwgX3N1c3ktZGVlcC1tZXJnZSgkc3VzeSwgJGxheW91dCkpO1xufVxuIiwiLy8gU3VzeSBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBHbG9iYWwgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGJveCBtb2RlbCBnbG9iYWxseSBvbiBhbGwgZWxlbWVudHMuXG4vLyAtIFskYm94XTogYm9yZGVyLWJveCB8IGNvbnRlbnQtYm94XG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGdsb2JhbC1ib3gtc2l6aW5nKFxuICAkYm94OiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZyksXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0OiAkYm94O1xuXG4gIEBpZiAkaW5oZXJpdCB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgIGh0bWwgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICAgICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgYm94LXNpemluZzogaW5oZXJpdDsgfVxuICAgICB9XG4gIH0gQGVsc2Uge1xuICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnbG9iYWwtYm94LXNpemluZywgJGluc3BlY3QpO1xuICBAaW5jbHVkZSB1cGRhdGUtYm94LW1vZGVsKCRib3gpO1xufVxuXG4vLyBCb3JkZXIgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEEgbGVnYWN5IHNob3J0Y3V0Li4uXG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGJvcmRlci1ib3gtc2l6aW5nKFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICBAaW5jbHVkZSBnbG9iYWwtYm94LXNpemluZyhib3JkZXItYm94LCAkaW5oZXJpdCk7XG59XG5cbi8vIFVwZGF0ZSBCb3ggTW9kZWxcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFVwZGF0ZXMgZ2xvYmFsIGJveCBtb2RlbCBzZXR0aW5nXG5AbWl4aW4gdXBkYXRlLWJveC1tb2RlbChcbiAgJGJveFxuKSB7XG4gIEBpZiAkYm94ICE9IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSB7XG4gIEBpbmNsdWRlIHN1c3ktc2V0KGdsb2JhbC1ib3gtc2l6aW5nLCAkYm94KTtcbiAgfVxufVxuIiwiLy8gQ29udGV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIE5lc3RlZCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IGdyaWQgZm9yIG5lc3RlZCBjb250ZXh0LlxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG5AZnVuY3Rpb24gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRjb250ZXh0ICAgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRzcGFuICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJGNvbnRleHQpO1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkY29udGV4dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG59XG5cbi8vIE5lc3RlZCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gVXNlIGEgc3Vic2V0IGdyaWQgZm9yIGEgbmVzdGVkIGNvbnRleHRcbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuLy8gLSBAY29udGVudCAgIDogPGNvbnRlbnQ+XG5AbWl4aW4gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJG9sZCAgICAgIDogc3VzeS1nZXQoY29sdW1ucyk7XG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6IG5lc3RlZCgkY29udGV4dCkpKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChuZXN0ZWQsICRpbnNwZWN0KTtcbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogJG9sZCkpICFnbG9iYWw7XG59XG4iLCIvLyBCYWNrZ3JvdW5kIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogZmFsc2U7XG5cblxuLy8gU2hvdyBHcmlkL3Ncbi8vIC0tLS0tLS0tLS0tXG4vLyBTaG93IGdyaWQgb24gYW55IGVsZW1lbnQgdXNpbmcgZWl0aGVyIGJhY2tncm91bmQgb3Igb3ZlcmxheS5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gc2hvdy1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdDogJGdyaWQ7XG4gICRfb3V0cHV0OiBkZWJ1Zy1nZXQob3V0cHV0LCAkZ3JpZCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNob3ctZ3JpZCwgJGluc3BlY3QpO1xuICBAaWYgJF9vdXRwdXQgPT0gb3ZlcmxheSBhbmQgc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKSAhPSBoaWRlIHtcbiAgICBAaW5jbHVkZSBvdmVybGF5LWdyaWQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICB9XG59XG5cbkBtaXhpbiBzaG93LWdyaWRzKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGdyaWQpO1xufVxuXG4vLyBCYWNrZ3JvdW5kIEdyaWRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2hvdyBhIGdyaWQgYmFja2dyb3VuZCBvbiBhbnkgZWxlbWVudC5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkZ3JpZDtcbiAgJF9vdXRwdXQgIDogZ2V0LWJhY2tncm91bmQoJGdyaWQpO1xuXG4gIEBpZiBsZW5ndGgoJF9vdXRwdXQpID4gMCB7XG4gICAgJF9mbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCk7XG5cbiAgICAkX2ltYWdlOiAoKTtcbiAgICBAZWFjaCAkbmFtZSwgJGxheWVyIGluIG1hcC1nZXQoJF9vdXRwdXQsIGltYWdlKSB7XG4gICAgICAkX2RpcmVjdGlvbjogaWYoJG5hbWUgPT0gYmFzZWxpbmUsIHRvIGJvdHRvbSwgdG8gdG8oJF9mbG93KSk7XG4gICAgICAkX2ltYWdlOiBhcHBlbmQoJF9pbWFnZSwgbGluZWFyLWdyYWRpZW50KCRfZGlyZWN0aW9uLCAkbGF5ZXIpLCBjb21tYSk7XG4gICAgfVxuICAgICRfb3V0cHV0OiBtYXAtbWVyZ2UoJF9vdXRwdXQsIChpbWFnZTogJF9pbWFnZSkpO1xuXG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkLW91dHB1dCgkX291dHB1dC4uLik7XG4gICAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJhY2tncm91bmQtZ3JpZCwgJGluc3BlY3QpO1xuICB9XG59XG5cblxuLy8gT3ZlcmxheSBHcmlkXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEdlbmVyYXRlIGFuIGljb24gdG8gdHJpZ2dlciBncmlkLW92ZXJsYXlzIG9uIGFueSBnaXZlbiBlbGVtZW50cy5cbi8vICRncmlkcy4uLiAgOiA8c2VsZWN0b3I+IFs8c2V0dGluZ3M+XSBbLCA8c2VsZWN0b3I+XSpcbkBtaXhpbiBvdmVybGF5LWdyaWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaWYgbm90KCRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0cykge1xuICAgIEBhdC1yb290IGhlYWQgeyBAaW5jbHVkZSBvdmVybGF5LWhlYWQoJGdyaWQpOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpiZWZvcmUgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXI7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmhvdmVyIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyLWhvdmVyOyB9XG4gICAgJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiB0cnVlICFnbG9iYWw7XG4gIH1cblxuICBoZWFkOmhvdmVyIH4gJixcbiAgaGVhZDpob3ZlciB+IGJvZHkgJiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtb3ZlcmxheS1iYXNlO1xuICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyIHtcbiAgY29udGVudDogXCJ8fHxcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDVweCAxMHB4O1xuICBmb250OiB7XG4gICAgZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAgIHNpemU6IDE2cHg7XG4gICAgd2VpZ2h0OiBib2xkO1xuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlciBIb3ZlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlci1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC41KTtcbiAgY29sb3I6IHJlZDtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBIZWFkXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyA8aGVhZD4gc3R5bGVzIHRvIGNyZWF0ZSBncmlkIG92ZXJsYXkgdG9nZ2xlXG5AbWl4aW4gb3ZlcmxheS1oZWFkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJF90b2dnbGU6IGRlYnVnLWdldCh0b2dnbGUsICRncmlkKTtcbiAgJF9ob3J6OiBudWxsO1xuICAkX3ZlcnQ6IG51bGw7XG5cbiAgQGVhY2ggJHNpZGUgaW4gJF90b2dnbGUge1xuICAgICRfaG9yejogaWYoJHNpZGUgPT0gbGVmdCBvciAkc2lkZSA9PSByaWdodCwgJHNpZGUsICRfaG9yeik7XG4gICAgJF92ZXJ0OiBpZigkc2lkZSA9PSB0b3Agb3IgJHNpZGUgPT0gYm90dG9tLCAkc2lkZSwgJF92ZXJ0KTtcbiAgfVxuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gICN7JF9ob3J6fTogMTBweDtcbiAgI3skX3ZlcnR9OiAxMHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGNvbG9yOiAjMzMzO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuMjUpO1xufVxuXG5cbi8vIFtQcml2YXRlXSBHcmlkIE92ZXJsYXkgQmFzZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCYXNlIHN0eWxlcyBmb3IgZ2VuZXJhdGluZyBhIGdyaWQgb3ZlcmxheVxuQG1peGluIGdyaWQtb3ZlcmxheS1iYXNlKCkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgY29udGVudDogXCIgXCI7XG4gIHotaW5kZXg6IDk5ODtcbn1cblxuXG4vLyBHZXQgU3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICAgICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2d1dHRlcnMgICAgICAgOiBzdXN5LWdldChndXR0ZXJzLCAkZ3JpZCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGdyaWQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgICAgICAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF90cmFucyAgICAgICAgIDogdHJhbnNwYXJlbnQ7XG4gICRfbGlnaHQgICAgICAgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcblxuICAkX2VuZCAgICAgICAgICAgOiAxICsgJF9ndXR0ZXJzO1xuICAkX2FmdGVyICAgICAgICAgOiBwZXJjZW50YWdlKDEvJF9lbmQpO1xuICAkX3N0b3BzICAgICAgICAgOiAoKTtcbiAgJF9zaXplICAgICAgICAgIDogc3BhbigxICRncmlkIHdpZGUpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0O1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zcGxpdDogJF9ndXR0ZXJzLzI7XG4gICAgJF9iZWZvcmU6IHBlcmNlbnRhZ2UoJF9zcGxpdC8kX2VuZCk7XG4gICAgJF9hZnRlcjogcGVyY2VudGFnZSgoMSArICRfc3BsaXQpLyRfZW5kKTtcbiAgICAkX3N0b3BzOiAkX3RyYW5zICRfYmVmb3JlLCAkX2NvbG9yICRfYmVmb3JlLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH1cblxuICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgJF9zaXplOiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSAqICRfZW5kO1xuICB9XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpLFxuICAgIHNpemU6ICRfc2l6ZSxcbiAgKTtcblxuICBAcmV0dXJuICRfb3V0cHV0O1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgSW5zaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLWluc2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBTcGxpdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLXNwbGl0KFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJHN0YXJ0LCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG5cbiAgICAkX2VuZDogJHN0YXJ0ICsgc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJF9lbmQsIGNvbW1hKTtcblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgT3V0c2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tb3V0c2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF90cmFucyAgIDogdHJhbnNwYXJlbnQ7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkZ3V0dGVyOiBnZXQtc3Bhbi13aWR0aChmaXJzdCAkbG9jYXRpb24gJGdyaWQpO1xuXG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG5cbiAgICAgICRndXR0ZXI6ICRfbGlnaHQgJGd1dHRlciwgJF90cmFucyAkZ3V0dGVyLCAkX3RyYW5zICRfZW5kO1xuICAgICAgJHRoaXMtc3RvcDogam9pbigkdGhpcy1zdG9wLCAkZ3V0dGVyLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1hc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRfc3RvcHM6ICgpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1pbnNpZGUoJGdyaWQpO1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tc3BsaXQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1vdXRzaWRlKCRncmlkKTtcbiAgfVxuXG4gIEByZXR1cm4gKGltYWdlOiAoY29sdW1uczogJF9zdG9wcykpO1xufVxuXG5cbi8vIEdldCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX3Nob3cgICAgOiBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpO1xuICAkX3JldHVybiAgOiAoKTtcblxuICBAaWYgJF9zaG93IGFuZCAkX3Nob3cgIT0gJ2hpZGUnIHtcbiAgICAkX2NvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgICRfc3ltOiBpcy1zeW1tZXRyaWNhbCgkX2NvbHVtbnMpO1xuICAgICAgJF9yZXR1cm46IGlmKCRfc3ltLCBnZXQtYmFja2dyb3VuZC1zeW0oJGdyaWQpLCBnZXQtYmFja2dyb3VuZC1hc3ltKCRncmlkKSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogY29udGVudC1ib3gpKTtcbiAgICB9XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWNvbHVtbnMnXG4gICAgICBhbmQgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cyhiYXNlLWxpbmUtaGVpZ2h0KVxuICAgICAgYW5kIHR5cGUtb2YoJGJhc2UtbGluZS1oZWlnaHQpID09ICdudW1iZXInXG4gICAgICBhbmQgbm90IHVuaXRsZXNzKCRiYXNlLWxpbmUtaGVpZ2h0KSB7XG4gICAgICAkX2NvbG9yOiB2YXJpYWJsZS1leGlzdHMoJ2dyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcicpO1xuICAgICAgJF9jb2xvcjogaWYoJF9jb2xvciwgJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvciwgIzAwMCk7XG5cbiAgICAgICRfaW1hZ2U6IG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKTtcbiAgICAgICRfc2l6ZTogbWFwLWdldCgkX3JldHVybiwgc2l6ZSk7XG4gICAgICAkX2Jhc2VsaW5lOiAoYmFzZWxpbmU6ICgkX2NvbG9yIDFweCwgdHJhbnNwYXJlbnQgMXB4KSk7XG4gICAgICAkX2Jhc2VsaW5lLXNpemU6IDEwMCUgJGJhc2UtbGluZS1oZWlnaHQ7XG5cbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChcbiAgICAgICAgaW1hZ2U6IGlmKCRfaW1hZ2UsIG1hcC1tZXJnZSgkX2ltYWdlLCAkX2Jhc2VsaW5lKSwgJF9iYXNlbGluZSksXG4gICAgICAgIHNpemU6IGlmKCRfc2l6ZSwgKCRfc2l6ZSwgJF9iYXNlbGluZS1zaXplKSwgJF9iYXNlbGluZS1zaXplKSxcbiAgICAgICkpO1xuXG4gICAgICBAaWYgJF9zaG93ID09ICdzaG93JyB7XG4gICAgICAgICRfY2xpcDogbWFwLWdldCgkX3JldHVybiwgY2xpcCk7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBqb2luKCRfY2xpcCwgYm9yZGVyLWJveCwgY29tbWEpKSk7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkX3Nob3cgPT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgIEB3YXJuICdQbGVhc2UgcHJvdmlkZSBhICRiYXNlLWxpbmUtaGVpZ2h0IHdpdGggdGhlIGRlc2lyZWQgaGVpZ2h0IGFuZCB1bml0cyc7XG4gICAgfVxuICB9XG5cbiAgQGlmIG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGZsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKSkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBHZXQgRGVidWdcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiBhIGRlYnVnIHNldHRpbmdcbi8vIC0gJGtleTogPHNldHRpbmc+XG5AZnVuY3Rpb24gZGVidWctZ2V0KFxuICAka2V5LFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAka2V5OiBqb2luKGRlYnVnLCAka2V5LCBzcGFjZSk7XG4gIEByZXR1cm4gc3VzeS1nZXQoJGtleSwgJGdyaWQpO1xufVxuIiwiLy8gQ29udGFpbmVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGNvbnRhaW5lciBlbGVtZW50XG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICAgIDogJGxheW91dDtcbiAgJGxheW91dCAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuXG4gICRfd2lkdGggICAgIDogZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbiAgJF9qdXN0aWZ5ICAgOiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oc3VzeS1nZXQoY29udGFpbmVyLXBvc2l0aW9uLCAkbGF5b3V0KSk7XG4gICRfcHJvcGVydHkgIDogaWYoc3VzeS1nZXQobWF0aCwgJGxheW91dCkgPT0gc3RhdGljLCB3aWR0aCwgbWF4LXdpZHRoKTtcblxuICAkX2JveCAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRsYXlvdXQpO1xuXG4gIEBpZiAkX2JveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkX2JveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGNvbnRhaW5lciwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBmbG9hdC1jb250YWluZXIoJF93aWR0aCwgJF9qdXN0aWZ5LCAkX3Byb3BlcnR5KTtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRsYXlvdXQpO1xufVxuXG4vLyBDb250YWluZXIgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgQHJldHVybiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xufVxuXG4vLyBHZXQgQ29udGFpbmVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgdGhlIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF06IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtY29udGFpbmVyLXdpZHRoKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQgICAgICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfd2lkdGggICAgICAgICA6IHN1c3ktZ2V0KGNvbnRhaW5lciwgJGxheW91dCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGxheW91dCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpO1xuXG4gIEBpZiBub3QoJF93aWR0aCkgb3IgJF93aWR0aCA9PSBhdXRvIHtcbiAgICBAaWYgdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkge1xuICAgICAgJF9jb2x1bW5zICAgOiBzdXN5LWdldChjb2x1bW5zLCAkbGF5b3V0KTtcbiAgICAgICRfZ3V0dGVycyAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGxheW91dCk7XG4gICAgICAkX3NwcmVhZCAgICA6IGlmKGlzLXNwbGl0KCRsYXlvdXQpLCB3aWRlLCBuYXJyb3cpO1xuICAgICAgJF93aWR0aCAgICAgOiBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpICogJF9jb2x1bW4td2lkdGg7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3dpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF93aWR0aDtcbn1cblxuLy8gUGFyc2UgQ29udGFpbmVyIFBvc2l0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcnNlIHRoZSAkY29udGFpbmVyLXBvc2l0aW9uIGludG8gbWFyZ2luIHZhbHVlcy5cbi8vIC0gWyRqdXN0aWZ5XSAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0IHwgPGxlbmd0aD4gWzxsZW5ndGg+XVxuQGZ1bmN0aW9uIHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihcbiAgJGp1c3RpZnk6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGNvbnRhaW5lci1wb3NpdGlvbilcbikge1xuICAkX3JldHVybjogaWYoJGp1c3RpZnkgPT0gbGVmdCwgMCwgYXV0bykgaWYoJGp1c3RpZnkgPT0gcmlnaHQsIDAsIGF1dG8pO1xuXG4gIEBpZiBub3QoaW5kZXgobGVmdCByaWdodCBjZW50ZXIsICRqdXN0aWZ5KSkge1xuICAgICRfcmV0dXJuOiBudGgoJGp1c3RpZnksIDEpO1xuICAgICRfcmV0dXJuOiAkX3JldHVybiBpZihsZW5ndGgoJGp1c3RpZnkpID4gMSwgbnRoKCRqdXN0aWZ5LCAyKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNwYW4gU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG4vLyBTcGFuIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgc3Bhbm5pbmcgZWxlbWVudCB1c2luZyBzaG9ydGhhbmQgc3ludGF4LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW46IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkb3V0cHV0OiBzcGFuLW1hdGgoJHNwYW4pO1xuICAkbmVzdGluZzogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY2xlYXI6IHN1c3ktZ2V0KGNsZWFyLCAkc3Bhbik7XG5cbiAgJGJveDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkY29udGVudC1ib3g6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcbiAgJGJveDogJGJveCBvciBpZihpcy1pbnNpZGUoJHNwYW4pIGFuZCAkY29udGVudC1ib3gsIGJvcmRlci1ib3gsIG51bGwpO1xuXG4gIEBpZiAkY2xlYXIgPT0gYnJlYWsge1xuICAgIEBpbmNsdWRlIGJyZWFrO1xuICB9IEBlbHNlIGlmICRjbGVhciA9PSBub2JyZWFrIHtcbiAgICBAaW5jbHVkZSBub2JyZWFrO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNwYW4sICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7XG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIEBpZiB2YWxpZC1jb2x1bW5zKCRuZXN0aW5nLCBzaWxlbnQpIHtcbiAgICBAaW5jbHVkZSBuZXN0ZWQoJHNwYW4pIHsgQGNvbnRlbnQ7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU3BhbiBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBzcGFuLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gIEByZXR1cm4gZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xufVxuXG4vLyBTcGFuIE1hdGhcbi8vIC0tLS0tLS0tLVxuLy8gR2V0IGFsbCB0aGUgc3BhbiByZXN1bHRzLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBzcGFuLW1hdGgoXG4gICRzcGFuXG4pIHtcbiAgJG5lc3QgICAgICAgICAgICAgOiBpZihzdXN5LWdldChyb2xlLCAkc3BhbikgPT0gbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkc3BsaXQtbmVzdCAgICAgICA6IGlmKGlzLXNwbGl0KCRzcGFuKSBhbmQgJG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJGVkZ2UgICAgICAgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRsb2NhdGlvbiAgICAgICAgIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcblxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb207XG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbDtcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsO1xuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGw7XG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbDtcblxuICAvLyBjYWxjdWxhdGUgd2lkdGhzXG4gICRzcHJlYWQ6IGluZGV4KG1hcC12YWx1ZXMoJHNwYW4pLCBzcHJlYWQpO1xuICAkc3BhbjogaWYoJHNwbGl0LW5lc3QgYW5kIG5vdCgkc3ByZWFkKSwgbWFwLW1lcmdlKCRzcGFuLCAoc3ByZWFkOiB3aWRlKSksICRzcGFuKTtcbiAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG4gICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgLy8gYXBwbHkgZ3V0dGVyc1xuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGlmIG5vdChzdXN5LWdldChyb2xlLCAkc3BhbikpIHtcbiAgICAgICRwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgbm90KCRzcGxpdC1uZXN0KSB7XG4gICAgICAkbWFyZ2luLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRtYXJnaW4tYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBzcGVjaWFsIG1hcmdpbiBoYW5kbGluZ1xuICBAaWYgc3VzeS1nZXQob3V0cHV0LCAkc3BhbikgPT0gaXNvbGF0ZSBhbmQgJGxvY2F0aW9uIHtcbiAgICAkbWFyZ2luLWJlZm9yZTogZ2V0LWlzb2xhdGlvbigkc3Bhbik7XG4gICAgJG1hcmdpbi1hZnRlcjogLTEwMCU7XG4gIH0gQGVsc2UgaWYgJGVkZ2Uge1xuICAgICRpcy1zcGxpdDogaXMtc3BsaXQoJHNwYW4pO1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuXG4gICAgQGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGZsb2F0OiBzdXN5LWdldChsYXN0LWZsb3csICRzcGFuKTtcbiAgICB9XG5cbiAgICBAaWYgbm90KCRpcy1zcGxpdCkge1xuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGZpcnN0IGFuZCAkcG9zID09IGJlZm9yZSkge1xuICAgICAgICAkbWFyZ2luLWJlZm9yZTogMDtcbiAgICAgIH1cbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBsYXN0IGFuZCAkcG9zID09IGFmdGVyKSB7XG4gICAgICAgICRtYXJnaW4tYWZ0ZXI6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuIChcbiAgICB3aWR0aCAgICAgICAgICAgOiAkd2lkdGgsXG4gICAgZmxvYXQgICAgICAgICAgIDogJGZsb2F0LFxuICAgIG1hcmdpbi1iZWZvcmUgICA6ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi1hZnRlciAgICA6ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy1iZWZvcmUgIDogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctYWZ0ZXIgICA6ICRwYWRkaW5nLWFmdGVyLFxuICAgIGZsb3cgICAgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcbn1cblxuLy8gR2V0IFNwYW4gV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gc3BhbiB3aWR0aC5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LXNwYW4td2lkdGgoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG5cbiAgJG4gICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkbG9jYXRpb24gOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRzcGFuKTtcbiAgJHNwcmVhZCAgIDogc3VzeS1nZXQoc3ByZWFkLCAkc3Bhbik7XG5cbiAgJGNvbnRleHQgIDogbnVsbDtcbiAgJHNwYW4tc3VtIDogbnVsbDtcbiAgJHdpZHRoICAgIDogbnVsbDtcblxuICBAaWYgJG4gPT0gJ2Z1bGwnIHtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcbiAgICAkcm9sZTogc3VzeS1nZXQocm9sZSwgJHNwYW4pO1xuICAgICRuOiBpZigkcG9zID09IHNwbGl0IGFuZCAkcm9sZSAhPSBuZXN0LCBzdXN5LWNvdW50KCRjb2x1bW5zKSwgMTAwJSk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkbikgIT0gbnVtYmVyIHtcbiAgICBAd2FybiBcIigje3R5cGUtb2YoJG4pfSkgI3skbn0gaXMgbm90IGEgdmFsaWQgc3Bhbi5cIjtcbiAgfSBAZWxzZSBpZiB1bml0bGVzcygkbikge1xuICAgICRjb250ZXh0OiBzdXN5LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsIGlmKGlzLXNwbGl0KCRzcGFuKSwgd2lkZSwgbmFycm93KSk7XG4gICAgJHNwcmVhZDogaWYoaXMtaW5zaWRlKCRzcGFuKSwgJHNwcmVhZCBvciB3aWRlLCAkc3ByZWFkKTtcbiAgICAkc3Bhbi1zdW06IHN1c3koJG4sICRsb2NhdGlvbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkc3ByZWFkKTtcblxuICAgICRfbWF0aDogc3VzeS1nZXQobWF0aCwgJHNwYW4pO1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRzcGFuKTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkd2lkdGg6ICRzcGFuLXN1bSAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRzcGFuLXN1bSAvICRjb250ZXh0KTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICR3aWR0aDogJG47XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aDtcbn1cbiIsIi8vIEd1dHRlciBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBHdXR0ZXJzXG4vLyAtLS0tLS0tXG4vLyBTZXQgZ3V0dGVycyBvbiBhbiBlbGVtZW50LlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnMgOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBiZWZvcmU6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpLFxuICAgIGFmdGVyOiBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ3V0dGVycywgJGluc3BlY3QpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9XG59XG5cbkBtaXhpbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGd1dHRlcnMoJHNwYW4pO1xufVxuXG5cbi8vIEd1dHRlclxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgZ3V0dGVyLlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkc3BhbjogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9ndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVyczogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSkgb3IgbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cblxuQGZ1bmN0aW9uIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gZ3V0dGVyKCRzcGFuKTtcbn1cblxuXG4vLyBHZXQgR3V0dGVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gZ3V0dGVyIHdpZHRoLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVyLXdpZHRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlcnMgOiBzdXN5LWdldChndXR0ZXJzLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICA6IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJGNvbnRleHQpO1xuXG4gIEBpZiAkX2d1dHRlcnMgYW5kICgkX2d1dHRlcnMgPiAwKSBhbmQgbm90KCRfZ3V0dGVyKSB7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGNvbnRleHQpO1xuICAgICRfbWF0aDogZ3V0dGVyLW1hdGgoJGNvbnRleHQpO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICRfZ3V0dGVyOiAkX2d1dHRlcnMgKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcbiAgICAgICRfc3ByZWFkICA6IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgd2lkZSwgc3VzeS1nZXQoc3ByZWFkLCAkY29udGV4dCkpO1xuICAgICAgJF9ndXR0ZXIgIDogcGVyY2VudGFnZSgkX2d1dHRlcnMgLyBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpKTtcbiAgICB9XG4gIH1cblxuICAkX2d1dHRlcjogaWYoJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcnMnIG9yICRfZ3V0dGVyID09ICduby1ndXR0ZXInLCBudWxsLCAkX2d1dHRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcjtcbn1cblxuXG4vLyBHZXQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBiZWZvcmUgYW5kIGFmdGVyIGd1dHRlciB2YWx1ZXMuXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXJzKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgICAgICAgICAgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXItcG9zaXRpb24gICA6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgICAgICAgICAgIDogZ2V0LWd1dHRlci13aWR0aCgkY29udGV4dCk7XG5cbiAgJF9yZXR1cm4gICAgICAgICAgICA6IChiZWZvcmU6IG51bGwsIGFmdGVyOiBudWxsKTtcblxuICBAaWYgaXMtc3BsaXQoJGNvbnRleHQpIGFuZCAkX2d1dHRlciB7XG4gICAgJF9ndXR0ZXI6ICRfZ3V0dGVyIC8gMjtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoYmVmb3JlOiAkX2d1dHRlciwgYWZ0ZXI6ICRfZ3V0dGVyKSk7XG4gIH0gQGVsc2Uge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgkX2d1dHRlci1wb3NpdGlvbjogJF9ndXR0ZXIpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gSXMgSW5zaWRlXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBpbnNpZGUuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtaW5zaWRlKFxuICAkY29udGV4dFxuKSB7XG4gICRfaW5zaWRlOiBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9pbnNpZGUsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIElzIFNwbGl0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIHNwbGl0LlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLXNwbGl0KFxuICAkY29udGV4dFxuKSB7XG4gICRfc3BsaXQ6IHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX3NwbGl0LCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBHdXR0ZXIgTWF0aFxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgbWF0aCB0byB1c2UgZm9yIGd1dHRlciBjYWxjdWxhdGlvbnNcbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBndXR0ZXItbWF0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm4gIDogc3VzeS1nZXQobWF0aCwgJGNvbnRleHQpO1xuICAkX3JldHVybiAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KSA9PSBpbnNpZGUtc3RhdGljLCBzdGF0aWMsICRfcmV0dXJuKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gSXNvbGF0aW9uIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG5cbi8vIElzb2xhdGUgW01peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgaXNvbGF0aW9uIGFzIGFuIG92ZXJyaWRlLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQG1peGluIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGluc3BlY3Q6ICRpc29sYXRlO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwdXNoOiBpc29sYXRlKCRpc29sYXRlKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkaXNvbGF0ZSksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGlzb2xhdGUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgaXNvbGF0ZS1vdXRwdXQoJG91dHB1dC4uLik7XG59XG5cblxuLy8gSXNvbGF0ZSBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhbiBpc29sYXRpb24gb2Zmc2V0IHdpZHRoLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQGZ1bmN0aW9uIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGlzb2xhdGU6IHBhcnNlLXNwYW4oJGlzb2xhdGUpO1xuICAkaXNvbGF0aW9uOiBzdXN5LWdldChzcGFuLCAkaXNvbGF0ZSk7XG5cbiAgQGlmICRpc29sYXRpb24gYW5kIG5vdChnZXQtbG9jYXRpb24oJGlzb2xhdGUpKSB7XG4gICAgJG5ldzogKFxuICAgICAgc3BhbjogbnVsbCxcbiAgICAgIGxvY2F0aW9uOiAkaXNvbGF0aW9uLFxuICAgICk7XG4gICAgJGlzb2xhdGU6IG1hcC1tZXJnZSgkaXNvbGF0ZSwgJG5ldyk7XG4gIH1cblxuICBAcmV0dXJuIGdldC1pc29sYXRpb24oJGlzb2xhdGUpO1xufVxuXG5cbi8vIEdldCBJc29sYXRpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgaXNvbGF0aW9uIG9mZnNldCB3aWR0aFxuLy8gLSAkaW5wdXQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWlzb2xhdGlvbihcbiAgJGlucHV0XG4pIHtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGlucHV0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkaW5wdXQpO1xuICAkd2lkdGggICAgICA6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIgYW5kIG5vdCh1bml0bGVzcygkbG9jYXRpb24pKSB7XG4gICAgJHdpZHRoOiAkbG9jYXRpb247XG4gIH0gQGVsc2UgaWYgJGxvY2F0aW9uIHtcbiAgICAkcHVzaDogJGxvY2F0aW9uIC0gMTtcbiAgICBAaWYgJHB1c2ggPiAwIHtcbiAgICAgICRwdXNoOiBtYXAtbWVyZ2UoJGlucHV0LCAoXG4gICAgICAgIHNwYW46ICRwdXNoLFxuICAgICAgICBsb2NhdGlvbjogMSxcbiAgICAgICAgc3ByZWFkOiB3aWRlLFxuICAgICAgKSk7XG4gICAgICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRwdXNoKTtcbiAgICB9XG4gIH1cblxuICBAaWYgc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkaW5wdXQpID09IHNwbGl0XG4gICAgICBhbmQgc3VzeS1nZXQoZ3V0dGVycywgJGlucHV0KSA+IDAge1xuICAgICR3aWR0aDogaWYoJHdpZHRoID09IG51bGwsIGd1dHRlcnMoJGlucHV0KSwgJHdpZHRoICsgZ3V0dGVycygkaW5wdXQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoIG9yIDA7XG59XG4iLCIvLyBHYWxsZXJ5IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gR2FsbGVyeVxuLy8gLS0tLS0tLVxuLy8gQ3JlYXRlIGFuIGlzb2xhdGVkIGdhbGxlcnlcbi8vIC0gJHNwYW4gICAgICAgIDogPHNwYW4+XG4vLyAtIFskc2VsZWN0b3JdICA6IGNoaWxkIHwgb2YtdHlwZVxuQG1peGluIGdhbGxlcnkoXG4gICRzcGFuLFxuICAkc2VsZWN0b3I6IGNoaWxkXG4pIHtcbiAgJGluc3BlY3QgICAgOiAkc3BhbjtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJHNwYW4gICAgICAgOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogMSkpO1xuXG4gICRuICAgICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRjb250ZXh0ICAgICAgOiBzdXN5LWNvdW50KCRjb2x1bW5zKTtcbiAgJGZsb3cgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcblxuICAkaW5zaWRlICAgICAgIDogaXMtaW5zaWRlKCRzcGFuKTtcbiAgJGZyb20gICAgICAgICA6IGZyb20oJGZsb3cpO1xuICAkbGluZSAgICAgICAgIDogZmxvb3IoJGNvbnRleHQgLyAkbik7XG4gICRzeW1tZXRyaWNhbCAgOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoICAgICAgICAgICAgIDogbnVsbCxcbiAgICBmbG9hdCAgICAgICAgICAgICA6IGZyb20sXG4gICAgbWFyZ2luLWJlZm9yZSAgICAgOiBudWxsLFxuICAgIG1hcmdpbi1hZnRlciAgICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICk7XG5cbiAgQGlmICRpbnNpZGUge1xuICAgICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsIChcbiAgICAgIHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpLFxuICAgICAgcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpLFxuICAgICkpO1xuICB9XG5cbiAgQGlmICRzeW1tZXRyaWNhbCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICh3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSk7XG4gIH1cblxuICAkYm94ICAgICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkZ2xvYmFsLWJveCAgIDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpID09ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnYWxsZXJ5LCAkaW5zcGVjdCk7XG5cbiAgLy8gQ29sbGVjdGl2ZSBPdXRwdXRcbiAgQGlmICRib3ggPT0gYm9yZGVyLWJveCBvciAoJGluc2lkZSBhbmQgbm90KCRib3gpIGFuZCBub3QoJGdsb2JhbC1ib3gpKSB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBib3JkZXItYm94KSk7XG4gIH0gQGVsc2UgaWYgJGJveCA9PSBjb250ZW50LWJveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBjb250ZW50LWJveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgLy8gSW5kaXZpZHVhbCBMb29wXG4gIEBmb3IgJGl0ZW0gZnJvbSAxIHRocm91Z2ggJGxpbmUge1xuICAgICRudGg6ICcjeyRsaW5lfW4gKyAjeyRpdGVtfSc7XG4gICAgJjpudGgtI3skc2VsZWN0b3J9KCN7JG50aH0pIHtcbiAgICAgIC8vIEluZGl2aWR1YWwgUHJlcFxuICAgICAgJG91dHB1dDogKFxuICAgICAgICB3aWR0aCAgICAgICAgICAgICA6IGlmKCRzeW1tZXRyaWNhbCwgbnVsbCwgZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSxcbiAgICAgICAgZmxvYXQgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICBtYXJnaW4tYmVmb3JlICAgICA6IGdldC1pc29sYXRpb24oJHNwYW4pLFxuICAgICAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IC0xMDAlLFxuICAgICAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICAgICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgICAgICk7XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgT3V0cHV0XG4gICAgICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAgICAgQGlmIGdldC1lZGdlKCRzcGFuKSA9PSBmaXJzdCB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdCgkc3Bhbik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGluY2x1ZGUgbm9icmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gSW5kaXZpZHVhbCBMb2NhdGlvbiBJbmNyZW1lbnRcbiAgICAgICRsb2NhdGlvbjogZ2V0LWxvY2F0aW9uKCRzcGFuKSArICRuO1xuICAgICAgJGxvY2F0aW9uOiBpZigkbG9jYXRpb24gPiAkY29udGV4dCwgMSwgJGxvY2F0aW9uKTtcbiAgICAgICRzcGFuOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogJGxvY2F0aW9uKSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBSb3cgU3RhcnQgJiBFbmRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBCcmVha1xuLy8gLS0tLS1cbi8vIEFwcGx5IHRvIGFueSBlbGVtZW50IHRoYXQgc2hvdWxkIGZvcmNlIGEgbGluZSBicmVhay5cbkBtaXhpbiBicmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IGJvdGgpKTtcbn1cblxuXG4vLyBOb0JyZWFrXG4vLyAtLS0tLS0tXG4vLyBDYW5jZWwgdGhlIGJyZWFrKCkgZWZmZWN0LCBlLmcuIHdoZW4gdXNpbmcgbWVkaWEgcXVlcmllcy5cbkBtaXhpbiBub2JyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogbm9uZSkpO1xufVxuXG5cbi8vIEZ1bGxcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPGxheW91dCBzaG9ydGhhbmQ+XG5AbWl4aW4gZnVsbChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgOiAkY29udGV4dDtcbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZ1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgc3BhbihmdWxsIG9mIHBhcnNlLWdyaWQoJGNvbnRleHQpIGJyZWFrKTtcbn1cblxuXG4vLyBGaXJzdFxuLy8gLS0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGZpcnN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZmlyc3QsICRpbnNwZWN0KTtcbiAgQGlmIG5vdChpcy1zcGxpdCgkY29udGV4dCkpIHtcbiAgICBAaW5jbHVkZSBmbG9hdC1maXJzdCgkZmxvdyk7XG4gIH1cbn1cblxuQG1peGluIGFscGhhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBmaXJzdCgkY29udGV4dCk7XG59XG5cblxuLy8gTGFzdFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gbGFzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXN0LCAkaW5zcGVjdCk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KSxcbiAgICBsYXN0LWZsb3c6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJGNvbnRleHQpLFxuICAgIG1hcmdpbjogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCBudWxsLCAwKSxcbiAgKTtcblxuICBAaW5jbHVkZSBmbG9hdC1sYXN0KCRvdXRwdXQuLi4pO1xufVxuXG5AbWl4aW4gb21lZ2EoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGxhc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIEdldCBFZGdlXG4vLyAtLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGVkZ2UgdmFsdWUgYmFzZWQgb24gbG9jYXRpb24sIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWVkZ2UoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBzdXN5LWdldChlZGdlLCAkc3Bhbik7XG5cbiAgQGlmIG5vdCgkZWRnZSkge1xuICAgICRjb3VudDogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpO1xuICAgICRsb2NhdGlvbjogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgICAkbjogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gICAgJG51bWJlcjogaWYodHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciwgdHJ1ZSwgZmFsc2UpO1xuICAgICRpbmRleDogaWYoJG51bWJlciBhbmQgdW5pdGxlc3MoJGxvY2F0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRuID09ICRjb3VudCB7XG4gICAgICAkZWRnZTogZnVsbDtcbiAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiBhbmQgJG4gYW5kICRpbmRleCB7XG4gICAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgICAkZWRnZTogaWYoJG4gPT0gJGNvdW50LCBmdWxsLCBmaXJzdCk7XG4gICAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiArICRuIC0gMSA9PSAkY291bnQge1xuICAgICAgICAkZWRnZTogbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJGVkZ2UgPT0gYWxwaGEgb3IgJGVkZ2UgPT0gb21lZ2Ege1xuICAgICRlZGdlOiBpZigkZWRnZSA9PSBhbHBoYSwgZmlyc3QsIGxhc3QpO1xuICB9XG5cbiAgQHJldHVybiAkZWRnZTtcbn1cblxuXG4vLyBHZXQgTG9jYXRpb25cbi8vIC0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGxvY2F0aW9uIHZhbHVlIGJhc2VkIG9uIGVkZ2UsIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWxvY2F0aW9uKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRsb2NhdGlvbiAgIDogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRuICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gIEBpZiAkZWRnZSBhbmQgbm90KCRsb2NhdGlvbikgYW5kIHR5cGUtb2YoJG4pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJG4pIHtcbiAgICBAaWYgJGVkZ2UgPT0gZmlyc3Qge1xuICAgICAgJGxvY2F0aW9uOiAxO1xuICAgIH0gQGVsc2UgaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkbG9jYXRpb246IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKSAtICRuICsgMTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsb2NhdGlvblxufVxuIiwiLy8gTWFyZ2luIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG4vLyBQcmVcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZShcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICRndXR0ZXIgOiBndXR0ZXIoJHNwYW4pO1xuICAkc3BhbiAgIDogc3Bhbigkc3Bhbik7XG4gICR3aWR0aCAgOiBpZigkc3BsaXQgYW5kICRndXR0ZXIsICRzcGFuICsgJGd1dHRlciwgJHNwYW4pO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gUG9zdFxuLy8gLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcG9zdChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocG9zdCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQdXNoXG4vLyAtLS0tXG4vLyBTaW1wbGUgc3lub255bW4gZm9yIHByZS5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVzaChcbiAgJHNwYW5cbikge1xuICBAaW5jbHVkZSBwcmUoJHNwYW4pO1xufVxuXG4vLyBQdWxsXG4vLyAtLS0tXG4vLyBBZGQgbmVnYXRpdmUgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVsbChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCAwIC0gc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCAwIC0gc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFNxdWlzaFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gc3F1aXNoKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgICAgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3F1aXNoLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZSgkcHJlKTtcbiAgQGluY2x1ZGUgcG9zdCgkcG9zdCk7XG59XG4iLCIvLyBQYWRkaW5nIFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmVmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZWZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3VmZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHN1ZmZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3VmZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQYWRcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHBhZChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwYWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlZml4KCRwcmUpO1xuICBAaW5jbHVkZSBzdWZmaXgoJHBvc3QpO1xuXG59XG4iLCIvLyBCbGVlZCBTeW50YXhcbi8vID09PT09PT09PT09PVxuXG4vLyBCbGVlZFxuLy8gLS0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBtYXJnaW5zLCBhbmQgZXF1YWwgcG9zaXRpdmUgcGFkZGluZyB0byBjcmVhdGUgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZChcbiAgJGJsZWVkOiAwIGd1dHRlcigpXG4pIHtcbiAgJGluc3BlY3QgIDogJGJsZWVkO1xuICAkb3V0cHV0ICAgOiBnZXQtYmxlZWQoJGJsZWVkKTtcblxuICBAaWYgc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9IGNvbnRlbnQtYm94IHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSwgJG91dHB1dCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmxlZWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG5cbi8vIEJsZWVkLXhcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciBob3Jpem9udGFsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteChcbiAgJGJsZWVkOiBndXR0ZXIoKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDIpIDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteCBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gQmxlZWQteVxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIHZlcnRpY2FsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteShcbiAgJGJsZWVkOiBpZihmdW5jdGlvbi1leGlzdHMocmh5dGhtKSwgcmh5dGhtKDEpLCAxZW0pXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDAgbnRoKCR0cmJsLCAyKSAwKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC15IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBHZXQgQmxlZWRcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGJsZWVkIG91dHB1dCB2YWx1ZXNcbi8vIC0gJGJsZWVkOiA8c3Bhbj5cbkBmdW5jdGlvbiBnZXQtYmxlZWQoXG4gICRibGVlZFxuKSB7XG4gICRibGVlZCAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkYmxlZWQpKTtcbiAgJHRyYmwgICAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcbiAgJHNob3J0ICAgIDogbnVsbDtcbiAgJG91dHB1dCAgIDogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHRyYmwpIHtcbiAgICAkdGhpczogbnRoKCR0cmJsLCAkaSk7XG4gICAgJG5ldzogKCk7XG4gICAgJG1hcmdpbjogbnVsbDtcbiAgICAkcGFkZGluZzogbnVsbDtcbiAgICAkcGFkZGluZy14OiBudWxsO1xuXG4gICAgQGlmICR0aGlzID4gMCB7XG4gICAgICAkdGhpczogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46ICR0aGlzKSk7XG4gICAgICAkbWFyZ2luOiBzcGFuKCR0aGlzKTtcbiAgICAgICRwYWRkaW5nOiAkbWFyZ2luO1xuICAgICAgJHBhZGRpbmcteDogJHBhZGRpbmc7XG4gICAgfVxuXG4gICAgQGlmICRtYXJnaW4gYW5kICRtYXJnaW4gPiAwIHtcbiAgICAgICRtYXJnaW46IC0gJG1hcmdpbjtcblxuICAgICAgQGlmIGlzLWluc2lkZSgkdGhpcykge1xuICAgICAgICAkZ3V0dGVyOiBndXR0ZXIoJHRoaXMpO1xuICAgICAgICAkam9pbjogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkcGFkZGluZywgJGd1dHRlciksIHRydWUsIGZhbHNlKTtcbiAgICAgICAgJHBhZGRpbmcteDogaWYoJGpvaW4gYW5kICRwYWRkaW5nID4gMCwgJHBhZGRpbmcgKyAkZ3V0dGVyLCAkcGFkZGluZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRpID09IDEge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDIge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMyB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSA0IHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICRuZXcpO1xuICB9XG5cbiAgQGVhY2ggJHByb3AsICR2YWx1ZSBpbiAkb3V0cHV0IHtcbiAgICAkb3V0cHV0OiBpZigkdmFsdWUgPT0gMCwgbWFwLW1lcmdlKCRvdXRwdXQsICgkcHJvcDogbnVsbCkpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEByZXR1cm4gYmxlZWQtc2hvcnRoYW5kKCRvdXRwdXQpO1xufVxuXG4vLyBCbGVlZCBTaG9ydGhhbmRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ29udmVydCBibGVlZCBvdXRwdXQgaW50byBzaG9ydGhhbmQgd2hlbiBwb3NzaWJsZS5cbi8vIC0gJGJsZWVkOiA8b3V0cHV0IG1hcD5cbkBmdW5jdGlvbiBibGVlZC1zaG9ydGhhbmQoXG4gICRibGVlZFxuKSB7XG4gICRtYXJnaW46ICgpO1xuICAkcGFkZGluZzogKCk7XG4gICRyZXR1cm46ICgpO1xuXG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkYmxlZWQge1xuICAgIEBpZiBzdHItaW5kZXgoJGtleSwgbWFyZ2luKSB7XG4gICAgICAkbWFyZ2luOiBtYXAtbWVyZ2UoJG1hcmdpbiwgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH0gQGVsc2UgaWYgc3RyLWluZGV4KCRrZXksIHBhZGRpbmcpID4gMCB7XG4gICAgICAkcGFkZGluZzogbWFwLW1lcmdlKCRwYWRkaW5nLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgJHByb3BzOiAoXG4gICAgbWFyZ2luOiAkbWFyZ2luLFxuICAgIHBhZGRpbmc6ICRwYWRkaW5nLFxuICApO1xuXG4gIEBlYWNoICRuYW1lLCAkbWFwIGluICRwcm9wcyB7XG4gICAgJGZvdXI6IGlmKGxlbmd0aChtYXAta2V5cygkbWFwKSkgPT0gNCwgdHJ1ZSwgZmFsc2UpO1xuICAgICRudWxsOiBpZihpbmRleChtYXAtdmFsdWVzKCRtYXApLCBudWxsKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRmb3VyIGFuZCBub3QoJG51bGwpIHtcbiAgICAgICR0b3A6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXRvcCcpO1xuICAgICAgJHJpZ2h0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1yaWdodCcpO1xuICAgICAgJGJvdHRvbTogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tYm90dG9tJyk7XG4gICAgICAkbGVmdDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tbGVmdCcpO1xuXG4gICAgICAkdGI6IGlmKCR0b3AgPT0gJGJvdHRvbSwgJHRvcCwgbnVsbCk7XG4gICAgICAkcmw6IGlmKCRyaWdodCA9PSAkbGVmdCwgJHJpZ2h0LCBudWxsKTtcbiAgICAgICRhbGw6IGlmKCR0YiA9PSAkcmwsICR0YiwgbnVsbCk7XG5cbiAgICAgICRuZXc6IGlmKCRhbGwsICRhbGwsIG51bGwpO1xuXG4gICAgICBAaWYgbm90KCRuZXcpIHtcbiAgICAgICAgQGlmICR0YiBhbmQgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdGIgJHJsO1xuICAgICAgICB9IEBlbHNlIGlmICRybCB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmwgJGJvdHRvbTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmlnaHQgJGJvdHRvbSAkbGVmdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKCRuYW1lOiAkbmV3KSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgJG1hcCk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQnJlYWtwb2ludCBJbnRlZ3JhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1tZWRpYTogKCkgIWRlZmF1bHQ7XG4kc3VzeS1tZWRpYS1mYWxsYmFjazogZmFsc2UgIWRlZmF1bHQ7XG5cbiRfc3VzeS1tZWRpYS1jb250ZXh0OiAoKTtcblxuXG4vLyBTdXN5IEJyZWFrcG9pbnRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hhbmdlIGdyaWRzIGF0IGRpZmZlcmVudCBtZWRpYSBxdWVyeSBicmVha3BvaW50cy5cbi8vIC0gJHF1ZXJ5ICAgICA6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT4gfCA8bWFwPlxuLy8gLSAkbGF5b3V0ICAgIDogPHNldHRpbmdzPlxuLy8gLSAkbm8tcXVlcnkgIDogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktYnJlYWtwb2ludChcbiAgJHF1ZXJ5LFxuICAkbGF5b3V0OiBmYWxzZSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtcm91dGVyKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGlmICRsYXlvdXQge1xuICAgICAgQGluY2x1ZGUgd2l0aC1sYXlvdXQoJGxheW91dCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFN1c3kgTWVkaWFcbi8vIC0tLS0tLS0tLS1cbi8vIC0gJHF1ZXJ5OiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+XG4vLyAtICRuby1xdWVyeTogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktbWVkaWEoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gICRvbGQtY29udGV4dDogJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gICRuYW1lOiBpZihtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJHF1ZXJ5KSwgJHF1ZXJ5LCBudWxsKTtcbiAgJHF1ZXJ5OiBzdXN5LWdldC1tZWRpYSgkcXVlcnkpO1xuICAkcXVlcnk6IHN1c3ktcGFyc2UtbWVkaWEoJHF1ZXJ5KTtcblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJHF1ZXJ5LCAkbmFtZSk7XG5cbiAgQGlmICRuby1xdWVyeSBhbmQgdHlwZS1vZigkbm8tcXVlcnkpICE9IHN0cmluZyB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBtZWRpYSAje3N1c3ktcmVuZGVyLW1lZGlhKCRxdWVyeSl9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBpZiB0eXBlLW9mKCRuby1xdWVyeSkgPT0gc3RyaW5nIHtcbiAgICAgICN7JG5vLXF1ZXJ5fSAmIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRvbGQtY29udGV4dCwgJGNsZWFuOiB0cnVlKTtcbn1cblxuXG4vLyBNZWRpYSBSb3V0ZXJcbi8vIC0tLS0tLS0tLS0tLVxuLy8gUm91dCBtZWRpYSBhcmd1bWVudHMgdG8gdGhlIGNvcnJlY3QgbWl4aW4uXG5AbWl4aW4gc3VzeS1tZWRpYS1yb3V0ZXIoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYnJlYWtwb2ludCwgKG1peGluOiBicmVha3BvaW50KSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LW1lZGlhKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBVcGRhdGUgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gU2V0IHRoZSBuZXcgbWVkaWEgY29udGV4dFxuQG1peGluIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHF1ZXJ5LFxuICAkbmFtZTogbnVsbCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRxdWVyeTogbWFwLW1lcmdlKChuYW1lOiAkbmFtZSksICRxdWVyeSk7XG5cbiAgQGlmICRjbGVhbiB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICRxdWVyeSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogbWFwLW1lcmdlKCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcXVlcnkpICFnbG9iYWw7XG4gIH1cbn1cblxuXG4vLyBNZWRpYSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGZ1bGwgbWVkaWEgY29udGV4dCwgb3IgYSBzaW5nbGUgbWVkaWEgcHJvcGVydHkgKGUuZy4gbWluLXdpZHRoKVxuQGZ1bmN0aW9uIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHByb3BlcnR5OiBmYWxzZVxuKSB7XG4gIEBpZiAkcHJvcGVydHkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHByb3BlcnR5KTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgfVxufVxuXG5cbi8vIEdldCBNZWRpYVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuYW1lZCBtZWRpYS1xdWVyeSBmcm9tICRzdXN5LW1lZGlhLlxuLy8gLSAkbmFtZTogPGtleT5cbkBmdW5jdGlvbiBzdXN5LWdldC1tZWRpYShcbiAgJG5hbWVcbikge1xuICBAaWYgbWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRuYW1lKSB7XG4gICAgJG1hcC12YWx1ZTogbWFwLWdldCgkc3VzeS1tZWRpYSwgJG5hbWUpO1xuICAgIEBpZiAoJG5hbWUgPT0gJG1hcC12YWx1ZSkge1xuICAgICAgJG5hbWU6ICRtYXAtdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbmFtZTogc3VzeS1nZXQtbWVkaWEoJG1hcC12YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmFtZTtcbn1cblxuXG4vLyBSZW5kZXIgTWVkaWFcbi8vIC0tLS0tLS0tLS0tLVxuLy8gQnVpbGQgYSBtZWRpYS1xdWVyeSBzdHJpbmcgZnJvbSB2YXJpb3VzIG1lZGlhIHNldHRpbmdzXG5AZnVuY3Rpb24gc3VzeS1yZW5kZXItbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRvdXRwdXQ6IG51bGw7XG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRxdWVyeSB7XG4gICAgJHN0cmluZzogbnVsbDtcblxuICAgIEBpZiAkcHJvcGVydHkgPT0gbWVkaWEge1xuICAgICAgJHN0cmluZzogJHZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0cmluZzogJygjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSknO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IGlmKCRvdXRwdXQsICcjeyRvdXRwdXR9IGFuZCAjeyRzdHJpbmd9JywgJHN0cmluZyk7XG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG5cblxuLy8gUGFyc2UgTWVkaWFcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gcGFyc2VkIG1lZGlhLXF1ZXJ5IHNldHRpbmdzIGJhc2VkIG9uIHNob3J0aGFuZFxuQGZ1bmN0aW9uIHN1c3ktcGFyc2UtbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRtcTogbnVsbDtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBtYXAge1xuICAgICRtcTogJHF1ZXJ5O1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIge1xuICAgICRtcTogKG1pbi13aWR0aDogJHF1ZXJ5KTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbGlzdCBhbmQgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09IG51bWJlciB7XG4gICAgICAkbXE6IChcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oJHF1ZXJ5Li4uKSxcbiAgICAgICAgbWF4LXdpZHRoOiBtYXgoJHF1ZXJ5Li4uKSxcbiAgICAgICk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbXE6IChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJG1xOiAobWVkaWE6ICcjeyRxdWVyeX0nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1xO1xufVxuIiwiLyohIG5vcm1hbGl6ZS5jc3MgdjQuMS4xIHwgTUlUIExpY2Vuc2UgfCBnaXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcyAqL1xuXG4vKipcbiAqIDEuIENoYW5nZSB0aGUgZGVmYXVsdCBmb250IGZhbWlseSBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cbiAqIDIuIFByZXZlbnQgYWRqdXN0bWVudHMgb2YgZm9udCBzaXplIGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZXMgaW4gSUUgYW5kIGlPUy5cbiAqL1xuXG5odG1sIHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IC8qIDEgKi9cbiAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDIgKi9cbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG59XG5cblxuLyogYXBwbHkgYSBuYXR1cmFsIGJveCBsYXlvdXQgbW9kZWwgdG8gYWxsIGVsZW1lbnRzLCBidXQgYWxsb3dpbmcgY29tcG9uZW50cyB0byBjaGFuZ2UgKi9cbmh0bWwge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBpbmhlcml0O1xufVxuXG5cbi8qKlxuICogUmVtb3ZlIHRoZSBtYXJnaW4gaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG4gKi9cblxuYm9keSB7XG4gIG1hcmdpbjogMDtcbn1cblxuLyogSFRNTDUgZGlzcGxheSBkZWZpbml0aW9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSA5LS5cbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIEVkZ2UsIElFLCBhbmQgRmlyZWZveC5cbiAqIDIuIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFLlxuICovXG5cbmFydGljbGUsXG5hc2lkZSxcbmRldGFpbHMsIC8qIDEgKi9cbmZpZ2NhcHRpb24sXG5maWd1cmUsXG5mb290ZXIsXG5oZWFkZXIsXG5tYWluLCAvKiAyICovXG5tZW51LFxubmF2LFxuc2VjdGlvbixcbnN1bW1hcnkgeyAvKiAxICovXG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxuICovXG5cbmF1ZGlvLFxuY2FudmFzLFxucHJvZ3Jlc3MsXG52aWRlbyB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBpT1MgNC03LlxuICovXG5cbmF1ZGlvOm5vdChbY29udHJvbHNdKSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGhlaWdodDogMDtcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgdmVydGljYWwgYWxpZ25tZW50IGluIENocm9tZSwgRmlyZWZveCwgYW5kIE9wZXJhLlxuICovXG5cbnByb2dyZXNzIHtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwLS5cbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFLlxuICovXG5cbnRlbXBsYXRlLCAvKiAxICovXG5baGlkZGVuXSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qIExpbmtzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIG9uIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cbiAqIDIuIFJlbW92ZSBnYXBzIGluIGxpbmtzIHVuZGVybGluZSBpbiBpT1MgOCsgYW5kIFNhZmFyaSA4Ky5cbiAqL1xuXG5hIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IC8qIDEgKi9cbiAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcDogb2JqZWN0czsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgb3V0bGluZSBvbiBmb2N1c2VkIGxpbmtzIHdoZW4gdGhleSBhcmUgYWxzbyBhY3RpdmUgb3IgaG92ZXJlZFxuICogaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG4gKi9cblxuYTphY3RpdmUsXG5hOmhvdmVyIHtcbiAgb3V0bGluZS13aWR0aDogMDtcbn1cblxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gUmVtb3ZlIHRoZSBib3R0b20gYm9yZGVyIGluIEZpcmVmb3ggMzktLlxuICogMi4gQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaS5cbiAqL1xuXG5hYmJyW3RpdGxlXSB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7IC8qIDEgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC8qIDIgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkOyAvKiAyICovXG59XG5cbi8qKlxuICogUHJldmVudCB0aGUgZHVwbGljYXRlIGFwcGxpY2F0aW9uIG9mIGBib2xkZXJgIGJ5IHRoZSBuZXh0IHJ1bGUgaW4gU2FmYXJpIDYuXG4gKi9cblxuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXG4gKi9cblxuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgc3R5bGUgaW4gQW5kcm9pZCA0LjMtLlxuICovXG5cbmRmbiB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBmb250IHNpemUgYW5kIG1hcmdpbiBvbiBgaDFgIGVsZW1lbnRzIHdpdGhpbiBgc2VjdGlvbmAgYW5kXG4gKiBgYXJ0aWNsZWAgY29udGV4dHMgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgU2FmYXJpLlxuICovXG5cbmgxIHtcbiAgZm9udC1zaXplOiAyZW07XG4gIG1hcmdpbjogMC42N2VtIDA7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGJhY2tncm91bmQgYW5kIGNvbG9yIGluIElFIDktLlxuICovXG5cbm1hcmsge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYwO1xuICBjb2xvcjogIzAwMDtcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlO1xufVxuXG4vKipcbiAqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpblxuICogYWxsIGJyb3dzZXJzLlxuICovXG5cbnN1YixcbnN1cCB7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbnN1YiB7XG4gIGJvdHRvbTogLTAuMjVlbTtcbn1cblxuc3VwIHtcbiAgdG9wOiAtMC41ZW07XG59XG5cbi8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIHRoZSBib3JkZXIgb24gaW1hZ2VzIGluc2lkZSBsaW5rcyBpbiBJRSAxMC0uXG4gKi9cblxuaW1nIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xufVxuXG4vKipcbiAqIEhpZGUgdGhlIG92ZXJmbG93IGluIElFLlxuICovXG5cbnN2Zzpub3QoOnJvb3QpIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLyogR3JvdXBpbmcgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbmNvZGUsXG5rYmQsXG5wcmUsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvKiAxICovXG4gIGZvbnQtc2l6ZTogMWVtOyAvKiAyICovXG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IG1hcmdpbiBpbiBJRSA4LlxuICovXG5cbmZpZ3VyZSB7XG4gIG1hcmdpbjogMWVtIDQwcHg7XG59XG5cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cbiAqIDIuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UgYW5kIElFLlxuICovXG5cbmhyIHtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7IC8qIDEgKi9cbiAgaGVpZ2h0OiAwOyAvKiAxICovXG4gIG92ZXJmbG93OiB2aXNpYmxlOyAvKiAyICovXG59XG5cbi8qIEZvcm1zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICogMi4gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpLlxuICovXG5cbmJ1dHRvbixcbmlucHV0LFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICBmb250OiBpbmhlcml0OyAvKiAxICovXG4gIG1hcmdpbjogMDsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlc3RvcmUgdGhlIGZvbnQgd2VpZ2h0IHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuICovXG5cbm9wdGdyb3VwIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi8qKlxuICogU2hvdyB0aGUgb3ZlcmZsb3cgaW4gSUUuXG4gKiAxLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlLlxuICovXG5idXR0b24sXG5pbnB1dCB7IC8qIDEgKi9cbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBFZGdlLCBGaXJlZm94LCBhbmQgSUUuXG4gKiAxLiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3guXG4gKi9cblxuYnV0dG9uLFxuc2VsZWN0IHsgLyogMSAqL1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbn1cblxuLyoqXG4gKiAxLiBQcmV2ZW50IGEgV2ViS2l0IGJ1ZyB3aGVyZSAoMikgZGVzdHJveXMgbmF0aXZlIGBhdWRpb2AgYW5kIGB2aWRlb2BcbiAqICAgIGNvbnRyb2xzIGluIEFuZHJvaWQgNC5cbiAqIDIuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG4gKi9cblxuYnV0dG9uLFxuaHRtbCBbdHlwZT1cImJ1dHRvblwiXSwgLyogMSAqL1xuW3R5cGU9XCJyZXNldFwiXSxcblt0eXBlPVwic3VibWl0XCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBpbiBGaXJlZm94LlxuICovXG5cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwiYnV0dG9uXCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJyZXNldFwiXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwic3VibWl0XCJdOjotbW96LWZvY3VzLWlubmVyIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xuICBwYWRkaW5nOiAwO1xufVxuXG4vKipcbiAqIFJlc3RvcmUgdGhlIGZvY3VzIHN0eWxlcyB1bnNldCBieSB0aGUgcHJldmlvdXMgcnVsZS5cbiAqL1xuXG5idXR0b246LW1vei1mb2N1c3JpbmcsXG5bdHlwZT1cImJ1dHRvblwiXTotbW96LWZvY3VzcmluZyxcblt0eXBlPVwicmVzZXRcIl06LW1vei1mb2N1c3JpbmcsXG5bdHlwZT1cInN1Ym1pdFwiXTotbW96LWZvY3VzcmluZyB7XG4gIG91dGxpbmU6IDFweCBkb3R0ZWQgQnV0dG9uVGV4dDtcbn1cblxuLyoqXG4gKiBDaGFuZ2UgdGhlIGJvcmRlciwgbWFyZ2luLCBhbmQgcGFkZGluZyBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cbiAqL1xuXG5maWVsZHNldCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gIG1hcmdpbjogMCAycHg7XG4gIHBhZGRpbmc6IDAuMzVlbSAwLjYyNWVtIDAuNzVlbTtcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSB0ZXh0IHdyYXBwaW5nIGluIEVkZ2UgYW5kIElFLlxuICogMi4gQ29ycmVjdCB0aGUgY29sb3IgaW5oZXJpdGFuY2UgZnJvbSBgZmllbGRzZXRgIGVsZW1lbnRzIGluIElFLlxuICogMy4gUmVtb3ZlIHRoZSBwYWRkaW5nIHNvIGRldmVsb3BlcnMgYXJlIG5vdCBjYXVnaHQgb3V0IHdoZW4gdGhleSB6ZXJvIG91dFxuICogICAgYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxubGVnZW5kIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xuICBjb2xvcjogaW5oZXJpdDsgLyogMiAqL1xuICBkaXNwbGF5OiB0YWJsZTsgLyogMSAqL1xuICBtYXgtd2lkdGg6IDEwMCU7IC8qIDEgKi9cbiAgcGFkZGluZzogMDsgLyogMyAqL1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsOyAvKiAxICovXG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRS5cbiAqL1xuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG4vKipcbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIElFIDEwLS5cbiAqIDIuIFJlbW92ZSB0aGUgcGFkZGluZyBpbiBJRSAxMC0uXG4gKi9cblxuW3R5cGU9XCJjaGVja2JveFwiXSxcblt0eXBlPVwicmFkaW9cIl0ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gIHBhZGRpbmc6IDA7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBjdXJzb3Igc3R5bGUgb2YgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgYnV0dG9ucyBpbiBDaHJvbWUuXG4gKi9cblxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gIGhlaWdodDogYXV0bztcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBvZGQgYXBwZWFyYW5jZSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cbiAqIDIuIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpLlxuICovXG5cblt0eXBlPVwic2VhcmNoXCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8qIDEgKi9cbiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgYW5kIGNhbmNlbCBidXR0b25zIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIE9TIFguXG4gKi9cblxuW3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG5bdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSB0ZXh0IHN0eWxlIG9mIHBsYWNlaG9sZGVycyBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXG4gKi9cblxuOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIG9wYWNpdHk6IDAuNTQ7XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAqIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cbiAqL1xuXG46Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8qIDEgKi9cbiAgZm9udDogaW5oZXJpdDsgLyogMiAqL1xufVxuXG4vKipcbiAqICByZW1vdmUgaW9zIHN0eWxpbmcuIE9ubHkgdXNlIG9uIGJ1dHRvbnMgYW5kIHNlYXJjaCBpbnB1dHNcbiAqL1xuYnV0dG9uLCBbdHlwZT1cInNlYXJjaFwiXSwgW3R5cGU9XCJidXR0b25cIl0geyBcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICBib3JkZXItcmFkaXVzOjA7XG4gIHBhZGRpbmc6MDtcbn1cblxuaW5wdXRbdHlwZT1cIm51bWJlclwiXSB7XG4gIC1tb3otYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xufVxuXG5pbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuaW5wdXRbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgbWFyZ2luOiAwO1xufVxuIiwiLy8gY29sb3JzXG4kY3JpbXNvbjojOGMwMDA3O1xuJHJlZDojYmIwYjBlO1xuJHllbGxvdzojZjNhZDAwO1xuJG11c3RhcmQ6IzgzNWQwMDtcbiRibHVlOiMxNzQxODk7IFxuJGRhcmtCbHVlOiMxMDMwNjY7XG4kbmF2eTojMjQzNzU3O1xuJGNvcm5mbG93ZXI6IzQ4NzJiNDtcbiRjaGFyY29hbDojNDM0MzQzO1xuJGdyYXk6Izc3Nzc3NztcbiRtZWRHcmF5OiM5OTk5OTk7XG4kZGFya0dyYXk6IzMzMztcbiR3YXJtR3JheTojZWJlYmViO1xuJGRvdmU6I2U2ZTZlNjtcbiRvdmVybGF5OiNlM2UzZTM7XG5cblxuLy8gY2hhc2luZyB0aGUgbW9vblxuJGNoYXNpbmdCbHVlOiAjMDAzZmE2O1xuJGNoYXNpbmdIZWF0aGVyOiAjZDZkNmQ2O1xuJGNoYXNpbmdDb3JuZmxvd2VyOiAjMjY3ZGZlO1xuJGNoYXNpbmdTbGF0ZTogIzFjMWMxYztcbiRjaGFzaW5nR3JheTojNWI1YjViO1xuJG5vdEluU3R5bGd1aWRlQnV0SW5TdHlsZ3VpZGU6IzI0MjQyNDtcbiRjaGFzaW5nV3RmQmxhY2s6IzEwMTAxMDtcblxuXG4vLyBicmVha3BvaW50c1xuLy8gNjUwcHhcbiRzY3JlZW4tc20tbWluOjQwLjYyNWVtO1xuLy8gMTEwMHB4XG4kc2NyZWVuLW1kLW1pbjo2OC43NWVtO1xuLy8gMTMwMHB4XG4kc2NyZWVuLWxnLW1pbjo4MS4yNWVtO1xuLy8gMTUzMHB4XG4kc2NyZWVuLWpiLW1pbjo5NS42MjVlbTtcblxuLy8gdmVydGljYWwgcmh5dGhtIHZhci4gdXNlZCB0byBicmVhayB1cCBzZWN0aW9ucyBiYXNlZCBvbiBhIHNjYWxlXG4kdi1yaHl0aG06MS41ZW07XG5cbi8vIHN1c3kgYmFzZSBjb25maWcgZm9yIHNtYWxsZXIgc2NyZWVuc1xuLy8gZ3JpZCBjaGFuZ2VzIGJhc2VkIG9uIHdyYXBwZXIgY2xhc3MgZGVmaW5lZCBpbiBjdXN0b20uc2Nzc1xuJHN1c3k6IChcbiAgY29sdW1uczooMiksXG4gIGNvbnRhaW5lcjo4Ny41ZW0sXG4gIG1hdGg6IGZsdWlkLFxuICBvdXRwdXQ6IGZsb2F0LFxuICAvLyBkZWJ1ZzooaW1hZ2U6c2hvdylcbik7XG5cbiRtYXAtc206IChcbiAgY29sdW1uczooNCksXG4pO1xuXG4kbWFwLW1kOiAoXG4gIGNvbHVtbnM6KDgpLFxuKTtcblxuJG1hcC1sZzogKFxuICBjb2x1bW5zOigxMiksXG4pO1xuXG4vLyBncmlkXG5AbWl4aW4gZ3JpZCgpIHtcbiAgQGluY2x1ZGUgY29udGFpbmVyKCk7XG4gIEBpbmNsdWRlIGNsZWFyZml4KCk7XG4gIHBhZGRpbmc6MCA1JTtcbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgQGluY2x1ZGUgc2hvdy1ncmlkKDQpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgQGluY2x1ZGUgc2hvdy1ncmlkKDgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgQGluY2x1ZGUgc2hvdy1ncmlkKDEyKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWpiLW1pbikge1xuICAgIHBhZGRpbmc6MDtcbiAgfVxufSIsIiAvLyBjbGVhciBmaXhpblxuQG1peGluIGNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgZGlzcGxheTp0YWJsZTtcbiAgICBjbGVhcjpib3RoO1xuICAgIGNvbnRlbnQ6Jyc7XG4gIH1cbiAgJjpiZWZvcmUge1xuICAgIGRpc3BsYXk6dGFibGU7XG4gICAgY2xlYXI6Ym90aDtcbiAgICBjb250ZW50OicnO1xuICB9XG59XG4vLyBwYXJlbnQgc2hvdWxkIGJlIHNldCB0byByZWxhdGl2ZVxuLy8gaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9zbmlwcGV0cy9zYXNzL2NlbnRlcmluZy1taXhpbi9cbkBtaXhpbiBjZW50ZXIoJGhvcml6b250YWw6IHRydWUsICR2ZXJ0aWNhbDogdHJ1ZSkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIEBpZiAoJGhvcml6b250YWwgYW5kICR2ZXJ0aWNhbCkge1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcblxuICB9IEBlbHNlIGlmICgkaG9yaXpvbnRhbCkge1xuICAgIGxlZnQ6IDUwJTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIDApO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAwKTtcbiAgfSBAZWxzZSBpZiAoJHZlcnRpY2FsKSB7XG4gICAgdG9wOiA1MCU7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06dHJhbnNsYXRlKDAsIC01MCUpO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLCAtNTAlKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTp0cmFuc2xhdGUoMCwgLTUwJSk7XG4gIH1cbn1cblxuLy8gdHJhbnNpdGlvbnNcbkBtaXhpbiB0cmFuc2l0aW9uKCR0cmFuc2l0aW9uLXByb3BlcnR5LCAkdHJhbnNpdGlvbi10aW1lLCAkbWV0aG9kKSB7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjokdHJhbnNpdGlvbi1wcm9wZXJ0eSAkdHJhbnNpdGlvbi10aW1lICRtZXRob2Q7XG4gICAgICAtbXMtdHJhbnNpdGlvbjokdHJhbnNpdGlvbi1wcm9wZXJ0eSAkdHJhbnNpdGlvbi10aW1lICRtZXRob2Q7XG4gICAgICAgICAgdHJhbnNpdGlvbjokdHJhbnNpdGlvbi1wcm9wZXJ0eSAkdHJhbnNpdGlvbi10aW1lICRtZXRob2Q7XG59XG5cbi8vIGdyYWRpZW50c1xuQG1peGluIGxpbmVhci1ncmFkaWVudCgkZnJvbUNvbG9yLCAkdG9Db2xvcikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiR0b0NvbG9yOyAvKiBGYWxsYmFjayBDb2xvciAqL1xuICBiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20oJGZyb21Db2xvciksIHRvKCR0b0NvbG9yKSk7IC8qIFNhZjQrLCBDaHJvbWUgKi9cbiAgYmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICRmcm9tQ29sb3IsICR0b0NvbG9yKTsgLyogQ2hyb21lIDEwKywgU2FmNS4xKywgaU9TIDUrICovXG4gIGJhY2tncm91bmQtaW1hZ2U6ICAgLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAkZnJvbUNvbG9yLCAkdG9Db2xvcik7IC8qIEZGMy42ICovXG4gIGJhY2tncm91bmQtaW1hZ2U6ICAgIC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAkZnJvbUNvbG9yLCAkdG9Db2xvcik7IC8qIElFMTAgKi9cbiAgYmFja2dyb3VuZC1pbWFnZTogICAgIC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICRmcm9tQ29sb3IsICR0b0NvbG9yKTsgLyogT3BlcmEgMTEuMTArICovXG4gIGJhY2tncm91bmQtaW1hZ2U6ICAgICAgICBsaW5lYXItZ3JhZGllbnQodG9wLCAkZnJvbUNvbG9yLCAkdG9Db2xvcik7XG5cbiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoR3JhZGllbnRUeXBlPTAsU3RhcnRDb2xvclN0cj0nI3skZnJvbUNvbG9yfScsIEVuZENvbG9yU3RyPScjeyR0b0NvbG9yfScpO1xufVxuXG4vLyBwbGFpbiBsaXN0c1xuQG1peGluIHBsYWluLWxpc3Qge1xuICBtYXJnaW4tcmlnaHQ6MDtcbiAgbWFyZ2luLXRvcDowO1xuICBtYXJnaW4tbGVmdDowO1xuICBtYXJnaW4tYm90dG9tOjA7XG4gIHBhZGRpbmc6MDtcbiAgbGkge1xuICAgIGxpc3Qtc3R5bGU6bm9uZTtcbiAgfVxuICBkZCB7XG4gICAgbWFyZ2luOjA7XG4gIH1cbn1cblxuQG1peGluIHBsYWluLWJ1dHRvbiB7XG4gIGJvcmRlcjpub25lO1xuICBiYWNrZ3JvdW5kOm5vbmU7XG4gIGJveC1zaGFkb3c6bm9uZTtcbiAgJjpob3ZlciwgJjpmb2N1cywgJjphY3RpdmUge1xuICAgIGJveC1zaGFkb3c6bm9uZTtcbiAgICBib3JkZXI6bm9uZTtcbiAgfVxufVxuXG5AbWl4aW4gYnV0dG9uKCRiYWNrZ3JvdW5kOm51bGwsICRjb2xvcjpudWxsKSB7XG4gICoge1xuICAgIHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcbiAgfVxuICBwYWRkaW5nOiR2LXJoeXRobS8yICR2LXJoeXRobTtcbiAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICBjb2xvcjojeyRjb2xvcn07XG4gIGJhY2tncm91bmQtY29sb3I6I3skYmFja2dyb3VuZH07XG4gIGJvcmRlcjowO1xufVxuXG5AbWl4aW4gYm9yZGVyLWJ1dHRvbigkYm9yZGVyQ29sb3I6bnVsbCwgJGJvcmRlcldpZHRoOm51bGwsICRjb2xvcjpudWxsKSB7XG4gICoge1xuICAgIHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcbiAgfVxuICBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O1xuICBwYWRkaW5nOiR2LXJoeXRobS8yICR2LXJoeXRobTtcbiAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICBjb2xvcjojeyRjb2xvcn07XG4gIGJvcmRlci1jb2xvcjojeyRib3JkZXJDb2xvcn07XG4gIGJvcmRlci13aWR0aDojeyRib3JkZXJXaWR0aH07XG4gIGJvcmRlci1zdHlsZTpzb2xpZDtcbn1cblxuQG1peGluIGFycm93LWJ1dHRvbigkY29sb3IpIHtcbiAgcGFkZGluZy1yaWdodDozZW07XG4gIHBvc2l0aW9uOnJlbGF0aXZlO1xuICBzdmcge1xuICAgIEBpbmNsdWRlIGNlbnRlcihmYWxzZSwgdHJ1ZSk7XG4gICAgZmlsbDokY29sb3I7XG4gICAgcmlnaHQ6MWVtO1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOjFlbTtcbiAgICBoZWlnaHQ6MWVtO1xuICB9XG4gIC8vIHJlcXVpcmVzIHRoaXMgc3ZnIGFzIGEgY2hpbGRcbiAgLy8gICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDU1IDEwMVwiPlxuICAvLyAgIDxwYXRoIGQ9XCJNNy40NSAxMDBMMCA5Mi4xIDM5LjU1IDUwIDAgOC4xOCA3LjQ1IDBsNDcuMSA1MFwiLz5cbiAgLy8gPC9zdmc+XG59XG5cbi8vIGxpbmsgcmVzZXRcbkBtaXhpbiBsaW5rLXJlc2V0IHtcbiAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7XG4gICY6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjpub25lO1xuICB9XG4gICY6YWN0aXZlIHtcbiAgICB0ZXh0LWRlY29yYXRpb246bm9uZTtcbiAgfVxuICAmOnZpc2l0ZWQge1xuICAgIHRleHQtZGVjb3JhdGlvbjpub25lO1xuICB9XG4gICY6Zm9jdXMge1xuICAgIHRleHQtZGVjb3JhdGlvbjpub25lO1xuICB9XG59XG5cbi8vIGxvbmcgc2hhZG93IGdlbmVyYXRvclxuLy8gaHR0cDovL2NvZGVwZW4uaW8vbWF4YWtvaGxlci9wZW4vbUF4SHpcbkBtaXhpbiBsb25nLXNoYWRvdygkdHlwZSwgJGNvbG9yLCAkbGVuZ3RoLCAkZmFkZW91dDogdHJ1ZSwgJHNrZXc6IGZhbHNlLCAkZGlyZWN0aW9uOiByaWdodCl7XG4gICRzaGFkb3c6ICcnO1xuICBAaWYgJHNrZXcgPT0gZmFsc2Ugb3IgJHR5cGUgPT0gdGV4dHtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSByaWdodCB7XG4gICAgICBAZm9yICRpIGZyb20gMCB0byAkbGVuZ3RoIC0gMSB7XG4gICAgICAgICRzaGFkb3c6ICRzaGFkb3cgKyAkaSArICdweCAnICsgJGkgKyAncHggMCAnICsgJGNvbG9yICsgJywnO1xuICAgICAgfVxuICAgIH1cbiAgICBAaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcbiAgICAgIEBmb3IgJGkgZnJvbSAwIHRvICRsZW5ndGggLSAxIHtcbiAgICAgICAgJHNoYWRvdzogJHNoYWRvdyArICRpICogLTEgKyAncHggJyArICRpICsgJ3B4IDAgJyArICRjb2xvciArICcsJztcbiAgICAgICB9XG4gICAgICB9XG4gICAgIH1cbiAgICAgICAgXG4gICBAaWYgJGZhZGVvdXQgPT0gdHJ1ZXtcbiAgICBAZm9yICRpIGZyb20gMSB0byAkbGVuZ3RoIC0gMSB7XG4gICAgICBAaWYgJHR5cGUgPT0gdGV4dCBvciAkc2tldyA9PSBmYWxzZXtcbiAgICAgICAgQGlmICRkaXJlY3Rpb24gPT0gcmlnaHR7XG4gICAgICAgICAgJHNoYWRvdzogJHNoYWRvdyArICRpICsgJ3B4ICcgKyAkaSArICdweCAwICcgKyAgICAgICByZ2JhKCRjb2xvciwgMSAtICRpIC8gJGxlbmd0aCkgKyAnLCc7XG4gICAgICAgIH1cbiAgICAgICAgQGlmICRkaXJlY3Rpb24gPT0gbGVmdHtcbiAgICAgICAgICAkc2hhZG93OiAkc2hhZG93ICsgJGkgKiAtMSArICdweCAnICsgJGkgKyAncHggMCAnICsgICAgICAgcmdiYSgkY29sb3IsIDEgLSAkaSAvICRsZW5ndGgpICsgJywnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAaWYgKCR0eXBlID09IGJveCkgYW5kICRza2V3ID09IHRydWV7XG4gICAgICAgIEBpZiAkZGlyZWN0aW9uID09IHJpZ2h0IHtcbiAgICAgICAgICAkc2hhZG93OiAkc2hhZG93ICsgJGkgKyAncHggJyArICRpICsgJ3B4IDAgJyArICRpICogLjIgKyAncHggJyArIHJnYmEoJGNvbG9yLCAxIC0gJGkgLyAkbGVuZ3RoKSArICcsJztcbiAgICAgICAgfVxuICAgICAgICBAaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcbiAgICAgICAgICAkc2hhZG93OiAkc2hhZG93ICsgJGkgKiAtMSArICdweCAnICsgJGkgKyAncHggMCAnICsgJGkgKiAuMiArICdweCAnICsgcmdiYSgkY29sb3IsIDEgLSAkaSAvICRsZW5ndGgpICsgJywnO1xuICAgICAgICB9XG4gICAgICB9XG4gIH1cbiAgJHNoYWRvdzogJHNoYWRvdyArICRsZW5ndGggKyAncHggJyArICRsZW5ndGggKyAncHggMCAnICsgcmdiYSgkY29sb3IsIDApO1xuIH1cbiBAaWYgJGZhZGVvdXQgPT0gZmFsc2V7XG4gICBAaWYgJHNrZXcgPT0gdHJ1ZSBhbmQgKCAkdHlwZSA9PSBib3ggKXtcbiAgICAgQGZvciAkaSBmcm9tIDAgdG8gJGxlbmd0aCAtIDEge1xuICAgICAgICAgICAgJHNoYWRvdzogJHNoYWRvdyArICRpICsgJ3B4ICcgKyAkaSArICdweCAwICcgKyAkaSAqIC4xICsgJ3B4ICcgKyAkY29sb3IgKyAnLCc7XG4gICAgICB9XG4gICB9XG4gICAgJHNoYWRvdzogJHNoYWRvdyArICRsZW5ndGggKyAncHggJyArICRsZW5ndGggKyAncHggMCAnICsgcmdiYSgwLDAsMCwwKTtcbiB9XG4gJHNoYWRvdzogdW5xdW90ZSgkc2hhZG93KTtcbiAgQGlmICR0eXBlID09ICdib3gnIHtib3gtc2hhZG93OiAkc2hhZG93O31cbiAgQGlmICR0eXBlID09ICd0ZXh0JyB7dGV4dC1zaGFkb3c6ICRzaGFkb3c7fVxufVxuXG4vLyBhc3NpdGl2ZSB0ZXh0LiBub3QgYSBtaXhpbiBidXQgYW4gaW1wb3J0YW50IHV0aWxpdHkgY2xhc3Ncbi5hc3Npc3RpdmUtdGV4dCB7XG4gIGNsaXA6IHJlY3QoMXB4LCAxcHgsIDFweCwgMXB4KTtcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGhlaWdodDogMXB4O1xuICB3aWR0aDogMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uYXNzaXN0aXZlLXRleHQ6aG92ZXIsIC5hc3Npc3RpdmUtdGV4dDphY3RpdmUsIC5hc3Npc3RpdmUtdGV4dDpmb2N1cyB7XG4gIGZvbnQtc2l6ZTouODc1ZW07XG4gIGZvbnQtd2VpZ2h0OmJvbGQ7XG4gIGxpbmUtaGVpZ2h0Om5vcm1hbDtcbiAgei1pbmRleDoxMDAwMDA7XG4gIHRvcDo1cHg7XG4gIGxlZnQ6NXB4O1xuICBkaXNwbGF5OmJsb2NrO1xuICBjbGlwOmF1dG8gIWltcG9ydGFudDtcbiAgd2lkdGg6YXV0bztcbiAgaGVpZ2h0OmF1dG87XG4gIHBhZGRpbmc6MTVweCAyM3B4IDE0cHg7XG4gIHRleHQtZGVjb3JhdGlvbjpub25lO1xuICBjb2xvcjojMjE3NTliO1xuICBib3JkZXItcmFkaXVzOjNweDtcbiAgYmFja2dyb3VuZC1jb2xvcjojZjFmMWYxO1xuICBib3gtc2hhZG93OjAgMCAycHggMnB4IHJnYmEoMCwgMCwgMCwgLjYpO1xufVxuXG4uaGlkZSB7XG4gIGRpc3BsYXk6bm9uZTtcbn1cblxuXG5AbWl4aW4gZmxleCB7XG4gIGRpc3BsYXk6LXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6LW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6ZmxleDtcbn1cblxuQG1peGluIGZsZXgtd3JhcCB7XG4gIC1tcy1mbGV4LXdyYXA6IHdyYXA7XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuQG1peGluIGZsZXgtYWxpZ24tY2VudGVyIHtcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcbiAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuQG1peGluIGZsZXgtYWxpZ24tZW5kIHtcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGVuZDtcbiAgICAgLW1zLWZsZXgtYWxpZ246IGVuZDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGVuZDtcbn1cblxuQG1peGluIGZsZXgtanVzdGlmeS1lbmQge1xuICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7XG4gICAgIC1tcy1mbGV4LXBhY2s6IGVuZDtcbiAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7IFxufVxuXG5AbWl4aW4gZmxleC1qdXN0aWZ5LXN0YXJ0IHtcbiAtd2Via2l0LWJveC1wYWNrOiBzdGFydDtcbiAgICAtbXMtZmxleC1wYWNrOiBzdGFydDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyBcbn1cblxuQG1peGluIGZsZXgtanVzdGlmeS1jZW50ZXIge1xuICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7XG4gICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcbiAgIGp1c3RpZnktY29udGVudDogY2VudGVyOyBcbn1cbiIsIkBtaXhpbiBhbmltYXRlZCgkZHVyKSB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAkZHVyO1xuICBhbmltYXRpb24tZHVyYXRpb246ICRkdXI7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVJbiB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGZhZGVJbiB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuXG5AbWl4aW4gZmFkZUluIHtcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmFkZUluO1xuICBhbmltYXRpb24tbmFtZTogZmFkZUluO1xufVxuXG5AbWl4aW4gZmFkZUluU3RhcnRlZCB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhZGVJblN0YXJ0ZWQ7XG4gIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW5TdGFydGVkO1xufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgZmFkZU91dCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGZhZGVPdXQge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cblxuQG1peGluIGZhZGVPdXQge1xuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0O1xuICBhbmltYXRpb24tbmFtZTogZmFkZU91dDtcbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlSW5MZWZ0IHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG5cbiAgdG8ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVJbkxlZnQge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cblxuICB0byB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbn1cblxuQG1peGluIHNsaWRlSW5MZWZ0IHtcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogc2xpZGVJbkxlZnQ7XG4gIGFuaW1hdGlvbi1uYW1lOiBzbGlkZUluTGVmdDtcbn1cblxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVJblJpZ2h0IHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxuXG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlSW5SaWdodCB7XG4gIGZyb20ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cblxuICB0byB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbn1cblxuQG1peGluIHNsaWRlSW5SaWdodCB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHNsaWRlSW5SaWdodDtcbiAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlSW5SaWdodDtcbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlT3V0UmlnaHQge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIHRvIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZU91dFJpZ2h0IHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cblxuICB0byB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICB9XG59XG5cbkBtaXhpbiBzbGlkZU91dFJpZ2h0IHtcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogc2xpZGVPdXRSaWdodDtcbiAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlT3V0UmlnaHQ7XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVPdXREb3duIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIHRvIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxMDAlLCAwKTtcbiAgfVxufVxuXG5AbWl4aW4gc2xpZGVPdXREb3duIHtcbiAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlT3V0RG93bjtcbn1cblxuQGtleWZyYW1lcyBzbGlkZU91dERvd24ge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG5cbiAgdG8ge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApO1xuICB9XG59XG5cbi5zbGlkZU91dERvd24ge1xuICBhbmltYXRpb24tbmFtZTogc2xpZGVPdXREb3duO1xufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlT3V0TGVmdCB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cblxuICB0byB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICB9XG59XG5cbi5zbGlkZU91dExlZnQge1xuICBhbmltYXRpb24tbmFtZTogc2xpZGVPdXRMZWZ0O1xufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVJbkRvd24ge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cblxuICB0byB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZUluRG93biB7XG4gIGZyb20ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxuXG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxufVxuXG5AbWl4aW4gc2xpZGVJbkRvd24ge1xuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBzbGlkZUluRG93bjtcbiAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlSW5Eb3duO1xufVxuXG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZUluVXAge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTAwJSwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxMDAlLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG5cbiAgdG8ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVJblVwIHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTAwJSwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxuXG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxufVxuXG5AbWl4aW4gc2xpZGVJblVwIHtcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogc2xpZGVJblVwO1xuICBhbmltYXRpb24tbmFtZTogc2xpZGVJblVwO1xufVxuXG5cbkAtd2Via2l0LWtleWZyYW1lcyBib3VuY2Uge1xuICAwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxuICBcbiAgNTAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMzBweCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAzMHB4LCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGJvdW5jZSB7XG4gIDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG4gIFxuICA1MCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAzMHB4LCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDMwcHgsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cblxuICAxMDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG59XG5cbkBtaXhpbiBib3VuY2Uge1xuICAtd2Via2l0LWFuaW1hdGlvbjogYm91bmNlIDNzIGluZmluaXRlO1xuICAgICAgICAgIGFuaW1hdGlvbjogYm91bmNlIDNzIGluZmluaXRlO1xufVxuXG4vLyBjaGFzaW5nIG1vb24gYW5pbWF0aW9uc1xuLy8gYW5pbWF0aW9ucyBsYXN0IDMwc2Vjb25kc1xuLy8gbGFzdCAxLjVzZWNvbmRzIG9mIGFuaW1hdGlvbiBpcyB0cmFuc2Zvcm0gYmFja3RvIG9yaWdpbmFsIHN0YXRlXG5ALXdlYmtpdC1rZXlmcmFtZXMgTW9vbkltYWdlQW5pbWF0aW9uIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IC4xNTtcbiAgfVxuXG4gIDc1JSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICBcbiAgODUlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogLjE1O1xuICB9XG5cbn1cblxuQGtleWZyYW1lcyBNb29uSW1hZ2VBbmltYXRpb24ge1xuICAwJSB7XG4gICAgb3BhY2l0eTogLjE1O1xuICB9XG5cbiAgNzUlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIFxuICA4NSUge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAuMTU7XG4gIH1cbn1cblxuQG1peGluIE1vb25JbWFnZUFuaW1hdGlvbiB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IE1vb25JbWFnZUFuaW1hdGlvbjtcbiAgICAgICAgICBhbmltYXRpb24tbmFtZTogTW9vbkltYWdlQW5pbWF0aW9uO1xuICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGU7XG4gICAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTsgIFxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgTW9vbkdyYWRpZW50UmlzZSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIH1cblxuICA4NSUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIE1vb25HcmFkaWVudFJpc2Uge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICB9XG5cbiAgODUlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIH1cbn1cblxuQG1peGluIE1vb25HcmFkaWVudFJpc2Uge1xuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBNb29uR3JhZGllbnRSaXNlO1xuICAgICAgICAgIGFuaW1hdGlvbi1uYW1lOiBNb29uR3JhZGllbnRSaXNlO1xuICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGU7XG4gICAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTsgIFxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgTW9vblR5cGVSZXZlYWwge1xuICAwJSB7XG4gICAgbGV0dGVyLXNwYWNpbmc6aW5oZXJpdDtcbiAgfVxuXG4gIDg1JSB7XG4gICAgbGV0dGVyLXNwYWNpbmc6LjE1ZW07XG4gIH1cblxuICAxMDAlIHtcbiAgICBsZXR0ZXItc3BhY2luZzouMTVlbTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIE1vb25UeXBlUmV2ZWFsIHtcbiAgMCUge1xuICAgIGxldHRlci1zcGFjaW5nOmluaGVyaXQ7XG4gIH1cbiAgXG4gIDg1JSB7XG4gICAgbGV0dGVyLXNwYWNpbmc6LjE1ZW07XG4gIH1cblxuICAxMDAlIHtcbiAgICBsZXR0ZXItc3BhY2luZzouMTVlbTtcbiAgfVxufVxuXG5cbkBtaXhpbiBNb29uVHlwZVJldmVhbCB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IE1vb25UeXBlUmV2ZWFsO1xuICAgICAgICAgIGFuaW1hdGlvbi1uYW1lOiBNb29uVHlwZVJldmVhbDtcbiAgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlO1xuICAgICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGU7ICBcbn1cblxuXG5cblxuXG4iLCIvLyBmb250LWZhbWlseTogJ0pvc2VmaW4gU2FucycsIHNhbnMtc2VyaWY7XG4vLyBmb250LWZhbWlseTogJ011bGknLCBzYW5zLXNlcmlmO1xuLy8gZm9udC1mYW1pbHk6ICdSb2JvdG8gU2xhYicsIHNlcmlmO1xuXG4vLyBib2R5IGJhc2VcbmJvZHkge1xuICAgIGZvbnQtZmFtaWx5OiBcIk11bGlcIiwgXCJUcmVidWNoZXQgTVNcIiwgc2Fucy1zZXJpZjtcbiAgICBsaW5lLWhlaWdodDogMS42MjU7XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLW1vei1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG59XG4vLyBiYXNlIGhlYWRpbmcgc3R5bGluZ1xuaDEsXG5oMixcbmgzLFxuaDQsXG5oNSxcbmg2LFxuLmFscGhhLFxuLmJldGEsXG4uZ2FtbWEsXG4uZGVsdGEsXG4uZXBzaWxvbixcbi56ZXRhIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG59XG4vLyBoMSBpcyB1c2VkIGZvciB0aGUgc2l0ZSBsb2dvIG9ubHkgZm9yIHBhZ2UgaGVhZGluZ3Mgb3IgY3JlYXRpbmcgdG9wIGxldmVsIHNlY3Rpb25zXG4vLyB1c2UgaDIgb3IgLmJldGFcbi5hbHBoYSB7XG4gICAgY29sb3I6ICRjaGFyY29hbDtcbiAgICBmb250LXNpemU6IDIuMjVlbTtcbiAgICBsaW5lLWhlaWdodDogMS4wNTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBoZWlnaHQ6IDAuMTY2NmVtO1xuICAgICAgICB3aWR0aDogNC4xNjc3ZW07XG4gICAgICAgIGJhY2tncm91bmQ6ICR5ZWxsb3c7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuMzVlbTtcbiAgICB9XG4gICAgJjphZnRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG5oMixcbi5iZXRhIHtcbiAgICBjb2xvcjogJGNoYXJjb2FsO1xuICAgIGZvbnQtc2l6ZTogMmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDFlbTtcbiAgICBsaW5lLWhlaWdodDogMS4wNjI1O1xuICAgICY6YWZ0ZXIge1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjRlbTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIGhlaWdodDogMC4xODc1ZW07XG4gICAgICAgIHdpZHRoOiAzLjEyNWVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkeWVsbG93O1xuICAgIH1cbiAgICAmLmFsdGVybmF0ZSB7XG4gICAgICAgIHBhZGRpbmc6IDAuNWVtIDAgMC4yNWVtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBoZWlnaHQ6IDAuMTg3NWVtO1xuICAgICAgICAgICAgd2lkdGg6IDMuMTI1ZW07XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkY29ybmZsb3dlcjtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogMC44ZW07XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIGFsdGVybmF0ZSBsZXZlbCB0d28gaGVhZGluZ1xuLnByZW1pZXJlLWRhdGUge1xuICAgIGNvbG9yOiAkZ3JheTtcbiAgICBmb250LXNpemU6IDJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcbiAgICBsaW5lLWhlaWdodDogMS4wNjI1O1xufVxuXG4ub3ZlcmxpbmUge1xuICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobTtcbiAgICBoMSxcbiAgICAuYWxwaGEge1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wNTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC4yZW07XG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjRlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC43NWVtO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgaGVpZ2h0OiAwLjM3NWVtO1xuICAgICAgICB3aWR0aDogOS4zNzVlbTtcbiAgICAgICAgYmFja2dyb3VuZDogJHllbGxvdztcbiAgICB9XG59XG5cbi8vIGhlYWRpbmcgYW5pbWF0aW9uXG4uanMge1xuICAgIC5hbHBoYSxcbiAgICBoMixcbiAgICAuYmV0YSxcbiAgICAub3ZlcmxpbmUge1xuICAgICAgICAmOmJlZm9yZSxcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKHdpZHRoLCAwLjc1cywgZWFzZS1pbi1vdXQpO1xuICAgICAgICAgICAgd2lkdGg6IDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLm92ZXJsaW5lIHtcbiAgICAgICAgJi5hbmltYXRlIHtcbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogOS4zNzVlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAuYWxwaGEsXG4gICAgaDIuYWxwaGEge1xuICAgICAgICAmLmFuaW1hdGUge1xuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA0LjE2NzdlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBoMixcbiAgICAuYmV0YSB7XG4gICAgICAgICYuYW5pbWF0ZSB7XG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMy4xMjVlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuaDMsXG4uZ2FtbWEge1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICAgIGNvbG9yOiAkY2hhcmNvYWw7XG4gICAgZm9udC1zaXplOiAxLjYyNWVtO1xufVxuXG5oNCxcbi5kZWx0YSB7XG4gICAgY29sb3I6ICRtZWRHcmF5O1xuICAgIGZvbnQtc2l6ZTogMS41ZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuMDc7XG59XG5cbmg1LFxuLmVwaXNsb24ge1xuICAgIGNvbG9yOiBibGFjaztcbiAgICBmb250LXNpemU6IDEuMzc1ZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuMDg7XG59XG5cbmg2LFxuLnpldGEge1xuICAgIGNvbG9yOiAkZ3JheTtcbiAgICBmb250LWZhbWlseTogXCJSb2JvdG8gU2xhYlwiLCBzZXJpZjtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGZvbnQtc2l6ZTogMC44NzVlbTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNzE0ZW07XG59XG5cbi8vIGNvcHkgYW5kIGxpc3RzXG5wIHtcbiAgICBtYXJnaW46IDAgMCAxLjY2NjY2N2VtO1xuICAgIGZvbnQtc2l6ZTogMS4xMjVlbTtcbiAgICAmOmVtcHR5IHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi8vIHRhcmdldGluZyBwbHVnaW4gY29udGFpbmVyIGNsYXNzIGluY2x1ZGVkIG9uIGZlYXR1cmUtZGV0YWlsLCB1dGlpbHR5IHBhZ2UgYW5kIDQwNCB0ZW1wbGF0ZVxuLy8gcHJldmVudHMgY29sbGlzaW9ucyB3aXRoIGxpc3RzIHNpdGUgd2lkZVxuLnBsdWdpbi1jb250YWluZXIge1xuICAgIG9sLFxuICAgIHVsIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjEyNWVtO1xuICAgICAgICBtYXJnaW46IDAgMCAxLjY2NjY2N2VtO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDEuNWVtO1xuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMi41ZW07XG4gICAgICAgIH1cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICAgICAgICB9XG4gICAgfVxuICAgIG9sIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAyZW07XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAzZW07XG4gICAgICAgIH1cbiAgICB9XG4gICAgdWwge1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDAuNWVtO1xuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIGxlZnQ6IC0wLjVlbTtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXFwyMDIyXCI7XG4gICAgICAgICAgICAgICAgY29sb3I6ICR5ZWxsb3c7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIudHdvLXVwIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICBsaSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobSAqIDI7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBnYWxsZXJ5KDIgb2YgNCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoNCBvZiA4KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgQGluY2x1ZGUgZ2FsbGVyeSg2IG9mIDEyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnRocmVlLXVwIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcblxuICAgIGxpIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtICogMjtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMiBvZiA0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgQGluY2x1ZGUgZ2FsbGVyeSgyLjY2NiBvZiA4KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgQGluY2x1ZGUgZ2FsbGVyeSg0IG9mIDEyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmZvdXItdXAge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuXG4gICAgaDMuZGVsdGEge1xuICAgICAgICBmb250LXNpemU6IDEuMzc1ZW0gIWltcG9ydGFudDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIGxpIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtICogMjtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMiBvZiA0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgQGluY2x1ZGUgZ2FsbGVyeSgyLjY2NiBvZiA4KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgQGluY2x1ZGUgZ2FsbGVyeSgzIG9mIDEyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHAge1xuICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICB9XG59XG5cbi5maXZlLXVwIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtICogMjtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC1nYXA6ICR2LXJoeXRobTtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBzdGFydDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyIDFmciAxZnIgMWZyIDFmcjtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyIDFmciAxZnI7XG4gICAgfVxuXG4gICAgaDMuZGVsdGEge1xuICAgICAgICBmb250LXNpemU6IDEuMzc1ZW0gIWltcG9ydGFudDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIGxpIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtO1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgICAgICY6bnRoLWNoaWxkKDEpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxIC8gc3BhbiAzO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMSAvIHNwYW4gMjtcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEgLyAyO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpudGgtY2hpbGQoMikge1xuICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDQgLyBzcGFuIDM7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAzIC8gc3BhbiAyO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMiAvIDM7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOm50aC1jaGlsZCgzKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMSAvIHNwYW4gMztcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogMjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDUgLyBzcGFuIDI7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxIC8gMTtcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6bnRoLWNoaWxkKDQpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiA0IC8gc3BhbiAzO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMSAvIHNwYW4gMztcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogMjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDIgLyAzO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpudGgtY2hpbGQoNSkge1xuICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEgLyBzcGFuIDY7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDM7XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDQgLyBzcGFuIDM7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDI7XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDMgLyBzcGFuIDI7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDEgLyBzcGFuIDI7XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHAge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxZW07XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTm8gR3JpZCBGYWxsYmFja1xuICAgIEBzdXBwb3J0cyBub3QgKGRpc3BsYXk6IGdyaWQpIHtcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtICogMjtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMiBvZiA0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMi42NjYgb2YgOCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBnYWxsZXJ5KDQgb2YgMTIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4uc2l4LXVwIHtcbiAgICBsaSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobSAqIDI7XG5cbiAgICAgICAgcCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgQGluY2x1ZGUgZ2FsbGVyeSgyIG9mIDQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBnYWxsZXJ5KDMgb2YgOSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMyBvZiAxMik7XG5cbiAgICAgICAgICAgICY6bnRoLWNoaWxkKDUpLFxuICAgICAgICAgICAgJjpudGgtY2hpbGQoNikge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMiBvZiA0KTtcblxuICAgICAgICAgICAgICAgIHAge1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMTI1ZW07XG4gICAgICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjYyNTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIuc29jaWFsLWxpc3Qge1xuICBkaXNwbGF5Oi13ZWJraXQtYm94O1xuICBkaXNwbGF5Oi1tcy1mbGV4Ym94O1xuICBkaXNwbGF5OmZsZXg7XG4gIHRleHQtYWxpZ246Y2VudGVyOyAgXG4gIGEge1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOjJlbTtcbiAgICBoZWlnaHQ6MmVtO1xuICAgIHN2ZyB7XG4gICAgICBwYXRoIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihmaWxsLCAuM3MsIGVhc2UtaW4tb3V0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgbGkge1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIHBhZGRpbmc6MCAuMjVlbTtcbiAgICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xuICAgLW1zLWZsZXgtcG9zaXRpdmU6IDE7XG4gICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgfVxuICBzdmcge1xuICAgIC5iYWNrZ3JvdW5kIHtcbiAgICAgIGZpbGw6JGdyYXk7ICAgIFxuICAgIH1cbiAgICAuY29sb3Ige1xuICAgICAgZmlsbDp3aGl0ZTtcbiAgICB9XG4gIH1cbn0iLCIudGVhc2VyLWxpc3Qge1xuICBAaW5jbHVkZSBwbGFpbi1saXN0O1xufVxuXG4udGVhc2VyLWl0ZW0ge1xuICBmaWd1cmUge1xuICAgIG1hcmdpbjowIDAgJHYtcmh5dGhtLzI7XG4gICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwYWRkaW5nLWJvdHRvbTo1Ni4yNSU7XG4gICAgYSB7XG4gICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgd2lkdGg6MTAwJTtcbiAgICAgIGhlaWdodDoxMDAlO1xuICAgIH1cbiAgICBpbWcgIHtcbiAgICAgIEBpbmNsdWRlIGNlbnRlcjtcbiAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgICB3aWR0aDoxMDAlO1xuICAgIH1cbiAgfVxuICBwIHtcbiAgICBtYXJnaW4tYm90dG9tOjA7XG4gIH1cbiAgaDMge1xuICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtLzQ7XG4gICAgLnBhc3Nwb3J0LWljb24ge1xuICAgICAgbWF4LXdpZHRoOjFlbTtcbiAgICAgIG1heC1oZWlnaHQ6MWVtO1xuICAgIH1cbiAgfVxuICAuemV0YSB7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0vNDtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgfVxuICAuaWNvbiB7XG4gICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgYm90dG9tOjA7XG4gICAgbGVmdDowO1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOjMuMTI1ZW07XG4gICAgaGVpZ2h0OjMuMTI1ZW07XG4gICAgYmFja2dyb3VuZDpyZ2JhKCRibHVlLCAuNzUpO1xuICAgIGltZyB7XG4gICAgICBAaW5jbHVkZSBjZW50ZXI7XG4gICAgICBtYXgtd2lkdGg6MS41NjI1ZW07XG4gICAgICBtYXgtaGVpZ2h0OjEuNTYyNWVtO1xuICAgICAgd2lkdGg6YXV0bztcbiAgICAgIGhlaWdodDphdXRvO1xuICAgIH1cbiAgfVxufVxuXG4uY29sbGVjdGlvbi1pdGVtIHtcbiAgZmlndXJlIHtcbiAgICBwYWRkaW5nLWJvdHRvbToyNy41JTtcbiAgfVxufVxuXG4uanMge1xuICAudGVhc2VyLWl0ZW0ge1xuICAgICYuc2xpZGUtaW4taXRlbSB7XG4gICAgICBAaW5jbHVkZSBhbmltYXRlZCguNXMpO1xuICAgICAgQGluY2x1ZGUgc2xpZGVJblVwO1xuICAgIH1cbiAgICAmLmhpZGRlbi1pdGVtIHtcbiAgICAgIGRpc3BsYXk6bm9uZTtcbiAgICB9XG4gIH1cbn0iLCIvLyBHZW5lcmljIFN0eWxpbmcgZm9yIHBsYWNlaG9sZGVycy4gTGF5b3V0IGNhbiBiZSBmb3VuZCBpbiBncmlkIGhlbHBlcnNcbi5wbHVnaW4tYmxvY2ssIC5wbHVnaW4tbGlzdC1ibG9jayB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG5cbiAgICBtYXJnaW4tYm90dG9tOiAkdi1yaHl0aG0gKiAyO1xufVxuXG4ucGx1Z2luLWJsb2NrIHtcbiAgICBoMyB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDAuMDYyNWVtIHNvbGlkICRtZWRHcmF5O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkdi1yaHl0aG07XG4gICAgfVxufVxuXG4ucGx1Z2luLWNvbnRhaW5lciB7XG4gICAgaDMge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkdi1yaHl0aG0gLyA4O1xuICAgIH1cbn1cblxuLnBsdWdpbi1saXN0LWJsb2NrIHtcbiAgICB1bCB7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICBAaW5jbHVkZSBwbGFpbi1saXN0O1xuICAgIH1cbn1cblxuLmFscGhhIHtcbiAgICAmICsgLnBsdWdpbi1ibG9jaywgJiArIC5wbHVnaW4tbGlzdC1ibG9jayB7XG4gICAgICAgIG1hcmdpbi10b3A6ICR2LXJoeXRobSAqIDI7XG4gICAgfVxufVxuXG4ucGx1Z2luLWNvbnRhaW5lciB7XG4gICAgZmlndXJlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMS41ZW07XG5cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5jZW50ZXIge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW46IDE1cHggYXV0bztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gamFua3kgb3ZlcmlkZSBvZiBkamFuZ28gaW5saW5lIHN0eWxpbmcgZm9yIGZsb2F0aW5nIHN0dWZmXG4qW3N0eWxlKj1cImZsb2F0OiBsZWZ0XCJdLCAubGVmdCB7XG4gICAgZmxvYXQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW46IDAgYXV0byAoJHYtcmh5dGhtICogMS41KSBhdXRvO1xuXG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgIGRpc3BsYXk6IGluaGVyaXQ7XG4gICAgICAgIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbi1yaWdodDogJHYtcmh5dGhtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAoJHYtcmh5dGhtIC8gMikgIWltcG9ydGFudDtcbiAgICB9XG59XG5cbipbc3R5bGUqPVwiZmxvYXQ6IHJpZ2h0XCJdLCAucmlnaHQge1xuICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luOiAwIGF1dG8gKCR2LXJoeXRobSAqIDEuNSkgYXV0bztcblxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICBkaXNwbGF5OiBpbmhlcml0O1xuICAgICAgICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICR2LXJoeXRobTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogKCR2LXJoeXRobSAvIDIpICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4uY2VudGVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkdi1yaHl0aG07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufSIsIi8qKlxuICogd2FsbG9wLmNzc1xuICpcbiAqIEBmaWxlb3ZlcnZpZXcgRGVmYXVsdCBzdHlsZXMgZm9yIHdhbGxvcCDigJMgcmVjb21tZW5kZWRcbiAqXG4gKiBAYXV0aG9yIFBlZHJvIER1YXJ0ZVxuICogQGF1dGhvciBodHRwOi8vcGVkcm9kdWFydGUubWUvd2FsbG9wXG4gKi9cblxuLmNhcm91c2VsLWNvbnRhaW5lciB7XG4gICAgKjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6IDAuMTI1ZW0gc29saWQgJHllbGxvdztcbiAgICB9XG5cbiAgICAuZnVsbC1zY3JlZW4sXG4gICAgLnNsaWRlcy1wYWdpbmF0aW9uIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gICAgLldhbGxvcC1saXN0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMjUwcHgsIDFmcikpO1xuICAgICAgICBncmlkLWdhcDogM3B4O1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAuV2FsbG9wLWl0ZW0ge1xuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICB3aWR0aDogMTUwJTtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtMjUlO1xuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWpiLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgd2lkdGg6IDIwMCU7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogLTUwJTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmpzIHtcbiAgICAvLyBhZGRlZCB0byBmb3IgZXhpdCBhbmltYXRpb25zXG4gICAgLmNhcm91c2VsLWNvbnRhaW5lciB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobSAqIDI7XG4gICAgICAgIGJhY2tncm91bmQ6IGJsYWNrO1xuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAxZW07XG4gICAgICAgIH1cbiAgICAgICAgLnNsaWRlcy1wYWdpbmF0aW9uIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGluaGVyaXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuV2FsbG9wLWxpc3Qge1xuICAgICAgICB3aWR0aDogaW5oZXJpdDtcbiAgICB9XG5cbiAgICAuY2Fyb3VzZWwge1xuICAgICAgICAmLmV4cGFuZGVkIHtcbiAgICAgICAgICAgIC5zbGlkZXMtcGFnaW5hdGlvbixcbiAgICAgICAgICAgIC5mdWxsLXNjcmVlbiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5wbHVnaW4tY29udGFpbmVyIHtcbiAgICAgICAgLldhbGxvcCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBAaW5jbHVkZSBhbmltYXRlZCgwLjQ1cyk7XG4gICAgICAgICAgICAmLmVudGVyaW5nLWZ1bGxzY3JlZW4ge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHNsaWRlSW5Eb3duO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5leGl0aW5nLWZ1bGxzY3JlZW4ge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHNsaWRlT3V0RG93bjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuZW50ZXJpbmctYmFjayB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZmFkZUluO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi52aWV3aW5nLWZ1bGwge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgei1pbmRleDogMjE0NzQ4MzY0NztcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBibGFjaztcbiAgICAgICAgICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAuc2xpZGVzLXBhZ2luYXRpb24ge1xuICAgICAgICAgICAgICAgICAgICByaWdodDogMjAlO1xuICAgICAgICAgICAgICAgICAgICB0b3A6IGNhbGMoNzV2aCArIDFlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC5mdWxsLXNjcmVlbiB7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDIwJTtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiBjYWxjKDc1dmggKyAxLjE1ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAuV2FsbG9wLWl0ZW0ge1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICAmLldhbGxvcC1pdGVtLS1jdXJyZW50IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZ3VyZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDYwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWVkaWEtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDc1dmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogMWVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWdjYXB0aW9uIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAzZW0gYXV0byAwIGF1dG87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogNjB2dztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNlZS1tb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogY2FsYygyMCUgLSAwLjQ1ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGNhbGMoNzV2aCArIDcuNzVlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5oaWRlLW1vcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodDogMjAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmLmxvbmctY2FwdGlvbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYuZXhwYW5kZWQge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlnY2FwdGlvbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IDNlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qXG4gICAgVGhpcyBlbGVtZW50IGdyb3VwcyBhbGwgdGhlIGl0ZW1zLCBidXQgbm90IHRoZSBidXR0b25zXG4gICAgSXQncyBhIHJlY29tbWVuZGF0aW9uIGJ1dCBpdCdzIHZlcnkgbGlrZWx5XG4gICAgeW91J2xsIHdhbnQgdG8gaGlkZSBhbnkgb3ZlcmZsb3cgZnJvbSB0aGUgaXRlbXNcbiAgICBFc3BlY2lhbGx5IHdoZW4gZG9pbmcgYW5pbWF0aW9ucyBzdWNoIGFzIHNjYWxlXG4gICAqL1xuXG4gICAgLnBsdWdpbi1jb250YWluZXIge1xuICAgICAgICAuV2FsbG9wLWxpc3Qge1xuICAgICAgICAgICAgQGluY2x1ZGUgcGxhaW4tbGlzdDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGluaGVyaXQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLypcbiAgICBUaGlzIGlzIHRoZSBpdGVtIGVsZW1lbnRcbiAgICBCeSBkZWZhdWx0LCB0aGV5IGFyZSBhbGwgaGlkZGVuIGFuZFxuICAgIHBvc2l0aW9uZWQgYWJzb2x1dGVcbiAgICBJIHJlY29tbWVuZCBhbHdheXMgaGF2aW5nIC5XYWxsb3AtaXRlbS0tY3VycmVudFxuICAgIGluIHlvdXIgbWFya3VwIGJ5IGRlZmF1bHQgKHByb2JhYmx5IG9uIHRoZSBmaXJzdCBlbGVtZW50KVxuICAgKi9cblxuICAgIC5wbHVnaW4tY29udGFpbmVyIHtcbiAgICAgICAgLldhbGxvcC1pdGVtIHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICAubWVkaWEtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDI0ZW07XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDMyLjgxMjVlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDkwJTtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoNCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC4yNWVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNhcm91c2VsLWl0ZW0tY2FwdGlvbiB7XG4gICAgICAgIHBhZGRpbmc6IDAuNWVtICR2LXJoeXRobTtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB9XG5cbiAgICAvKlxuICAgIFRoaXMgaXMgdGhlIGN1cnJlbnQgaXRlbSBlbGVtZW50XG4gICAgQWxsIHdlIGRvIGhlcmUsIGlzIG1ha2UgaXQgdmlzaWJsZSBhZ2FpbiByZXNldFxuICAgIHRoZSBwb3NpdGlvbiB0byBzdGF0aWMuIENvdWxkIGFsc28gYmUgcmVsYXRpdmVcbiAgICovXG5cbiAgICAucGx1Z2luLWNvbnRhaW5lciB7XG4gICAgICAgIC5XYWxsb3AtaXRlbS0tY3VycmVudCB7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgZmlndXJlIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgJi5sb25nLWNhcHRpb24ge1xuICAgICAgICAgICAgICAgICAgICAuaGlkZS1tb3JlLFxuICAgICAgICAgICAgICAgICAgICAuc2VlLW1vcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZ2NhcHRpb24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24obWF4LWhlaWdodCwgMXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgtaGVpZ2h0OiAxNWVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgtaGVpZ2h0OiA0LjVlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiA0LjVlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNlZS1tb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBwbGFpbi1idXR0b247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihjb2xvciwgMC4zcywgZWFzZS1pbi1vdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJHJlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogY2FsYyg1JSAtIDAuNDVlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiA0MC4yNWVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMC40NWVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJHllbGxvdztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAuaGlkZS1tb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBwbGFpbi1idXR0b247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwsIDAuM3MsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMmVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMmVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodDogNSU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogJHllbGxvdztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGZpbGwsIDAuM3MsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxZW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6IDFlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogd2hpdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgJi5leHBhbmRlZCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDguNTVlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWdjYXB0aW9uIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAkdi1yaHl0aG0gKiAyIDUlICR2LXJoeXRobSA1JTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiBpbmhlcml0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgtaGVpZ2h0OiBpbmhlcml0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaGlkZS1tb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2VlLW1vcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaDQge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpZ2NhcHRpb24sXG4gICAgICAgICAgICAuY2FwdGlvbiB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogJHYtcmh5dGhtIDAgMCAwO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoYmxhY2ssIDAuNzUpO1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDkwJTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDEuNWVtIGF1dG8gMCBhdXRvO1xuICAgICAgICAgICAgICAgIHAge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjU1ZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAkdi1yaHl0aG0gKiAyO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICYuY3JlZGl0IHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMCAwIDAgMzBweCAhaW1wb3J0YW50O1xuXG4gICAgICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogM3B4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltYWdlcy9pY29uLWNhbWVyYS5zdmcpIG5vLXJlcGVhdCBsZWZ0IHRvcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5XYWxsb3AtYnV0dG9uUHJldmlvdXMsXG4gICAgLldhbGxvcC1idXR0b25OZXh0IHtcbiAgICAgICAgQGluY2x1ZGUgcGxhaW4tYnV0dG9uO1xuICAgICAgICBzdmcge1xuICAgICAgICAgICAgaGVpZ2h0OiAxZW07XG4gICAgICAgICAgICB3aWR0aDogMWVtO1xuICAgICAgICAgICAgcGF0aCB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihmaWxsLCAwLjNzLCBlYXNlLWluLW91dCk7XG4gICAgICAgICAgICAgICAgZmlsbDogd2hpdGU7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMC44NTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgcGF0aCB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGw6ICR5ZWxsb3c7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmZ1bGwtc2NyZWVuIHtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uKG51bGwsICRtZWRHcmF5KTtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihjb2xvciwgMC4zcywgZWFzZS1pbi1vdXQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAwLjNlbSAwLjQ1ZW0gMC41ZW0gMC40NWVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMzcuNWVtO1xuICAgICAgICBsZWZ0OiA1JTtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB9XG4gICAgICAgIC5mdWxsLXNjcmVlbi1pY29uIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oZmlsbCwgMC4zcywgZWFzZS1pbi1vdXQpO1xuICAgICAgICAgICAgZmlsbDogd2hpdGU7XG4gICAgICAgICAgICB3aWR0aDogMS4yNWVtO1xuICAgICAgICAgICAgaGVpZ2h0OiAxLjI1ZW07XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogLTAuMDVlbTtcbiAgICAgICAgfVxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiAkeWVsbG93O1xuICAgICAgICAgICAgLmZ1bGwtc2NyZWVuLWljb24ge1xuICAgICAgICAgICAgICAgIGZpbGw6ICR5ZWxsb3c7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc2xpZGVzLXBhZ2luYXRpb24ge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAyNy43NWVtO1xuICAgICAgICByaWdodDogNSU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgdG9wOiAzNy43NWVtO1xuICAgICAgICB9XG4gICAgICAgIC5jb3VudCB7XG4gICAgICAgICAgICBjb2xvcjogJG1lZEdyYXk7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIG1hcmdpbjogLTAuMDVlbSAxZW0gMCAwO1xuICAgICAgICB9XG4gICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMC43NWVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5wbHVnaW4tY29udGFpbmVyIHtcbiAgICAgICAgLnZpZGVvLWdhbGxlcnkge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiA0NGVtO1xuICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgICAgICAuc2xpZGVzLXBhZ2luYXRpb24sXG4gICAgICAgICAgICAuZnVsbC1zY3JlZW4ge1xuICAgICAgICAgICAgICAgIHRvcDogMC41ZW07XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogMjMuNzVlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogMjUuNzVlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuZnVsbC1zY3JlZW4ge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiBjYWxjKDUlIC0gMC40NWVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuY2FwdGlvbiB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkdi1yaHl0aG07XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR2LXJoeXRobSAqIDIuNTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuY292ZS1jb250YWluZXIge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR2LXJoeXRobSAqIDEuNTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLnZpZXdpbmctZnVsbCB7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIC5zbGlkZXMtcGFnaW5hdGlvbiB7XG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBjYWxjKDUwJSAtIDIzZW0pO1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDI4ZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC5mdWxsLXNjcmVlbiB7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IGNhbGMoNTAlIC0gMjNlbSk7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogMjhlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLldhbGxvcC1pdGVtLS1jdXJyZW50LldhbGxvcC1pdGVtIHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDB2aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLmNvdmUtd3JhcHBlciB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiA0MGVtO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46ICR2LXJoeXRobSBhdXRvIDAgYXV0bztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLmNvdmUtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAuY2FwdGlvbiB7XG4gICAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogd2FsbG9wLS1zbGlkZS5jc3NcbiAqXG4gKiBAZmlsZW92ZXJ2aWV3IFNsaWRlIGFuaW1hdGlvbiBmb3Igd2FsbG9wXG4gKlxuICogQGF1dGhvciBQZWRybyBEdWFydGVcbiAqIEBhdXRob3IgaHR0cDovL3BlZHJvZHVhcnRlLm1lL3dhbGxvcFxuICovXG5cbi8qIHRoZSAxMG1zIGFuaW1hdGlvbi1kZWxheSBmaXhlZCBzb21lIHdlaXJkIHJlbmRlcmluZyBpc3N1ZXMgd2l0aCBpUGhvbmUgKi9cbi5XYWxsb3AtLXNsaWRlIC5XYWxsb3AtaXRlbS0tc2hvd1ByZXZpb3VzIHtcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGVGcm9tTGVmdCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xuICAgIC1tb3otYW5pbWF0aW9uOiBzbGlkZUZyb21MZWZ0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG4gICAgLW1zLWFuaW1hdGlvbjogc2xpZGVGcm9tTGVmdCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xuICAgIGFuaW1hdGlvbjogc2xpZGVGcm9tTGVmdCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xufVxuXG4uV2FsbG9wLS1zbGlkZSAuV2FsbG9wLWl0ZW0tLXNob3dOZXh0IHtcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGVGcm9tUmlnaHQgMzUwbXMgMTBtcyBsaW5lYXIgYm90aDtcbiAgICAtbW96LWFuaW1hdGlvbjogc2xpZGVGcm9tUmlnaHQgMzUwbXMgMTBtcyBsaW5lYXIgYm90aDtcbiAgICAtbXMtYW5pbWF0aW9uOiBzbGlkZUZyb21SaWdodCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xuICAgIGFuaW1hdGlvbjogc2xpZGVGcm9tUmlnaHQgMzUwbXMgMTBtcyBsaW5lYXIgYm90aDtcbn1cblxuLldhbGxvcC0tc2xpZGUgLldhbGxvcC1pdGVtLS1oaWRlUHJldmlvdXMsXG4uV2FsbG9wLS1zbGlkZSAuV2FsbG9wLWl0ZW0tLWhpZGVOZXh0IHtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuXG4uV2FsbG9wLS1zbGlkZSAuV2FsbG9wLWl0ZW0tLWhpZGVQcmV2aW91cyB7XG4gICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlVG9MZWZ0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG4gICAgLW1vei1hbmltYXRpb246IHNsaWRlVG9MZWZ0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG4gICAgLW1zLWFuaW1hdGlvbjogc2xpZGVUb0xlZnQgMzUwbXMgMTBtcyBsaW5lYXIgYm90aDtcbiAgICBhbmltYXRpb246IHNsaWRlVG9MZWZ0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG59XG5cbi5XYWxsb3AtLXNsaWRlIC5XYWxsb3AtaXRlbS0taGlkZU5leHQge1xuICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZVRvUmlnaHQgMzUwbXMgMTBtcyBsaW5lYXIgYm90aDtcbiAgICAtbW96LWFuaW1hdGlvbjogc2xpZGVUb1JpZ2h0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG4gICAgLW1zLWFuaW1hdGlvbjogc2xpZGVUb1JpZ2h0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG4gICAgYW5pbWF0aW9uOiBzbGlkZVRvUmlnaHQgMzUwbXMgMTBtcyBsaW5lYXIgYm90aDtcbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlRnJvbUxlZnQge1xuICAgIDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICB9XG59XG5cbkAtbW96LWtleWZyYW1lcyBzbGlkZUZyb21MZWZ0IHtcbiAgICAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgfVxufVxuXG5ALW1zLWtleWZyYW1lcyBzbGlkZUZyb21MZWZ0IHtcbiAgICAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlRnJvbUxlZnQge1xuICAgIDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICB9XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZUZyb21SaWdodCB7XG4gICAgMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgfVxufVxuXG5ALW1vei1rZXlmcmFtZXMgc2xpZGVGcm9tUmlnaHQge1xuICAgIDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgICAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIH1cbn1cblxuQC1tcy1rZXlmcmFtZXMgc2xpZGVGcm9tUmlnaHQge1xuICAgIDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgICAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZUZyb21SaWdodCB7XG4gICAgMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgfVxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVUb0xlZnQge1xuICAgIDk5JSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgfVxufVxuXG5ALW1vei1rZXlmcmFtZXMgc2xpZGVUb0xlZnQge1xuICAgIDk5JSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgfVxufVxuXG5ALW1zLWtleWZyYW1lcyBzbGlkZVRvTGVmdCB7XG4gICAgOTklIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVUb0xlZnQge1xuICAgIDk5JSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgfVxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVUb1JpZ2h0IHtcbiAgICA5OSUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgfVxufVxuXG5ALW1vei1rZXlmcmFtZXMgc2xpZGVUb1JpZ2h0IHtcbiAgICA5OSUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgfVxufVxuXG5ALW1zLWtleWZyYW1lcyBzbGlkZVRvUmlnaHQge1xuICAgIDk5JSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAgICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVUb1JpZ2h0IHtcbiAgICA5OSUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgfVxufVxuIiwiLmFjY29yZGlvbi10b2dnbGUge1xuICBkaXNwbGF5Om5vbmU7XG59XG5cbi5qcyB7XG4gIC5hY2NvcmRpb24tdG9nZ2xlIHtcbiAgICBib3JkZXI6bm9uZTtcbiAgICBiYWNrZ3JvdW5kOm5vbmU7XG4gICAgZGlzcGxheTpibG9jaztcbiAgICB3aWR0aDoxMDAlO1xuICAgIHRleHQtYWxpZ246bGVmdDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGNvbG9yOiRyZWQ7XG4gICAgZm9udC1zaXplOjEuMjVlbTtcbiAgICBmb250LXdlaWdodDo3MDA7XG4gICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gICAgcGFkZGluZy1ib3R0b206JHYtcmh5dGhtLzM7XG4gICAgYm9yZGVyLWJvdHRvbTouMTI1ZW0gc29saWQgJG1lZEdyYXk7XG4gICAgKiB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XG4gICAgfVxuICAgICY6aG92ZXIge1xuICAgICAgYm9yZGVyLWJvdHRvbTouMTI1ZW0gc29saWQgJG1lZEdyYXk7XG4gICAgfVxuICAgIHN2ZyB7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIG1hcmdpbi10b3A6LS4xNWVtO1xuICAgICAgaGVpZ2h0Oi43NWVtO1xuICAgICAgd2lkdGg6Ljc1ZW07XG4gICAgICBmaWxsOiRyZWQ7XG4gICAgfVxuICAgIC52ZXJ0aWNhbCB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKHRyYW5zZm9ybSwgLjI1cywgZWFzZS1pbi1vdXQpO1xuICAgICAgLW1zLXRyYW5zZm9ybS1vcmlnaW46Y2VudGVyO1xuICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46Y2VudGVyO1xuICAgIH1cbiAgICAmLm9wZW4ge1xuICAgICAudmVydGljYWwge1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZVkoMCk7IFxuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVkoMCk7XG4gICAgIH1cbiAgICB9XG4gIH1cbiAgLmFjY29yZGlvbi1jb250ZW50IHtcbiAgICBkaXNwbGF5Om5vbmU7XG4gICAgJi5vcGVuIHtcbiAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgfVxuICB9XG59IiwiLmZpbHRlcnMge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgYmFja2dyb3VuZDojZDBkYmVkO1xuICBwYWRkaW5nOiR2LXJoeXRobTtcbiAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gIHBvc2l0aW9uOnJlbGF0aXZlO1xuICBmaWVsZHNldCB7XG4gICAgcGFkZGluZzowO1xuICAgIG1hcmdpbjowO1xuICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtO1xuICAgIGJvcmRlcjpub25lO1xuICAgIGlucHV0W3R5cGU9J3JhZGlvJ10ge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgbGVmdDogLTk5OTlweDtcbiAgICAgICY6Y2hlY2tlZCArIGxhYmVsIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjokY29ybmZsb3dlcjtcbiAgICAgICAgY29sb3I6d2hpdGU7XG4gICAgICAgIGJvcmRlcjouMTI1ZW0gc29saWQgJGNvcm5mbG93ZXI7XG4gICAgICB9XG4gICAgICAmOmZvY3VzICsgbGFiZWwge1xuICAgICAgICBib3JkZXI6LjEyNWVtIHNvbGlkICR5ZWxsb3c7XG4gICAgICB9XG4gICAgfVxuICAgIGxhYmVsIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsLCAuMzVzLCBlYXNlLWluLW91dCk7XG4gICAgICBiYWNrZ3JvdW5kOndoaXRlO1xuICAgICAgcGFkZGluZzouMmVtIDEuNWVtO1xuICAgICAgZm9udC13ZWlnaHQ6NzAwO1xuICAgICAgY29sb3I6JGNvcm5mbG93ZXI7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIGJvcmRlcjouMTI1ZW0gc29saWQgd2hpdGU7XG4gICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBib3JkZXItcmFkaXVzOjEuMjVlbSAwIDAgMS4yNWVtO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OjEuMTVlbTtcbiAgICAgIH1cbiAgICAgICY6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czowIDEuMjVlbSAxLjI1ZW0gMDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OjEuMTVlbTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICB3aWR0aDoxMi44MTI1ZW07XG4gICAgICAgIHRleHQtYWxpZ246Y2VudGVyO1xuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgbWFyZ2luLWJvdHRvbTowO1xuICAgICAgbWFyZ2luLXJpZ2h0OiR2LXJoeXRobS8yO1xuICAgIH1cbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDIzLjc1ZW0pIHtcbiAgICAgIGZvbnQtc2l6ZTozLjg1dnc7XG4gICAgfVxuICB9XG5cbiAgLmxhYmVsIHtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobS8yO1xuICAgIGZvbnQtd2VpZ2h0OjcwMDtcbiAgICBjb2xvcjojNDM0MzQzO1xuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgbWFyZ2luLWJvdHRvbTowO1xuICAgICAgbWFyZ2luLXJpZ2h0OiR2LXJoeXRobS80OyAgICAgIFxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgIG1hcmdpbi1yaWdodDokdi1yaHl0aG0vMjsgIFxuICAgIH1cbiAgfVxuXG4gIC5zdHlsZWQtc2VsZWN0IHtcbiAgICBiYWNrZ3JvdW5kOndoaXRlO1xuICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOjEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0vMjtcbiAgICAgIGJvcmRlcjouMTI1ZW0gc29saWQgd2hpdGU7XG4gICAgJi5mb2N1c2VkIHtcbiAgICAgIGJvcmRlcjouMTI1ZW0gc29saWQgJHllbGxvdztcbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6JHllbGxvdyAkeWVsbG93ICR5ZWxsb3cgJGNvcm5mbG93ZXI7XG4gICAgICB9XG4gICAgfVxuICAgICY6YWZ0ZXIge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOi0uMTI1ZW07XG4gICAgICByaWdodDotLjEyNWVtO1xuICAgICAgY29udGVudDonJztcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlkWFJtTFRnaVB6NDhjM1puSUhabGNuTnBiMjQ5SWpFdU1TSWdhV1E5SWt4aGVXVnlYekVpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZlR3hwYm1zOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2ZUd4cGJtc2lJSGc5SWpCd2VDSWdlVDBpTUhCNElpQjJhV1YzUW05NFBTSXdJREFnTkRBZ05EQWlJSE4wZVd4bFBTSmxibUZpYkdVdFltRmphMmR5YjNWdVpEcHVaWGNnTUNBd0lEUXdJRFF3T3lJZ2VHMXNPbk53WVdObFBTSndjbVZ6WlhKMlpTSStQSE4wZVd4bElIUjVjR1U5SW5SbGVIUXZZM056SWo0dWMzUXdlMlpwYkd3Nkl6UTROekpDTkR0OUxuTjBNWHRtYVd4c09pTkdSa1pHUmtZN2ZUd3ZjM1I1YkdVK1BISmxZM1FnWTJ4aGMzTTlJbk4wTUNJZ2QybGtkR2c5SWpRd0lpQm9aV2xuYUhROUlqUXdJaTgrUEhCaGRHZ2dZMnhoYzNNOUluTjBNU0lnWkQwaVRURXlMak1zTVRkc055NDNMRGN1TjJ3M0xqY3ROeTQzYkMweExqY3RNUzQ0YkMwMUxqa3NObXd0TlM0NUxUWk1NVEl1TXl3eE4zb2lMejQ4TDNOMlp6ND0pO1xuICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O1xuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjokY29ybmZsb3dlcjtcbiAgICAgIGhlaWdodDpjYWxjKDEwMCUgKyAuMjVlbSk7XG4gICAgICB3aWR0aDoyLjQ5ZW07XG4gICAgICBwb2ludGVyLWV2ZW50czpub25lO1xuICAgICAgYm9yZGVyOi4xMjVlbSBzb2xpZCAkY29ybmZsb3dlcjtcbiAgICAgIGJvcmRlci1sZWZ0Om5vbmU7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGNlbnRlcihmYWxzZSwgdHJ1ZSk7XG4gICAgICByaWdodDowO1xuICAgICAgY29udGVudDonJztcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTtcbiAgICAgIGhlaWdodDoxMDAlOyAgXG4gICAgICB3aWR0aDo1LjI1ZW0gXFw5O1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIHdpZHRoOmluaGVyaXQ7XG4gICAgICBtYXJnaW46MDtcbiAgICAgIG1hcmdpbi1yaWdodDokdi1yaHl0aG0vMjtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICBtYXJnaW4tcmlnaHQ6JHYtcmh5dGhtO1xuICAgIH0gICAgXG4gIH1cblxuICBzZWxlY3Qge1xuICAgIHBhZGRpbmc6LjJlbSAuNzVlbSAuMTllbSAuNzVlbTtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICB3aWR0aDoxMDAlO1xuICAgIGZvbnQtd2VpZ2h0OjcwMDtcbiAgICBjb2xvcjokY29ybmZsb3dlcjtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOjA7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYmFja2dyb3VuZDpub25lO1xuICAgIHBhZGRpbmctcmlnaHQ6NGVtO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICB9XG4gIFxuICAvKiBDQVVUSU9OOiBJRSBoYWNrZXJ5IGFoZWFkICovXG4gIHNlbGVjdDo6LW1zLWV4cGFuZCB7IFxuICAgIGRpc3BsYXk6IG5vbmU7IC8qIHJlbW92ZSBkZWZhdWx0IGFycm93IG9uIGllMTAgYW5kIGllMTEgKi9cbiAgfVxuXG4gIC5zb3J0aW5nIHtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICB3aWR0aDoxMDAlO1xuICAgIC5zdHlsZWQtc2VsZWN0IHtcbiAgICAgIG1hcmdpbi1yaWdodDowO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIHdpZHRoOmluaGVyaXQ7XG4gICAgICBmbG9hdDpyaWdodDtcbiAgICB9XG4gIH1cbiAgXG4gIC5zdWJtaXQge1xuICAgIGNsZWFyOmJvdGg7XG4gICAgbWFyZ2luLXRvcDokdi1yaHl0aG07XG4gICAgaW5wdXRbdHlwZT0nc3VibWl0J10ge1xuICAgICAgcGFkZGluZzouMjVlbSAuNWVtO1xuICAgIH1cbiAgfVxuICBcbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgZm9ybSB7XG4gICAgICAqIHtcbiAgICAgICAgdmVydGljYWwtYWxpZ246bWlkZGxlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICBmb250LXNpemU6MS4wNjI1ZW07XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tamItbWluLCAkbWFwLWxnKSB7XG4gICAgZm9udC1zaXplOjEuMTI1ZW07XG4gIH1cbn1cblxuXG4vLyBsb2FkaW5nXG4uZmlsdGVyLXRhcmdldCB7XG4gICYubG9hZGluZyB7XG4gICAgQGluY2x1ZGUgYW5pbWF0ZWQoLjM1cyk7XG4gICAgQGluY2x1ZGUgZmFkZUluOyBcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3BhY2l0eTowO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6J0xvYWRpbmcuLi4nO1xuICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDoxMDAlO1xuICAgICAgaGVpZ2h0OjEwMCU7XG4gICAgICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgICAgIHRvcDowO1xuICAgICAgbGVmdDowO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTtcbiAgICAgIGNvbG9yOiM0MzQzNDM7XG4gICAgICBmb250LXdlaWdodDo3MDA7XG4gICAgICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgICAgIGZvbnQtc2l6ZToxLjI1ZW07XG4gICAgICBwYWRkaW5nOiR2LXJoeXRobTtcbiAgICAgIHotaW5kZXg6OTtcbiAgICAgIG9wYWNpdHk6MTtcbiAgICB9XG4gIH1cbiAgJi5sb2FkZWQge1xuICAgIHVsIHtcbiAgICAgIEBpbmNsdWRlIGFuaW1hdGVkKC41cyk7XG4gICAgICBAaW5jbHVkZSBzbGlkZUluVXA7XG4gICAgfVxuICB9XG59XG5cbi8vIHJlbW92ZSBzdWJtaXQgd2hlbiBqYXZhc2NyaXB0IGlzIGVuYWJsZWRcbi5qcyB7XG4gIC5maWx0ZXJzIHtcbiAgICBzZWxlY3Qge1xuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6bm9uZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLnN1Ym1pdCB7XG4gICAgICBkaXNwbGF5Om5vbmUgXG4gICAgfVxuICB9XG59IiwiLnJlbGF0ZWQtZmlsbXMge1xuICBtYXJnaW46JHYtcmh5dGhtKjIgMDtcbiAgaW1nIHtcbiAgICB3aWR0aDoxMDAlO1xuICB9XG4gIHVsIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICBAaW5jbHVkZSBwbGFpbi1saXN0O1xuICAgIGxpIHtcbiAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMSBvZiAyKTtcbiAgICAgIG1hcmdpbi1ib3R0b206Z3V0dGVyKCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgbGkge1xuICAgICAgICBAaW5jbHVkZSBnYWxsZXJ5KDEuMzMpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobSoyO1xuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIGxpIHtcbiAgICAgICAgQGluY2x1ZGUgZ2FsbGVyeSgyLjY2NiBvZiA4KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTpndXR0ZXIoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICBsaSB7XG4gICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMi40IG9mIDEyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCIuZW1haWwtc2lnbnVwLWZvcm0ge1xuICBpbnB1dCwgYnV0dG9uIHtcbiAgICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJywgc2VyaWY7XG4gICAgcGFkZGluZzokdi1yaHl0aG0vMiAkdi1yaHl0aG07XG4gIH1cbiAgLmVtYWlsLWZpZWxkIHtcbiAgICBkaXNwbGF5OmJsb2NrO1xuICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtLzI7XG4gICAgd2lkdGg6MTAwJTtcbiAgICBib3JkZXI6MXB4IHNvbGlkICRncmF5O1xuICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgfVxuICB9XG4gIC56aXAtY29kZS1maWVsZCB7XG4gICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtLzI7XG4gICAgIHdpZHRoOjEwMCU7XG4gICAgIGJvcmRlcjoxcHggc29saWQgJGdyYXk7XG4gICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIH1cbiAgLm5vdGUge1xuICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgd2lkdGg6MTAwJTtcbiAgICB0ZXh0LWFsaWduOmxlZnQ7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0vMjtcbiAgICBmb250LXNpemU6Ljg1ZW07XG4gICAgbWFyZ2luLXRvcDokdi1yaHl0aG0vMjtcbiAgfVxuICBidXR0b25bdHlwZT0nc3VibWl0J10ge1xuICAgIEBpbmNsdWRlIHBsYWluLWJ1dHRvbjtcbiAgICBAaW5jbHVkZSBidXR0b24oJG5hdnksIHdoaXRlKTtcbiAgICBAaW5jbHVkZSBhcnJvdy1idXR0b24od2hpdGUpO1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYmFja2dyb3VuZCwgLjNzLCBlYXNlLWluLW91dCk7XG4gICAgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO1xuICAgIHdpZHRoOjllbTtcbiAgICB6LWluZGV4OjI7XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOmRhcmtlbigkbmF2eSwgNSUpO1xuICAgIH1cbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OicnO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgd2lkdGg6MTAwJTtcbiAgICAgIGhlaWdodDoxMDAlO1xuICAgICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgICB0b3A6MDtcbiAgICAgIGxlZnQ6MDtcbiAgICAgIHotaW5kZXg6LTE7XG4gICAgICBAaW5jbHVkZSBsb25nLXNoYWRvdyhib3gsICRuYXZ5LCAyMDAsIGZhbHNlLCBmYWxzZSwgcmlnaHQpO1xuICAgICAgb3BhY2l0eTouMzU7XG4gICAgfVxuICB9XG59IiwiLy8gSG9tZSBQYWdlIEhlcm8gQ29tcG9uZW50XG4uaG9tZXBhZ2UtaGVyby1pdGVtIHtcbiAgIG1hcmdpbi10b3A6JHYtcmh5dGhtO1xuICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gIC8vIGFsbCBjb250ZW50IGluc2lkZSBpcyBkeW5hbWljLiB0aGVyZSBpcyBhIGNoYW5jZSBpdCBjb3VsZCBiZSBlbXB0eVxuICAmOmVtcHR5IHtcbiAgICBkaXNwbGF5Om5vbmU7XG4gIH1cbiAgaW1nIHtcbiAgICBkaXNwbGF5OmJsb2NrO1xuICAgIHdpZHRoOjEwMCU7XG4gICAgJi5ibGFja0FuZFdoaXRlIHtcbiAgICAgIC13ZWJraXQtZmlsdGVyOmdyYXlzY2FsZSgxKTtcbiAgICAgICAgICAgICAgZmlsdGVyOmdyYXlzY2FsZSgxKTtcbiAgICB9XG4gIH1cbiAgLnRpdGxlIHtcbiAgICBwYWRkaW5nOiR2LXJoeXRobS8yICR2LXJoeXRobTtcbiAgICBiYWNrZ3JvdW5kOiNhYzBiMGU7XG4gICAgY29sb3I6d2hpdGU7XG4gICAgZmxvYXQ6bm9uZSAhaW1wb3J0YW50O1xuICAgIG1hcmdpbi1ib3R0b206MCAhaW1wb3J0YW50O1xuICAgIC56ZXRhIHtcbiAgICAgIGNvbG9yOndoaXRlO1xuICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtO1xuICAgIH1cbiAgICAmLnJpZ2h0IHtcbiAgICAgIG1hcmdpbi1sZWZ0OjAgIWltcG9ydGFudDtcbiAgICB9XG4gICAgJi5sZWZ0IHtcbiAgICAgIG1hcmdpbi1yaWdodDowICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC5hbHBoYSB7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7XG4gICAgICBmb250LWZhbWlseTogJ0pvc2VmaW4gU2FucycsIHNhbnMtc2VyaWY7XG4gICAgICBjb2xvcjp3aGl0ZTtcbiAgICAgIGZvbnQtc2l6ZToyZW07XG4gICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgICBsaW5lLWhlaWdodDoxLjI7XG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIGRpc3BsYXk6bm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLndhdGNoIHtcbiAgICBAaW5jbHVkZSBsaW5rLXJlc2V0O1xuICAgIEBpbmNsdWRlIGJvcmRlci1idXR0b24od2hpdGUsIC4wNjI1ZW0sIHdoaXRlKTtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGJhY2tncm91bmQsIC4zcywgZWFzZS1pbi1vdXQpO1xuICAgIEBpbmNsdWRlIGFycm93LWJ1dHRvbih3aGl0ZSk7XG4gICAgJi56ZXRhIHtcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgZm9udC1zaXplOjFlbTtcbiAgICB9XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOnJnYmEod2hpdGUsIC41KTtcbiAgICB9XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgLnRpdGxlIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oNCk7XG4gICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICAgIGxlZnQ6MDtcbiAgICAgIGJvdHRvbToxNSU7XG4gICAgICBwYWRkaW5nOiR2LXJoeXRobSAkdi1yaHl0aG0qMjtcbiAgICAgIGJhY2tncm91bmQ6bm9uZTtcbiAgICAgICYubGVmdCB7XG4gICAgICAgIGxlZnQ6MDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OjA7XG4gICAgICB9XG4gICAgICAmLnJpZ2h0IHtcbiAgICAgICAgcmlnaHQ6MDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OjA7XG4gICAgICAgIGxlZnQ6aW5oZXJpdDtcbiAgICAgIH1cbiAgICAgIC5hbHBoYSB7XG4gICAgICAgIGZvbnQtc2l6ZTozZW07XG4gICAgICB9XG4gICAgICAqIHtcbiAgICAgICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6MztcbiAgICAgIH1cbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OicnO1xuICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICAgICAgaGVpZ2h0OjEwMCU7XG4gICAgICAgIHdpZHRoOjEwMCU7XG4gICAgICAgIHRvcDowO1xuICAgICAgICBsZWZ0OjA7XG4gICAgICAgIEBzdXBwb3J0cyhtaXgtYmxlbmQtbW9kZTogbXVsdGlwbHkpIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOnJnYmEod2hpdGUsIC4yKTtcbiAgICAgICAgfVxuICAgICAgICB6LWluZGV4OjE7XG4gICAgICB9XG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQ6cmdiYShibGFjaywgLjYpO1xuICAgICAgICBjb250ZW50OicnO1xuICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICAgICAgaGVpZ2h0OjEwMCU7XG4gICAgICAgIHdpZHRoOjEwMCU7XG4gICAgICAgIHRvcDowO1xuICAgICAgICBsZWZ0OjA7XG4gICAgICAgIEBzdXBwb3J0cyhtaXgtYmxlbmQtbW9kZTogbXVsdGlwbHkpIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOigjZDkwMDAyKTtcbiAgICAgICAgICBtaXgtYmxlbmQtbW9kZTogbXVsdGlwbHk7XG4gICAgICAgIH1cbiAgICAgICAgei1pbmRleDoyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAudGl0bGUge1xuICAgICAgQGluY2x1ZGUgc3Bhbig1KTtcbiAgICB9XG4gIH1cbn0iLCIvLyBkZWZhdWx0IHBhZ2luYXRpb25cbi5wYWdpbmF0aW9uIHtcbiAgbWFyZ2luOiR2LXJoeXRobSoyIDA7XG4gIHRleHQtYWxpZ246Y2VudGVyO1xuICAubG9hZC1tb3JlIHtcbiAgICBkaXNwbGF5Om5vbmU7XG4gIH1cbiAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICBtYXJnaW46JHYtcmh5dGhtKjMgMDtcbiAgICAudGl0bGUge1xuICAgICAgQGluY2x1ZGUgc3Bhbig1KTtcbiAgICB9XG4gIH1cbn1cblxuLy8gYWpheCBwYWdpbmF0aW9uXG4uanMge1xuICAucGFnaW5hdGlvbiB7XG4gICAgLmxvYWQtbW9yZSB7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbigkcmVkLCB3aGl0ZSk7XG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGJhY2tncm91bmQsIC4zNXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiRjcmltc29uO1xuICAgICAgfVxuICAgIH1cbiAgICAucGFnZS1udW1iZXJzIHtcbiAgICAgIGRpc3BsYXk6bm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLm5vLXJlc3VsdHMge1xuICBmb250LXdlaWdodDo3MDA7XG4gIHRleHQtYWxpZ246Y2VudGVyO1xuICBmb250LXdlaWdodDoxLjI1ZW07XG4gIHBhZGRpbmc6JHYtcmh5dGhtO1xuICBjb2xvcjojNDM0MzQzO1xuICAmLmVycm9yIHtcbiAgICBjb2xvcjokcmVkO1xuICAgIGIge1xuICAgICAgZGlzcGxheTpibG9jaztcbiAgICB9XG4gIH1cbn1cblxuLmFwcGVuZGVkLWl0ZW0ge1xuICBAaW5jbHVkZSBhbmltYXRlZCguNXMpO1xuICBAaW5jbHVkZSBzbGlkZUluVXA7XG59XG4iLCIvLyBWb3RlIEdpdmVhd2F5XG4ubW9kdWxhci1zaWdudXAge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiAzMHB4IDA7XG5cbiAgICAuZm9ybS1yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWZsb3c6IHJvdztcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBtYXJnaW46IDIwcHggMDtcblxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5ub2ZsZXgge1xuICAgICAgICAgICAgZmxleDogbm9uZTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnBvdCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgaW5wdXQge1xuICAgICAgICBoZWlnaHQ6IDYwcHg7XG4gICAgICAgIHBhZGRpbmc6IDE1cHg7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBcIk11bGlcIiwgXCJUcmVidWNoZXQgTVNcIjtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgY29sb3I6ICRncmF5O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllOWU5O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG5cbiAgICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG5cbiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLmhhbGYge1xuICAgICAgICAgICAgd2lkdGg6IDUwJTtcblxuICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLnNob3J0IHtcbiAgICAgICAgICAgIHdpZHRoOiAzNSU7XG5cbiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5uZXdzbGV0dGVyLWNoZWNrYm94IHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1MDBweCkge1xuICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnN1Ym1pdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBoZWlnaHQ6IDYwcHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRyZWQ7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBcIlJvYm90byBTbGFiXCIsIHNlcmlmO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIGNvbG9yOiAjZTllOWU5O1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMXB4O1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBwYWRkaW5nOiAxNXB4O1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDQwcHg7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlLWluLW91dDtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjcmltc29uO1xuICAgICAgICB9XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xuICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xuICAgICAgICAgICAgZmlsbDogd2hpdGU7XG4gICAgICAgICAgICByaWdodDogMWVtO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgd2lkdGg6IDFlbTtcbiAgICAgICAgICAgIGhlaWdodDogMWVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbGFiZWwge1xuICAgICAgICBsaW5lLWhlaWdodDogMzBweDtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgICBmb250LWZhbWlseTogXCJNdWxpXCIsIFwiVHJlYnVjaGV0IE1TXCI7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICB9XG59XG5cbi8vIElubGluZSBFbWFpbCBTaWdudXBcbi5pbmxpbmUtZW1haWwtc2lnbnVwIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoXCIuLi9pbWFnZXMvYmctdHJpYW5nbGUtbmV3c2xldHRlci5wbmdcIik7XG4gICAgbWFyZ2luOiA1NXB4IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmc6IDMwcHg7XG5cbiAgICBAbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcbiAgICAgICAgbWFyZ2luOiAyNXB4IDA7XG4gICAgfVxuXG4gICAgLm5vdGUge1xuICAgICAgICAvLyBmbGV4IGJveCBvdmVyaWRlIGZvciBzb3VyY2Ugb3JkZXIgaW4gY29ubmVjdCBzZWN0aW9uXG4gICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDI7XG4gICAgICAgIC1tcy1mbGV4LW9yZGVyOiAxO1xuICAgICAgICBvcmRlcjogMTtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgfVxuXG4gICAgLmhlYWRsaW5lIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IDAgMTAlO1xuICAgIH1cblxuICAgIGgzIHtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuZW1haWwtc2lnbnVwLWZvcm0ge1xuICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDEwJTtcbiAgICAgICAgY29sb3I6ICNmZmZmZmY7XG5cbiAgICAgICAgLmVtYWlsLWZpZWxkIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMSU7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgIHdpZHRoOiA0NSU7XG5cbiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2NTBweCkge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnppcC1jb2RlLWZpZWxkIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIHdpZHRoOiAzMCU7XG4gICAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNjUwcHgpIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYnV0dG9uW3R5cGU9XCJzdWJtaXRcIl0ge1xuICAgICAgICAgICAgd2lkdGg6IDI0JTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDY1MHB4KSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5ub3RlIHtcbiAgICAgICAgICAgIHdpZHRoOiA3NSU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIuZmlsbS1saXN0aW5ncyB7XG4gIHVsIHtcbiAgICBAaW5jbHVkZSBwbGFpbi1saXN0O1xuICAgIGxpIHtcbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0qMjtcbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgICAgIH0gICAgXG4gICAgfVxuICB9XG4gIC5pbWFnZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDEuNSBmaXJzdCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgQGluY2x1ZGUgc3Bhbig0IGZpcnN0KTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDYgZmlyc3QpO1xuICAgIH0gICAgXG4gIH1cbiAgLmRlc2NyaXB0aW9uIHtcbiAgICBoMyB7XG4gICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgfVxuICAgIC56ZXRhIHtcbiAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgICBtYXJnaW4tdG9wOiR2LXJoeXRobS80O1xuICAgICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0vMjtcbiAgICB9XG4gICAgcCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobS8yO1xuICAgIH1cbiAgICAucGFydHMge1xuICAgICAgY29sb3I6JGdyYXk7XG4gICAgICBmb250LXdlaWdodDo3MDA7XG4gICAgICBhIHtcbiAgICAgICAgJjpub3QoOmxhc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDonfCc7XG4gICAgICAgICAgICBjb2xvcjokbWVkR3JheTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OjQwMDtcbiAgICAgICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6LjQzNzVlbTtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDouMzEyNWVtO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgQGluY2x1ZGUgc3BhbigyLjUgbGFzdCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgQGluY2x1ZGUgc3Bhbig0IGxhc3QpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oNiBsYXN0KTtcbiAgICAgIHAge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgICAgIH1cbiAgICB9ICBcbiAgfVxufSIsIi8vIGZpbG0gRGV0YWlsIEhlcm8gQ29tcG9uZW50XG4uZmlsbS1kZXRhaWwtaGVyby1pdGVtIHtcbiAgICBtYXJnaW46IDA7XG4gICAgbWFyZ2luLXRvcDogJHYtcmh5dGhtICogMjtcblxuICAgIGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAubXA0LXdyYXBwZXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgLmhlcm8ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogNTYlO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICB2aWRlbyB7XG4gICAgICAgICAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnV0dG9uLnBsYXktcGF1c2Uge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAzNHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMzRweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoLi4vaW1hZ2VzL2J1dHRvbl92aWRlb19wbGF5LnBuZykgbm8tcmVwZWF0IDAgMDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDM0cHggNjhweDtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiAxMHB4O1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAxMHB4O1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuMzU7XG5cbiAgICAgICAgICAgICAgICAmLnBhdXNlZCB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgLTM0cHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnRpdGxlIHtcbiAgICAgICAgcGFkZGluZzogJHYtcmh5dGhtLzIgJHYtcmh5dGhtIDFlbSAkdi1yaHl0aG07XG4gICAgICAgIGJhY2tncm91bmQ6ICNhYzBiMGU7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgZmxvYXQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuICAgICAgICAmLnJpZ2h0IHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgICAgJi5sZWZ0IHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICAgIC5hbHBoYSB7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6IFwiSm9zZWZpbiBTYW5zXCIsIHNhbnMtc2VyaWY7XG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICBmb250LXNpemU6IDJlbTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMC4yNWVtO1xuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLnpldGEge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41ZW07XG4gICAgICAgIH1cbiAgICAgICAgLnVuZGVybGluZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBmb250LXNpemU6IDR2dztcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuNWVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgLnpldGEge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEuNWVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnVuZGVybGluZSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMC41ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAub3ZlcmxheSB7XG4gICAgICAgIGZvbnQtc2l6ZTogM3Z3O1xuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAud2F0Y2gtbGluayB7XG4gICAgICAgIEBpbmNsdWRlIGxpbmstcmVzZXQ7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGZvbnQtc2l6ZTogM3Z3O1xuICAgICAgICAuYWxwaGEge1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihjb2xvciwgMC4zNXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAudGl0bGUtY29weSB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDJlbSk7XG4gICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IDAuMTI1ZW07XG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsLCAwLjNzLCBlYXNlLWluLW91dCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlWCgwKTtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnBsYXktaWNvbiB7XG4gICAgICAgICAgICAgICAgbWF4LWhlaWdodDogMS4yNWVtO1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogMS4yNWVtO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xuICAgICAgICAgICAgICAgIHBhdGgge1xuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGZpbGwsIDAuMzVzLCBlYXNlLWluLW91dCk7XG4gICAgICAgICAgICAgICAgICAgIGZpbGw6IHdoaXRlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIC50aXRsZS1jb3B5IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgICAgICAgICAgICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlWCgxKTtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICAgICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIC50aXRsZSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBib3R0b206IDE1JTtcbiAgICAgICAgICAgIHBhZGRpbmc6ICR2LXJoeXRobSAkdi1yaHl0aG0gKiAxLjI1O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgICAgICYubGVmdCB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgc3Bhbig0LjUpO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMC4yNWVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5yaWdodCB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgc3Bhbig0LjUgbGFzdCk7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMC4yNWVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmFscGhhIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDNlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICB6LWluZGV4OiAzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgIEBzdXBwb3J0cyAobWl4LWJsZW5kLW1vZGU6IG11bHRpcGx5KSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIDAuMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYShibGFjaywgMC42KTtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgQHN1cHBvcnRzIChtaXgtYmxlbmQtbW9kZTogbXVsdGlwbHkpIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogKCNkOTAwMDIpO1xuICAgICAgICAgICAgICAgICAgICBtaXgtYmxlbmQtbW9kZTogbXVsdGlwbHk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIC50aXRsZSB7XG4gICAgICAgICAgICAmLmxlZnQge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHNwYW4oNS43NSk7XG4gICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYucmlnaHQge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHNwYW4oNS43NSBsYXN0KTtcbiAgICAgICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1qYi1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgLnRpdGxlIHtcbiAgICAgICAgICAgICYubGVmdCB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgc3Bhbig1KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYucmlnaHQge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHNwYW4oNSBsYXN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBzcGFjaW5nIGFkanVzdG1lbnRzIGRlcGVuZGluZyBvbiBwcmVzZW5jZSBvZiBjb250ZW50XG4gICAgLndhdGNoLWxpbmsgKyAuemV0YSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDEuNWVtO1xuICAgIH1cbiAgICAudGl0bGUtY29weSArIC56ZXRhIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMS41ZW07XG4gICAgfVxuICAgIC56ZXRhICsgLndhdGNoLWxpbmsge1xuICAgICAgICAuYWxwaGEge1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIGJhc2Ugc3R5bGluZyBmb3IgZmlsbSBkZXRhaWwgbmF2IGZvciB0YWJzIGFuZCBjb3ZlIGxpbmtzXG4uZmlsbS1zdWItbmF2IHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICBiYWNrZ3JvdW5kOiAkYmx1ZTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kLCAwLjNzLCBlYXNlLWluLW91dCk7XG4gICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtO1xuICAgIGEge1xuICAgICAgICBAaW5jbHVkZSBsaW5rLXJlc2V0O1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgZm9udC1zaXplOiAxLjEyNWVtO1xuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB1bCB7XG4gICAgICAgIEBpbmNsdWRlIHBsYWluLWxpc3Q7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkdi1yaHl0aG0gKiAyO1xuICAgIH1cbn1cbi8vIGhpZGUgamF2YXNjcmlwdCBkZXBlbmRlbnQgcGFydHNcbi5maWxtLXBhcnRzLFxuLnRhYi1tb2JpbGUtdG9nZ2xlIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4vLyBkZXNrdG9wIGxheW91dCBmb3IgZmlsbSBzdWIgbmF2aWdhdGlvbnNcbi5maWxtLXBhcnRzIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oMy41IGxhc3QpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1qYi1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgQGluY2x1ZGUgc3BhbigzIGxhc3QpO1xuICAgIH1cbn1cblxuLmluZm8tdGFicyB7XG4gICAgLnRhYi1saW5rIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kLCAwLjVzLCBlYXNlLWluLW91dCk7XG4gICAgICAgIHBhZGRpbmc6IDAuNTYyNWVtIDFlbTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGRhcmtCbHVlO1xuICAgICAgICB9XG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRkYXJrQmx1ZTtcbiAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgLnRhYi1saXN0IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgICAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMS4zZW0gMS41ZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDguNSBmaXJzdCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWpiLW1pbiwgJG1hcC1sZykge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDkgZmlyc3QpO1xuICAgIH1cbn1cblxuLy8gdGFiIGNvbnRlbnQgZGVmYXVsdFxuLnRhYi1wYW5lbCB7XG4gICAgLnRhYi1wYW5lbC10aXRsZSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuMjVlbTtcbiAgICB9XG4gICAgLnBhcnQtY29udGVudCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDNlbTtcbiAgICB9XG5cbiAgICAuYmlvIHtcbiAgICAgICAgZmlndXJlIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtO1xuICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA3NXZ3O1xuICAgICAgICAgICAgICAgIHdpZHRoOiA3NXZ3O1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGNlbnRlcjtcbiAgICAgICAgICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIG1pbi13aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICAgIGZpZ3VyZSB7XG4gICAgICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMGVtO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgZmlndXJlLFxuICAgICAgICAgICAgLmJpby1jb250ZW50IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaWd1cmUge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAzMCU7XG4gICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEyLjVlbTtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMi41ZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmJpby1jb250ZW50IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogNjUlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQHN1cHBvcnRzIChkaXNwbGF5OiBncmlkKSB7XG4gICAgICAgICAgICAgICAgZmlndXJlLFxuICAgICAgICAgICAgICAgIC5iaW8tY29udGVudCB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogaW5oZXJpdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmlndXJlIHtcbiAgICAgICAgICAgICAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDIuNWZyIDRmcjtcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgICAgIGZpZ3VyZSB7XG4gICAgICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxNWVtO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE1ZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWpiLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgZmlndXJlIHtcbiAgICAgICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDIwZW07XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjBlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucGRmLWxpbmtzIHtcbiAgICAgICAgc3Ryb25nIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMC41ZW07XG4gICAgICAgIH1cbiAgICAgICAgLnBhcnQtZG93bmxvYWQge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgJjpub3QoOmxhc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcInxcIjtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRtZWRHcmF5O1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwLjQzNzVlbTtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjMxMjVlbTtcbiAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLnNpbmdsZS1kb3dubG9hZCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oMyk7XG4gICAgICAgIGZsb2F0OiBub25lO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig2KTtcbiAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICBtYXgtd2lkdGg6IDY1LjI1ZW07XG4gICAgfVxufVxuXG4ucmVsYXRlZC1mZWF0dXJlLWxpc3Qge1xuICAgIC5maWx0ZXJzIHtcbiAgICAgICAgLmxhYmVsIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtNC4xODc1ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9ybSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBmaWVsZHNldCBsYWJlbCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJjpsYXN0LW9mLXR5cGUge1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ1LjMxMjVlbSkge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogNy41ZW07XG4gICAgICAgICAgICAgICAgICAgICY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxLjI1ZW0gMCAwIDEuMjVlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDEuMTVlbTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAmOmxhc3Qtb2YtdHlwZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwIDEuMjVlbSAxLjI1ZW0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMS4xNWVtO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTBlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAyMy43NWVtKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogNC44NXZ3O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gZW5oYW5jZWQgdmVyc2lvbnMgb2YgZmlsbSBzdWJuYXZzIGFuZCB0YWIgY29udGVudFxuLmpzIHtcbiAgICAvLyBhbGwgY292ZSBzdHVmZiBpcyBqYXZhc2NyaXB0IGRlcGVuZGVudCBzbyBvbmx5IHNob3cgaXQgaWZcbiAgICAvLyBKYXZhU2NyaXB0IGlzIGF2YWlsYWJsZVxuICAgIC5maWxtLXBhcnRzIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICAgIC5wYXJ0LXNlbGVjdGlvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xMjVlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICBtYXJnaW46IDAuMjVlbSAwLjNlbTtcbiAgICAgICAgLmluc3RydWN0aW9uIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICAgIGhlaWdodDogMy44MTc1ZW07XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICBib3JkZXI6IDAuMDYyNWVtIHNvbGlkICRtZWRHcmF5O1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuMjVlbSAxZW07XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgY29sb3I6ICRjaGFyY29hbDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIC5wYXJ0IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gMWVtKTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjc3N2VtO1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGNvcm5mbG93ZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBjZW50ZXIoZmFsc2UsIHRydWUpO1xuICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6IDFlbTtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDFlbTtcbiAgICAgICAgICAgICAgICByaWdodDogMWVtO1xuICAgICAgICAgICAgICAgIGZpbGw6ICRtZWRHcmF5O1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDUwJSAyMi41JTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuY2xvc2Utc3RhdGUge1xuICAgICAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmZpbG0tcGFydHMtbGFyZ2Uge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCwgMC4zNXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgcGFkZGluZzogMC4yNWVtIDAuMzVlbTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIHRvcDogNC4wNWVtO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgbWF4LWhlaWdodDogMDtcbiAgICAgICAgJi5vcGVuIHtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDIwZW07XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICB9XG4gICAgICAgIGEge1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kLCAwLjVzLCBlYXNlLWluLW91dCk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuMjVlbSAxZW07XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGNvbG9yOiAkY2hhcmNvYWw7XG4gICAgICAgICAgICBib3JkZXI6IDAuMDYyNWVtIHNvbGlkICRtZWRHcmF5O1xuICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjc3N2VtO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkY29ybmZsb3dlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRkb3ZlO1xuICAgICAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGNvcm5mbG93ZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRkb3ZlO1xuICAgICAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRjb3JuZmxvd2VyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsaSB7XG4gICAgICAgICAgICAmOm5vdCg6bGFzdC1vZi10eXBlKSB7XG4gICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgdG9wOiA0LjM1ZW07XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjI1ZW0gMC4zNWVtO1xuICAgICAgICB9XG4gICAgfVxuICAgIC50YWItbW9iaWxlLXRvZ2dsZSB7XG4gICAgICAgIEBpbmNsdWRlIGJvcmRlci1idXR0b24od2hpdGUsIDAuMDYyNWVtLCB3aGl0ZSk7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBoZWlnaHQ6IDMuODE3NWVtO1xuICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gMC42NWVtKTtcbiAgICAgICAgbWFyZ2luOiAwLjNlbTtcbiAgICAgICAgZm9udC1zaXplOiAxLjEyNWVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAmLm11dGlwbGUtZXBpc29kZXMge1xuICAgICAgICAgICAgbWFyZ2luOiAwIDAuM2VtIDAuM2VtIDAuM2VtO1xuICAgICAgICB9XG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxLjVlbTtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwLjE1ZW07XG4gICAgICAgIH1cbiAgICAgICAgJjpob3ZlcixcbiAgICAgICAgJjpmb2N1cyxcbiAgICAgICAgJjphY3RpdmUge1xuICAgICAgICAgICAgYm9yZGVyOiAwLjA2MjVlbSBzb2xpZCAwLjA2MjVlbTtcbiAgICAgICAgfVxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgQGluY2x1ZGUgY2VudGVyKGZhbHNlLCB0cnVlKTtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDFlbTtcbiAgICAgICAgICAgIG1heC13aWR0aDogMWVtO1xuICAgICAgICAgICAgcmlnaHQ6IDFlbTtcbiAgICAgICAgICAgIGZpbGw6IHdoaXRlO1xuICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDIyLjUlO1xuICAgICAgICB9XG4gICAgICAgICYuY2xvc2Utc3RhdGUge1xuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5pbmZvLXRhYnMge1xuICAgICAgICAudGFiLWxpc3QubWVudSB7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgbWF4LWhlaWdodDogMDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwsIDAuMzVzLCBlYXNlLWluLW91dCk7XG4gICAgICAgICAgICAmLm9wZW4ge1xuICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgICAgICAgICAgbWF4LWhlaWdodDogMjBlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgICAgICAgICAgbWF4LWhlaWdodDogaW5oZXJpdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyB0YWIgY29udGVudFxuICAgIC50YWItcGFuZWwge1xuICAgICAgICBAaW5jbHVkZSBhbmltYXRlZCgwLjVzKTtcbiAgICAgICAgbWFyZ2luLXRvcDogJHYtcmh5dGhtO1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAmLmRlZmF1bHQge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICAgICAgJi5vcGVuIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgQGluY2x1ZGUgZmFkZUluO1xuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiA2NS4yNWVtO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uZmlsbS1zaG9wLWxpbmtzIHtcbiAgICBtYXJnaW46ICR2LXJoeXRobSAqIDIuNSAwO1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGltZyB7XG4gICAgICAgIG1heC13aWR0aDogNi4yNWVtO1xuICAgIH1cbiAgICAqIHtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gICAgYSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG4gICAgdWwge1xuICAgICAgICBAaW5jbHVkZSBwbGFpbi1saXN0O1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAmOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5maWxtLWZ1bmRlcnMge1xuICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobSAqIDIuNTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgKiB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICAgIGEge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuICAgIGltZyB7XG4gICAgICAgIG1heC13aWR0aDogMTBlbTtcbiAgICB9XG4gICAgdWwge1xuICAgICAgICBAaW5jbHVkZSBwbGFpbi1saXN0O1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgICAgICAgICAmOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgfVxufVxuXG4uZmlsbS10aXRsZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAucGFzc3BvcnQtaWNvbiB7XG4gICAgICAgIG1heC13aWR0aDogMS4xNWVtO1xuICAgICAgICBtYXgtaGVpZ2h0OiAxLjE1ZW07XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVlbTtcbiAgICB9XG59XG5cbi5wcmVtaWVyZS1kYXRlIHtcbiAgICBjb2xvcjogJGNvcm5mbG93ZXI7XG59XG5cbi50YWdsaW5lIHtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtc2l6ZTogMS4yNWVtO1xuICAgIGNvbG9yOiAkbWVkR3JheTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuIiwiLmZlYXR1cmUtbGlzdGluZ3Mge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbn1cblxuLmZlYXR1cmUtbGlzdCB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xuICBsaSB7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0qMjtcbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBsaSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDIuNjYpO1xuICAgICAgJjpudGgtY2hpbGQoM24pIHtcbiAgICAgICAgQGluY2x1ZGUgbGFzdDtcbiAgICAgIH1cbiAgICAgICY6bnRoLWNoaWxkKDNuKzEpIHtcbiAgICAgICAgQGluY2x1ZGUgZmlyc3Q7XG4gICAgICAgIGNsZWFyOmJvdGg7XG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZCg1KXtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig1LjMyKTtcbiAgICAgICAgQGluY2x1ZGUgbGFzdDtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoNikge1xuICAgICAgICBAaW5jbHVkZSBmaXJzdDtcbiAgICAgICAgY2xlYXI6Ym90aDtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoNykge1xuICAgICAgICBjbGVhcjpub25lO1xuICAgICAgfVxuICAgICAgJjpudGgtb2YtdHlwZSg4KSB7XG4gICAgICAgIEBpbmNsdWRlIGxhc3Q7XG4gICAgICAgIG1hcmdpbi1yaWdodDpndXR0ZXIoKTtcbiAgICAgICAgY2xlYXI6bm9uZTtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoOSkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDUuMzIpO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdDtcbiAgICAgICAgY2xlYXI6Ym90aDtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoMTApIHtcbiAgICAgICAgQGluY2x1ZGUgbGFzdDtcbiAgICAgICAgY2xlYXI6bm9uZTtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoMTEpIHtcbiAgICAgICAgQGluY2x1ZGUgZmlyc3Q7XG4gICAgICAgIGNsZWFyOmJvdGg7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDEyKSB7XG4gICAgICAgIGZsb2F0OmxlZnQ7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDEzKSB7XG4gICAgICAgIEBpbmNsdWRlIGxhc3Q7XG4gICAgICAgIGNsZWFyOm5vbmU7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDE0KSB7XG4gICAgICAgIEBpbmNsdWRlIGZpcnN0O1xuICAgICAgICBjbGVhcjpib3RoO1xuICAgICAgfVxuICAgICAgJjpudGgtb2YtdHlwZSgxNSkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDUuMzIpO1xuICAgICAgICBAaW5jbHVkZSBsYXN0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICBsaSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDQpO1xuICAgICAgJjpudGgtY2hpbGQoM24pIHtcbiAgICAgICAgQGluY2x1ZGUgbGFzdDtcbiAgICAgIH1cbiAgICAgICY6bnRoLWNoaWxkKDNuKzEpIHtcbiAgICAgICAgQGluY2x1ZGUgZmlyc3Q7XG4gICAgICAgIGNsZWFyOmJvdGg7XG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZCg1KXtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig4KTtcbiAgICAgICAgQGluY2x1ZGUgbGFzdDtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoNikge1xuICAgICAgICBAaW5jbHVkZSBmaXJzdDtcbiAgICAgICAgY2xlYXI6Ym90aDtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoNykge1xuICAgICAgICBjbGVhcjpub25lO1xuICAgICAgfVxuICAgICAgJjpudGgtb2YtdHlwZSg4KSB7XG4gICAgICAgIEBpbmNsdWRlIGxhc3Q7XG4gICAgICAgIG1hcmdpbi1yaWdodDpndXR0ZXIoKTtcbiAgICAgICAgY2xlYXI6bm9uZTtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoOSkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDgpO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdDtcbiAgICAgICAgY2xlYXI6Ym90aDtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoMTApIHtcbiAgICAgICAgQGluY2x1ZGUgbGFzdDtcbiAgICAgICAgY2xlYXI6bm9uZTtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoMTEpIHtcbiAgICAgICAgQGluY2x1ZGUgZmlyc3Q7XG4gICAgICAgIGNsZWFyOmJvdGg7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDEyKSB7XG4gICAgICAgIGZsb2F0OmxlZnQ7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDEzKSB7XG4gICAgICAgIEBpbmNsdWRlIGxhc3Q7XG4gICAgICAgIGNsZWFyOm5vbmU7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDE0KSB7XG4gICAgICAgIEBpbmNsdWRlIGZpcnN0O1xuICAgICAgICBjbGVhcjpib3RoO1xuICAgICAgfVxuICAgICAgJjpudGgtb2YtdHlwZSgxNSkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDgpO1xuICAgICAgICBAaW5jbHVkZSBsYXN0O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuLmZlYXR1cmVzLXBhZ2luYXRlZCB7XG4gIGxpIHtcbiAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobSoyO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgIGxpIHtcbiAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMi42Nik7XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgIGxpIHtcbiAgICAgIEBpbmNsdWRlIGdhbGxlcnkoNCk7XG4gICAgfVxuICB9XG59IiwiLmZlYXR1cmUge1xuICAgIC5vdmVybGluZSB7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICAuemV0YSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgICAgICArIGg0IHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IC0wLjY1ZW07XG4gICAgICAgIH1cbiAgICAgICAgLmludHJvLWNvbnRlbnQge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiA0NWVtO1xuICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIH1cbiAgICAgICAgLmludHJvIHtcbiAgICAgICAgICAgIG1hcmdpbjogJHYtcmh5dGhtLzEuNSAwIDAgMDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4yNWVtO1xuICAgICAgICB9XG4gICAgICAgIC5ieWxpbmUge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogJHYtcmh5dGhtO1xuICAgICAgICAgICAgY29sb3I6ICRncmF5O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgICAmICsgLnNvY2lhbC1zaGFyaW5nIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAkdi1yaHl0aG0vMjtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogJHYtcmh5dGhtICogMS4yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6ICR2LXJoeXRobSAqIDEuNTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuc29jaWFsLXNoYXJpbmcge1xuICAgICAgICAgICAgLy8gaGlkZSBmb3Igbm9uZSBqYXZhc2NyaXB0IGNwYWJsZSBicm93c2Vyc1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIGNvbG9yOiAkZ3JheTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAkdi1yaHl0aG07XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDAuMDE1ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1bCB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcGxhaW4tbGlzdDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEuOTVlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxLjk1ZW07XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxLjk1ZW07XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjFlbTtcbiAgICAgICAgICAgICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMC4yNWVtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAuY29weS11cmwtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2VhYTcwMDtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMWVtO1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjI1ZW07XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOTVlbTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0ZXh0YXJlYSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHBsYWluLWJ1dHRvbjtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYSxcbiAgICAgICAgICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuMWVtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgICAgICAgICAgICAgLmNvbG9yIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IHdoaXRlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC5mYWNlYm9vayB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiAjNDA3M2I3O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC50d2l0dGVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6ICMyOGE5ZTA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLm1haWx0byB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiAjOGRiNzI5O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC5jb3B5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6ICNlYWE3MDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgIC5pbnRyby1jb250ZW50IHtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgc3Bhbig1IGZpcnN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5hZC1ibG9jayB7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgc3BhbigzIGxhc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgLmludHJvLWNvbnRlbnQge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHNwYW4oOC41IGZpcnN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5hZC1ibG9jayB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgc3BhbigzLjUgbGFzdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXA0LXdyYXBwZXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG5cbiAgICAgICAgLmhlcm8ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogNTYlO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICB2aWRlbyB7XG4gICAgICAgICAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnV0dG9uLnBsYXktcGF1c2Uge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAzNHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMzRweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoLi4vaW1hZ2VzL2J1dHRvbl92aWRlb19wbGF5LnBuZykgbm8tcmVwZWF0IDAgMDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDM0cHggNjhweDtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiAxMHB4O1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAxMHB4O1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuMzU7XG5cbiAgICAgICAgICAgICAgICAmLnBhdXNlZCB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgLTM0cHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmNhcHRpb24td3JhcHBlciB7XG4gICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gdGV4dCBibG9jayBzdHlsaW5nXG4gICAgLmZlYXR1cmUtY29udGVudCB7XG4gICAgICAgIG1heC13aWR0aDogNDQuNTMxMjVlbTtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuICAgIC8vIG1lZGlhIGVsZW1lbnQgc3R1ZmZzIGZvciBmZWF0dXJlcyBvbmx5XG4gICAgLmNlbnRlciB7XG4gICAgICAgICYubGFyZ2UtbWVkaWEge1xuICAgICAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1Ny44MTI1ZW0pIHtcbiAgICAgICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiA1Ny44MTI1ZW07XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtNi42NDA2MjVlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLnJpZ2h0IHtcbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICAmLm1lZGl1bS1tZWRpYSB7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiBpbmhlcml0O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogLTVlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAubGVmdCB7XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgJi5tZWRpdW0tbWVkaWEge1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogaW5oZXJpdDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogLTVlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmpzIHtcbiAgICAuZmVhdHVyZSB7XG4gICAgICAgIC5vdmVybGluZSB7XG4gICAgICAgICAgICAuc29jaWFsLXNoYXJpbmcge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmNvcHktdXJsLWNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsLCAwLjM1cywgZWFzZS1pbi1vdXQpO1xuICAgICAgICAgICAgICAgIHRvcDogLTZlbTtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTVlbTtcbiAgICAgICAgICAgICAgICBsZWZ0OiAtMTBlbTtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgICAgIHotaW5kZXg6IC0xO1xuICAgICAgICAgICAgICAgICYub3BlbiB7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDFlbTtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAwLjY1ZW07XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxLjVlbTtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxLjVlbTtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxLjI0ZW07XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEuMjRlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IHdoaXRlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMjRlbTtcbiAgICAgICAgICAgICAgICAgICAgdGV4dGFyZWEge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDdlbSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gcGFkZGluZyBhbmQgbWFyZ2luIGFkanVzdG1lbnRzXG4gICAgICAgIC5hZC1ibG9jayB7XG4gICAgICAgICAgICAmLmRlc2t0b3Age1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDAgJHYtcmh5dGhtIDA7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IC0kdi1yaHl0aG07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLmNvbGxlY3Rpb24tcGFnZSB7XG4gICAgLmNvbGxlY3Rpb24tZGV0YWlsLWhlcm8taXRlbSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobSAqIDI7XG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jb2xsZWN0aW9uLXNlY3Rpb24ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHBhZGRpbmc6IDJlbSAwO1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAmLm5vX3RpdGxlIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgMCAyZW07XG4gICAgICAgIH1cblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICB3aWR0aDogMTAwdnc7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBsZWZ0OiBjYWxjKC0xMDB2dyAvIDIgKyA1MCUpO1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICB6LWluZGV4OiAtMTtcbiAgICAgICAgfVxuXG4gICAgICAgICYud2hpdGU6YWZ0ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmY7XG4gICAgICAgIH1cblxuICAgICAgICAmLmdyZXk6YWZ0ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMjcsIDIyNywgMjI3LCAwLjc1KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltYWdlcy9iZy1kZWNvLWNpcmNsZS5wbmdcIik7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDE4ZW0gMThlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5ncmlkIHtcbiAgICB6LWluZGV4OiAxO1xufVxuXG4uZmVhdHVyZS1mdWxsLXdpZHRoIHtcbiAgICB3aWR0aDogNTAlO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIGZsb2F0OiBub25lO1xuICAgIG1hcmdpbi1ib3R0b206IDE1cHggIWltcG9ydGFudDtcbiAgICBtaW4td2lkdGg6IDcwMHB4O1xuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDEyMDBweCkge1xuICAgIH1cblxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICB9XG5cbiAgICAmLmFsdCB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDQ1cHg7XG4gICAgfVxuXG4gICAgaDMge1xuICAgICAgICAmOm5vdCgud2hpdGUpIHtcbiAgICAgICAgICAgIGNvbG9yOiAjNDM0MzQzICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgICAgZm9udC1mYW1pbHk6IFwiTXVsaVwiLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7XG4gICAgICAgIGZvbnQtc2l6ZTogMzJweCAhaW1wb3J0YW50O1xuICAgICAgICBsaW5lLWhlaWdodDogMzRweCAhaW1wb3J0YW50O1xuICAgICAgICBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5vdmVybGluZSB7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuXG4gICAgICAgICYuZmxhdCB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgICAgICAuemV0YSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICArIGg0IHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IC0wLjY1ZW07XG4gICAgICAgIH1cblxuICAgICAgICAuaW50cm8tY29udGVudCB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDQ1ZW07XG4gICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgfVxuXG4gICAgICAgIC5pbnRybyB7XG4gICAgICAgICAgICBtYXJnaW46ICR2LXJoeXRobS8xLjUgMCAwIDA7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuMzc1ZW07XG4gICAgICAgIH1cblxuICAgICAgICAuYnlsaW5lIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6ICR2LXJoeXRobTtcbiAgICAgICAgICAgIGNvbG9yOiAkZ3JheTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgJiArIC5zb2NpYWwtc2hhcmluZyB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogJHYtcmh5dGhtLzI7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR2LXJoeXRobSAqIDEuMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAkdi1yaHl0aG0gKiAxLjU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuc29jaWFsLXNoYXJpbmcge1xuICAgICAgICAgICAgLy8gaGlkZSBmb3Igbm9uLWphdmFzY3JpcHQgY2FwYWJsZSBicm93c2Vyc1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIGNvbG9yOiAkZ3JheTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAkdi1yaHl0aG07XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDAuMDE1ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1bCB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcGxhaW4tbGlzdDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEuOTVlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxLjk1ZW07XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxLjk1ZW07XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjFlbTtcbiAgICAgICAgICAgICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMC4yNWVtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAuY29weS11cmwtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2VhYTcwMDtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMWVtO1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjI1ZW07XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOTVlbTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0ZXh0YXJlYSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHBsYWluLWJ1dHRvbjtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYSxcbiAgICAgICAgICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuMWVtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgICAgICAgICAgICAgLmNvbG9yIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IHdoaXRlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC5mYWNlYm9vayB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiAjNDA3M2I3O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC50d2l0dGVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6ICMyOGE5ZTA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLm1haWx0byB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiAjOGRiNzI5O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC5jb3B5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6ICNlYWE3MDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgLmludHJvLWNvbnRlbnQge1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogaW5oZXJpdDtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBzcGFuKDUgZmlyc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmFkLWJsb2NrIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBzcGFuKDMgbGFzdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgICAgIC5pbnRyby1jb250ZW50IHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBzcGFuKDguNSBmaXJzdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuYWQtYmxvY2sge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHNwYW4oMy41IGxhc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gdGV4dCBibG9jayBzdHlsaW5nXG4gICAgLmZlYXR1cmUtY29udGVudCB7XG4gICAgICAgIG1heC13aWR0aDogNDQuNTMxMjVlbTtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuXG4gICAgcCArIGZpZ3VyZS5mdWxsLXdpZHRoIHtcbiAgICAgICAgbWFyZ2luOiA1NXB4IGF1dG8gMzVweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC8vIEltYWdlXG4gICAgZmlndXJlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAgICAgJi5mdWxsLXdpZHRoIHtcbiAgICAgICAgICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7XG5cbiAgICAgICAgICAgICYuY2VudGVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLmxlZnQge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgY2VudGVyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLnJpZ2h0IHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCBjZW50ZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5tZWRpYS1jb250YWluZXIge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDB2dztcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC0xMDB2dyAvIDIgKyA1MCUpO1xuXG4gICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDB2dztcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoLTEwMHZ3IC8gMiArIDUwJSk7XG4gICAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwdnc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG5cbiAgICAgICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZpZ2NhcHRpb24ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDB2dztcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygtMTAwdncgLyAyICsgNTUlKTtcblxuICAgICAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxMjAwcHgpIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDk1dnc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaW1nOm5vdCguY3JvcHBlZCkge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7XG4gICAgICAgICAgICB3aWR0aDogMjAwJTtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC02MDBweCArIDUwJSk7XG5cbiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxMjAwcHgpIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZpZ2NhcHRpb24ge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMDtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC02MDBweCArIDUwJSk7XG5cbiAgICAgICAgICAgICYuY3JvcHBlZCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogMTIwMHB4KSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVmlkZW9cbiAgICAuY292ZS13cmFwcGVyIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7XG4gICAgICAgIHdpZHRoOiAyMDAlO1xuICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygtNjAwcHggKyA1MCUpO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG1hcmdpbi10b3A6IDM1cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDM1cHg7XG5cbiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDEyMDBweCkge1xuICAgICAgICAgICAgbWFyZ2luOiAzNXB4IGF1dG87XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jYXB0aW9uIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggMCAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gR2FsbGVyeVxuICAgIC5jYXJvdXNlbC1jb250YWluZXIge1xuICAgICAgICB3aWR0aDogMjAwJTtcbiAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC02MDBweCArIDUwJSk7XG4gICAgICAgIG1hcmdpbi10b3A6IDU1cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDU1cHg7XG5cbiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDEyMDBweCkge1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICBmaWd1cmUge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgZmlndXJlIGltZyxcbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIH1cblxuICAgICAgICBmaWdjYXB0aW9uIHtcbiAgICAgICAgICAgIC5jYXB0aW9uIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jcmVkaXQge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDAgMCAzMHB4ICFpbXBvcnRhbnQ7XG5cbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogM3B4O1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL2ljb24tY2FtZXJhLnN2Zykgbm8tcmVwZWF0IGxlZnQgdG9wO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUXVvdGVcbiAgICBxIHtcbiAgICAgICAgbWFyZ2luOiA1NXB4IGF1dG87XG4gICAgICAgIG1heC13aWR0aDogOTUlO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgY29sb3I6ICRibHVlO1xuICAgICAgICBmb250LWZhbWlseTogXCJSb2JvdG8gU2xhYlwiLCBzYW5zLXNlcmlmO1xuICAgICAgICBmb250LXNpemU6IDIycHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICAgICAgICBtYXgtd2lkdGg6IDU3NXB4O1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuXG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1MDBweCkge1xuICAgICAgICAgICAgbWFyZ2luOiAyNXB4IDA7XG4gICAgICAgIH1cblxuICAgICAgICAmOmJlZm9yZSxcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgICAgICBjb250ZW50OiAnXCInO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgICAgICBsZWZ0OiB1bnNldDtcbiAgICAgICAgICAgIHRvcDogYXV0bztcbiAgICAgICAgICAgIHRvcDogdW5zZXQ7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZWFsdGVkIEZlYXR1cmVzIE1vZHVsZVxuICAgIC5yZWxhdGVkLWZlYXR1cmVzLWJsb2NrIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtYXJnaW4tdG9wOiA1NXB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA1NXB4O1xuICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygtOTc1cHggLyAyICsgNTAlKTtcbiAgICAgICAgbWF4LXdpZHRoOiA5NzVweDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDI1cHg7XG4gICAgICAgIHdpZHRoOiAxMDB2dztcblxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogOTc1cHgpIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNTAwcHgpIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDM1cHg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGhlaWdodDogMjVweDtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDNweCBzb2xpZCAjZTZlNmU2O1xuICAgICAgICAgICAgei1pbmRleDogLTE7XG4gICAgICAgIH1cblxuICAgICAgICBoMy5oZWFkaW5nIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7XG4gICAgICAgICAgICBmb250LXNpemU6IDIycHggIWltcG9ydGFudDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyNnB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4ICFpbXBvcnRhbnQ7XG5cbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDI1cHg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkICNlNmU2ZTY7XG4gICAgICAgICAgICAgICAgdG9wOiAtOHB4O1xuICAgICAgICAgICAgICAgIHotaW5kZXg6IC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdWwubGlzdCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtZXZlbmx5O1xuICAgICAgICAgICAgZmxleC1mbG93OiByb3c7XG4gICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDk3NXB4KSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgICAgICAgICAgICAgJjpiZWZvcmUsXG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDk3NXB4KSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICY6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAyN3B4O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA5NzVweCkge1xuICAgICAgICAgICAgICAgICAgICAmOm50aC1jaGlsZChldmVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDI3cHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5yZWxhdGVkLWl0ZW0ge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDUwMHB4KSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5pbWFnZSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTVweDtcblxuICAgICAgICAgICAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNTAwcHgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGEudGh1bWJuYWlsLWltYWdlIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDIyNHB4O1xuICAgICAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiAxMjZweDtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgdG9wO1xuXG4gICAgICAgICAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1MDBweCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IDU2LjY1JTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAuZGV0YWlscyB7XG4gICAgICAgICAgICAgICAgICAgIC50eXBlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBcIlJvYm90byBTbGFiXCIsIHNhbnMtc2VyaWY7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogIzc3Nzc3NztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAudGl0bGUtbGluayB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMjJweDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC50ZXh0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAsXG4gICAgICAgICAgICAgICAgICAgICAgICBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IFwiTXVsaVwiLCBzYW5zLXNlcmlmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMjJweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5hYm91dC1jb2xsZWN0aW9uIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDcyNXB4O1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi10b3A6IDMwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlOWU5ZTk7XG4gICAgcGFkZGluZzogMzBweCAzNXB4O1xuXG4gICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDgwcHg7XG4gICAgfVxuXG4gICAgLmhlYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZm9udC1zaXplOiAyNHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMjhweDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDIwcHg7XG4gICAgICAgIGNvbG9yOiAjNzc3O1xuXG4gICAgICAgIGEge1xuICAgICAgICAgICAgY29sb3I6ICRyZWQ7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkY3JpbXNvbjtcbiAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYWJvdXQtZGV0YWlscyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcblxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgLmltYWdlIHtcbiAgICAgICAgICAgIHdpZHRoOiA0MCU7XG5cbiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDIyNHB4O1xuXG4gICAgICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvIDMwcHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgIHdpZHRoOiA2MCU7XG5cbiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vL0Z1bGwgV2lkdGggSGVyb1xuXG4uZnVsbC13aWR0aC1pbWFnZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1heC13aWR0aDogMTAwdnc7XG4gICAgbWF4LWhlaWdodDogNzg1cHg7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIHotaW5kZXg6IC0xO1xuXG4gICAgLm1wNC13cmFwcGVyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICAgICAgICBtYXgtaGVpZ2h0OiA3ODVweDtcblxuICAgICAgICAuaGVybyB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiA0OSU7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiA3ODVweDtcblxuICAgICAgICAgICAgdmlkZW8ge1xuICAgICAgICAgICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgICAgICAgICAgbWF4LWhlaWdodDogNzg1cHg7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMzY2cHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJ1dHRvbi5wbGF5LXBhdXNlIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMzRweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDM0cHg7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKC4uL2ltYWdlcy9idXR0b25fdmlkZW9fcGxheS5wbmcpIG5vLXJlcGVhdCAwIDA7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAzNHB4IDY4cHg7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHRvcDogMTBweDtcbiAgICAgICAgICAgICAgICByaWdodDogMTBweDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjM1O1xuXG4gICAgICAgICAgICAgICAgJi5wYXVzZWQge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0zNHB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5jYXB0aW9uLXdyYXBwZXIge1xuICAgICAgICAgICAgcGFkZGluZzogMTVweCAwO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMzY2cHg7XG4gICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcblxuICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDEyMDBweCkge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggMTBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZpZ3VyZSB7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICAgICYuY2VudGVyIHtcbiAgICAgICAgICAgIC5tZWRpYS1jb250YWluZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLmxlZnQge1xuICAgICAgICAgICAgLm1lZGlhLWNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCBjZW50ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLnJpZ2h0IHtcbiAgICAgICAgICAgIC5tZWRpYS1jb250YWluZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IGNlbnRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5tZWRpYS1jb250YWluZXIge1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIGhlaWdodDogNzg1cHg7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcblxuICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDEyMDBweCkge1xuICAgICAgICAgICAgICAgIGhlaWdodDogNTEwcHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG5cbiAgICAgICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDB2dztcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZpZ2NhcHRpb24ge1xuICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxNSU7XG4gICAgICAgICAgICBtYXJnaW46IDIwcHggMCAwIDIlO1xuXG4gICAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogMTIwMHB4KSB7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiA5NSU7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAyMHB4IGF1dG87XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNwYW4uZGVzYyB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDVweCAwIDAgMzBweCAhaW1wb3J0YW50O1xuXG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDlweDtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltYWdlcy9pY29uLWNhbWVyYS5zdmcpIG5vLXJlcGVhdCBsZWZ0IHRvcDtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmpzIHtcbiAgICAuZmVhdHVyZS1mdWxsLXdpZHRoIHtcbiAgICAgICAgLm92ZXJsaW5lIHtcbiAgICAgICAgICAgICYuZmxhdDpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5zb2NpYWwtc2hhcmluZyB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuY29weS11cmwtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwsIDAuMzVzLCBlYXNlLWluLW91dCk7XG4gICAgICAgICAgICAgICAgdG9wOiAtNmVtO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxNWVtO1xuICAgICAgICAgICAgICAgIGxlZnQ6IC0xMGVtO1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICAgICAgei1pbmRleDogLTE7XG4gICAgICAgICAgICAgICAgJi5vcGVuIHtcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgICAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICByaWdodDogMWVtO1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDAuNjVlbTtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEuNWVtO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEuNWVtO1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEuMjRlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMS4yNGVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogd2hpdGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyNGVtO1xuICAgICAgICAgICAgICAgICAgICB0ZXh0YXJlYSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gN2VtKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBwYWRkaW5nIGFuZCBtYXJnaW4gYWRqdXN0bWVudHNcbiAgICAgICAgLmFkLWJsb2NrIHtcbiAgICAgICAgICAgICYub3BlbiB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjYmViZWJlO1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYmViZWJlO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogNzVweCAwO1xuXG4gICAgICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDUwMHB4KSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMjVweCAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5vcGVuOmJlZm9yZSxcbiAgICAgICAgICAgICYub3BlbjphZnRlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmFkIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5zZWFyY2gtcmVzdWx0cyB7XG4gIHVsIHtcbiAgICBAaW5jbHVkZSBwbGFpbi1saXN0O1xuICAgIGxpIHtcbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0qMjtcbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgICAgIH0gICAgXG4gICAgfVxuICB9XG4gIC5pbWFnZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDEuNSBmaXJzdCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgQGluY2x1ZGUgc3BhbigyIGZpcnN0KTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDIuNSBmaXJzdCk7XG4gICAgfSAgICBcbiAgfVxuICAuZGVzY3JpcHRpb24ge1xuICAgIGgzIHtcbiAgICAgIG1hcmdpbi1ib3R0b206MDtcbiAgICB9XG4gICAgcCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobS8yO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oMi41IGxhc3QpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oNCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgQGluY2x1ZGUgc3Bhbig2LjUpO1xuICAgICAgcCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtO1xuICAgICAgfVxuICAgIH0gIFxuICB9XG59IiwiLy8gZW5zdXJlIG1vZGFsIGlzIG5vdCBzaG93biB3aGVuIGpzIGlzIG5vdCBwcmVzZW50XG4ubmV3c2xldHRlci1kaWFsb2cge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8vIHNob3cgaXQgd2hlbiBpdCBpc1xuLmpzIC5uZXdzbGV0dGVyLWRpYWxvZyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5uZXdzbGV0dGVyLWRpYWxvZy5nZW5lcmFsIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKGJsYWNrLCAwLjg1KTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGhlaWdodDogMTAwdmg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgei1pbmRleDogMTAwMDI7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgJjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDB2aDtcbiAgICAgICAgYmFja2dyb3VuZDogdXJsKFwiLi4vaW1hZ2VzL2JnLXRyaWFuZ2xlLWZvb3Rlci5wbmdcIik7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogMTEuNzVlbSAxMS4xMjVlbTtcbiAgICAgICAgY29sb3I6ICRjb3JuZmxvd2VyO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDUwO1xuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkc2NyZWVuLW1kLW1pbikgYW5kIChtaW4taGVpZ2h0OiAzNy41ZW0pIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDEyLjVlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYuZGlzbWlzc2VkIHtcbiAgICAgICAgQGluY2x1ZGUgYW5pbWF0ZWQoMC4zNXMpO1xuICAgICAgICBAaW5jbHVkZSBzbGlkZU91dERvd247XG4gICAgfVxuXG4gICAgJlthcmlhLWhpZGRlbj1cInRydWVcIl0ge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIGRpdltyb2xlPVwiZGlhbG9nXCJdIHtcbiAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICAgICAgICBtYXgtaGVpZ2h0OiA4MHZoO1xuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLWhlaWdodDogMzcuNWVtKSB7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiBpbmhlcml0O1xuICAgICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkaXZbcm9sZT1cImRvY3VtZW50XCJdIHtcbiAgICAgICAgbWF4LXdpZHRoOiA1MGVtO1xuICAgICAgICBtYXJnaW46IDFlbSBhdXRvIDAgYXV0bztcbiAgICAgICAgd2lkdGg6IDk1JTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkc2NyZWVuLW1kLW1pbikgYW5kIChtaW4taGVpZ2h0OiAzNy41ZW0pIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgICB0b3A6IDEyLjV2aDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5nYW1tYSB7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDIuMjVlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kaW1zaXNzIHtcbiAgICAgICAgQGluY2x1ZGUgcGxhaW4tYnV0dG9uO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB0b3A6IC0yLjVlbTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMDAlO1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGZpbGwsIDAuNXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgICAgIHdpZHRoOiAyZW07XG4gICAgICAgICAgICBoZWlnaHQ6IDJlbTtcbiAgICAgICAgICAgIGZpbGw6IHdoaXRlO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgIGZpbGw6ICR5ZWxsb3c7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoMSB7XG4gICAgICAgIG1hcmdpbjogMS41ZW0gMCAwLjVlbSAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAyZW07XG4gICAgICAgIH1cbiAgICAgICAgLmxvZ28tdHlwZSB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDEzZW07XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiAwLjk1ZW07XG4gICAgICAgIH1cbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICBmb250LXNpemU6IDAuNzVlbTtcbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZW1haWwtc2lnbnVwLWZvcm0ge1xuICAgICAgICBtYXJnaW4tdG9wOiAxLjVlbTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDEuNWVtO1xuXG4gICAgICAgIGJ1dHRvblt0eXBlPVwic3VibWl0XCJdIHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDEuNWVtO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJHllbGxvdztcbiAgICAgICAgICAgIGNvbG9yOiAkbmF2eTtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDEuNWVtO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG5vbmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IGRhcmtlbigkeWVsbG93LCA1JSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICB3aWR0aDogaW5oZXJpdDtcbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLm5vdGUge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4yNWVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICAuZW1haWwtZmllbGQsXG4gICAgICAgICAgICAuemlwLWNvZGUtZmllbGQge1xuICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmVtYWlsLWZpZWxkIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogNTUlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnppcC1jb2RlLWZpZWxkIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogNDQlO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm5ld3NsZXR0ZXItZGlhbG9nLnZvdGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoYmxhY2ssIDAuODUpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgaGVpZ2h0OiAxMDB2aDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICB6LWluZGV4OiAxMDAwMjtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAmLmRpc21pc3NlZCB7XG4gICAgICAgIEBpbmNsdWRlIGFuaW1hdGVkKDAuMzVzKTtcbiAgICAgICAgQGluY2x1ZGUgc2xpZGVPdXREb3duO1xuICAgIH1cblxuICAgICZbYXJpYS1oaWRkZW49XCJ0cnVlXCJdIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICBkaXZbcm9sZT1cImRpYWxvZ1wiXSB7XG4gICAgICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgICAgICAgbWF4LWhlaWdodDogOTB2aDtcbiAgICAgICAgbWFyZ2luLXRvcDogNC41dmg7XG5cbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi1oZWlnaHQ6IDc1MHZoKSB7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiBpbmhlcml0O1xuICAgICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkaXZbcm9sZT1cImRvY3VtZW50XCJdIHtcbiAgICAgICAgbWF4LXdpZHRoOiA2MDBweDtcbiAgICAgICAgbWFyZ2luOiA2dmggYXV0byAwO1xuICAgICAgICB3aWR0aDogOTUlO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGJvcmRlcjogMTBweCBzb2xpZCAjZmNjMzIwO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2MyMjVlO1xuXG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRzY3JlZW4tbWQtbWluKSBhbmQgKG1pbi1oZWlnaHQ6IDc1MHB4KSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5nYW1tYSB7XG4gICAgICAgIGNvbG9yOiAjZWJlM2Q3O1xuICAgICAgICBmb250LXdlaWdodDogNDAwO1xuXG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1MDBweCkge1xuICAgICAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDMwcHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZGltc2lzcyB7XG4gICAgICAgIEBpbmNsdWRlIHBsYWluLWJ1dHRvbjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gICAgICAgIHJpZ2h0OiAtMC41ZW07XG4gICAgICAgIHRvcDogLTNlbTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihmaWxsLCAwLjVzLCBlYXNlLWluLW91dCk7XG4gICAgICAgICAgICB3aWR0aDogMmVtO1xuICAgICAgICAgICAgaGVpZ2h0OiAyZW07XG4gICAgICAgICAgICBmaWxsOiAjZmNjMzIwO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNjc1cHgpIHtcbiAgICAgICAgICAgIHJpZ2h0OiAtMi41ZW07XG4gICAgICAgICAgICB0b3A6IC0yLjVlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICNuZXdzbGV0dGVyLWRpYWxvZy10aXRsZSB7XG4gICAgICAgIG1hcmdpbjogMCAwIDAuNWVtIDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICBmb250LXNpemU6IDI1cHg7XG4gICAgICAgIGNvbG9yOiAjZWJlM2Q3O1xuXG4gICAgICAgIC5sb2dvLXR5cGUge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiA4ZW07XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiAwLjkyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzcGFuLnVuZGVyIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbjogNXB4IGF1dG87XG4gICAgICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICAgICAgZm9udC1mYW1pbHk6IFwiTXVsaVwiLCBzYW5zLXNlcmlmO1xuICAgICAgICBjb2xvcjogI2ZjYzMyMDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICB9XG5cbiAgICAudm90ZS1pbWFnZSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWF4LXdpZHRoOiA2MDBweDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuXG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1MDBweCkge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltYWdlcy92b3RlX2ltYWdlX2hlYWRlci5qcGcpIG5vLXJlcGVhdCBjZW50ZXIgY2VudGVyO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgICAgICAgIGhlaWdodDogMTUwcHg7XG4gICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAudGl0bGUtd3JhcHBlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzYzIyNWU7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgICAgIG1hcmdpbjogLTg3cHggYXV0byAwO1xuICAgICAgICBoZWlnaHQ6IDg3cHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA2NTBweCkge1xuICAgICAgICAgICAgd2lkdGg6IDcwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1MDBweCkge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC52b3RlLWhlYWRsaW5lIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWFnZXMvdGl0bGVfdGhlLXZvdGUucG5nKSBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICAgICAgICAgIG1heC13aWR0aDogMzAwcHg7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogNTdweDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG8gMTVweDtcbiAgICAgICAgICAgIHRleHQtaW5kZW50OiAtOTk5OTlweDtcblxuICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDUwMHB4KSB7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiA4MCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZW1haWwtc2lnbnVwLWZvcm0ge1xuICAgICAgICBwYWRkaW5nOiAyMHB4IDQwcHg7XG5cbiAgICAgICAgYnV0dG9uW3R5cGU9XCJzdWJtaXRcIl0ge1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMS41ZW07XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkeWVsbG93O1xuICAgICAgICAgICAgY29sb3I6ICRuYXZ5O1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMS41ZW07XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBkYXJrZW4oJHllbGxvdywgNSUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5ub3RlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICAgICAgY29sb3I6ICNlYmUzZDc7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2NTBweCkge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgLmVtYWlsLWZpZWxkLFxuICAgICAgICAgICAgLnppcC1jb2RlLWZpZWxkIHtcbiAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5lbWFpbC1maWVsZCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDU1JTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC56aXAtY29kZS1maWVsZCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDQ0JTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMSU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvLyB4Zml4ZWQgcG9zaXRpb24gc3RhdGVzIGZvciBoZWFkZXJcbiNzdGlja3ktaGVhZGVyIHtcbiAgd2lkdGg6MTAwJTtcbiAgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMHB4LDBweCwwcHgpO1xuICAgICAgICAgIHRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwcHgsMHB4LDBweCk7XG59XG5cbi5zdGlja3kgI3N0aWNreS1oZWFkZXIge1xuICB0b3A6MDtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBAaW5jbHVkZSBhbmltYXRlZCguNXMpO1xuICBAaW5jbHVkZSBzbGlkZUluRG93bjtcbn1cblxuLnNpdGUtaGVhZGVye1xuICAvLyByZXNldHMgYnJvd3NlciBzdHlsaW5nIGZvciBhbGwgbGlzdHMgaW5zaWRlIHRoZSBoZWFkZXJcbiAgdWwge1xuICAgIEBpbmNsdWRlIHBsYWluLWxpc3Q7XG4gIH1cbiAgLnNlY29uZGFyeSB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgYmFja2dyb3VuZDokZGFya0dyYXk7XG4gICAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gICAgY29sb3I6d2hpdGU7XG4gICAgKntcbiAgICAgIHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcbiAgICB9XG4gICAgLnRpdGxlIHtcbiAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobS8yO1xuICAgIH1cbiAgICAuaGVhZGVyLXNvY2lhbCB7XG4gICAgICBkaXNwbGF5Om5vbmU7XG4gICAgICAuc29jaWFsLWxpc3Qge1xuICAgICAgICB3aWR0aDo3MCU7XG4gICAgICAgIG1hcmdpbjowIGF1dG87XG4gICAgICAgIGEge1xuICAgICAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAuYmFja2dyb3VuZCB7XG4gICAgICAgICAgICAgICAgZmlsbDpibGFjaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgQGluY2x1ZGUgc3BhbigyIG9mIDQgZmlyc3QpO1xuICAgICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgICBtYXJnaW4tdG9wOi43NWVtO1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oNSBvZiAxMiBmaXJzdCk7XG4gICAgICAgIG1hcmdpbi10b3A6MDtcbiAgICAgICAgdGV4dC1hbGlnbjpsZWZ0O1xuICAgICAgICAudGl0bGUge1xuICAgICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206MDtcbiAgICAgICAgICBmb250LXNpemU6LjgxMjVlbTtcbiAgICAgICAgfVxuICAgICAgICAuc29jaWFsLWxpc3Qge1xuICAgICAgICAgIHdpZHRoOmF1dG87XG4gICAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLmhlYWRlci1zcG9uc29ycyB7XG4gICAgICB1bCB7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICBkaXNwbGF5Oi13ZWJraXQtYm94O1xuICAgICAgICBkaXNwbGF5Oi1tcy1mbGV4Ym94O1xuICAgICAgICBkaXNwbGF5OmZsZXg7XG4gICAgICAgIC13ZWJraXQtYm94LXBhY2s6Y2VudGVyO1xuICAgICAgICAgIC1tcy1mbGV4LXBhY2s6Y2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO1xuICAgICAgICAtd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7XG4gICAgICAgICAgIC1tcy1mbGV4LWFsaWduOmNlbnRlcjtcbiAgICAgICAgICAgICAgYWxpZ24taXRlbXM6Y2VudGVyO1xuICAgICAgICAtbXMtZmxleC13cmFwOndyYXA7XG4gICAgICAgICAgICBmbGV4LXdyYXA6d3JhcDtcbiAgICAgICAgbGluZS1oZWlnaHQ6MTsgICAgICAgICAgICAgICAgXG4gICAgICB9XG4gICAgICBtYXJnaW4tdG9wOiR2LXJoeXRobS8yO1xuICAgICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0vMjtcbiAgICAgIGxpIHtcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIG1hcmdpbjouMjVlbSAuNWVtO1xuICAgICAgfVxuICAgICAgYSB7XG4gICAgICAgIGRpc3BsYXk6LXdlYmtpdC1ib3g7XG4gICAgICAgIGRpc3BsYXk6LW1zLWZsZXhib3g7XG4gICAgICAgIGRpc3BsYXk6ZmxleDtcbiAgICAgICAgLXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7XG4gICAgICAgICAgLW1zLWZsZXgtcGFjazpjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDpjZW50ZXI7XG4gICAgICAgIC13ZWJraXQtYm94LWFsaWduOmNlbnRlcjtcbiAgICAgICAgICAgLW1zLWZsZXgtYWxpZ246Y2VudGVyO1xuICAgICAgICAgICAgICBhbGlnbi1pdGVtczpjZW50ZXI7ICAgICAgICBcbiAgICAgIH1cbiAgICAgIC50aXRsZSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206LjI1ZW07XG4gICAgICB9XG4gICAgICBpbWcge1xuICAgICAgICBtYXgtaGVpZ2h0OjMuMTI1ZW07XG4gICAgICAgIG1heC13aWR0aDo3LjM3NWVtO1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oMiBvZiA0IGxhc3QpO1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgQGluY2x1ZGUgc3Bhbig3IG9mIDEyIGxhc3QpO1xuICAgICAgICAgIG1hcmdpbi10b3A6MDtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgICAgICAgZGlzcGxheTotd2Via2l0LWJveDtcbiAgICAgICAgICBkaXNwbGF5Oi1tcy1mbGV4Ym94O1xuICAgICAgICAgIGRpc3BsYXk6ZmxleDtcbiAgICAgICAgIC13ZWJraXQtYm94LXBhY2s6ZW5kO1xuICAgICAgICAgICAgLW1zLWZsZXgtcGFjazplbmQ7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OmZsZXgtZW5kO1xuICAgICAgICAgIC13ZWJraXQtYm94LWFsaWduOmNlbnRlcjtcbiAgICAgICAgICAgICAtbXMtZmxleC1hbGlnbjpjZW50ZXI7XG4gICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOmNlbnRlcjtcbiAgICAgICAgLnRpdGxlIHtcbiAgICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgICBmb250LXNpemU6LjgxMjVlbTtcbiAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206MDtcbiAgICAgICAgfVxuICAgICAgICAuc3BvbnNvciB7XG4gICAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICBpbWcge1xuICAgICAgICAgIG1heC1oZWlnaHQ6My4xMjVlbTtcbiAgICAgICAgICBtYXgtd2lkdGg6OC4zNzVlbTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIC5ncmlkIHtcbiAgICAgICAgbWFyZ2luLXRvcDouNWVtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOi41ZW07XG4gICAgICAgIGRpc3BsYXk6LXdlYmtpdC1ib3g7XG4gICAgICAgIGRpc3BsYXk6LW1zLWZsZXhib3g7XG4gICAgICAgIGRpc3BsYXk6ZmxleDtcbiAgICAgICAgLXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyO1xuICAgICAgICAgICAtbXMtZmxleC1hbGlnbjpjZW50ZXI7XG4gICAgICAgICAgICAgICBhbGlnbi1pdGVtczpjZW50ZXI7ICAgICAgICBcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAucHJpbWFyeSB7XG4gICAgYmFja2dyb3VuZDokYmx1ZTtcbiAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICB6LWluZGV4OjEwO1xuICAgIC5ncmlkIHtcbiAgICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgIH1cbiAgICAuaGVhZGVyLWxvZ28ge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgbWFyZ2luOjA7XG4gICAgICBsaW5lLWhlaWdodDowO1xuICAgICAgYSB7XG4gICAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgICAgIHBhZGRpbmc6LjQ1ZW07XG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgbWF4LWhlaWdodDouNWVtO1xuICAgICAgICAgIC50eXBlIHtcbiAgICAgICAgICAgIGZpbGw6d2hpdGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICAgICAgbWF4LWhlaWdodDouNzVlbTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5sb2dvLXR5cGUge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIG1heC13aWR0aDoxMDAlO1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgc3BhbigxLjUgZmlyc3QpO1xuXG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgQGluY2x1ZGUgc3BhbigzIGZpcnN0KTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDIgZmlyc3QpO1xuICAgICAgICBwYWRkaW5nLXRvcDouMmVtO1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIHBhZGRpbmctdG9wOjA7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oNCBmaXJzdCk7XG4gICAgICAgIGEge1xuICAgICAgICAgIHBhZGRpbmc6LjU1ZW0gLjQ1ZW0gLjQ1ZW0gLjQ1ZW07XG4gICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6MWVtO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBiYXNlIHN0eWxpbmcgZm9yIG1haW4gbmF2aWdhdGlvblxuICAgIC5tYWluLW5hdi10b2dnbGUge1xuICAgICAgQGluY2x1ZGUgcGxhaW4tYnV0dG9uO1xuICAgICAgZGlzcGxheTpub25lO1xuICAgICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgICB0b3A6MDtcbiAgICAgIHJpZ2h0OjUlO1xuICAgICAgd2lkdGg6Mi43NWVtO1xuICAgICAgaGVpZ2h0OjIuNzVlbTtcbiAgICAgIG92ZXJmbG93OmhpZGRlbjtcbiAgICAgIHBhZGRpbmc6LjVlbTtcbiAgICAgIHRleHQtYWxpZ246Y2VudGVyO1xuICAgICAgc3ZnIHtcbiAgICAgICAgQGluY2x1ZGUgY2VudGVyO1xuICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgd2lkdGg6MS41ZW07XG4gICAgICB9XG4gICAgICAub25lLCAudHdvLCAudGhyZWUge1xuICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246YWxsIC4zNXMgbGluZWFyO1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246YWxsIC4zNXMgbGluZWFyO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMGRlZykgc2NhbGUoMSk7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKSBzY2FsZSgxKTtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgNTAlO1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46MCA1MCU7XG4gICAgICAgICAgICAgICAgZmlsbDp3aGl0ZTtcbiAgICAgIH1cbiAgICAgICYuY2xvc2Utc3RhdGUge1xuICAgICAgICAub25lIHtcbiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGVaKC00NWRlZykgc2NhbGUoLjk1KTtcbiAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTpyb3RhdGVaKC00NWRlZykgc2NhbGUoLjk1KTtcbiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MTEuNWVtIDVlbTtcbiAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46MTEuNWVtIDVlbTtcbiAgICAgICAgfVxuICAgICAgICAudHdvIHtcbiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0yNWVtKTtcbiAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0yNWVtKTtcbiAgICAgICAgfVxuICAgICAgICAudGhyZWUge1xuICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZVooNDVkZWcpIHNjYWxlKC45NSk7XG4gICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06cm90YXRlWig0NWRlZykgc2NhbGUoLjk1KTtcbiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MTEuNWVtIDVlbTtcbiAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46MTEuNWVtIDVlbTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgIHdpZHRoOjMuM2VtO1xuICAgICAgICBoZWlnaHQ6My4zZW07XG4gICAgICB9XG4gICAgfVxuICAgIC5kcm9wZG93bi1tZW51IHtcbiAgICAgIGNsZWFyOmJvdGg7XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig2IGxhc3QpO1xuICAgICAgICBjbGVhcjpub25lO1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oOCBsYXN0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgLmhlYWRlci1tYWluLW5hdmlnYXRpb24ge1xuICAgICAgZm9udC1zaXplOjEuMTI1ZW07XG4gICAgICBmb250LWZhbWlseTogJ0pvc2VmaW4gU2FucycsIHNhbnMtc2VyaWY7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7XG4gICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDMuNzUgb2YgNik7XG4gICAgICAgIGNsZWFyOm5vbmU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206MDtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDUgb2YgOCk7XG4gICAgICB9XG4gICAgICB1bCB7XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgIGRpc3BsYXk6LXdlYmtpdC1ib3g7XG4gICAgICAgICAgZGlzcGxheTotbXMtZmxleGJveDtcbiAgICAgICAgICBkaXNwbGF5OmZsZXg7IFxuICAgICAgICB9XG4gICAgICAgIGxpIHtcbiAgICAgICAgICBib3JkZXItYm90dG9tOjFweCBzb2xpZCAkZ3JheTtcbiAgICAgICAgICBhIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGxpbmstcmVzZXQ7XG4gICAgICAgICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgICAgICAgcGFkZGluZzoxLjFlbSAxZW0gLjllbSAxZW07XG4gICAgICAgICAgICBjb2xvcjp3aGl0ZTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGJhY2tncm91bmQsIC41cywgZWFzZS1pbi1vdXQpO1xuICAgICAgICAgICAgICB3aWR0aDoxMDAlO1xuICAgICAgICAgICAgICBoZWlnaHQ6LjMzMzNlbTtcbiAgICAgICAgICAgICAgY29udGVudDonJztcbiAgICAgICAgICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgICAgICAgICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgICAgICAgICAgIGJvdHRvbTowO1xuICAgICAgICAgICAgICBsZWZ0OjA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmhvdmVyLCAmLmFjdGl2ZSB7XG4gICAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6JHllbGxvdztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246Y2VudGVyO1xuICAgICAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOm5vbmU7XG4gICAgICAgICAgICBmbGV4LWdyb3c6MTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLnNlYXJjaCB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBmb250LXNpemU6MS4xMjVlbTtcbiAgICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtO1xuICAgICAgLnNlYXJjaC1pbnB1dCAge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGhlaWdodDoyLjI1ZW07XG4gICAgICAgIHBhZGRpbmc6MCAwIDAgMWVtO1xuICAgICAgICB3aWR0aDoxMDAlO1xuICAgICAgICBib3JkZXI6MXB4IHNvbGlkICRncmF5O1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OjIuNWVtO1xuICAgICAgfVxuICAgICAgLnNlYXJjaC1idXR0b24ge1xuICAgICAgICBAaW5jbHVkZSBwbGFpbi1idXR0b247XG4gICAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgICAgICB0b3A6LjE1ZW07XG4gICAgICAgIHJpZ2h0Oi40NWVtO1xuICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgaGVpZ2h0OjJlbTtcbiAgICAgICAgd2lkdGg6MmVtO1xuICAgICAgICBwYWRkaW5nOi4xNWVtO1xuICAgICAgICBiYWNrZ3JvdW5kOndoaXRlO1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oMS41IG9mIDYpO1xuICAgICAgICBtYXJnaW4tdG9wOi43ZW07XG4gICAgICAgIG1hcmdpbi1ib3R0b206MDtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDIgb2YgOCk7XG4gICAgICB9IFxuICAgIH1cbiAgfVxuICAuc2hvcCB7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gICAgZGlzcGxheTpibG9jaztcbiAgICBwYWRkaW5nOi41ZW0gLjVlbSAuNWVtIDFlbTtcbiAgICBib3JkZXItYm90dG9tOjFweCBzb2xpZCAkZ3JheTtcbiAgICBzdmcge1xuICAgICAgaGVpZ2h0OjIuNWVtO1xuICAgICAgd2lkdGg6Mi41ZW07XG4gICAgICBmaWxsOndoaXRlO1xuICAgICAgcGF0aCB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oZmlsbCwgLjI1cywgZWFzZS1pbi1vdXQpXG4gICAgICB9XG4gICAgfVxuICAgICY6aG92ZXIge1xuICAgICAgc3ZnIHtcbiAgICAgICAgcGF0aCB7XG4gICAgICAgICAgZmlsbDokeWVsbG93O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgQGluY2x1ZGUgc3BhbiguNzUgb2YgNiBsYXN0KTtcbiAgICAgIGJvcmRlcjpub25lO1xuICAgICAgcGFkZGluZzowO1xuICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgICAgIG1hcmdpbi10b3A6Ljc1ZW07XG4gICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgQGluY2x1ZGUgc3BhbigxIG9mIDggbGFzdCk7XG4gICAgfVxuICB9XG59XG5cblxuXG4vLyBlbmhhbmNlZCBzdHlsZXMgZm9yIGhlYWRlciAoSmF2YVNjcmlwdCBTdWNjZXNzKVxuLmpzIHtcbiAgLy8gc2hvdyBtYWluIG5hdiB0b2dnbGUgd2l0aCBKU1xuICAuc2l0ZS1oZWFkZXIge1xuICAgIC5wcmltYXJ5IHtcbiAgICAgIC5tYWluLW5hdi10b2dnbGUge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgIGRpc3BsYXk6bm9uZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyBoaWRpbmcgYW5kIHNob3cgb2YgZHJvcCBkb3duIG1lbnUgd2l0aCBKU1xuICAuanMtZHJvcGRvd24tbWVudSB7XG4gICAgICB2aXNpYmlsaXR5OmhpZGRlbjtcbiAgICAgIG92ZXJmbG93OmhpZGRlbjtcbiAgICAgIG1heC1oZWlnaHQ6MDtcbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsLCAuMzVzLCBlYXNlLWluLW91dCk7XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgdmlzaWJpbGl0eTp2aXNpYmxlO1xuICAgICAgICBtYXgtaGVpZ2h0OmluaGVyaXQ7XG4gICAgICB9XG4gICAgJi5vcGVuIHtcbiAgICAgIHZpc2liaWxpdHk6dmlzaWJsZTtcbiAgICAgIG1heC1oZWlnaHQ6MzVlbTtcbiAgICB9XG4gIH1cbiAgLmhlYWRlci1tYWluLW5hdmlnYXRpb24ub3BlbiArIC5oZWFkZXItc2VhcmNoLm9wZW4ge1xuICAgIG1hcmdpbi10b3A6JHYtcmh5dGhtO1xuICB9XG59XG5cbi8vIGRvIG5vdCBoYXZlIGZpeGVkIGZ1bmN0aW9uYWxpdHkgb2YgbG9nZ2VkIGluXG4uY21zLXJlYWR5IHtcbiAgLnByaW1hcnkge1xuICAgICYuZml4ZWQge1xuICAgICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgfVxuICB9XG59XG4iLCIuc2l0ZS1mb290ZXIge1xuICAgIHVsIHtcbiAgICAgICAgQGluY2x1ZGUgcGxhaW4tbGlzdDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtO1xuICAgIH1cbiAgICAuY3JlZGl0LWhlYWRpbmcge1xuICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgfVxufVxuXG4uZm9vdGVyLWxpbmtzIHtcbiAgICBwYWRkaW5nOiAwIDAgJHYtcmh5dGhtLzIgMDtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoXCIuLi9pbWFnZXMvYmctdHJpYW5nbGUtZm9vdGVyLnBuZ1wiKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDExLjc1ZW0gMTEuMTI1ZW07XG4gICAgY29sb3I6ICRjb3JuZmxvd2VyO1xuICAgICY6YmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltYWdlcy9iZy1hbWVyaWNhbi1mbGFnLmpwZ1wiKTtcbiAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogNi41JTtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtICogMztcbiAgICB9XG4gICAgYSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB1bCB7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobS8yO1xuICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkc2NyZWVuLWpiLW1pbikgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpIHtcbiAgICAuZm9vdGVyLWxpbmtzIHtcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDE1JTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmZvb3Rlci1uYXZpZ2F0aW9uIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgQGluY2x1ZGUgc3BhbigyIGZpcnN0KTtcbiAgICAgICAgbWluLWhlaWdodDogMTVlbTtcbiAgICAgICAgdWwge1xuICAgICAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICAgICAgICAtbW96LWNvbHVtbi1jb3VudDogMjtcbiAgICAgICAgICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiAyO1xuICAgICAgICAgICAgY29sdW1uLWNvdW50OiAyO1xuICAgICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDQgZmlyc3QpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig3IGZpcnN0KTtcbiAgICAgICAgdWwge1xuICAgICAgICAgICAgLW1vei1jb2x1bW4tY291bnQ6IDM7XG4gICAgICAgICAgICAtd2Via2l0LWNvbHVtbi1jb3VudDogMztcbiAgICAgICAgICAgIGNvbHVtbi1jb3VudDogMztcbiAgICAgICAgfVxuICAgIH1cbn1cbi5mb290ZXItcHJvZHVjdGlvbi1ieSB7XG4gICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtO1xuICAgIC53Z2JoIHtcbiAgICAgICAgZmlsbDogd2hpdGU7XG4gICAgICAgIHdpZHRoOiA2ZW07XG4gICAgICAgIG1heC1oZWlnaHQ6IDNlbTtcbiAgICB9XG4gICAgdWwge1xuICAgICAgICBtYXJnaW4tdG9wOiAkdi1yaHl0aG07XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDIgbGFzdCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDQgbGFzdCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDIuNSk7XG4gICAgfVxufVxuLmZvb3Rlci1mdW5kaW5nIHtcbiAgICB1bCB7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb2xvcjogd2hpdGU7XG4gICAgLy8gLmNwYiB7XG4gICAgLy8gICAqIHtcbiAgICAvLyAgICAgZmlsbDp3aGl0ZTtcbiAgICAvLyAgIH1cbiAgICAvLyAgIHdpZHRoOjdlbTtcbiAgICAvLyAgIG1heC1oZWlnaHQ6NGVtO1xuICAgIC8vIH1cbiAgICBzdmcge1xuICAgICAgICB3aWR0aDogMTJlbTtcbiAgICAgICAgbWF4LWhlaWdodDogMTJlbTtcbiAgICAgICAgKiB7XG4gICAgICAgICAgICBmaWxsOiB3aGl0ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhIHtcbiAgICAgICAgLy8gd2lkdGg6MTAwJTtcbiAgICAgICAgLy8gaGVpZ2h0OjEwMCU7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDIgbGFzdCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDQgbGFzdCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDIuNSBsYXN0KTtcbiAgICB9XG59XG4uZm9vdGVyLWNvcHlyaWdodCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobTtcbiAgICBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDIgZmlyc3QpO1xuICAgICAgICBjbGVhcjogYm90aDtcbiAgICAgICAgcGFkZGluZy10b3A6IDIuNzV2dztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oNCBmaXJzdCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICBwYWRkaW5nLXRvcDogMi45MjV2dztcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig0IGZpcnN0KTtcbiAgICB9XG59XG4uZm9vdGVyLWxvZ28tdHlwZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC1zaXplOiA0dnc7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjc1O1xuICAgIHN2ZyB7XG4gICAgICAgIGZpbGw6ICRuYXZ5O1xuICAgICAgICBtYXgtaGVpZ2h0OiAzLjg3NWVtO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgQGluY2x1ZGUgc3BhbigyIGxhc3QpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDQgbGFzdCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDggbGFzdCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMy41dnc7XG4gICAgfVxufVxuIiwiLmNvbm5lY3Qtc29jaWFsIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWFnZXMvYmctdHJpYW5nbGUtbmV3c2xldHRlci5wbmdcIik7XG4gICAgYmFja2dyb3VuZC1zaXplOiAxMS43NWVtIDExLjEyNWVtO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBtYXJnaW4tYm90dG9tOiAkdi1yaHl0aG0gKiAzO1xuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICBoMyB7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICB9XG4gICAgLmVtYWlsLXNpZ251cCB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogJHYtcmh5dGhtIDA7XG4gICAgICAgIGgzIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuNzY5ZW07XG4gICAgICAgIH1cbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgICAuZW1haWwtc2lnbnVwLWZvcm0ge1xuICAgICAgICAgICAgLm5vdGUge1xuICAgICAgICAgICAgICAgIC8vIGZsZXggYm94IG92ZXJpZGUgZm9yIHNvdXJjZSBvcmRlciBpbiBjb25uZWN0IHNlY3Rpb25cbiAgICAgICAgICAgICAgICAtd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwOiAyO1xuICAgICAgICAgICAgICAgIC1tcy1mbGV4LW9yZGVyOiAxO1xuICAgICAgICAgICAgICAgIG9yZGVyOiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi52b3RlIC5oZWFkbGluZSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDEwJSAwIDA7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgLnZvdGUtaGVhZGxpbmUge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWFnZXMvdGl0bGVfdGhlLXZvdGUucG5nKSBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAzMDBweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDU3cHg7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgICAgICAgICAgdGV4dC1pbmRlbnQ6IC05OTk5OXB4O1xuXG4gICAgICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDUwMHB4KSB7XG4gICAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogODAlO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmhlYWRsaW5lIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgcGFkZGluZzogMCAxMCU7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHNwYW4oMiBmaXJzdCk7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAuZW1haWwtc2lnbnVwLWZvcm0ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA4MCU7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBzcGFuKDQgZmlyc3QpO1xuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgQGluY2x1ZGUgc3Bhbig3IGZpcnN0KTtcblxuICAgICAgICAgICAgJi52b3RlIGgzIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaDMge1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmVtYWlsLXNpZ251cC1mb3JtIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDEwJTtcbiAgICAgICAgICAgICAgICAuZW1haWwtZmllbGQge1xuICAgICAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDElO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDQ1JTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLnppcC1jb2RlLWZpZWxkIHtcbiAgICAgICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDMwJTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnV0dG9uW3R5cGU9XCJzdWJtaXRcIl0ge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMjQlO1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC5ub3RlIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDc1JTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tamItbWluKSB7XG4gICAgICAgICAgICAuZW1haWwtc2lnbnVwLWZvcm0ge1xuICAgICAgICAgICAgICAgIGJ1dHRvblt0eXBlPVwic3VibWl0XCJdIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE5JTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmZvb3Rlci1zb2NpYWwtbGlua3Mge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6ICR2LXJoeXRobSAqIDIgMDtcbiAgICAgICAgYmFja2dyb3VuZDogJG5hdnk7XG4gICAgICAgIHdpZHRoOiAxMTAlO1xuICAgICAgICBtYXJnaW4tbGVmdDogLTUlO1xuICAgICAgICAuc29jaWFsLWxpc3Qge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIHdpZHRoOiA3MCU7XG4gICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAzZW07XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAzZW07XG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuYmFja2dyb3VuZCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogJG11c3RhcmQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICAuYmFja2dyb3VuZCB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGw6ICR5ZWxsb3c7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5oYXNodGFnIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICAgICAgQGluY2x1ZGUgc3BhbigyIGxhc3QpO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA1LjYyNSU7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogaW5oZXJpdDtcbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiBjYWxjKDUuMjYzMTYlICogMik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDExLjI1JTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkbmF2eTtcbiAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgbGVmdDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5zb2NpYWwtbGlzdCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDkwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHNwYW4oNCBsYXN0KTtcbiAgICAgICAgICAgIC5zb2NpYWwtbGlzdCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA1LjI2MzE2JTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHNwYW4oNSBsYXN0KTtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDQlO1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWpiLW1pbikge1xuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgLy8gbWFnaWNcbiAgICAgICAgICAgICAgICB3aWR0aDogY2FsYygoMTAwdncgLSAxNDAwcHgpIC8gMik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmdyaWQge1xuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgICAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLy8gbm8ganMgYWQgYmxvY2sgc2hvdyBub3RoaW5nXG4uYWQtYmxvY2sge1xuICBtYXgtaGVpZ2h0OjA7XG4gIHBhZGRpbmc6MDtcbiAgdmlzaWJpbGl0eTpoaWRkZW47XG4gIGxpbmUtaGVpZ2h0OjA7XG59XG4gXG4uanMge1xuICAuYWQtYmxvY2sge1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsLCAuMzVzLCBlYXNlLWluLW91dCk7XG4gICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gICAgJi5vcGVuLmFkLXNpZGUtaW50ZXJpb3Ige1xuICAgICAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOm5vbmU7XG4gICAgICB9XG4gICAgfVxuICAgICYub3BlbiB7XG4gICAgICBwYWRkaW5nOiR2LXJoeXRobSAwICR2LXJoeXRobSoyO1xuICAgICAgbWF4LWhlaWdodDoyNWVtO1xuICAgICAgdmlzaWJpbGl0eTp2aXNpYmxlO1xuICAgICAgei1pbmRleDppbmhlcml0O1xuICAgICAgbGluZS1oZWlnaHQ6aW5oZXJpdDtcbiAgICAgIC5hZCB7XG4gICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgfVxuICAgICAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OicnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGhlaWdodDoxMDAlO1xuICAgICAgICB3aWR0aDoxMDAlO1xuICAgICAgICB0b3A6MDtcbiAgICAgICAgbGVmdDowO1xuICAgICAgfVxuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kOnVybCgnLi4vaW1hZ2VzL2JnLWRlY28tY2lyY2xlLnBuZycpO1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6MThlbSAxOGVtO1xuICAgICAgICB6LWluZGV4Oi0yO1xuICAgICAgfVxuICAgICAgJjphZnRlciB7XG4gICAgICAgIHotaW5kZXg6LTE7XG4gICAgICAgIGJhY2tncm91bmQ6cmdiYSgkb3ZlcmxheSwgLjUpO1xuXG4gICAgICB9XG4gICAgICAmLmZvb3Rlci1hZCB7XG4gICAgICAgIHBhZGRpbmctdG9wOiR2LXJoeXRobSoxLjU7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiR2LXJoeXRobSoxLjc1O1xuICAgICAgICBtYXJnaW4tYm90dG9tOjQuNWVtO1xuICAgICAgfVxuICAgIH1cbiAgICAuYWQge1xuICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICBtYXJnaW46MCBhdXRvO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICBkaXNwbGF5Om5vbmU7XG4gICAgICBkaXYge1xuICAgICAgICBjbGVhcjpib3RoOyAgXG4gICAgICB9XG4gICAgICBzcGFuLCBhIHtcbiAgICAgICAgZm9udC1zaXplOi43NWVtO1xuICAgICAgICBmbG9hdDpsZWZ0O1xuICAgICAgfVxuICAgICAgYSB7XG4gICAgICAgIGZsb2F0OnJpZ2h0O1xuICAgICAgICBjb2xvcjokYmx1ZTtcbiAgICAgIH0gXG4gICAgICBidXR0b24ge1xuICAgICAgICBAaW5jbHVkZSBwbGFpbi1idXR0b247XG4gICAgICAgIGJhY2tncm91bmQ6JGdyYXk7XG4gICAgICAgIHdpZHRoOjEuNWVtO1xuICAgICAgICBoZWlnaHQ6MS41ZW07XG4gICAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgICAgICB0b3A6MS4yNWVtO1xuICAgICAgICByaWdodDowO1xuICAgICAgICBzdmcge1xuICAgICAgICAgIEBpbmNsdWRlIGNlbnRlcjtcbiAgICAgICAgICB3aWR0aDo3NSU7XG4gICAgICAgICAgaGVpZ2h0Ojc1JTtcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICB3aWR0aDoyZW07XG4gICAgICAgICAgaGVpZ2h0OjJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4uc2hvcC1hZCB7XG4gIGJhY2tncm91bmQ6d2hpdGU7XG4gIHRleHQtYWxpZ246Y2VudGVyO1xuICBwYWRkaW5nLXRvcDokdi1yaHl0aG0qMztcbiAgcGFkZGluZy1ib3R0b206JHYtcmh5dGhtKjM7XG4gIGEgIHtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICAmLm1vYmlsZSB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOnVybCgnLi4vaW1hZ2VzL2FtZXhfc2hvcF9tb2JpbGUuanBnJyk7XG4gICAgICBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7XG4gICAgICB3aWR0aDoyMGVtO1xuICAgICAgaGVpZ2h0OjYuMjVlbTtcbiAgICB9XG4gICAgJi5kZXNrdG9wIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6dXJsKCcuLi9pbWFnZXMvYW1leF9zaG9wX2Rlc2t0b3AuanBnJyk7XG4gICAgICBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7XG4gICAgICB3aWR0aDo3NWVtO1xuICAgICAgaGVpZ2h0OjkuMzc1ZW07XG4gICAgfSAgICBcbiAgfVxufVxuXG4vLyBhZGp1c3QgbWFyZ2luIGZvciBzaG9wIGFkIGlmIGJvdHRvbSBiYW5uZXIgZG9lcyBub3QgZXhpc3Rcbi5jb25uZWN0LXNvY2lhbCB7XG4gICYgKyAuc2hvcC1hZCAge1xuICAgIHBhZGRpbmctdG9wOjA7XG4gIH1cbn1cblxuLy8gbGF5b3V0IGZvciBcInNpZGViYXIgYWRcIlxuLmFkLWludGVyaW9yLWNvbnRlbnQge1xuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBAaW5jbHVkZSBzcGFuKDUgZmlyc3QpO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgIEBpbmNsdWRlIHNwYW4oOCBmaXJzdCk7XG4gIH1cbn1cblxuLmFkLXNpZGUtaW50ZXJpb3Ige1xuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBtYXJnaW4tdG9wOiR2LXJoeXRobTtcbiAgICBAaW5jbHVkZSBzcGFuKDMgbGFzdCk7XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgQGluY2x1ZGUgc3Bhbig0IGxhc3QpO1xuICB9XG59IiwiOi13ZWJraXQtZnVsbC1zY3JlZW4tYW5jZXN0b3I6bm90KGlmcmFtZSl7XG4gIC5wYnMtY2xlYW5zbGF0ZSwgLnNpdGUtaGVhZGVyLCAuYWQtYmxvY2ssIC5jbXMsIC50ZWFzZXItaXRlbSwgLnNpdGUtZm9vdGVyLCBcbiAgLmZpbG0tc3ViLW5hdiwgLldhbGxvcC1idXR0b25QcmV2aW91cywgLldhbGxvcC1idXR0b25OZXh0LCAuYWNjb3JkaW9uLXRvZ2dsZSwgLnRhYi1wYW5lbCwgLmZ1bGwtc2NyZWVuIHtcbiAgICBkaXNwbGF5Om5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuYm9keSB7XG4gIG92ZXJmbG93LXg6aGlkZGVuO1xuICAvLyBzdGF0ZSBydWxlcyBmb3IgYm9keSB3aGVuIG1vZGFsIGlzIG9wZW5cbiAgJi5maXhlZCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGxlZnQ6MDtcbiAgICB0b3A6MDtcbiAgICB3aWR0aDoxMDAlO1xuICB9XG59XG5cbmlmcmFtZSB7XG4gIGJhY2tncm91bmQ6JG1lZEdyYXk7XG59XG5cbmltZyB7XG4gIG1heC13aWR0aDoxMDAlO1xufVxuXG5hIHtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbihjb2xvciwgLjNzLCBlYXNlLWluLW91dCk7XG4gIGNvbG9yOiRyZWQ7XG4gIHRleHQtZGVjb3JhdGlvbjpub25lO1xuICBmb250LXdlaWdodDo3MDA7XG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiRjcmltc29uO1xuICAgIHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7XG4gIH1cbn1cblxuLmNhbGwtdG8tYWN0aW9uIHtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwsIC41cywgZWFzZS1pbi1vdXQpO1xuICBiYWNrZ3JvdW5kOiRyZWQ7XG4gIGNvbG9yOndoaXRlO1xuICBib3JkZXItcmFkaXVzOi40Mzc1ZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtcbiAgZm9udC1zaXplOjEuMTI1ZW07XG4gIHBhZGRpbmc6MWVtIDMuNWVtO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvcDogMDtcbiAgJjpob3ZlciB7XG4gICAgY29sb3I6d2hpdGU7XG4gICAgYmFja2dyb3VuZDpkYXJrZW4oJHJlZCwgNSUpO1xuICAgIHRleHQtZGVjb3JhdGlvbjpub25lO1xuICB9XG4gICY6YWN0aXZlIHtcbiAgICB0b3A6LjI3Nzc3Nzc3NzhlbTtcbiAgfVxufVxuXG5maWd1cmUge1xuICBtYXJnaW46MDtcbn1cblxuZmlnY2FwdGlvbiwgLmNhcHRpb24ge1xuICBmb250LXNpemU6Ljg1ZW07XG4gIGNvbG9yOiRtZWRHcmF5O1xuICBmb250LXN0eWxlOml0YWxpYztcbiAgcCB7XG4gICAgbWFyZ2luOjA7XG4gIH1cbn1cblxuLmNhcHRpb24ge1xuICBoNCwgLmRlbHRhIHtcbiAgICBtYXJnaW46LjI1ZW0gMDtcbiAgICBmb250LXN0eWxlOm5vcm1hbDtcbiAgfVxufVxuXG5xIHtcbiAgZGlzcGxheTpibG9jaztcbiAgY29sb3I6JG1lZEdyYXk7XG4gIGZvbnQtc2l6ZToxLjE1ZW07XG4gIG1hcmdpbjokdi1yaHl0aG0gNSU7XG4gIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDonJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaGVpZ2h0OjExMCU7XG4gICAgd2lkdGg6LjVlbTtcbiAgICBiYWNrZ3JvdW5kOiRtZWRHcmF5O1xuICAgIGxlZnQ6LTEuNWVtO1xuICAgIEBpbmNsdWRlIGNlbnRlcihmYWxzZSwgdHJ1ZSk7XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgbWFyZ2luLWxlZnQ6MTAlO1xuICAgIG1hcmdpbi1yaWdodDoxMCU7XG4gIH1cbn1cblxuY2l0ZSB7XG4gIGRpc3BsYXk6YmxvY2s7XG4gIGZvbnQtc2l6ZToxLjI1ZW07XG4gIG1hcmdpbjokdi1yaHl0aG0gNSU7XG4gIGNvbG9yOiRtZWRHcmF5O1xuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBtYXJnaW4tbGVmdDoxMCU7XG4gICAgbWFyZ2luLXJpZ2h0OjEwJTtcbiAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OicnO1xuICAgICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIHRvcDowO1xuICAgICAgbGVmdDotMy41ZW07XG4gICAgICBiYWNrZ3JvdW5kOnVybCgnLi4vaW1hZ2VzL3F1b3RlLnN2ZycpIG5vLXJlcGVhdDtcbiAgICAgIGJhY2tncm91bmQtc2l6ZToyLjVlbTtcbiAgICAgIHdpZHRoOjIuNWVtO1xuICAgICAgaGVpZ2h0OjIuNWVtO1xuICAgIH1cbiAgfVxufVxuXG4uanVtcC1saW5rIHtcbiAgJjpiZWZvcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgaGVpZ2h0OiA2ZW07XG4gICAgbWFyZ2luOi02ZW0gMCAwO1xuICB9XG4gICYuc2l0ZS1mb290ZXIge1xuICAgICY6YmVmb3JlIHtcbiAgICAgIGhlaWdodDogOWVtO1xuICAgICAgbWFyZ2luOi05ZW0gMCAwO1xuICAgIH1cbiAgfVxufVxuXG4vLyBjb3ZlIHN0dWZmXG4uY292ZS13cmFwcGVyIHtcbiAgbWFyZ2luLWJvdHRvbToxLjVlbTtcbn1cblxuLmNvdmUtY29udGFpbmVyIHtcbiAgJjpiZWZvcmUge1xuICAgIEBpbmNsdWRlIGNlbnRlcjtcbiAgICB6LWluZGV4OiAzO1xuICAgIGNvbG9yOndoaXRlO1xuICAgIGNvbnRlbnQ6J1ZpZGVvIFJlcXVpcmVzIEphdmFzY3JpcHQnXG4gIH1cbn1cblxuLmpzIHtcbiAgLmNvdmUtY29udGFpbmVyIHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50Om5vbmVcbiAgICB9XG4gIH1cbn1cblxuLmNvdmUtY29udGFpbmVyIHtcbiAgcG9zaXRpb246cmVsYXRpdmU7XG4gIGhlaWdodDogMDtcbiAgcGFkZGluZy1ib3R0b206NTYuMjUlO1xuICBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O1xuICBAaW5jbHVkZSBhbmltYXRlZCgxcyk7XG4gIEBpbmNsdWRlIGZhZGVJbjtcbiAgaWZyYW1lIHtcbiAgICBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgei1pbmRleDoyO1xuICB9XG59XG5cbi5ncmlkIHtcbiAgQGluY2x1ZGUgZ3JpZDtcbn1cblxuLmdyaWQuZnVsbCB7XG4gIG1heC13aWR0aDoxMDAlO1xuICBwYWRkaW5nOjA7XG59XG5cbi5wbHVnaW4taXRlbS1ibG9jayB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xufVxuXG4vLyBnZW5lcmljIHNwYWNpbmcgZm9yIHN0YW5kYXJkIHBhZ2UgIFxuLnBhZ2Uge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgbWFyZ2luLXRvcDokdi1yaHl0aG0qMjtcbiAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0qMjtcbn1cblxuLnJpZ2h0LWFycm93IHtcbiAgZmlsbDp3aGl0ZTtcbiAgbWF4LXdpZHRoOjJlbTtcbiAgbWF4LWhlaWdodDoyZW07XG59XG5cbi5wYXNzcG9ydC1pY29uIHtcbiAgdmVydGljYWwtYWxpZ246bWlkZGxlO1xuICBtYXJnaW4tdG9wOi0uMTVlbTtcbiAgbWF4LXdpZHRoOjEuMjVlbTtcbiAgbWF4LWhlaWdodDoxLjI1ZW07XG59XG5cbi5yZWxhdGVkLWZlYXR1cmUtbGlzdCB7XG4gIGNsZWFyOmJvdGg7XG4gIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtKjI7XG4gIG1hcmdpbi10b3A6JHYtcmh5dGhtKjI7XG59Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QStEQUEsNEVBQTRFO0FBRTVFOzs7R0FHRztBQUVILEFBQUEsSUFBSSxDQUFDO0VBQ0gsV0FBVyxFQUFFLFVBQVU7RUFBRSxPQUFPO0VBQ2hDLG9CQUFvQixFQUFFLElBQUk7RUFBRSxPQUFPO0VBQ25DLHdCQUF3QixFQUFFLElBQUk7RUFBRSxPQUFPO0NBQ3hDOztBQUdELHlGQUF5RjtBQUN6RixBQUFBLElBQUksQ0FBQztFQUNILFVBQVUsRUFBRSxVQUFVO0NBQ3ZCOztBQUNELEFBQUEsQ0FBQyxFQUFFLENBQUMsQUFBQSxPQUFPLEVBQUUsQ0FBQyxBQUFBLE1BQU0sQ0FBQztFQUNuQixVQUFVLEVBQUUsT0FBTztDQUNwQjs7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 */
