/*!
 * Theme Name: The Dutch Weed Burger Theme
 * Theme URI: http://www.dutchweedburger.com/
 * Description: The Dutch Weed Burger Theme theme created by Hartman Media.
 * Author: Hartman Media
 * Author URI: https://www.linkedin.com/in/tristanhartman/
 * Version: 1.0.0
 * Text Domain: tdwb
 */
@charset "UTF-8";
/* Fonts */
/**
 * Custom fonts
 * ----------------------------------------------------------------------------
 */
/* @import must be at top of file, otherwise CSS will not work */
@import url("https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,600;0,700;1,400;1,600&display=swap");
@import url("//hello.myfonts.net/count/3cefca");
@font-face {
  font-family: 'Mulhouse';
  src: url("assets/fonts/Mulhouse-Regular/font.woff2") format("woff2"), url("assets/fonts/Mulhouse-Regular/font.woff") format("woff");
  font-display: swap; }

/* Settings */
/**
 * Color scheme
 * ----------------------------------------------------------------------------
 */
/**
 * Settings
 * ----------------------------------------------------------------------------
 */
/* Global */
/* Breakpoints */
/* Typography */
/* XY Grid */
/* Gutenberg Settings */
/**
 * Custom variables
 * ----------------------------------------------------------------------------
 */
/* Transitions */
/* z-index */
/**
 * Custom mixins
 * ----------------------------------------------------------------------------
 */
/**
 * Used to compile CSS to display retina images.
 *
 * Example:
 * @include background-image-retina(logo, png, 210px, 70px);
 *
 */
/**
 * Custom placeholders
 * ----------------------------------------------------------------------------
 */
/**
 * Add styling to root (optional)
 * ----------------------------------------------------------------------------
 */
/**
 * Form placeholder styling
 * ----------------------------------------------------------------------------
 */
/**
 * Automatically include focus styles with hover
 * ----------------------------------------------------------------------------
 */
/**
 * Media queries
 */
/**
 * Containers
 */
/* Normalize */
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
/* Document
   ========================================================================== */
/**
 * 1. Correct the line height in all browsers.
 * 2. Prevent adjustments of font size after orientation changes in iOS.
 */
html {
  line-height: 1.15;
  /* 1 */
  -webkit-text-size-adjust: 100%;
  /* 2 */ }

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

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

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

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

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

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

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

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

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

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

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

sub {
  bottom: -0.25em; }

sup {
  top: -0.5em; }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* {
  margin: 0;
  padding: 0; }

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

/**
 * Visibility classes
 * ----------------------------------------------------------------------------
 */
@media (min-width: 1024px) {
  .hide-for-large {
    display: none !important; } }

.show-for-large {
  display: none !important; }
  @media (min-width: 1024px) {
    .show-for-large {
      display: block !important; } }

.row {
  display: flex;
  flex-wrap: wrap; }
  @media (min-width: 1024px) {
    .row {
      margin: 0 -0.9375rem; } }

.column {
  padding: 0 0.9375rem;
  width: 100%; }

@media (min-width: 1024px) {
  .column-4 {
    flex: 0 0 33.3333%;
    max-width: 33.3333%; } }

@media (min-width: 1024px) {
  .column-6 {
    flex: 0 0 50%;
    max-width: 50%; } }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

::selection {
  background: #1ea7ba;
  color: #ffffff; }

body {
  position: relative; }

html {
  overflow-y: scroll;
  min-height: 100%; }

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

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

form {
  margin-bottom: 0; }

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

img {
  display: inline-block;
  vertical-align: middle;
  max-width: 100%;
  height: auto;
  -ms-interpolation-mode: bicubic;
  box-sizing: inherit; }

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

h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: "Mulhouse", "Helvetica", sans-serif;
  font-weight: 700;
  margin-bottom: 1rem;
  color: #000000;
  line-height: 1.1; }
  h1 a,
  h2 a,
  h3 a,
  h4 a,
  h5 a,
  h6 a {
    text-decoration: none; }

h1,
.h1 {
  font-size: 2.625rem; }
  @media (min-width: 1024px) {
    h1,
    .h1 {
      font-size: 3.25rem; } }

h2,
.h2 {
  font-size: 2rem; }
  @media (min-width: 1024px) {
    h2,
    .h2 {
      font-size: 2.625rem; } }

h3,
.h3 {
  font-size: 1.75rem; }
  @media (min-width: 1024px) {
    h3,
    .h3 {
      font-size: 2rem; } }

h4,
.h4 {
  font-size: 1.5rem; }
  @media (min-width: 1024px) {
    h4,
    .h4 {
      font-size: 1.75rem; } }

h5,
.h5 {
  font-size: 1.375rem; }
  @media (min-width: 1024px) {
    h5,
    .h5 {
      font-size: 1.5rem; } }

h6,
.h6 {
  font-size: 1.125rem; }
  @media (min-width: 1024px) {
    h6,
    .h6 {
      font-size: 1.375rem; } }

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

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

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

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

blockquote cite {
  color: #8a8a8a; }

/* Components */
/**
 * Header.
 * ----------------------------------------------------------------------------
 */
.header {
  background-color: #000000;
  color: #ffffff;
  position: fixed;
  top: 0;
  width: 100%;
  height: 72px;
  z-index: 10; }

body.admin-bar .header {
  top: 32px; }

.header__inner {
  width: 62.5rem;
  max-width: 100%;
  margin: 0 auto;
  align-items: center;
  display: flex;
  padding: 0 0.9375rem; }
  @media (min-width: 1024px) {
    .header__inner {
      padding: 0; } }

.site-branding {
  padding: 1rem;
  padding-left: 0; }
  .site-branding img {
    height: 40px; }

.main-navigation {
  padding-left: 1rem; }
  .main-navigation ul {
    list-style: none;
    margin: 0;
    padding-left: 0; }
  .main-navigation li {
    color: #fff;
    display: block;
    float: left;
    position: relative;
    text-decoration: none;
    transition-duration: 0.5s; }
  .main-navigation li a {
    display: block;
    text-decoration: none;
    color: #fff;
    padding: 0.5rem 1rem; }
  .main-navigation li.highlighted > a {
    background: #1ea7ba;
    border-radius: 5px;
    margin: 0 1rem; }
  .main-navigation li:hover,
  .main-navigation li:focus-within {
    cursor: pointer; }
  .main-navigation li:focus-within a {
    outline: none; }
  .main-navigation ul li ul {
    background: #000000;
    visibility: hidden;
    opacity: 0;
    min-width: 12.5rem;
    position: absolute;
    transition: all 0.5s ease;
    margin-top: 0;
    left: 0;
    display: none;
    z-index: 3; }
  .main-navigation ul li ul a {
    padding: 1rem; }
  .main-navigation ul li:hover > ul,
  .main-navigation ul li:focus-within > ul,
  .main-navigation ul li ul:hover,
  .main-navigation ul li ul:focus {
    visibility: visible;
    opacity: 1;
    display: block; }
  .main-navigation ul li ul li {
    clear: both;
    width: 100%; }

.icon-navigation {
  margin-left: auto; }
  .icon-navigation a {
    display: inline-block;
    margin-left: 8px;
    text-decoration: none; }
  .icon-navigation img {
    height: 20px; }

.mobile-menu {
  display: none;
  position: fixed;
  z-index: 9;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background-color: #000000;
  color: #ffffff;
  overflow: hidden; }
  .mobile-menu .mobile-menu__inner {
    padding-top: 90px; }
  .mobile-menu ul {
    margin: 0;
    padding: 0;
    list-style-type: none;
    text-align: center; }
  .mobile-menu > ul {
    margin-top: 40px; }
  .mobile-menu li {
    padding-left: 0; }
  .mobile-menu a {
    color: #ffffff;
    text-decoration: none;
    font-size: 1.5rem;
    line-height: 2.6; }
  .mobile-menu ul li ul {
    display: none; }

body.mobile-menu-open .mobile-menu {
  display: block; }

body.mobile-menu-open #open-mobile-menu {
  display: none; }

body:not(.mobile-menu-open) #close-mobile-menu {
  display: none; }

.site-content {
  padding-top: 72px; }
  .site-content a:not(.wp-block-button__link) {
    color: #000000;
    font-weight: bold; }

body.page .site-content, body.blog .site-content, body.category .site-content, body.woocommerce .site-content {
  margin-top: 2.8125rem; }

body.page.home .site-content {
  margin-top: 0; }

#breadcrumbs {
  font-size: 14px; }

.entry__header {
  width: 37.5rem;
  max-width: 100%;
  margin: 0 auto;
  margin: 2.8125rem auto;
  padding: 0 0.9375rem; }
  @media (min-width: 1024px) {
    .entry__header {
      padding: 0; } }

.entry__content form input[type=checkbox] {
  display: inline; }

.entry__comments {
  width: 37.5rem;
  max-width: 100%;
  margin: 0 auto;
  margin-top: 5.625rem; }
  .entry__comments .comment-form label {
    display: block;
    font-weight: bold; }
  .entry__comments .comment-form .comment-form-cookies-consent input, .entry__comments .comment-form .comment-form-cookies-consent label {
    display: inline; }

.blog__header, .posts-grid {
  width: 62.5rem;
  max-width: 100%;
  margin: 0 auto; }

.blog__header {
  padding: 0 0.9375rem; }
  @media (min-width: 1024px) {
    .blog__header {
      padding: 0; } }

.entry__image {
  position: relative;
  width: 100%;
  height: 200px;
  overflow: hidden;
  display: flex;
  align-items: center; }
  @media (min-width: 1024px) {
    .entry__image {
      height: 280px; } }

.entry--grid {
  max-width: 450px;
  margin: 32px 0; }
  @media (min-width: 1024px) {
    .entry--grid {
      max-width: none; } }
  .entry--grid h2 {
    margin: 8px 0;
    font-size: 2rem;
    line-height: 1.2;
    font-weight: normal; }
    .entry--grid h2 a {
      color: #000000;
      text-decoration: none; }

.entry__meta {
  display: flex;
  flex-wrap: nowrap;
  font-size: 0.875rem; }
  .entry__meta > * {
    padding-right: 8px; }
  .entry__meta ul, .entry__meta li {
    padding: 0;
    margin: 0;
    display: inline;
    list-style-type: none; }
    .entry__meta ul a, .entry__meta li a {
      color: #1ea7ba; }
  .entry__meta li {
    padding-right: 1rem; }

.grecaptcha-badge {
  visibility: hidden; }

/**
 * Footer.
 * ----------------------------------------------------------------------------
 */
.footer {
  margin-top: 2.8125rem;
  position: relative;
  padding: 2rem 0 12rem;
  background-color: #000000;
  color: #ffffff; }
  @media (min-width: 1024px) {
    .footer {
      padding-bottom: 14rem; } }
  .footer .widget {
    margin: 1.40625rem 0; }
    @media (min-width: 1024px) {
      .footer .widget {
        margin: 2.8125rem 0; } }
  .footer .widget__title {
    font-family: "Mulhouse", "Helvetica", sans-serif;
    font-size: 2rem;
    font-weight: 700; }
  .footer ul {
    list-style-type: none;
    padding: 0;
    margin: 0; }
  .footer a {
    color: #ffffff;
    text-decoration: none; }
    .footer a:hover {
      text-decoration: underline; }

.footer__inner {
  width: 62.5rem;
  max-width: 100%;
  margin: 0 auto; }

.footer__column {
  padding: 0 2.8125rem; }
  @media (min-width: 1024px) {
    .footer__column {
      padding: 0 0.9375rem; } }
  .footer__column img {
    margin: 2.8125rem 0;
    max-width: 50%; }
    @media (min-width: 1024px) {
      .footer__column img {
        max-width: 60%; } }

.footer__visual {
  position: absolute;
  left: 0;
  bottom: 0; }
  .footer__visual img {
    width: auto;
    height: 200px; }
    @media (min-width: 1024px) {
      .footer__visual img {
        height: 300px; } }
    @media (min-width: 1200px) {
      .footer__visual img {
        height: 380px; } }

.visual {
  position: fixed;
  bottom: -10px;
  pointer-events: none; }
  .visual img {
    width: auto;
    height: 150px; }
    @media (min-width: 1024px) {
      .visual img {
        height: 200px; } }
    @media (min-width: 1200px) {
      .visual img {
        height: 300px; } }

.visual--bottom-left {
  left: 0; }

.visual--bottom-right {
  right: 0; }

/**
 * Button.
 * ----------------------------------------------------------------------------
 */
.button {
  display: inline-block;
  vertical-align: middle;
  font: inherit;
  text-align: center;
  cursor: pointer;
  padding: 0.5rem 1rem;
  transition: all 0.5s cubic-bezier(0, 0.6, 0.7, 1);
  text-decoration: none;
  color: #1ea7ba;
  border: 2px solid #1ea7ba; }
  .button:hover, .button:focus {
    color: #ffffff;
    background-color: #1ea7ba; }

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

input[type='text'],
input[type='email'],
input[type='password'],
input[type='number'] {
  border-radius: 5px; }

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

/**
 * Checkbox and radio
 */
input[type='checkbox'],
input[type='radio'] {
  box-sizing: border-box;
  padding: 0;
  display: block;
  margin-right: 0.25rem;
  margin-top: 2px;
  clear: both; }

/**
 * Buttons
 */
button:not(.gm-control-active),
input[type='button'],
input[type='reset'],
input[type='submit']:not(#wpsl-search-btn),
.button,
.btn,
.wp-block-button__link,
.is-style-circular .wp-block-button__link {
  cursor: pointer;
  border-radius: 5px !important;
  padding: 1rem 1.5rem !important;
  font-size: 1.125rem !important;
  font-weight: 600 !important; }

.wpsl-wrap button {
  padding: 0 !important; }

/**
 * Select with dropdown marker
 */
select {
  background: #ffffff;
  border: 1px solid #e6e6e6;
  width: 100%;
  padding: 10px 15px;
  border-radius: 0;
  box-sizing: border-box;
  appearance: none;
  -moz-appearance: none;
  -webkit-appearance: none;
  background-image: linear-gradient(45deg, transparent 50%, #e6e6e6 50%), linear-gradient(135deg, #e6e6e6 50%, transparent 50%), linear-gradient(to right, #e6e6e6, #e6e6e6);
  background-position: calc(100% - 20px) calc(1em + 2px), calc(100% - 15px) calc(1em + 2px), calc(100% - 2.5em) 0.5em;
  background-size: 5px 5px, 5px 5px, 1px 1.5em;
  background-repeat: no-repeat; }

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

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

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

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

.newsletter-overlay {
  z-index: 11;
  display: none;
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background-color: rgba(74, 74, 74, 0.5); }

.newsletter-modal {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 90%;
  padding: 20px;
  background-color: #000000;
  background-repeat: no-repeat;
  background-size: cover;
  background-position: center center;
  filter: drop-shadow(10px 10px 2px rgba(0, 0, 0, 0.5)); }
  .newsletter-modal .newsletter-modal__content p {
    color: #ffffff;
    font-size: 0.875rem;
    font-weight: bold; }
    @media (min-width: 1024px) {
      .newsletter-modal .newsletter-modal__content p {
        font-size: 1.125rem; } }
  .newsletter-modal .newsletter-modal__content p.newsletter-modal__title {
    font-size: 2rem;
    font-family: "Mulhouse", "Helvetica", sans-serif;
    font-weight: 700;
    line-height: 1.2; }
    @media (min-width: 1024px) {
      .newsletter-modal .newsletter-modal__content p.newsletter-modal__title {
        font-size: 3.25rem; } }
  .newsletter-modal button.newsletter-modal__close {
    padding: 0 !important;
    position: absolute;
    right: -15px;
    top: -15px;
    height: 40px;
    width: 40px;
    border-radius: 50% !important;
    background-color: #ffffff;
    color: #000000;
    line-height: 1;
    font-weight: bold !important;
    font-size: 1.5rem !important;
    text-align: center;
    border: #000000 solid 4px; }
    .newsletter-modal button.newsletter-modal__close:hover {
      color: #000000;
      background-color: #ffffff; }
  @media (min-width: 1024px) {
    .newsletter-modal {
      max-width: 600px;
      padding: 60px 40px; } }

.newsletter-form input[type=email] {
  padding: 0.5rem;
  font-size: 1rem;
  line-height: 1;
  width: 100%;
  text-align: center;
  margin-bottom: 8px; }
  @media (min-width: 1024px) {
    .newsletter-form input[type=email] {
      padding: 1rem;
      font-size: 1.125rem;
      text-align: left;
      margin-bottom: 0;
      width: auto; } }

.newsletter-form input[type=submit]:not(#wpsl-search-btn) {
  padding: 0.5rem 0.75rem !important;
  background-color: #1ea7ba;
  color: #ffffff;
  width: 100%;
  text-align: center; }
  @media (min-width: 1024px) {
    .newsletter-form input[type=submit]:not(#wpsl-search-btn) {
      padding: 1rem 1.5rem !important;
      text-align: left;
      width: auto; } }

.newsletter-form__feedback {
  display: none;
  border: #ffae00 solid 3px;
  padding: 10px;
  color: #ffffff; }
  .newsletter-form__feedback.success {
    border-color: #3adb76; }

.lds-dual-ring {
  display: block;
  width: 30px;
  height: 30px; }

.lds-dual-ring:after {
  content: " ";
  display: block;
  width: 24px;
  height: 24px;
  margin: 0 8px;
  border-radius: 50%;
  border: 4px solid #fff;
  border-color: #fff transparent #fff transparent;
  animation: lds-dual-ring 1.2s linear infinite; }

@keyframes lds-dual-ring {
  0% {
    transform: rotate(0deg); }
  100% {
    transform: rotate(360deg); } }

.newsletter-form__loader {
  display: none; }

/* Gutenberg */
/* Gutenberg setup */
/**
 * Blocks base
 * ----------------------------------------------------------------------------
 */
.entry__content {
  padding-left: 0.9375rem;
  padding-right: 0.9375rem;
  margin-left: auto;
  margin-right: auto; }
  .entry__content > * {
    max-width: 37.5rem;
    margin-left: auto;
    margin-right: auto; }
    .entry__content > *.alignwide {
      max-width: 62.5rem; }
    .entry__content > *.alignfull {
      max-width: calc(100% + calc(0.9375rem * 2));
      margin-left: calc(0.9375rem * -1);
      margin-right: calc(0.9375rem * -1); }
  .entry__content > ul li,
  .entry__content > ol li {
    margin-left: 1rem; }
  .entry__content > * + *,
  .entry__content .wp-block-group > * + *,
  .entry__content .wp-block-group__inner-container > * + * {
    margin: 2.8125rem auto; }
    .entry__content > * + *:last-child,
    .entry__content .wp-block-group > * + *:last-child,
    .entry__content .wp-block-group__inner-container > * + *:last-child {
      margin-bottom: 0; }

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

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

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

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

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

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

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

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

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

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

.wp-block-button__link.has-black-background-color {
  background-color: #000000;
  border-color: #000000; }
  .wp-block-button__link.has-black-background-color:hover, .wp-block-button__link.has-black-background-color:focus {
    color: #000000;
    background-color: #ffffff; }

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

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

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

.wp-block-button__link.has-white-background-color {
  background-color: #ffffff;
  border-color: #ffffff; }
  .wp-block-button__link.has-white-background-color:hover, .wp-block-button__link.has-white-background-color:focus {
    color: #ffffff;
    background-color: #ffffff; }

.has-primary-background-color {
  background-color: #1ea7ba; }

.has-primary-color {
  color: #1ea7ba; }

.has-primary-text-color {
  color: #1ea7ba; }

.wp-block-button__link.has-primary-background-color {
  background-color: #1ea7ba;
  border-color: #1ea7ba; }
  .wp-block-button__link.has-primary-background-color:hover, .wp-block-button__link.has-primary-background-color:focus {
    color: #1ea7ba;
    background-color: #ffffff; }

.has-weed-background-color {
  background-color: #a1c335; }

.has-weed-color {
  color: #a1c335; }

.has-weed-text-color {
  color: #a1c335; }

.wp-block-button__link.has-weed-background-color {
  background-color: #a1c335;
  border-color: #a1c335; }
  .wp-block-button__link.has-weed-background-color:hover, .wp-block-button__link.has-weed-background-color:focus {
    color: #a1c335;
    background-color: #ffffff; }

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

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

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

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

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

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

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

/* WP Blocks */
.wp-block-columns.has-background {
  padding: 3.75rem; }

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

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

.wp-block-coblocks-hero .wp-block-button {
  margin-bottom: 1rem; }
  @media (min-width: 1024px) {
    .wp-block-coblocks-hero .wp-block-button {
      margin-bottom: 0; } }

.wp-block-button__link {
  background-color: #000000;
  color: #ffffff; }

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

.wp-block-latest-posts {
  display: flex;
  flex-wrap: wrap;
  padding: 0;
  background-clip: padding-box; }
  .wp-block-latest-posts li {
    width: 100%;
    margin: 0 !important; }
    @media (min-width: 1024px) {
      .wp-block-latest-posts li {
        flex: 1 0 25%;
        max-width: 25%; } }
  .wp-block-latest-posts a {
    color: #000000;
    text-decoration: none;
    font-weight: bold; }

.is-style-card .wp-block-media-text__content {
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); }

.is-stacked-on-mobile img {
  margin-bottom: 1rem; }
  @media (min-width: 1024px) {
    .is-stacked-on-mobile img {
      margin-bottom: 0; } }

/* CoBlocks */
.wp-block-coblocks-hero__content-wrapper {
  width: 62.5rem;
  max-width: 100%;
  margin: 0 auto;
  text-align: left; }
  .wp-block-coblocks-hero__content-wrapper h1, .wp-block-coblocks-hero__content-wrapper h2, .wp-block-coblocks-hero__content-wrapper h3 {
    line-height: 1.1 !important;
    font-size: 3.75rem !important; }
    @media (min-width: 1024px) {
      .wp-block-coblocks-hero__content-wrapper h1, .wp-block-coblocks-hero__content-wrapper h2, .wp-block-coblocks-hero__content-wrapper h3 {
        font-size: 4.5rem !important; } }

.wp-block-coblocks-hero__inner.has-background:before {
  background-color: inherit;
  bottom: 0;
  content: "";
  left: 0;
  opacity: 0.3;
  position: absolute;
  right: 0;
  top: 0; }
  @media (min-width: 1024px) {
    .wp-block-coblocks-hero__inner.has-background:before {
      content: none; } }

/* Extra classes */
@media (min-width: 1024px) {
  .newsletter-block .mc4wp-form-fields {
    text-align: right; } }

.newsletter-block .mc4wp-response > div {
  margin-top: 1rem;
  text-align: center;
  padding: 1rem;
  border: #ffffff solid 2px; }

.newsletter-block input[type=email] {
  line-height: 38px;
  width: 100%;
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
  margin-top: 1rem; }
  @media (min-width: 1024px) {
    .newsletter-block input[type=email] {
      margin-top: 0; } }

.newsletter-block input[type=submit] {
  width: 100%;
  border-top-left-radius: 0 !important;
  border-top-right-radius: 0 !important; }

.wp-block-contact-form-7-contact-form-selector label {
  font-weight: bold; }

/* Modules */
.wpcf7-form-control-wrap input[type=number] {
  max-width: 70px; }

/* Shared (styles used in both website and editor) */
/* Components */
/**
 * Button.
 * ----------------------------------------------------------------------------
 */
.button {
  display: inline-block;
  vertical-align: middle;
  font: inherit;
  text-align: center;
  cursor: pointer;
  padding: 0.5rem 1rem;
  transition: all 0.5s cubic-bezier(0, 0.6, 0.7, 1);
  text-decoration: none;
  color: #1ea7ba;
  border: 2px solid #1ea7ba; }
  .button:hover, .button:focus {
    color: #ffffff;
    background-color: #1ea7ba; }

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

input[type='text'],
input[type='email'],
input[type='password'],
input[type='number'] {
  border-radius: 5px; }

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

/**
 * Checkbox and radio
 */
input[type='checkbox'],
input[type='radio'] {
  box-sizing: border-box;
  padding: 0;
  display: block;
  margin-right: 0.25rem;
  margin-top: 2px;
  clear: both; }

/**
 * Buttons
 */
button:not(.gm-control-active),
input[type='button'],
input[type='reset'],
input[type='submit']:not(#wpsl-search-btn),
.button,
.btn,
.wp-block-button__link,
.is-style-circular .wp-block-button__link {
  cursor: pointer;
  border-radius: 5px !important;
  padding: 1rem 1.5rem !important;
  font-size: 1.125rem !important;
  font-weight: 600 !important; }

.wpsl-wrap button {
  padding: 0 !important; }

/**
 * Select with dropdown marker
 */
select {
  background: #ffffff;
  border: 1px solid #e6e6e6;
  width: 100%;
  padding: 10px 15px;
  border-radius: 0;
  box-sizing: border-box;
  appearance: none;
  -moz-appearance: none;
  -webkit-appearance: none;
  background-image: linear-gradient(45deg, transparent 50%, #e6e6e6 50%), linear-gradient(135deg, #e6e6e6 50%, transparent 50%), linear-gradient(to right, #e6e6e6, #e6e6e6);
  background-position: calc(100% - 20px) calc(1em + 2px), calc(100% - 15px) calc(1em + 2px), calc(100% - 2.5em) 0.5em;
  background-size: 5px 5px, 5px 5px, 1px 1.5em;
  background-repeat: no-repeat; }

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

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

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

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

/* Modules */
body.woocommerce .entry__header,
body.woocommerce-page .entry__header {
  width: 62.5rem; }

body.woocommerce .entry__content > *,
body.woocommerce-page .entry__content > * {
  max-width: 62.5rem; }

.price {
  color: #000000; }

.woocommerce #respond input#submit.alt, .woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt {
  background-color: #1ea7ba; }

.woocommerce #respond input#submit.alt:hover, .woocommerce a.button.alt:hover, .woocommerce button.button.alt:hover, .woocommerce input.button.alt:hover {
  background-color: #128191; }

.woocommerce-info::before {
  color: #1ea7ba; }

.woocommerce-info {
  border-top-color: #1ea7ba; }

.woocommerce ul.products li.product .price {
  color: #000000; }

.woocommerce ul.products li.product .add_to_cart_button {
  display: none; }

.woocommerce ul.products li.product a img {
  margin-bottom: 0; }

.woocommerce ul.products li.product .woocommerce-loop-category__title, .woocommerce ul.products li.product .woocommerce-loop-product__title, .woocommerce ul.products li.product h3 {
  font-size: 1.75rem;
  font-weight: normal; }

.woocommerce-result-count {
  display: none; }

.woocommerce-ordering {
  display: none; }

.wc-block-grid__product {
  text-align: left; }
  .wc-block-grid__product a {
    color: #000000;
    text-decoration: none; }

.single-product h1 {
  font-size: 2.25rem; }

.single-product .product_meta {
  display: none; }

.single-product p.price,
.single-product span.price {
  font-weight: bold;
  color: #000000 !important; }

.single-product .woocommerce-tabs {
  margin-top: 50px; }
  .single-product .woocommerce-tabs h2 {
    display: none; }

.single-product .woocommerce .quantity .qty {
  line-height: 28px; }

.coupon #coupon_code {
  padding: 1rem 1.5rem !important;
  width: 150px; }

@media (min-width: 1024px) {
  .woocommerce table.shop_table {
    border: 0; }
    .woocommerce table.shop_table th, .woocommerce table.shop_table td {
      padding: 1rem; }
    .woocommerce table.shop_table .actions {
      padding: 1rem 0; } }

.woocommerce-input-wrapper .optional {
  display: none; }

.bundle_form {
  background-color: #eee;
  padding: 8px; }

.bundled_product_title {
  margin-bottom: 4px;
  line-height: 1; }

.bundled_product_title_inner {
  font-family: "Open Sans", "Helvetica", sans-serif;
  font-size: 16px; }

.bundled_product_title_link {
  display: none; }

.bundle_form .price {
  font-size: 16px !important; }

div.bundled_product_summary, .woocommerce div.product.bundled_product_summary {
  margin-bottom: 8px !important;
  padding-bottom: 8px !important; }

.bundled_item_wrap * + .bundled_item_button .quantity, .single-product div.product .bundled_item_wrap * + .bundled_item_button .quantity {
  margin: 0 !important; }

.woocommerce-page div.product div.bundled_product_images, .woocommerce-page #content div.product div.bundled_product_images, .woocommerce div.product div.bundled_product_images, .woocommerce #content div.product div.bundled_product_images {
  width: 15% !important; }

div.bundled_product_summary:not(.thumbnail_hidden) .details {
  width: 85% !important;
  padding: 0 0 0 8px !important; }

.variation-Partof {
  display: none !important; }

.woocommerce-product-details__short-description {
  margin-bottom: 16px; }

#wpsl-checkbox-filter.wpsl-checkbox-3-columns li, .wpsl-custom-checkboxes.wpsl-checkbox-3-columns li {
  width: auto; }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlcyI6WyJzdHlsZS5zY3NzIiwiZ2xvYmFsL19mb250cy5zY3NzIiwic2V0dGluZ3MvX2NvbG9ycy5zY3NzIiwic2V0dGluZ3MvX3NldHRpbmdzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX3V0aWwuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fbWF0aC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL191bml0LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX3ZhbHVlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2RpcmVjdGlvbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19jb2xvci5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19zZWxlY3Rvci5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19mbGV4LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2JyZWFrcG9pbnQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fbWl4aW5zLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX3R5cG9ncmFwaHkuc2NzcyIsInNldHRpbmdzL192YXJpYWJsZXMuc2NzcyIsInNldHRpbmdzL19taXhpbnMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9ub3JtYWxpemUuY3NzL25vcm1hbGl6ZS5jc3MiLCJnbG9iYWwvX3Jlc2V0LnNjc3MiLCJnbG9iYWwvX3ByaW50LnNjc3MiLCJnbG9iYWwvX21lZGlhLnNjc3MiLCJnbG9iYWwvX2dyaWQuc2NzcyIsImdsb2JhbC9fc2NyZWVuLXJlYWRlci10ZXh0LnNjc3MiLCJnbG9iYWwvX2FuaW1hdGlvbnMuc2NzcyIsImdsb2JhbC9fd29yZHByZXNzLnNjc3MiLCJnbG9iYWwvX2dsb2JhbC5zY3NzIiwiZ2xvYmFsL190eXBvZ3JhcGh5LnNjc3MiLCJjb21wb25lbnRzL19oZWFkZXIuc2NzcyIsImNvbXBvbmVudHMvX2NvbnRlbnQuc2NzcyIsImNvbXBvbmVudHMvX2Zvb3Rlci5zY3NzIiwiY29tcG9uZW50cy9fYnV0dG9uLnNjc3MiLCJjb21wb25lbnRzL19mb3Jtcy5zY3NzIiwiY29tcG9uZW50cy9fbmV3c2xldHRlci5zY3NzIiwiZ3V0ZW5iZXJnL19ndXRlbmJlcmcuc2NzcyIsImd1dGVuYmVyZy9fYmFzZS5zY3NzIiwiZ3V0ZW5iZXJnL19jbGFzc2VzLnNjc3MiLCJndXRlbmJlcmcvYmxvY2tzL3dwL193cC1ibG9jay1jb2x1bW5zLnNjc3MiLCJndXRlbmJlcmcvYmxvY2tzL3dwL193cC1ibG9jay1ncm91cC5zY3NzIiwiZ3V0ZW5iZXJnL2Jsb2Nrcy93cC9fd3AtYmxvY2stYnV0dG9uLnNjc3MiLCJndXRlbmJlcmcvYmxvY2tzL3dwL193cC1ibG9jay1jb2RlLnNjc3MiLCJndXRlbmJlcmcvYmxvY2tzL3dwL193cC1ibG9jay1sYXRlc3QtcG9zdHMuc2NzcyIsImd1dGVuYmVyZy9ibG9ja3Mvd3AvX3dwLWJsb2NrLW1lZGlhLXRleHQuc2NzcyIsImd1dGVuYmVyZy9ibG9ja3MvY29ibG9ja3MvX2hlcm8uc2NzcyIsImd1dGVuYmVyZy9ibG9ja3MvX2V4dHJhLWNsYXNzZXMuc2NzcyIsIm1vZHVsZXMvX2NvbnRhY3QtZm9ybS03LnNjc3MiLCJfc2hhcmVkLnNjc3MiLCJtb2R1bGVzL3dvb2NvbW1lcmNlL19nbG9iYWwuc2NzcyIsIm1vZHVsZXMvd29vY29tbWVyY2UvX2FyY2hpdmUuc2NzcyIsIm1vZHVsZXMvd29vY29tbWVyY2UvX2Jsb2Nrcy5zY3NzIiwibW9kdWxlcy93b29jb21tZXJjZS9fcHJvZHVjdC5zY3NzIiwibW9kdWxlcy93b29jb21tZXJjZS9fY2hlY2tvdXQuc2NzcyIsIm1vZHVsZXMvd29vY29tbWVyY2UvX3Byb2R1Y3RfYnVuZGxlcy5zY3NzIiwibW9kdWxlcy9fd3Atc3RvcmUtbG9jYXRvci5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIiRlZGl0b3I6IGZhbHNlO1xuXG4vKiBGb250cyAqL1xuQGltcG9ydCAnZ2xvYmFsL2ZvbnRzJztcblxuLyogU2V0dGluZ3MgKi9cbkBpbXBvcnQgJ3NldHRpbmdzL2NvbG9ycyc7XG5AaW1wb3J0ICdzZXR0aW5ncy9zZXR0aW5ncyc7XG5AaW1wb3J0ICdzZXR0aW5ncy92YXJpYWJsZXMnO1xuQGltcG9ydCAnc2V0dGluZ3MvbWl4aW5zJztcblxuLyogTm9ybWFsaXplICovXG5AaW1wb3J0ICdub3JtYWxpemUnO1xuXG4vKiBHbG9iYWwgKi9cbkBpbXBvcnQgJ2dsb2JhbC9yZXNldCc7XG5AaW1wb3J0ICdnbG9iYWwvcHJpbnQnO1xuQGltcG9ydCAnZ2xvYmFsL21lZGlhJztcbkBpbXBvcnQgJ2dsb2JhbC9ncmlkJztcbkBpbXBvcnQgJ2dsb2JhbC9zY3JlZW4tcmVhZGVyLXRleHQnO1xuQGltcG9ydCAnZ2xvYmFsL2FuaW1hdGlvbnMnO1xuQGltcG9ydCAnZ2xvYmFsL3dvcmRwcmVzcyc7XG5AaW1wb3J0ICdnbG9iYWwvZ2xvYmFsJztcbkBpbXBvcnQgJ2dsb2JhbC90eXBvZ3JhcGh5JztcblxuLyogQ29tcG9uZW50cyAqL1xuQGltcG9ydCAnY29tcG9uZW50cy9oZWFkZXInO1xuQGltcG9ydCAnY29tcG9uZW50cy9jb250ZW50JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZm9vdGVyJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYnV0dG9uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZm9ybXMnO1xuQGltcG9ydCAnY29tcG9uZW50cy9uZXdzbGV0dGVyJztcblxuLyogR3V0ZW5iZXJnICovXG5AaW1wb3J0ICdndXRlbmJlcmcvZ3V0ZW5iZXJnJztcblxuLyogTW9kdWxlcyAqL1xuQGltcG9ydCAnbW9kdWxlcy9jb250YWN0LWZvcm0tNyc7XG5cbi8qIFNoYXJlZCAoc3R5bGVzIHVzZWQgaW4gYm90aCB3ZWJzaXRlIGFuZCBlZGl0b3IpICovXG5AaW1wb3J0ICdzaGFyZWQnO1xuIiwiLyoqXG4gKiBDdXN0b20gZm9udHNcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG4vKiBAaW1wb3J0IG11c3QgYmUgYXQgdG9wIG9mIGZpbGUsIG90aGVyd2lzZSBDU1Mgd2lsbCBub3Qgd29yayAqL1xuQGltcG9ydCB1cmwoJ2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9T3BlbitTYW5zOml0YWwsd2dodEAwLDQwMDswLDYwMDswLDcwMDsxLDQwMDsxLDYwMCZkaXNwbGF5PXN3YXAnKTtcbkBpbXBvcnQgdXJsKFwiLy9oZWxsby5teWZvbnRzLm5ldC9jb3VudC8zY2VmY2FcIik7XG5cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnTXVsaG91c2UnO1xuICAgIHNyYzogdXJsKCdhc3NldHMvZm9udHMvTXVsaG91c2UtUmVndWxhci9mb250LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLCB1cmwoJ2Fzc2V0cy9mb250cy9NdWxob3VzZS1SZWd1bGFyL2ZvbnQud29mZicpIGZvcm1hdCgnd29mZicpO1xuICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbn1cbiIsIi8qKlxuICogQ29sb3Igc2NoZW1lXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuJGNvbG9yLWxpZ2h0LWdyYXk6ICNlNmU2ZTY7XG4kY29sb3ItbWVkaXVtLWdyYXk6ICNjYWNhY2E7XG4kY29sb3ItZGFyay1ncmF5OiAjOGE4YThhO1xuJGNvbG9yLWRhcmtlc3QtZ3JheTogIzRhNGE0YTtcbiRjb2xvci1ibGFjazogIzAwMDAwMDtcbiRjb2xvci13aGl0ZTogI2ZmZmZmZjtcblxuJGNvbG9yLXByaW1hcnk6ICMxZWE3YmE7XG4kY29sb3Itd2VlZDogI2ExYzMzNTtcbiRjb2xvci1zZWNvbmRhcnk6ICM3Njc2NzY7XG4kY29sb3Itc3VjY2VzczogIzNhZGI3NjtcbiRjb2xvci13YXJuaW5nOiAjZmZhZTAwO1xuJGNvbG9yLWFsZXJ0OiAjY2M0YjM3O1xuXG4kY29sb3ItcHJpbWFyeS1ob3ZlcjogIzEyODE5MTtcbiIsIi8qKlxuICogU2V0dGluZ3NcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5AaW1wb3J0ICd1dGlsL3V0aWwnO1xuXG4vKiBHbG9iYWwgKi9cbiRnbG9iYWwtd2lkdGg6IHJlbS1jYWxjKDEyMDApO1xuXG4vKiBCcmVha3BvaW50cyAqL1xuJGJyZWFrcG9pbnRzOiAoXG5cdFx0c21hbGw6IDAsXG5cdFx0bWVkaXVtOiA2NDBweCxcblx0XHRsYXJnZTogMTAyNHB4LFxuXHRcdHhsYXJnZTogMTIwMHB4LFxuXHRcdHh4bGFyZ2U6IDE0NDBweFxuKTtcbiRwcmludC1icmVha3BvaW50OiBsYXJnZTtcbiRicmVha3BvaW50LWNsYXNzZXM6IChzbWFsbCBtZWRpdW0gbGFyZ2UpO1xuXG4vKiBUeXBvZ3JhcGh5ICovXG4kZ2xvYmFsLWZvbnQtc2l6ZTogMTAwJTtcbiRib2R5LWZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0hlbHZldGljYScsIHNhbnMtc2VyaWY7XG4kaGVhZGluZy1mb250LWZhbWlseTogJ011bGhvdXNlJywgJ0hlbHZldGljYScsIHNhbnMtc2VyaWY7XG5cbi8qIFhZIEdyaWQgKi9cbiR4eS1ncmlkOiB0cnVlO1xuJGdyaWQtY29udGFpbmVyOiAkZ2xvYmFsLXdpZHRoO1xuJGdyaWQtY29sdW1uczogMTI7XG4kZ3JpZC1tYXJnaW4tZ3V0dGVyczogcmVtLWNhbGMoMzApO1xuJGdyaWQtcGFkZGluZy1ndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycztcbiRncmlkLWNvbnRhaW5lci1wYWRkaW5nOiAkZ3JpZC1wYWRkaW5nLWd1dHRlcnM7XG4kZ3JpZC1jb250YWluZXItbWF4OiAkZ2xvYmFsLXdpZHRoO1xuJHh5LWJsb2NrLWdyaWQtbWF4OiA4O1xuXG4vKiBHdXRlbmJlcmcgU2V0dGluZ3MgKi9cbiRibG9jay1zcGFjaW5nOiByZW0tY2FsYyg0NSk7XG4kYmxvY2stZ3V0dGVyOiByZW0tY2FsYygxNSk7XG4kYmxvY2std2lkdGg6IHJlbS1jYWxjKDYwMCk7XG4kYmxvY2std2lkdGgtd2lkZTogcmVtLWNhbGMoMTAwMCk7XG5cbi8vIEFjdGlvbnMgPiB0ZHdiX3JlZ2lzdGVyX2NvbG9ycyAoZWRpdG9yLWdyYWRpZW50LXByZXNldHMpXG4kZ3V0ZW5iZXJnLWNvbG9yczogKFxuXHRcdCdibGFjayc6ICRjb2xvci1ibGFjayxcblx0XHQnd2hpdGUnOiAkY29sb3Itd2hpdGUsXG4gICAgICAgICdwcmltYXJ5JzogJGNvbG9yLXByaW1hcnksXG4gICAgICAgICd3ZWVkJzogJGNvbG9yLXdlZWRcbik7XG5cbi8vIEFjdGlvbnMgPiB0ZHdiX3JlZ2lzdGVyX2dyYWRpZW50cyAoZWRpdG9yLWdyYWRpZW50LXByZXNldHMpXG4kZ3V0ZW5iZXJnLWdyYWRpZW50czogKFxuXHRcdCdibGFjay10by13aGl0ZScgJGNvbG9yLWJsYWNrICRjb2xvci13aGl0ZSxcbik7XG5cbi8vIEFjdGlvbnMgPiB0ZHdiX3JlZ2lzdGVyX2VkaXRvcl9mb250X3NpemVzIChlZGl0b3ItZm9udC1zaXplcylcbiRndXRlbmJlcmctZm9udC1zaXplczogKFxuXHRcdCdzbWFsbCc6IHJlbS1jYWxjKDEyKSxcblx0XHQnbm9ybWFsJzogcmVtLWNhbGMoMTYpLFxuXHRcdCdtZWRpdW0nOiByZW0tY2FsYygyMCksXG5cdFx0J2xhcmdlJzogcmVtLWNhbGMoMjQpLFxuXHRcdCdodWdlJzogcmVtLWNhbGMoMzApLFxuXHRcdCdleHRyYS1odWdlJzogcmVtLWNhbGMoMzYpXG4pO1xuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG5AaW1wb3J0ICdtYXRoJztcbkBpbXBvcnQgJ3VuaXQnO1xuQGltcG9ydCAndmFsdWUnO1xuQGltcG9ydCAnZGlyZWN0aW9uJztcbkBpbXBvcnQgJ2NvbG9yJztcbkBpbXBvcnQgJ3NlbGVjdG9yJztcbkBpbXBvcnQgJ2ZsZXgnO1xuQGltcG9ydCAnYnJlYWtwb2ludCc7XG5AaW1wb3J0ICdtaXhpbnMnO1xuQGltcG9ydCAndHlwb2dyYXBoeSc7XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbi8vLyBGaW5kcyB0aGUgZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3Igb2YgdHdvIGludGVnZXJzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRhIC0gRmlyc3QgbnVtYmVyIHRvIGNvbXBhcmUuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiIC0gU2Vjb25kIG51bWJlciB0byBjb21wYXJlLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIGdyZWF0ZXN0IGNvbW1vbiBkaXZpc29yLlxuQGZ1bmN0aW9uIGdjZCgkYSwgJGIpIHtcbiAgLy8gRnJvbTogaHR0cDovL3Jvc2V0dGFjb2RlLm9yZy93aWtpL0dyZWF0ZXN0X2NvbW1vbl9kaXZpc29yI0phdmFTY3JpcHRcbiAgQGlmICgkYiAhPSAwKSB7XG4gICAgQHJldHVybiBnY2QoJGIsICRhICUgJGIpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGFicygkYSk7XG4gIH1cbn1cblxuLy8vIEhhbmRsZXMgZGVjaW1hbCBleHBvbmVudHMgYnkgdHJ5aW5nIHRvIGNvbnZlcnQgdGhlbSBpbnRvIGEgZnJhY3Rpb24gYW5kIHRoZW4gdXNlIGEgbnRoLXJvb3QtYWxnb3JpdGhtIGZvciBwYXJ0cyBvZiB0aGUgY2FsY3VsYXRpb25cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSAtIFRoZSBiYXNlIG51bWJlci5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGV4cG9uZW50IC0gVGhlIGV4cG9uZW50LlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIHByb2R1Y3Qgb2YgdGhlIGV4cG9uZW50aWF0aW9uLlxuQGZ1bmN0aW9uIHBvdygkYmFzZSwgJGV4cG9uZW50LCAkcHJlYzogMTYpIHtcbiAgQGlmIChmbG9vcigkZXhwb25lbnQpICE9ICRleHBvbmVudCkge1xuICAgICRwcmVjMiA6IHBvdygxMCwgJHByZWMpO1xuICAgICRleHBvbmVudDogcm91bmQoJGV4cG9uZW50ICogJHByZWMyKTtcbiAgICAkZGVub21pbmF0b3I6IGdjZCgkZXhwb25lbnQsICRwcmVjMik7XG4gICAgQHJldHVybiBudGgtcm9vdChwb3coJGJhc2UsICRleHBvbmVudCAvICRkZW5vbWluYXRvciksICRwcmVjMiAvICRkZW5vbWluYXRvciwgJHByZWMpO1xuICB9XG5cbiAgJHZhbHVlOiAkYmFzZTtcbiAgQGlmICRleHBvbmVudCA+IDEge1xuICAgIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJGV4cG9uZW50IHtcbiAgICAgICR2YWx1ZTogJHZhbHVlICogJGJhc2U7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRleHBvbmVudCA8IDEge1xuICAgIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggLSRleHBvbmVudCB7XG4gICAgICAkdmFsdWU6ICR2YWx1ZSAvICRiYXNlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuXG5AZnVuY3Rpb24gbnRoLXJvb3QoJG51bSwgJG46IDIsICRwcmVjOiAxMikge1xuICAvLyBGcm9tOiBodHRwOi8vcm9zZXR0YWNvZGUub3JnL3dpa2kvTnRoX3Jvb3QjSmF2YVNjcmlwdFxuICAkeDogMTtcblxuICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRwcmVjIHtcbiAgICAkeDogMSAvICRuICogKCgkbiAtIDEpICogJHggKyAoJG51bSAvIHBvdygkeCwgJG4gLSAxKSkpO1xuICB9XG5cbiAgQHJldHVybiAkeDtcbn1cblxuLy8vIENhbGN1bGF0ZXMgdGhlIGhlaWdodCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIHdpZHRoIGZvciBhIGdpdmVuIHJhdGlvLlxuLy8vIEBwYXJhbSB7TGlzdH0gJHJhdGlvIC0gUmF0aW8gdG8gdXNlIHRvIGNhbGN1bGF0ZSB0aGUgaGVpZ2h0LCBmb3JtYXR0ZWQgYXMgYHggYnkgeWAuXG4vLy8gQHJldHVybiB7TnVtYmVyfSBBIHBlcmNlbnRhZ2UgdmFsdWUgZm9yIHRoZSBoZWlnaHQgcmVsYXRpdmUgdG8gdGhlIHdpZHRoIG9mIGEgcmVzcG9uc2l2ZSBjb250YWluZXIuXG5AZnVuY3Rpb24gcmF0aW8tdG8tcGVyY2VudGFnZSgkcmF0aW8pIHtcbiAgJHc6IG50aCgkcmF0aW8sIDEpO1xuICAkaDogbnRoKCRyYXRpbywgMyk7XG4gIEByZXR1cm4gJGggLyAkdyAqIDEwMCU7XG59XG5cbi8vLyBQYXJzZSB0aGUgZ2l2ZW4gYCRmcmFjdGlvbmAgdG8gbnVtZXJhdG9ycyBhbmQgZGVudW1lcmF0b3JzLlxuLy8vXG4vLy8gQHBhcmFtIHsqfSAkZnJhY3Rpb24gLSBWYWx1ZSByZXByZXNlbnRpbmcgYSBmcmFjdGlvbiB0byBwYXJzZS4gSXQgY2FuIGJlIGZvcm1hdHRlZCBhcyBgNTAlYCwgYDEgb2YgMmAsIGAxLzJgIG9yIGA1MGAgKG5vIGRlbm9taW5hdG9yIHdvdWxkIGJlIHJldHVybmVkKS5cbi8vL1xuLy8vIEByZXR1cm4ge0xpc3R9IExpc3Qgb2YgcGFyc2VkIHZhbHVlcyB3aXRoIG51bWVyYXRvciBhdCBmaXJzdCBwb3NpdGlvbiBhbmQgZGVudW1lcmF0b3IgYXMgc2Vjb25kLiBUaGVzZSB2YWx1ZXMgbWF5IGJlIG51bGwuXG5AZnVuY3Rpb24gemYtcGFyc2UtZnJhY3Rpb24oJGZyYWN0aW9uKSB7XG5cbiAgQGlmIHR5cGUtb2YoJGZyYWN0aW9uKSA9PSAnbnVtYmVyJyB7XG4gICAgLy8gXCI1MCVcIlxuICAgIEBpZiB1bml0KCRmcmFjdGlvbikgPT0gJyUnIHtcbiAgICAgIEByZXR1cm4gKHN0cmlwLXVuaXQoJGZyYWN0aW9uKSwgMTAwKTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKHVuaXQoJGZyYWN0aW9uKSA9PSAnJykge1xuICAgICAgLy8gXCIwLjVcIlxuICAgICAgQGlmICRmcmFjdGlvbiA8IDEge1xuICAgICAgICBAcmV0dXJuICgkZnJhY3Rpb24gKiAxMDAsIDEwMCk7XG4gICAgICB9XG4gICAgICAvLyBcIjUwXCJcbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQHJldHVybiAoJGZyYWN0aW9uLCBudWxsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiB0eXBlLW9mKCRmcmFjdGlvbikgPT0gJ2xpc3QnIHtcbiAgICAvLyBcIjUwIG9mIDEwMFwiLCBcIjUwLzEwMFwiLi4uXG4gICAgQGlmIGxlbmd0aCgkZnJhY3Rpb24pID09IDNcbiAgICAgIGFuZCB0eXBlLW9mKG50aCgkZnJhY3Rpb24sIDEpID09ICdudW1iZXInKVxuICAgICAgYW5kIHR5cGUtb2YobnRoKCRmcmFjdGlvbiwgMykgPT0gJ251bWJlcicpIHtcbiAgICAgIEByZXR1cm4gKG50aCgkZnJhY3Rpb24sIDEpLCBudGgoJGZyYWN0aW9uLCAzKSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAobnVsbCwgbnVsbCk7XG59XG5cbi8vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIGAkdmFsdWVgIHJlcHJlc2VudHMgYSBmcmFjdGlvbi4gU3VwcG9ydHMgZm9ybWF0cyBsaWtlIGA1MCVgLCBgMSBvZiAyYCwgYDEgcGVyIDJgIG9yIGAxLzJgLlxuLy8vXG4vLy8gQHBhcmFtIHsqfSAkdmFsdWUgLSBWYWx1ZSB0byB0ZXN0LlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGFsbG93LW5vLWRlbm9taW5hdG9yIFtmYWxzZV0gLSBJZiBgdHJ1ZWAsIHNpbXBsZSBudW1iZXJzIHdpdGhvdXQgZGVub21pbmF0b3JzIGxpa2UgYDUwYCBhcmUgc3VwcG9ydGVkLlxuLy8vXG4vLy8gQHJldHVybiB7Qm9vbGVhbn0gYHRydWVgIGlmIGAkdmFsdWVgIHJlcHJlc2VudHMgYSBmcmFjdGlvbiwgYGZhbHNlYCBvdGhlcndpc2UuXG5AZnVuY3Rpb24gemYtaXMtZnJhY3Rpb24oJHZhbHVlLCAkYWxsb3ctbm8tZGVub21pbmF0b3I6IGZhbHNlKSB7XG4gICRwYXJzZWQ6IHpmLXBhcnNlLWZyYWN0aW9uKCR2YWx1ZSk7XG4gIEByZXR1cm4gbm90KG50aCgkcGFyc2VkLCAxKSA9PSBudWxsXG4gICAgb3IgKG50aCgkcGFyc2VkLCAyKSA9PSBudWxsIGFuZCAkYWxsb3ctbm8tZGVub21pbmF0b3IgPT0gZmFsc2UpKTtcbn1cblxuLy8vIENhbGN1bGF0ZSBhIHBlcmNlbnRhZ2UgZnJvbSBhIGdpdmVuIGZyYWN0aW9uLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJGZyYWN0aW9uIC0gVmFsdWUgcmVwcmVzZW50aW5nIGEgZnJhY3Rpb24gdG8gdXNlIHRvIGNhbGN1bGF0ZSB0aGUgcGVyY2VudGFnZSwgZm9ybWF0dGVkIGFzIGA1MGAgKHJlbGF0aXZlIHRvIGAkZGVub21pbmF0b3JgKSwgYDUwJWAsIGAxIG9mIDJgIG9yIGAxLzJgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICRkZW5vbWluYXRvciAtIERlZmF1bHQgdmFsdWUgdG8gdXNlIGFzIGRlbm9taW5hdG9yIHdoZW4gYCRmcmFjdGlvbmAgcmVwcmVzZW50cyBhbiBhYnNvbHV0ZSB2YWx1ZS5cbkBmdW5jdGlvbiBmcmFjdGlvbi10by1wZXJjZW50YWdlKFxuICAkZnJhY3Rpb24sXG4gICRkZW5vbWluYXRvcjogbnVsbFxuKSB7XG4gICRwYXJzZWQ6IHpmLXBhcnNlLWZyYWN0aW9uKCRmcmFjdGlvbik7XG4gICRwYXJzZWQtbm9taW5hdG9yOiBudGgoJHBhcnNlZCwgMSk7XG4gICRwYXJzZWQtZGVub21pbmF0b3I6IG50aCgkcGFyc2VkLCAyKTtcblxuICBAaWYgJHBhcnNlZC1ub21pbmF0b3IgPT0gbnVsbCB7XG4gICAgQGVycm9yICdXcm9uZyBzeW50YXggZm9yIFwiZnJhY3Rpb24tdG8tcGVyY2VudGFnZSgpXCIuIFVzZSBhIG51bWJlciwgZGVjaW1hbCwgcGVyY2VudGFnZSwgb3IgXCJuIG9mIG5cIiAvIFwibi9uXCIuJztcbiAgfVxuICBAaWYgJHBhcnNlZC1kZW5vbWluYXRvciA9PSBudWxsIHtcbiAgICBAaWYgdHlwZS1vZigkZGVub21pbmF0b3IpID09ICdudW1iZXInIHtcbiAgICAgICRwYXJzZWQtZGVub21pbmF0b3I6ICRkZW5vbWluYXRvcjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGVycm9yICdFcnJvciB3aXRoIFwiZnJhY3Rpb24tdG8tcGVyY2VudGFnZSgpXCIuIEEgZGVmYXVsdCBcIiRkZW5vbWluYXRvclwiIGlzIHJlcXVpcmVkIHRvIHN1cHBvcnQgYWJzb2x1dGUgdmFsdWVzJztcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIHBlcmNlbnRhZ2UoJHBhcnNlZC1ub21pbmF0b3IgLyAkcGFyc2VkLWRlbm9taW5hdG9yKTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuJGdsb2JhbC1mb250LXNpemU6IDEwMCUgIWRlZmF1bHQ7XG5cbi8vLyBSZW1vdmVzIHRoZSB1bml0IChlLmcuIHB4LCBlbSwgcmVtKSBmcm9tIGEgdmFsdWUsIHJldHVybmluZyB0aGUgbnVtYmVyIG9ubHkuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bSAtIE51bWJlciB0byBzdHJpcCB1bml0IGZyb20uXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgc2FtZSBudW1iZXIsIHNhbnMgdW5pdC5cbkBmdW5jdGlvbiBzdHJpcC11bml0KCRudW0pIHtcbiAgQHJldHVybiAkbnVtIC8gKCRudW0gKiAwICsgMSk7XG59XG5cbi8vLyBDb252ZXJ0cyBvbmUgb3IgbW9yZSBwaXhlbCB2YWx1ZXMgaW50byBtYXRjaGluZyByZW0gdmFsdWVzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJHZhbHVlcyAtIE9uZSBvciBtb3JlIHZhbHVlcyB0byBjb252ZXJ0LiBCZSBzdXJlIHRvIHNlcGFyYXRlIHRoZW0gd2l0aCBzcGFjZXMgYW5kIG5vdCBjb21tYXMuIElmIHlvdSBuZWVkIHRvIGNvbnZlcnQgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCwgd3JhcCB0aGUgbGlzdCBpbiBwYXJlbnRoZXNlcy5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhc2UgW251bGxdIC0gVGhlIGJhc2UgdmFsdWUgdG8gdXNlIHdoZW4gY2FsY3VsYXRpbmcgdGhlIGByZW1gLiBJZiB5b3UncmUgdXNpbmcgRm91bmRhdGlvbiBvdXQgb2YgdGhlIGJveCwgdGhpcyBpcyAxNnB4LiBJZiB0aGlzIHBhcmFtZXRlciBpcyBgbnVsbGAsIHRoZSBmdW5jdGlvbiB3aWxsIHJlZmVyZW5jZSB0aGUgYCRnbG9iYWwtZm9udC1zaXplYCB2YXJpYWJsZSBhcyB0aGUgYmFzZS5cbi8vL1xuLy8vIEByZXR1cm5zIHtMaXN0fSBBIGxpc3Qgb2YgY29udmVydGVkIHZhbHVlcy5cbkBmdW5jdGlvbiByZW0tY2FsYygkdmFsdWVzLCAkYmFzZTogbnVsbCkge1xuICAkcmVtLXZhbHVlczogKCk7XG4gICRjb3VudDogbGVuZ3RoKCR2YWx1ZXMpO1xuXG4gIC8vIElmIG5vIGJhc2UgaXMgZGVmaW5lZCwgZGVmZXIgdG8gdGhlIGdsb2JhbCBmb250IHNpemVcbiAgQGlmICRiYXNlID09IG51bGwge1xuICAgICRiYXNlOiAkZ2xvYmFsLWZvbnQtc2l6ZTtcbiAgfVxuXG4gIC8vIElmIHRoZSBiYXNlIGZvbnQgc2l6ZSBpcyBhICUsIHRoZW4gbXVsdGlwbHkgaXQgYnkgMTZweFxuICAvLyBUaGlzIGlzIGJlY2F1c2UgMTAwJSBmb250IHNpemUgPSAxNnB4IGluIG1vc3QgYWxsIGJyb3dzZXJzXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAnJScge1xuICAgICRiYXNlOiAoJGJhc2UgLyAxMDAlKSAqIDE2cHg7XG4gIH1cblxuICAvLyBVc2luZyByZW0gYXMgYmFzZSBhbGxvd3MgY29ycmVjdCBzY2FsaW5nXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAncmVtJyB7XG4gICAgJGJhc2U6IHN0cmlwLXVuaXQoJGJhc2UpICogMTZweDtcbiAgfVxuXG4gIEBpZiAkY291bnQgPT0gMSB7XG4gICAgQHJldHVybiAtemYtdG8tcmVtKCR2YWx1ZXMsICRiYXNlKTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGNvdW50IHtcbiAgICAkcmVtLXZhbHVlczogYXBwZW5kKCRyZW0tdmFsdWVzLCAtemYtdG8tcmVtKG50aCgkdmFsdWVzLCAkaSksICRiYXNlKSk7XG4gIH1cblxuICBAcmV0dXJuICRyZW0tdmFsdWVzO1xufVxuXG4vLyBDb252ZXJ0cyBhIHVuaXRsZXNzLCBwaXhlbCwgb3IgcmVtIHZhbHVlIHRvIGVtLCBmb3IgdXNlIGluIGJyZWFrcG9pbnRzLlxuQGZ1bmN0aW9uIC16Zi1icC10by1lbSgkdmFsdWUpIHtcbiAgLy8gUGl4ZWwgYW5kIHVuaXRsZXNzIHZhbHVlcyBhcmUgY29udmVydGVkIHRvIHJlbXNcbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAncHgnIG9yIHVuaXRsZXNzKCR2YWx1ZSkge1xuICAgICR2YWx1ZTogcmVtLWNhbGMoJHZhbHVlLCAkYmFzZTogMTZweCk7XG4gIH1cblxuICAvLyBUaGVuIHRoZSB2YWx1ZSBpcyBjb252ZXJ0ZWQgdG8gZW1zXG4gIEByZXR1cm4gc3RyaXAtdW5pdCgkdmFsdWUpICogMWVtO1xufVxuXG4vLy8gQ29udmVydHMgYSBwaXhlbCB2YWx1ZSB0byBtYXRjaGluZyByZW0gdmFsdWUuICpBbnkqIHZhbHVlIHBhc3NlZCwgcmVnYXJkbGVzcyBvZiB1bml0LCBpcyBhc3N1bWVkIHRvIGJlIGEgcGl4ZWwgdmFsdWUuIEJ5IGRlZmF1bHQsIHRoZSBiYXNlIHBpeGVsIHZhbHVlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSByZW0gdmFsdWUgaXMgdGFrZW4gZnJvbSB0aGUgYCRnbG9iYWwtZm9udC1zaXplYCB2YXJpYWJsZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdmFsdWUgLSBQaXhlbCB2YWx1ZSB0byBjb252ZXJ0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSBbbnVsbF0gLSBCYXNlIGZvciBwaXhlbCBjb252ZXJzaW9uLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gQSBudW1iZXIgaW4gcmVtcywgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgZ2l2ZW4gdmFsdWUgYW5kIHRoZSBiYXNlIHBpeGVsIHZhbHVlLiByZW0gdmFsdWVzIGFyZSBwYXNzZWQgdGhyb3VnaCBhcyBpcy5cbkBmdW5jdGlvbiAtemYtdG8tcmVtKCR2YWx1ZSwgJGJhc2U6IG51bGwpIHtcbiAgLy8gQ2hlY2sgaWYgdGhlIHZhbHVlIGlzIGEgbnVtYmVyXG4gIEBpZiB0eXBlLW9mKCR2YWx1ZSkgIT0gJ251bWJlcicge1xuICAgIEB3YXJuIGluc3BlY3QoJHZhbHVlKSArICcgd2FzIHBhc3NlZCB0byByZW0tY2FsYygpLCB3aGljaCBpcyBub3QgYSBudW1iZXIuJztcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfVxuXG4gIC8vIFRyYW5zZm9ybSBlbSBpbnRvIHJlbSBpZiBzb21lb25lIGhhbmRzIG92ZXIgJ2VtJ3NcbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnZW0nIHtcbiAgICAkdmFsdWU6IHN0cmlwLXVuaXQoJHZhbHVlKSAqIDFyZW07XG4gIH1cblxuICAvLyBDYWxjdWxhdGUgcmVtIGlmIHVuaXRzIGZvciAkdmFsdWUgaXMgbm90IHJlbSBvciBlbVxuICBAaWYgdW5pdCgkdmFsdWUpICE9ICdyZW0nIHtcbiAgICAkdmFsdWU6IHN0cmlwLXVuaXQoJHZhbHVlKSAvIHN0cmlwLXVuaXQoJGJhc2UpICogMXJlbTtcbiAgfVxuXG4gIC8vIFR1cm4gMHJlbSBpbnRvIDBcbiAgQGlmICR2YWx1ZSA9PSAwcmVtIHtcbiAgICAkdmFsdWU6IDA7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cblxuLy8vIENvbnZlcnRzIGEgcGl4ZWwsIHBlcmNlbnRhZ2UsIHJlbSBvciBlbSB2YWx1ZSB0byBhIHVuaXRsZXNzIHZhbHVlIGJhc2VkIG9uIGEgZ2l2ZW4gZm9udCBzaXplLiBJZGVhbCBmb3Igd29ya2luZyBvdXQgdW5pdGxlc3MgbGluZSBoZWlnaHRzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZSAtIFZhbHVlIHRvIGNvbnZlcnQgdG8gYSB1bml0bGVzcyBsaW5lIGhlaWdodFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSAtIFRoZSBmb250IHNpemUgdG8gdXNlIHRvIHdvcmsgb3V0IHRoZSBsaW5lIGhlaWdodCAtIGRlZmF1bHRzIHRvICRnbG9iYWwtZm9udC1zaXplXG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IC0gVW5pdGxlc3MgbnVtYmVyXG5AZnVuY3Rpb24gdW5pdGxlc3MtY2FsYygkdmFsdWUsICRiYXNlOiBudWxsKSB7XG5cbiAgLy8gSWYgbm8gYmFzZSBpcyBkZWZpbmVkLCBkZWZlciB0byB0aGUgZ2xvYmFsIGZvbnQgc2l6ZVxuICBAaWYgJGJhc2UgPT0gbnVsbCB7XG4gICAgJGJhc2U6ICRnbG9iYWwtZm9udC1zaXplO1xuICB9XG5cbiAgLy8gRmlyc3QsIGxldHMgY29udmVydCBvdXIgJGJhc2UgdG8gcGl4ZWxzXG5cbiAgLy8gSWYgdGhlIGJhc2UgZm9udCBzaXplIGlzIGEgJSwgdGhlbiBtdWx0aXBseSBpdCBieSAxNnB4XG4gIEBpZiB1bml0KCRiYXNlKSA9PSAnJScge1xuICAgICRiYXNlOiAoJGJhc2UgLyAxMDAlKSAqIDE2cHg7XG4gIH1cblxuICBAaWYgdW5pdCgkYmFzZSkgPT0gJ3JlbScge1xuICAgICRiYXNlOiBzdHJpcC11bml0KCRiYXNlKSAqIDE2cHg7XG4gIH1cblxuICBAaWYgdW5pdCgkYmFzZSkgPT0gJ2VtJyB7XG4gICAgJGJhc2U6IHN0cmlwLXVuaXQoJGJhc2UpICogMTZweDtcbiAgfVxuXG4gIC8vIE5vdyBsZXQncyBjb252ZXJ0IG91ciB2YWx1ZSB0byBwaXhlbHMgdG9vXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJyUnIHtcbiAgICAkdmFsdWU6ICgkdmFsdWUgLyAxMDAlKSAqICRiYXNlO1xuICB9XG5cbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAncmVtJyB7XG4gICAgJHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgKiAkYmFzZTtcbiAgfVxuXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ2VtJyB7XG4gICAgJHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgKiAkYmFzZTtcbiAgfVxuXG4gIC8vICdweCdcbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAncHgnIHtcbiAgICBAcmV0dXJuIHN0cmlwLXVuaXQoJHZhbHVlKSAvIHN0cmlwLXVuaXQoJGJhc2UpO1xuICB9XG5cbiAgLy8gYXNzdW1lIHRoYXQgbGluZS1oZWlnaHRzIGdyZWF0ZXIgdGhhbiAxMCBhcmUgbWVhbnQgdG8gYmUgYWJzb2x1dGUgaW4gJ3B4J1xuICBAaWYgdW5pdGxlc3MoJHZhbHVlKSBhbmQgKCR2YWx1ZSA+IDEwKSB7XG4gICAgQHJldHVybiAkdmFsdWUgLyBzdHJpcC11bml0KCRiYXNlKTtcbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4vLy8gRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgbm90IGZhbHNleSwgaW4gQ1NTIHRlcm1zLiBGYWxzZXkgdmFsdWVzIGFyZSBgbnVsbGAsIGBub25lYCwgYDBgIHdpdGggYW55IHVuaXQsIG9yIGFuIGVtcHR5IGxpc3QuXG4vLy9cbi8vLyBAcGFyYW0ge01peGVkfSAkdmFsIC0gVmFsdWUgdG8gY2hlY2suXG4vLy9cbi8vLyBAcmV0dXJucyB7Qm9vbGVhbn0gYHRydWVgIGlmIGAkdmFsYCBpcyBub3QgZmFsc2V5LlxuQGZ1bmN0aW9uIGhhcy12YWx1ZSgkdmFsKSB7XG4gIEBpZiAkdmFsID09IG51bGwgb3IgJHZhbCA9PSBub25lIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG4gIEBpZiB0eXBlLW9mKCR2YWwpID09ICdudW1iZXInIGFuZCBzdHJpcC11bml0KCR2YWwpID09IDAge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbiAgQGlmIHR5cGUtb2YoJHZhbCkgPT0gJ2xpc3QnIGFuZCBsZW5ndGgoJHZhbCkgPT0gMCB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxuICBAcmV0dXJuIHRydWU7XG59XG5cbi8vLyBEZXRlcm1pbmUgYSB0b3AvcmlnaHQvYm90dG9tL3JpZ2h0IHZhbHVlIG9uIGEgcGFkZGluZywgbWFyZ2luLCBldGMuIHByb3BlcnR5LCBubyBtYXR0ZXIgaG93IG1hbnkgdmFsdWVzIHdlcmUgcGFzc2VkIGluLiBVc2UgdGhpcyBmdW5jdGlvbiBpZiB5b3UgbmVlZCB0byBrbm93IHRoZSBzcGVjaWZpYyBzaWRlIG9mIGEgdmFsdWUsIGJ1dCBkb24ndCBrbm93IGlmIHRoZSB2YWx1ZSBpcyB1c2luZyBhIHNob3J0aGFuZCBmb3JtYXQuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R8TnVtYmVyfSAkdmFsIC0gVmFsdWUgdG8gYW5hbHl6ZS4gU2hvdWxkIGJlIGEgc2hvcnRoYW5kIHNpemluZyBwcm9wZXJ0eSwgZS5nLiBcIjFlbSAyZW0gMWVtXCJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaWRlIC0gU2lkZSB0byByZXR1cm4uIFNob3VsZCBiZSBgdG9wYCwgYHJpZ2h0YCwgYGJvdHRvbWAsIG9yIGBsZWZ0YC5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IEEgc2luZ2xlIHZhbHVlIGJhc2VkIG9uIGAkdmFsYCBhbmQgYCRzaWRlYC5cbkBmdW5jdGlvbiBnZXQtc2lkZSgkdmFsLCAkc2lkZSkge1xuICAkbGVuZ3RoOiBsZW5ndGgoJHZhbCk7XG5cbiAgQGlmICRsZW5ndGggPT0gMSB7XG4gICAgQHJldHVybiAkdmFsO1xuICB9XG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgIEByZXR1cm4gbWFwLWdldCgoXG4gICAgICB0b3A6IG50aCgkdmFsLCAxKSxcbiAgICAgIGJvdHRvbTogbnRoKCR2YWwsIDEpLFxuICAgICAgbGVmdDogbnRoKCR2YWwsIDIpLFxuICAgICAgcmlnaHQ6IG50aCgkdmFsLCAyKSxcbiAgICApLCAkc2lkZSk7XG4gIH1cbiAgQGlmICRsZW5ndGggPT0gMyB7XG4gICAgQHJldHVybiBtYXAtZ2V0KChcbiAgICAgIHRvcDogbnRoKCR2YWwsIDEpLFxuICAgICAgbGVmdDogbnRoKCR2YWwsIDIpLFxuICAgICAgcmlnaHQ6IG50aCgkdmFsLCAyKSxcbiAgICAgIGJvdHRvbTogbnRoKCR2YWwsIDMpLFxuICAgICksICRzaWRlKTtcbiAgfVxuICBAaWYgJGxlbmd0aCA9PSA0IHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoKFxuICAgICAgdG9wOiBudGgoJHZhbCwgMSksXG4gICAgICByaWdodDogbnRoKCR2YWwsIDIpLFxuICAgICAgYm90dG9tOiBudGgoJHZhbCwgMyksXG4gICAgICBsZWZ0OiBudGgoJHZhbCwgNCksXG4gICAgKSwgJHNpZGUpO1xuICB9XG59XG5cbi8vLyBHaXZlbiBib3JkZXIgJHZhbCwgZmluZCBhIHNwZWNpZmljIGVsZW1lbnQgb2YgdGhlIGJvcmRlciwgd2hpY2ggaXMgJGVsZW0uIFRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yICRlbGVtIGFyZSB3aWR0aCwgc3R5bGUsIGFuZCBjb2xvci5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHZhbCAtIEJvcmRlciB2YWx1ZSB0byBmaW5kIGEgdmFsdWUgaW4uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZWxlbSAtIEJvcmRlciBjb21wb25lbnQgdG8gZXh0cmFjdC5cbi8vL1xuLy8vIEByZXR1cm5zIHtNaXhlZH0gSWYgdGhlIHZhbHVlIGV4aXN0cywgcmV0dXJucyB0aGUgdmFsdWUuIElmIHRoZSB2YWx1ZSBpcyBub3QgaW4gdGhlIGJvcmRlciBkZWZpbml0aW9uLCB0aGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gYSAwcHggd2lkdGgsIHNvbGlkIHN0eWxlLCBvciBibGFjayBib3JkZXIuXG5AZnVuY3Rpb24gZ2V0LWJvcmRlci12YWx1ZSgkdmFsLCAkZWxlbSkge1xuICAvLyBGaW5kIHRoZSB3aWR0aCwgc3R5bGUsIG9yIGNvbG9yIGFuZCByZXR1cm4gaXRcbiAgQGVhY2ggJHYgaW4gJHZhbCB7XG4gICAgJHR5cGU6IHR5cGUtb2YoJHYpO1xuICAgIEBpZiAkZWxlbSA9PSB3aWR0aCBhbmQgJHR5cGUgPT0gJ251bWJlcicge1xuICAgICAgQHJldHVybiAkdjtcbiAgICB9XG4gICAgQGlmICRlbGVtID09IHN0eWxlIGFuZCAkdHlwZSA9PSAnc3RyaW5nJyB7XG4gICAgICBAcmV0dXJuICR2O1xuICAgIH1cbiAgICBAaWYgJGVsZW0gPT0gY29sb3IgYW5kICR0eXBlID09ICdjb2xvcicge1xuICAgICAgQHJldHVybiAkdjtcbiAgICB9XG4gIH1cblxuICAvLyBEZWZhdWx0c1xuICAkZGVmYXVsdHM6IChcbiAgICB3aWR0aDogMCxcbiAgICBzdHlsZTogc29saWQsXG4gICAgY29sb3I6ICMwMDAsXG4gICk7XG5cbiAgQHJldHVybiBtYXAtZ2V0KCRkZWZhdWx0cywgJGVsZW0pO1xufVxuXG4vLy8gRmluZHMgYSB2YWx1ZSBpbiBhIG5lc3RlZCBtYXAuXG4vLy8gQGxpbmsgaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9zbmlwcGV0cy9zYXNzL2RlZXAtZ2V0c2V0LW1hcHMvIERlZXAgR2V0L1NldCBpbiBNYXBzXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byBwdWxsIGEgdmFsdWUgZnJvbS5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGtleXMuLi4gLSBLZXlzIHRvIHVzZSB3aGVuIGxvb2tpbmcgZm9yIGEgdmFsdWUuXG4vLy8gQHJldHVybnMge01peGVkfSBUaGUgdmFsdWUgZm91bmQgaW4gdGhlIG1hcC5cbkBmdW5jdGlvbiBtYXAtZGVlcC1nZXQoJG1hcCwgJGtleXMuLi4pIHtcbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgJG1hcDogbWFwLWdldCgkbWFwLCAka2V5KTtcbiAgfVxuICBAcmV0dXJuICRtYXA7XG59XG5cbi8vLyBDYXN0cyBhIG1hcCBpbnRvIGEgbGlzdC5cbi8vLyBAbGluayBodHRwOi8vaHVnb2dpcmF1ZGVsLmNvbS8yMDE0LzA0LzI4L2Nhc3RpbmctbWFwLWludG8tbGlzdC9cbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHB1bGwgYSB2YWx1ZSBmcm9tLlxuLy8vXG4vLy8gQHJldHVybnMge0xpc3R9IERlcGVuZGluZyBvbiB0aGUgZmxhZywgcmV0dXJucyBlaXRoZXIgJGtleXMgb3IgJHZhbHVlcyBvciBib3RoLlxuQGZ1bmN0aW9uIG1hcC10by1saXN0KCRtYXAsICRrZWVwOiAnYm90aCcpIHtcbiAgJGtlZXA6IGlmKGluZGV4KCdrZXlzJyAndmFsdWVzJywgJGtlZXApLCAka2VlcCwgJ2JvdGgnKTtcblxuICBAaWYgdHlwZS1vZigkbWFwKSA9PSAnbWFwJyB7XG4gICAgJGtleXM6ICgpO1xuICAgICR2YWx1ZXM6ICgpO1xuXG4gICAgQGVhY2ggJGtleSwgJHZhbCBpbiAkbWFwIHtcbiAgICAgICRrZXlzOiBhcHBlbmQoJGtleXMsICRrZXkpO1xuICAgICAgJHZhbHVlczogYXBwZW5kKCR2YWx1ZXMsICR2YWwpO1xuICAgIH1cblxuICAgIEBpZiAka2VlcCA9PSAna2V5cycge1xuICAgICAgQHJldHVybiAka2V5cztcbiAgICB9XG4gICAgQGVsc2UgaWYgJGtlZXAgPT0gJ3ZhbHVlcycge1xuICAgICAgQHJldHVybiAkdmFsdWVzO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuIHppcCgka2V5cywgJHZhbHVlcyk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBpZih0eXBlLW9mKCRtYXApICE9ICdsaXN0JywgKCR2YWx1ZSwpLCAkbWFwKTtcblxufVxuXG4vLy8gUmV0dXJuIGEgam9pbiBvZiB0aGUgdHdvIGdpdmVuIHN0cmluZ3MgYCRzdHIxYCBhbmQgYCRzdHIyYC5cbi8vLyBJZiB0aGUgdHdvIHN0cmluZ3MgYXJlIG5vdCBlbXB0eSwgdGhleSBhcmUgc2VwYXJhdGVkIGJ5IGAkZGVsaW1pdGVyYC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3RyMSBbbnVsbF0gLSBGaXJzdCBzdHJpbmcgdG8gam9pbi5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN0cjEgW251bGxdIC0gU2Vjb25kIHN0cmluZyB0byBqb2luLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZGVsaW1pdGVyIFtudWxsXSAtIERlbGltaWV0ZXIgYmV0d2VlbiBgJHN0cjFgIGFuZCBgJHN0cjJgLlxuLy8vXG4vLy8gQHJldHVybnMge1N0cmluZ30gSm9pbiBvZiBgJHN0cjFgLCBgJGRlbGltaXRlcmAgYW5kIGAkc3RyMmAuXG5AZnVuY3Rpb24gemYtc3RyLWpvaW4oXG4gICRzdHIxOiBudWxsLFxuICAkc3RyMjogbnVsbCxcbiAgJGRlbGltaXRlcjogbnVsbFxuKSB7XG4gICRyZXQ6ICcnO1xuXG4gIEBpZiAkc3RyMSBhbmQgc3RyLWxlbmd0aCgkc3RyMSkgPiAwIHtcbiAgICAkcmV0OiAkcmV0ICsgJHN0cjE7XG5cbiAgICBAaWYgJGRlbGltaXRlciBhbmQgc3RyLWxlbmd0aCgkZGVsaW1pdGVyKSA+IDAgYW5kICRzdHIyIGFuZCBzdHItbGVuZ3RoKCRzdHIyKSA+IDAge1xuICAgICAgJHJldDogJHJldCArICRkZWxpbWl0ZXI7XG4gICAgfVxuICB9XG4gIEBpZiAkc3RyMiBhbmQgc3RyLWxlbmd0aCgkc3RyMikgPiAwIHtcbiAgICAkcmV0OiAkcmV0ICsgJHN0cjI7XG4gIH1cblxuICBAcmV0dXJuICRyZXQ7XG59XG5cbi8vLyBTYWZlbHkgcmV0dXJuIGEgdmFsdWUgZnJvbSBhIG1hcC5cbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHJldHJpZXZlIGEgdmFsdWUgZnJvbS5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGtleSAtIE5hbWUgb2YgdGhlIG1hcCBrZXkuXG4vLy9cbi8vLyBAcmV0dXJucyB7TGlzdH0gRm91bmQgdmFsdWUuXG5AZnVuY3Rpb24gbWFwLXNhZmUtZ2V0KCRtYXAsICRrZXkpIHtcbiAgQGlmICh0eXBlLW9mKCRtYXApID09ICdtYXAnIG9yICh0eXBlLW9mKCRtYXApID09ICdsaXN0JyBhbmQgbGVuZ3RoKCRtYXApID09IDApKSB7XG4gICAgQGlmIChtYXAtaGFzLWtleSgkbWFwLCAka2V5KSkge1xuICAgICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsICRrZXkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAZXJyb3IgJ0tleTogYCN7JGtleX1gIGlzIG5vdCBhdmFpbGFibGUgaW4gYCN7JG1hcH1gJztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBlcnJvciAnYCN7JG1hcH1gIGlzIG5vdCBhIHZhbGlkIG1hcCc7XG4gIH1cbn1cblxuLy8vIENvbnZlcnQgdGhlIGdpdmVuIGAkdmFsYCB0byBhIEJvb2xlYW4uIEVtcHR5IHZhbHVlcyBhcmUgY29uc2lkZXJlZCBhcyBmYWxzZS5cbi8vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7Kn0gJHZhbCAtIFZhbHVlIHRvIGNvbnZlcnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7Qm9vbGVhbn0gQ29udmVydGVkIEJvb2xlYW4gdmFsdWUuXG5AZnVuY3Rpb24gLXpmLWJvb2woJHZhbCkge1xuICBAcmV0dXJuICR2YWwgIT0gZmFsc2UgYW5kIGhhcy12YWx1ZSgkdmFsKTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuLy8vIFJldHVybnMgdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiBvZiAkZGlyXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXIgLSBVc2VkIGRpcmVjdGlvbiBiZXR3ZWVuIFwidG9wXCIsIFwicmlnaHRcIiwgXCJib3R0b21cIiBhbmQgXCJsZWZ0XCIuXG4vLy8gQHJldHVybiB7S2V5d29yZH0gT3Bwb3NpdGUgZGlyZWN0aW9uIG9mICRkaXJcbkBmdW5jdGlvbiBkaXJlY3Rpb24tb3Bwb3NpdGUoXG4gICRkaXJcbikge1xuICAkZGlyczogKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7XG4gICRwbGFjZTogaW5kZXgoJGRpcnMsICRkaXIpO1xuXG4gIEBpZiAkcGxhY2UgPT0gbnVsbCB7XG4gICAgQGVycm9yICdkaXJlY3Rpb24tb3Bwb3NpdGU6IEludmFsaWQgJGRpciBwYXJhbWV0ZXIsIGV4cGVjdGVkIGEgdmFsdWUgZnJvbSBcIiN7JGRpcnN9XCIsIGZvdW5kIFwiI3skZGlyfVwiLic7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gQ2FsY3VsYXRlIHRoZSBvcHBvc2l0ZSBwbGFjZSBpbiBhIGNpcmNsZSwgd2l0aCBhIHN0YXJ0aW5nIGluZGV4IG9mIDFcbiAgJGxlbmd0aDogbGVuZ3RoKCRkaXJzKTtcbiAgJGRlbWk6ICRsZW5ndGggLyAyO1xuICAkb3Bwb3NpdGUtcGxhY2U6ICgoJHBsYWNlICsgJGRlbWkgLSAxKSAlICRsZW5ndGgpICsgMTtcblxuICBAcmV0dXJuIG50aCgkZGlycywgJG9wcG9zaXRlLXBsYWNlKTtcbn1cblxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG5AaW1wb3J0ICdtYXRoJztcblxuJGNvbnRyYXN0LXdhcm5pbmdzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4vLy8gQ2hlY2tzIHRoZSBsdW1pbmFuY2Ugb2YgYCRjb2xvcmAuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBDb2xvciB0byBjaGVjayB0aGUgbHVtaW5hbmNlIG9mLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIGx1bWluYW5jZSBvZiBgJGNvbG9yYC5cbkBmdW5jdGlvbiBjb2xvci1sdW1pbmFuY2UoJGNvbG9yKSB7XG4gIC8vIEFkYXB0ZWQgZnJvbTogaHR0cHM6Ly9naXRodWIuY29tL0xlYVZlcm91L2NvbnRyYXN0LXJhdGlvL2Jsb2IvZ2gtcGFnZXMvY29sb3IuanNcbiAgLy8gRm9ybXVsYTogaHR0cDovL3d3dy53My5vcmcvVFIvMjAwOC9SRUMtV0NBRzIwLTIwMDgxMjExLyNyZWxhdGl2ZWx1bWluYW5jZWRlZlxuICAkcmdiYTogcmVkKCRjb2xvciksIGdyZWVuKCRjb2xvciksIGJsdWUoJGNvbG9yKTtcbiAgJHJnYmEyOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIDMge1xuICAgICRyZ2I6IG50aCgkcmdiYSwgJGkpO1xuICAgICRyZ2I6ICRyZ2IgLyAyNTU7XG5cbiAgICAkcmdiOiBpZigkcmdiIDwgMC4wMzkyOCwgJHJnYiAvIDEyLjkyLCBwb3coKCRyZ2IgKyAwLjA1NSkgLyAxLjA1NSwgMi40KSk7XG5cbiAgICAkcmdiYTI6IGFwcGVuZCgkcmdiYTIsICRyZ2IpO1xuICB9XG5cbiAgQHJldHVybiAwLjIxMjYgKiBudGgoJHJnYmEyLCAxKSArIDAuNzE1MiAqIG50aCgkcmdiYTIsIDIpICsgMC4wNzIyICogbnRoKCRyZ2JhMiwgMyk7XG59XG5cbi8vLyBDaGVja3MgdGhlIGNvbnRyYXN0IHJhdGlvIG9mIHR3byBjb2xvcnMuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IxIC0gRmlyc3QgY29sb3IgdG8gY29tcGFyZS5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IyIC0gU2Vjb25kIGNvbG9yIHRvIGNvbXBhcmUuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgY29udHJhc3QgcmF0aW8gb2YgdGhlIGNvbXBhcmVkIGNvbG9ycy5cbkBmdW5jdGlvbiBjb2xvci1jb250cmFzdCgkY29sb3IxLCAkY29sb3IyKSB7XG4gIC8vIEFkYXB0ZWQgZnJvbTogaHR0cHM6Ly9naXRodWIuY29tL0xlYVZlcm91L2NvbnRyYXN0LXJhdGlvL2Jsb2IvZ2gtcGFnZXMvY29sb3IuanNcbiAgLy8gRm9ybXVsYTogaHR0cDovL3d3dy53My5vcmcvVFIvMjAwOC9SRUMtV0NBRzIwLTIwMDgxMjExLyNjb250cmFzdC1yYXRpb2RlZlxuICAkbHVtaW5hbmNlMTogY29sb3ItbHVtaW5hbmNlKCRjb2xvcjEpICsgMC4wNTtcbiAgJGx1bWluYW5jZTI6IGNvbG9yLWx1bWluYW5jZSgkY29sb3IyKSArIDAuMDU7XG4gICRyYXRpbzogJGx1bWluYW5jZTEgLyAkbHVtaW5hbmNlMjtcblxuICBAaWYgJGx1bWluYW5jZTIgPiAkbHVtaW5hbmNlMSB7XG4gICAgJHJhdGlvOiAxIC8gJHJhdGlvO1xuICB9XG5cbiAgJHJhdGlvOiByb3VuZCgkcmF0aW8gKiAxMCkgLyAxMDtcblxuICBAcmV0dXJuICRyYXRpbztcbn1cblxuLy8vIENoZWNrcyB0aGUgbHVtaW5hbmNlIG9mIGAkYmFzZWAsIGFuZCByZXR1cm5zIHRoZSBjb2xvciBmcm9tIGAkY29sb3JzYCAobGlzdCBvZiBjb2xvcnMpIHRoYXQgaGFzIHRoZSBtb3N0IGNvbnRyYXN0LlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhc2UgLSBDb2xvciB0byBjaGVjayBsdW1pbmFuY2UuXG4vLy8gQHBhcmFtIHtMaXN0fSAkY29sb3JzIFsoJHdoaXRlLCAkYmxhY2spXSAtIENvbG9ycyB0byBjb21wYXJlLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdG9sZXJhbmNlIFskZ2xvYmFsLWNvbG9yLXBpY2stY29udHJhc3QtdG9sZXJhbmNlXSAtIENvbnRyYXN0IHRvbGVyYW5jZS5cbi8vL1xuLy8vIEByZXR1cm5zIHtDb2xvcn0gdGhlIGNvbG9yIGZyb20gYCRjb2xvcnNgIChsaXN0IG9mIGNvbG9ycykgdGhhdCBoYXMgdGhlIG1vc3QgY29udHJhc3QuXG5AZnVuY3Rpb24gY29sb3ItcGljay1jb250cmFzdCgkYmFzZSwgJGNvbG9yczogKCR3aGl0ZSwgJGJsYWNrKSwgJHRvbGVyYW5jZTogJGdsb2JhbC1jb2xvci1waWNrLWNvbnRyYXN0LXRvbGVyYW5jZSkge1xuICAkY29udHJhc3Q6IGNvbG9yLWNvbnRyYXN0KCRiYXNlLCBudGgoJGNvbG9ycywgMSkpO1xuICAkYmVzdDogbnRoKCRjb2xvcnMsIDEpO1xuXG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggbGVuZ3RoKCRjb2xvcnMpIHtcbiAgICAkY3VycmVudC1jb250cmFzdDogY29sb3ItY29udHJhc3QoJGJhc2UsIG50aCgkY29sb3JzLCAkaSkpO1xuICAgIEBpZiAoJGN1cnJlbnQtY29udHJhc3QgLSAkY29udHJhc3QgPiAkdG9sZXJhbmNlKSB7XG4gICAgICAkY29udHJhc3Q6IGNvbG9yLWNvbnRyYXN0KCRiYXNlLCBudGgoJGNvbG9ycywgJGkpKTtcbiAgICAgICRiZXN0OiBudGgoJGNvbG9ycywgJGkpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAoJGNvbnRyYXN0LXdhcm5pbmdzIGFuZCAkY29udHJhc3QgPCAzKSB7XG4gICAgQHdhcm4gXCJDb250cmFzdCByYXRpbyBvZiAjeyRiZXN0fSBvbiAjeyRiYXNlfSBpcyBwcmV0dHkgYmFkLCBqdXN0ICN7JGNvbnRyYXN0fVwiO1xuICB9XG5cbiAgQHJldHVybiAkYmVzdDtcbn1cblxuLy8vIFNjYWxlcyBhIGNvbG9yIHRvIGJlIGRhcmtlciBpZiBpdCdzIGxpZ2h0LCBvciBsaWdodGVyIGlmIGl0J3MgZGFyay4gVXNlIHRoaXMgZnVuY3Rpb24gdG8gdGludCBhIGNvbG9yIGFwcHJvcHJpYXRlIHRvIGl0cyBsaWdodG5lc3MuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBDb2xvciB0byBzY2FsZS5cbi8vLyBAcGFyYW0ge1BlcmNlbnRhZ2V9ICRzY2FsZSBbNSVdIC0gQW1vdW50IHRvIHNjYWxlIHVwIG9yIGRvd24uXG4vLy8gQHBhcmFtIHtQZXJjZW50YWdlfSAkdGhyZXNob2xkIFs0MCVdIC0gVGhyZXNob2xkIG9mIGxpZ2h0bmVzcyB0byBjaGVjayBhZ2FpbnN0LlxuLy8vXG4vLy8gQHJldHVybnMge0NvbG9yfSBBIHNjYWxlZCBjb2xvci5cbkBmdW5jdGlvbiBzbWFydC1zY2FsZSgkY29sb3IsICRzY2FsZTogNSUsICR0aHJlc2hvbGQ6IDQwJSkge1xuICBAaWYgbGlnaHRuZXNzKCRjb2xvcikgPiAkdGhyZXNob2xkIHtcbiAgICAkc2NhbGU6IC0kc2NhbGU7XG4gIH1cbiAgQHJldHVybiBzY2FsZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICRzY2FsZSk7XG59XG5cbi8vLyBHZXQgY29sb3IgZnJvbSBmb3VuZGF0aW9uLXBhbGV0dGVcbi8vL1xuLy8vIEBwYXJhbSB7a2V5fSBjb2xvciBrZXkgZnJvbSBmb3VuZGF0aW9uLXBhbGV0dGVcbi8vL1xuLy8vIEByZXR1cm5zIHtDb2xvcn0gY29sb3IgZnJvbSBmb3VuZGF0aW9uLXBhbGV0dGVcbkBmdW5jdGlvbiBnZXQtY29sb3IoJGtleSkge1xuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgJGtleSkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCAka2V5KTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGVycm9yICdnaXZlbiAka2V5IGlzIG5vdCBhdmFpbGFibGUgaW4gJGZvdW5kYXRpb24tcGFsZXR0ZSc7XG4gIH1cbn1cblxuLy8vIFRyYW5zZmVycyB0aGUgY29sb3JzIGluIHRoZSBgJGZvdW5kYXRpb24tcGFsZXR0ZWAgbWFwIGludG8gdmFyaWFibGVzLCBzdWNoIGFzIGAkcHJpbWFyeS1jb2xvcmAgYW5kIGAkc2Vjb25kYXJ5LWNvbG9yYC4gQ2FsbCB0aGlzIG1peGluIGJlbG93IHRoZSBHbG9iYWwgc2VjdGlvbiBvZiB5b3VyIHNldHRpbmdzIGZpbGUgdG8gcHJvcGVybHkgbWlncmF0ZSB5b3VyIGNvZGViYXNlLlxuQG1peGluIGFkZC1mb3VuZGF0aW9uLWNvbG9ycygpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHByaW1hcnkpIHtcbiAgICAkcHJpbWFyeS1jb2xvcjogbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCBwcmltYXJ5KSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkcHJpbWFyeS1jb2xvcjogIzE3NzliYSAhZ2xvYmFsO1xuICB9XG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCBzZWNvbmRhcnkpIHtcbiAgICAkc2Vjb25kYXJ5LWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHNlY29uZGFyeSkgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJHNlY29uZGFyeS1jb2xvcjogIzc2NzY3NiAhZ2xvYmFsO1xuICB9XG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCBzdWNjZXNzKSB7XG4gICAgJHN1Y2Nlc3MtY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgc3VjY2VzcykgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJHN1Y2Nlc3MtY29sb3I6ICMzYWRiNzYgIWdsb2JhbDtcbiAgfVxuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgd2FybmluZykge1xuICAgICR3YXJuaW5nLWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHdhcm5pbmcpICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICR3YXJuaW5nLWNvbG9yOiAjZmZhZTAwICFnbG9iYWw7XG4gIH1cbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIGFsZXJ0KSB7XG4gICAgJGFsZXJ0LWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIGFsZXJ0KSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkYWxlcnQtY29sb3I6ICNjYzRiMzcgIWdsb2JhbDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4vLy8gR2VuZXJhdGVzIGEgc2VsZWN0b3Igd2l0aCBldmVyeSB0ZXh0IGlucHV0IHR5cGUuIFlvdSBjYW4gYWxzbyBmaWx0ZXIgdGhlIGxpc3QgdG8gb25seSBvdXRwdXQgYSBzdWJzZXQgb2YgdGhvc2Ugc2VsZWN0b3JzLlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fEtleXdvcmR9ICR0eXBlcyBbKCldIC0gQSBsaXN0IG9mIHRleHQgaW5wdXQgdHlwZXMgdG8gdXNlLiBMZWF2ZSBibGFuayB0byB1c2UgYWxsIG9mIHRoZW0uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkbW9kaWZpZXIgWycnXSAtIEEgbW9kaWZpZXIgdG8gYmUgYXBwbGllZCB0byBlYWNoIHRleHQgaW5wdXQgdHlwZSAoZS5nLiBhIGNsYXNzIG9yIGEgcHNldWRvLWNsYXNzKS4gTGVhdmUgYmxhbmsgdG8gaWdub3JlLlxuQGZ1bmN0aW9uIHRleHQtaW5wdXRzKCR0eXBlczogKCksICRtb2RpZmllcjogJycpIHtcbiAgJHJldHVybjogKCk7XG5cbiAgJGFsbC10eXBlczpcbiAgICB0ZXh0XG4gICAgcGFzc3dvcmRcbiAgICBkYXRlXG4gICAgZGF0ZXRpbWVcbiAgICBkYXRldGltZS1sb2NhbFxuICAgIG1vbnRoXG4gICAgd2Vla1xuICAgIGVtYWlsXG4gICAgbnVtYmVyXG4gICAgc2VhcmNoXG4gICAgdGVsXG4gICAgdGltZVxuICAgIHVybFxuICAgIGNvbG9yO1xuXG4gIEBpZiBub3QgaGFzLXZhbHVlKCR0eXBlcykge1xuICAgICR0eXBlczogJGFsbC10eXBlcztcbiAgfVxuXG4gIEBlYWNoICR0eXBlIGluICR0eXBlcyB7XG4gICAgJHJldHVybjogYXBwZW5kKCRyZXR1cm4sIHVucXVvdGUoJ1t0eXBlPVxcJyN7JHR5cGV9XFwnXSN7JG1vZGlmaWVyfScpLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCJAZnVuY3Rpb24gLXpmLWZsZXgtanVzdGlmeSgkdGV4dC1kaXJlY3Rpb24pe1xuICAkLXpmLWZsZXgtanVzdGlmeTogKFxuICAgICdsZWZ0JzogaWYoJHRleHQtZGlyZWN0aW9uID09IHJ0bCwgZmxleC1lbmQsIGZsZXgtc3RhcnQpLFxuICAgICdyaWdodCc6IGlmKCR0ZXh0LWRpcmVjdGlvbiA9PSBydGwsIGZsZXgtc3RhcnQsIGZsZXgtZW5kKSxcbiAgICAnY2VudGVyJzogY2VudGVyLFxuICAgICdqdXN0aWZ5Jzogc3BhY2UtYmV0d2VlbixcbiAgICAnc3BhY2VkJzogc3BhY2UtYXJvdW5kLFxuICApO1xuXG4gIEByZXR1cm4gJC16Zi1mbGV4LWp1c3RpZnk7XG59XG5cblxuJC16Zi1mbGV4LWFsaWduOiAoXG4gICd0b3AnOiBmbGV4LXN0YXJ0LFxuICAnYm90dG9tJzogZmxleC1lbmQsXG4gICdtaWRkbGUnOiBjZW50ZXIsXG4gICdzdHJldGNoJzogc3RyZXRjaCxcbik7XG5cbiQtemYtZmxleC1kaXJlY3Rpb246IChcbiAgJ3Jvdyc6IHJvdyxcbiAgJ3Jvdy1yZXZlcnNlJzogcm93LXJldmVyc2UsXG4gICdjb2x1bW4nOiBjb2x1bW4sXG4gICdjb2x1bW4tcmV2ZXJzZSc6IGNvbHVtbi1yZXZlcnNlLFxuKTtcblxuLy8vIEVuYWJsZXMgZmxleGJveCBieSBhZGRpbmcgYGRpc3BsYXk6IGZsZXhgIHRvIHRoZSBlbGVtZW50LlxuQG1peGluIGZsZXgge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuXG4vLy8gSG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkgYWxpZ25zIHRoZSBpdGVtcyB3aXRoaW4gYSBmbGV4IGNvbnRhaW5lci5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHggW251bGxdIC0gSG9yaXpvbnRhbCBhbGlnbm1lbnQgdG8gdXNlLiBDYW4gYmUgYGxlZnRgLCBgcmlnaHRgLCBgY2VudGVyYCwgYGp1c3RpZnlgLCBvciBgc3BhY2VkYC4gT3IsIHNldCBpdCB0byBgbnVsbGAgKHRoZSBkZWZhdWx0KSB0byBub3Qgc2V0IGhvcml6b250YWwgYWxpZ25tZW50LlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHkgW251bGxdIC0gVmVydGljYWwgYWxpZ25tZW50IHRvIHVzZS4gQ2FuIGJlIGB0b3BgLCBgYm90dG9tYCwgYG1pZGRsZWAsIG9yIGBzdHJldGNoYC4gT3IsIHNldCBpdCB0byBgbnVsbGAgKHRoZSBkZWZhdWx0KSB0byBub3Qgc2V0IHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiBmbGV4LWFsaWduKCR4OiBudWxsLCAkeTogbnVsbCkge1xuICBAaWYgJHgge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkLXpmLWZsZXgtanVzdGlmeSwgJHgpIHtcbiAgICAgICR4OiBtYXAtZ2V0KCQtemYtZmxleC1qdXN0aWZ5LCAkeCk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICdmbGV4LWdyaWQtcm93LWFsaWduKCk6ICN7JHh9IGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciBob3Jpem9udGFsIGFsaWdubWVudC4gVXNlIGxlZnQsIHJpZ2h0LCBjZW50ZXIsIGp1c3RpZnksIG9yIHNwYWNlZC4nO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkeSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCQtemYtZmxleC1hbGlnbiwgJHkpIHtcbiAgICAgICR5OiBtYXAtZ2V0KCQtemYtZmxleC1hbGlnbiwgJHkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAnZmxleC1ncmlkLXJvdy1hbGlnbigpOiAjeyR5fSBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgdmVydGljYWwgYWxpZ25tZW50LiBVc2UgdG9wLCBib3R0b20sIG1pZGRsZSwgb3Igc3RyZXRjaC4nO1xuICAgIH1cbiAgfVxuXG4gIGp1c3RpZnktY29udGVudDogJHg7XG4gIGFsaWduLWl0ZW1zOiAkeTtcbn1cblxuLy8vIFZlcnRpY2FsbHkgYWxpZ24gYSBzaW5nbGUgY29sdW1uIHdpdGhpbiBhIGZsZXggcm93LiBBcHBseSB0aGlzIG1peGluIHRvIGEgZmxleCBjb2x1bW4uXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR5IFtudWxsXSAtIFZlcnRpY2FsIGFsaWdubWVudCB0byB1c2UuIENhbiBiZSBgdG9wYCwgYGJvdHRvbWAsIGBtaWRkbGVgLCBvciBgc3RyZXRjaGAuIE9yLCBzZXQgaXQgdG8gYG51bGxgICh0aGUgZGVmYXVsdCkgdG8gbm90IHNldCB2ZXJ0aWNhbCBhbGlnbm1lbnQuXG5AbWl4aW4gZmxleC1hbGlnbi1zZWxmKCR5OiBudWxsKSB7XG4gIEBpZiAkeSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCQtemYtZmxleC1hbGlnbiwgJHkpIHtcbiAgICAgICR5OiBtYXAtZ2V0KCQtemYtZmxleC1hbGlnbiwgJHkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAnZmxleC1ncmlkLWNvbHVtbi1hbGlnbigpOiAjeyR5fSBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgYWxpZ25tZW50LiBVc2UgdG9wLCBib3R0b20sIG1pZGRsZSwgb3Igc3RyZXRjaC4nO1xuICAgIH1cbiAgfVxuXG4gIGFsaWduLXNlbGY6ICR5O1xufVxuXG4vLy8gQ2hhbmdlcyB0aGUgc291cmNlIG9yZGVyIG9mIGEgZmxleCBjaGlsZC4gQ2hpbGRyZW4gd2l0aCBsb3dlciBudW1iZXJzIGFwcGVhciBmaXJzdCBpbiB0aGUgbGF5b3V0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkb3JkZXIgWzBdIC0gT3JkZXIgbnVtYmVyIHRvIGFwcGx5LlxuQG1peGluIGZsZXgtb3JkZXIoJG9yZGVyOiAwKSB7XG4gIG9yZGVyOiAkb3JkZXI7XG59XG5cbi8vLyBDaGFuZ2UgZmxleC1kaXJlY3Rpb25cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXJlY3Rpb24gW3Jvd10gLSBGbGV4IGRpcmVjdGlvbiB0byB1c2UuIENhbiBiZVxuLy8vICAgLSByb3cgKGRlZmF1bHQpOiBzYW1lIGFzIHRleHQgZGlyZWN0aW9uXG4vLy8gICAtIHJvdy1yZXZlcnNlOiBvcHBvc2l0ZSB0byB0ZXh0IGRpcmVjdGlvblxuLy8vICAgLSBjb2x1bW46IHNhbWUgYXMgcm93IGJ1dCB0b3AgdG8gYm90dG9tXG4vLy8gICAtIGNvbHVtbi1yZXZlcnNlOiBzYW1lIGFzIHJvdy1yZXZlcnNlIHRvcCB0byBib3R0b21cbkBtaXhpbiBmbGV4LWRpcmVjdGlvbigkZGlyZWN0aW9uOiByb3cpIHtcbiAgZmxleC1kaXJlY3Rpb246ICRkaXJlY3Rpb247XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYnJlYWtwb2ludHNcbi8vLy9cblxuLy8vIEEgbGlzdCBvZiBuYW1lZCBicmVha3BvaW50cy4gWW91IGNhbiB1c2UgdGhlc2Ugd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdG8gcXVpY2tseSBjcmVhdGUgbWVkaWEgcXVlcmllcy5cbi8vLyBAdHlwZSBNYXBcbiRicmVha3BvaW50czogKFxuICBzbWFsbDogMCxcbiAgbWVkaXVtOiA2NDBweCxcbiAgbGFyZ2U6IDEwMjRweCxcbiAgeGxhcmdlOiAxMjAwcHgsXG4gIHh4bGFyZ2U6IDE0NDBweCxcbikgIWRlZmF1bHQ7XG5cbi8vLyBBIGxpc3Qgb2YgbmFtZWQgSGlEUEkgYnJlYWtwb2ludHMuIFlvdSBjYW4gdXNlIHRoZXNlIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRvIHF1aWNrbHkgY3JlYXRlIG1lZGlhIHF1ZXJpZXMgZm9yIHJlc29sdXRpb25zLlxuLy8vIFZhbHVlcyBtdXN0IHJlcHJlc2VudCB0aGUgZGV2aWNlIHBpeGVscyAvIHdlYiBwaXhlbHMgcmF0aW9uIGFuZCBiZSB1bml0bGVzcyBvciBpbiBEUFBYLlxuLy8vIEB0eXBlIE1hcFxuJGJyZWFrcG9pbnRzLWhpZHBpOiAoXG4gIGhpZHBpLTE6IDEsXG4gIGhpZHBpLTEtNTogMS41LFxuICBoaWRwaS0yOiAyLFxuICByZXRpbmE6IDIsXG4gIGhpZHBpLTM6IDNcbikgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgbGFyZ2VzdCBuYW1lZCBicmVha3BvaW50IGluIHdoaWNoIHRvIGluY2x1ZGUgcHJpbnQgYXMgYSBtZWRpYSB0eXBlXG4vLy8gQHR5cGUgS2V5d29yZFxuJHByaW50LWJyZWFrcG9pbnQ6IGxhcmdlICFkZWZhdWx0O1xuXG4kLXpmLXplcm8tYnJlYWtwb2ludDogc21hbGwgIWRlZmF1bHQ7XG5cbiQtemYtYnJlYWtwb2ludHMta2V5czogbWFwLXRvLWxpc3QoJGJyZWFrcG9pbnRzLCAna2V5cycpO1xuXG5AaWYgbnRoKG1hcC12YWx1ZXMoJGJyZWFrcG9pbnRzKSwgMSkgIT0gMCB7XG4gIEBlcnJvciAnVGhlIGZpcnN0IGtleSBpbiB0aGUgJGJyZWFrcG9pbnRzIG1hcCBtdXN0IGhhdmUgYSB2YWx1ZSBvZiBcIjBcIi4nO1xufVxuQGVsc2Uge1xuICAkLXpmLXplcm8tYnJlYWtwb2ludDogbnRoKG1hcC1rZXlzKCRicmVha3BvaW50cyksIDEpO1xufVxuXG4vLy8gQWxsIG9mIHRoZSBuYW1lcyBpbiB0aGlzIGxpc3Qgd2lsbCBiZSBvdXRwdXQgYXMgY2xhc3NlcyBpbiB5b3VyIENTUywgbGlrZSBgLnNtYWxsLTEyYCwgYC5tZWRpdW0tNmAsIGFuZCBzbyBvbi4gRWFjaCB2YWx1ZSBpbiB0aGlzIGxpc3QgbXVzdCBhbHNvIGJlIGluIHRoZSBgJGJyZWFrcG9pbnRzYCBtYXAuXG4vLy8gQHR5cGUgTGlzdFxuJGJyZWFrcG9pbnQtY2xhc3NlczogKHNtYWxsIG1lZGl1bSBsYXJnZSkgIWRlZmF1bHQ7XG5cbi8vLyBHZW5lcmF0ZXMgYSBtZWRpYSBxdWVyeSBzdHJpbmcgbWF0Y2hpbmcgdGhlIGlucHV0IHZhbHVlLiBSZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGBicmVha3BvaW50KClgIG1peGluIHRvIHNlZSB3aGF0IHRoZSBwb3NzaWJsZSBpbnB1dHMgYXJlLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHZhbCBbc21hbGxdIC0gQnJlYWtwb2ludCBuYW1lLCBvciBweCwgcmVtLCBvciBlbSB2YWx1ZSB0byBwcm9jZXNzLlxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQoJHZhbDogJC16Zi16ZXJvLWJyZWFrcG9pbnQpIHtcbiAgLy8gV2ViIHN0YW5kYXJkIFBpeGVscyBwZXIgaW5jaC4gKDFkZHB4IC8gJHN0ZC13ZWItZHBpKSA9IDFkcGlcbiAgLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtdmFsdWVzLTMvI2Fic29sdXRlLWxlbmd0aHNcbiAgJHN0ZC13ZWItZHBpOiA5NjtcblxuICAvLyBTaXplIG9yIGtleXdvcmRcbiAgJGJwOiBudGgoJHZhbCwgMSk7XG4gIC8vIFZhbHVlIG9mIHRoZSBmb2xsb3dpbmcgYnJlYWtwb2ludFxuICAkYnAtbmV4dDogbnVsbDtcbiAgLy8gVmFsdWUgZm9yIG1heC13aWR0aCBtZWRpYSBxdWVyaWVzXG4gICRicC1taW46IG51bGw7XG4gIC8vIFZhbHVlIGZvciBtaW4td2lkdGggbWVkaWEgcXVlcmllc1xuICAkYnAtbWF4OiBudWxsO1xuICAvLyBEaXJlY3Rpb24gb2YgbWVkaWEgcXVlcnkgKHVwLCBkb3duLCBvciBvbmx5KVxuICAkZGlyOiBpZihsZW5ndGgoJHZhbCkgPiAxLCBudGgoJHZhbCwgMiksIHVwKTtcbiAgLy8gSWYgbmFtZWQsIG5hbWUgb2YgdGhlIGJyZWFrcG9pbnRcbiAgJG5hbWU6IG51bGw7XG4gIC8vIElmIHRoZSBicmVha3BvaW50IGlzIGEgSGlEUEkgYnJlYWtwb2ludFxuICAkaGlkcGk6IGZhbHNlO1xuXG4gIC8vIE9yaWVudGF0aW9uIG1lZGlhIHF1ZXJpZXMgaGF2ZSBhIHVuaXF1ZSBzeW50YXhcbiAgQGlmICRicCA9PSAnbGFuZHNjYXBlJyBvciAkYnAgPT0gJ3BvcnRyYWl0JyB7XG4gICAgQHJldHVybiAnKG9yaWVudGF0aW9uOiAjeyRicH0pJztcbiAgfVxuXG4gIC8vIElmIGEgYnJlYWtwb2ludCBuYW1lIGlzIGdpdmVuLCBnZXQgaXRzIHZhbHVlIGZyb20gdGhlICRicmVha3BvaW50cy8kYnJlYWtwb2ludHMtaGlkcGkgbWFwLlxuICBAaWYgdHlwZS1vZigkYnApID09ICdzdHJpbmcnIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkYnApIHtcbiAgICAgICRuYW1lOiAkYnA7XG4gICAgICAkYnA6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gICAgICAkYnAtbmV4dDogLXpmLW1hcC1uZXh0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICAgIH1cbiAgICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMtaGlkcGksICRicCkge1xuICAgICAgJG5hbWU6ICRicDtcbiAgICAgICRicDogbWFwLWdldCgkYnJlYWtwb2ludHMtaGlkcGksICRuYW1lKTtcbiAgICAgICRicC1uZXh0OiAtemYtbWFwLW5leHQtbnVtYmVyKCRicmVha3BvaW50cy1oaWRwaSwgJGJwKTtcbiAgICAgICRoaWRwaTogdHJ1ZTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGJwOiAwO1xuICAgICAgQHdhcm4gJ2JyZWFrcG9pbnQoKTogXCIjeyR2YWx9XCIgaXMgbm90IGRlZmluZWQgaW4geW91ciBgJGJyZWFrcG9pbnRzYCBvciBgJGJyZWFrcG9pbnRzLWhpZHBpYCBzZXR0aW5nLic7XG4gICAgfVxuICB9XG5cbiAgQGlmIG5vdCAkbmFtZSBhbmQgJGRpciA9PSAnb25seScge1xuICAgIEB3YXJuICdicmVha3BvaW50KCk6IE9ubHkgbmFtZWQgbWVkaWEgcXVlcmllcyBjYW4gaGF2ZSBhbiBgb25seWAgcmFuZ2UuJztcbiAgICBAcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBPbmx5ICdvbmx5JyBhbmQgJ3VwJyBoYXZlIGEgbWluIGxpbWl0LlxuICBAaWYgJGRpciA9PSAnb25seScgb3IgJGRpciA9PSAndXAnIHtcbiAgICAkYnAtbWluOiBpZigkaGlkcGksIHN0cmlwLXVuaXQoJGJwKSwgLXpmLWJwLXRvLWVtKCRicCkpO1xuICB9XG4gIC8vIE9ubHkgJ29ubHknIGFuZCAnZG93bicgaGF2ZSBhIG1heCBsaW1pdC5cbiAgQGlmICRkaXIgPT0gJ29ubHknIG9yICRkaXIgPT0gJ2Rvd24nIHtcbiAgICAvLyBJZiB0aGUgYnJlYWtwb2ludCBpcyBhIHZhbHVlLCB1c2UgaXQgYXMgbWF4IGxpbWl0LlxuICAgIEBpZiBub3QgJG5hbWUge1xuICAgICAgJGJwLW1heDogaWYoJGhpZHBpLCBzdHJpcC11bml0KCRicCksIC16Zi1icC10by1lbSgkYnApKTtcbiAgICB9XG4gICAgLy8gSWYgdGhlIGJyZWFrcG9pbnQgaXMgbmFtZWQsIHRoZSBtYXggbGltaXQgaXMgdGhlIGZvbGxvd2luZyBicmVha3BvaW50IC0gMXB4LlxuICAgIEBlbHNlIGlmICRicC1uZXh0IHtcbiAgICAgIC8vIE1heCB2YWx1ZSBpcyAwLjJweCB1bmRlciB0aGUgbmV4dCBicmVha3BvaW50ICgwLjAyIC8gMTYgPSAwLjAwMTI1KS5cbiAgICAgIC8vIFVzZSBhIHByZWNpc2lvbiB1bmRlciAxcHggdG8gc3VwcG9ydCBicm93c2VyIHpvb20sIGJ1dCBub3QgdG8gbG93IHRvIGF2b2lkIHJvdW5kaW5nLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3VuZGF0aW9uL2ZvdW5kYXRpb24tc2l0ZXMvaXNzdWVzLzExMzEzXG4gICAgICAkYnAtbWF4OiBpZigkaGlkcGksICRicC1uZXh0IC0gKDEvJHN0ZC13ZWItZHBpKSwgLXpmLWJwLXRvLWVtKCRicC1uZXh0KSAtIDAuMDAxMjUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdlbmVyYXRlIHRoZSBtZWRpYSBxdWVyeSBzdHJpbmcgZnJvbSBtaW4gYW5kIG1heCBsaW1pdHMuXG4gIEBpZiAkaGlkcGkge1xuICAgIC8vIEdlbmVyYXRlIHZhbHVlcyBpbiBEUEkgaW5zdGVhZCBvZiBEUFBYIGZvciBhbiBJRTktMTEvT3BlcmEgbWluaSBjb21wYXRpYmlsaXR5LlxuICAgIC8vIFNlZSBodHRwczovL2Nhbml1c2UuY29tLyNmZWF0PWNzcy1tZWRpYS1yZXNvbHV0aW9uXG4gICAgJGJwLW1pbi1kcGk6IGlmKCRicC1taW4sICRicC1taW4gKiAkc3RkLXdlYi1kcGkgKiAxZHBpLCAkYnAtbWluKTtcbiAgICAkYnAtbWF4LWRwaTogaWYoJGJwLW1heCwgJGJwLW1heCAqICRzdGQtd2ViLWRwaSAqIDFkcGksICRicC1tYXgpO1xuICAgIEByZXR1cm4gemYtc3RyLWpvaW4oXG4gICAgICAtemYtYnAtam9pbigkYnAtbWluLCAkYnAtbWF4LCAnLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvJywgJy13ZWJraXQtbWF4LWRldmljZS1waXhlbC1yYXRpbycpLFxuICAgICAgLXpmLWJwLWpvaW4oJGJwLW1pbi1kcGksICRicC1tYXgtZHBpLCAnbWluLXJlc29sdXRpb24nLCAnbWF4LXJlc29sdXRpb24nKSxcbiAgICAgICcsICcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIC16Zi1icC1qb2luKCRicC1taW4sICRicC1tYXgpO1xuICB9XG59XG5cbi8vLyBXcmFwcyBhIG1lZGlhIHF1ZXJ5IGFyb3VuZCB0aGUgY29udGVudCB5b3UgcHV0IGluc2lkZSB0aGUgbWl4aW4uIFRoaXMgbWl4aW4gYWNjZXB0cyBhIG51bWJlciBvZiB2YWx1ZXM6XG4vLy8gIC0gSWYgYSBzdHJpbmcgaXMgcGFzc2VkLCB0aGUgbWl4aW4gd2lsbCBsb29rIGZvciBpdCBpbiB0aGUgYCRicmVha3BvaW50c2AgYW5kIGAkYnJlYWtwb2ludHMtaGlkcGlgIG1hcHMsIGFuZCB1c2UgYSBtZWRpYSBxdWVyeSB0aGVyZS5cbi8vLyAgLSBJZiBhIHBpeGVsIHZhbHVlIGlzIHBhc3NlZCwgaXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYW4gZW0gdmFsdWUgdXNpbmcgYCRnbG9iYWwtZm9udC1zaXplYCBhcyB0aGUgYmFzZS5cbi8vLyAgLSBJZiBhIHJlbSB2YWx1ZSBpcyBwYXNzZWQsIHRoZSB1bml0IHdpbGwgYmUgY2hhbmdlZCB0byBlbS5cbi8vLyAgLSBJZiBhbiBlbSB2YWx1ZSBpcyBwYXNzZWQsIHRoZSB2YWx1ZSB3aWxsIGJlIHVzZWQgYXMtaXMuXG4vLy9cbi8vLyBJZiBtdWx0aXBsZSB2YWx1ZXMgYXJlIHBhc3NlZCwgdGhlIG1peGluIHdpbGwgZ2VuZXJhdGUgYSBtZWRpYSBxdWVyeSBmb3IgZWFjaCBvZiB0aGVtIGFzIGRlc2NyaWJlZCBhYm92ZS5cbi8vLyBTaW5jZSB0aGUgY29udGVudCBpcyBkdXBsaWNhdGVkIGZvciBlYWNoIGJyZWFrcG9pbnQsIHRoaXMgbWl4aW4gc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIHByb3BlcnRpZXMgdGhhdFxuLy8vIGNoYW5nZSBhY3Jvc3MgYnJlYWtwb2ludHMuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkdmFsdWVzLi4uIC0gQnJlYWtwb2ludCBuYW1lIG9yIHB4L3JlbS9lbSB2YWx1ZSB0byBwcm9jZXNzLlxuLy8vXG4vLy8gQG91dHB1dCBJZiB0aGUgYnJlYWtwb2ludCBpcyBcIjBweCBhbmQgbGFyZ2VyXCIsIG91dHB1dHMgdGhlIGNvbnRlbnQgYXMtaXMuIE90aGVyd2lzZSwgb3V0cHV0cyB0aGUgY29udGVudCB3cmFwcGVkIGluIGEgbWVkaWEgcXVlcnkuXG5AbWl4aW4gYnJlYWtwb2ludCgkdmFsdWVzLi4uKSB7XG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCR2YWx1ZXMpIHtcbiAgICAkdmFsdWU6IG50aCgkdmFsdWVzLCAkaSk7XG4gICAgJHN0cjogYnJlYWtwb2ludCgkdmFsdWUpO1xuICAgICRicDogaW5kZXgoJC16Zi1icmVha3BvaW50cy1rZXlzLCBudGgoJHZhbHVlLCAxKSk7XG4gICAgJHBicDogaW5kZXgoJC16Zi1icmVha3BvaW50cy1rZXlzLCAkcHJpbnQtYnJlYWtwb2ludCk7XG4gICAgLy8gRGlyZWN0aW9uIG9mIG1lZGlhIHF1ZXJ5ICh1cCwgZG93biwgb3Igb25seSlcbiAgICAkZGlyOiBpZihsZW5ndGgoJHZhbHVlKSA+IDEsIG50aCgkdmFsdWUsIDIpLCB1cCk7XG5cbiAgICAkb2xkLXpmLXNpemU6IG51bGw7XG5cbiAgICAvLyBNYWtlIGJyZWFrcG9pbnQgc2l6ZSBhdmFpbGFibGUgYXMgYSB2YXJpYWJsZVxuICAgIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKC16Zi1zaXplKSB7XG4gICAgICAkb2xkLXpmLXNpemU6ICQtemYtc2l6ZTtcbiAgICB9XG4gICAgJC16Zi1zaXplOiBudGgoJHZhbHVlLCAxKSAhZ2xvYmFsOyAvLyBnZXQgdGhlIGZpcnN0IHZhbHVlIHRvIGFjY291bnQgZm9yIGBvbmx5YCBhbmQgYGRvd25gIGtleXdvcmRzXG5cbiAgICAvLyBJZiAkc3RyIGlzIHN0aWxsIGFuIGVtcHR5IHN0cmluZywgbm8gbWVkaWEgcXVlcnkgaXMgbmVlZGVkXG4gICAgQGlmICRzdHIgPT0gJycge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgLy8gT3RoZXJ3aXNlLCB3cmFwIHRoZSBjb250ZW50IGluIGEgbWVkaWEgcXVlcnlcbiAgICBAZWxzZSB7XG4gICAgICAvLyBGb3IgbmFtZWQgYnJlYWtwb2ludHMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICRwcmludC1icmVha3BvaW50LCBhZGQgcHJpbnQgdG8gdGhlIG1lZGlhIHR5cGVzXG4gICAgICAvLyBnZW5lcmF0ZSBwcmludCBpZiB0aGUgYnJlYWtwb2ludCBhZmZlY3RzIHRoZSBwcmludC1icmVha3BvaW50IChvciBzbWFsbGVyKS5cbiAgICAgIC8vIFRoaXMgbWVhbnMgdGhlIGN1cnJlbnQgY29uZGl0aW9uIG9ubHkgbmVlZHMgdG8gYmUgZXh0ZW5kZWQgc28gJ2Rvd24nIGFsd2F5cyBnZW5lcmF0ZXMgcHJpbnQuXG4gICAgICBAaWYgJGJwICE9IG51bGwgYW5kICgkYnAgPD0gJHBicCBvciAkZGlyID09IGRvd24pIHtcbiAgICAgICAgQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kICN7JHN0cn0ge1xuICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kICN7JHN0cn0ge1xuICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJC16Zi1zaXplOiAkb2xkLXpmLXNpemUgIWdsb2JhbDtcbiAgfVxufVxuXG4vLy8gQ29udmVydHMgdGhlIGJyZWFrcG9pbnRzIG1hcCB0byBhIFVSTC1lbmNvZGVkIHN0cmluZywgbGlrZSB0aGlzOiBga2V5MT12YWx1ZTEma2V5Mj12YWx1ZTJgLiBUaGUgdmFsdWUgaXMgdGhlbiBkcm9wcGVkIGludG8gdGhlIENTUyBmb3IgYSBzcGVjaWFsIGA8bWV0YT5gIHRhZywgd2hpY2ggaXMgcmVhZCBieSB0aGUgRm91bmRhdGlvbiBKYXZhU2NyaXB0LiBUaGlzIGlzIGhvdyB3ZSB0cmFuc2ZlciB2YWx1ZXMgZnJvbSBTYXNzIHRvIEphdmFTY3JpcHQsIHNvIHRoZXkgY2FuIGJlIGRlZmluZWQgaW4gb25lIHBsYWNlLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gY29udmVydC5cbi8vL1xuLy8vIEByZXR1cm5zIHtTdHJpbmd9IEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG1hcCdzIGNvbnRlbnRzLlxuQGZ1bmN0aW9uIC16Zi1icC1zZXJpYWxpemUoJG1hcCkge1xuICAkc3RyOiAnJztcbiAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRtYXAge1xuICAgICRzdHI6ICRzdHIgKyAka2V5ICsgJz0nICsgLXpmLWJwLXRvLWVtKCR2YWx1ZSkgKyAnJic7XG4gIH1cbiAgJHN0cjogc3RyLXNsaWNlKCRzdHIsIDEsIC0yKTtcblxuICBAcmV0dXJuICRzdHI7XG59XG5cbi8vLyBGaW5kIHRoZSBuZXh0IGtleSBpbiBhIG1hcC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHRyYXZlcnNlLlxuLy8vIEBwYXJhbSB7TWl4ZWR9ICRrZXkgLSBLZXkgdG8gdXNlIGFzIGEgc3RhcnRpbmcgcG9pbnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7TWl4ZWR9IFRoZSB2YWx1ZSBmb3IgdGhlIGtleSBhZnRlciBgJGtleWAsIGlmIGAka2V5YCB3YXMgZm91bmQuIElmIGAka2V5YCB3YXMgbm90IGZvdW5kLCBvciBgJGtleWAgd2FzIHRoZSBsYXN0IHZhbHVlIGluIHRoZSBtYXAsIHJldHVybnMgYG51bGxgLlxuQGZ1bmN0aW9uIC16Zi1tYXAtbmV4dCgkbWFwLCAka2V5KSB7XG5cbiAgLy8gU3RvcmUgdGhlIGtleXMgb2YgdGhlIG1hcCBhcyBhIGxpc3RcbiAgJHZhbHVlczogbWFwLWtleXMoJG1hcCk7XG5cbiAgJGk6IDA7XG5cbiAgLy8gSWYgdGhlIEtleSBFeGlzdHMsIEdldCB0aGUgaW5kZXggb2YgdGhlIGtleSB3aXRoaW4gdGhlIG1hcCBhbmQgYWRkIDEgdG8gaXQgZm9yIHRoZSBuZXh0IGJyZWFrcG9pbnQgaW4gdGhlIG1hcFxuICBAaWYgKG1hcC1oYXMta2V5KCRtYXAsICRrZXkpKSB7XG4gICAgJGk6IGluZGV4KCR2YWx1ZXMsICRrZXkpICsgMTtcbiAgfVxuXG4gIC8vIElmIHRoZSBrZXkgZG9lc24ndCBleGlzdCwgb3IgaXQncyB0aGUgbGFzdCBrZXkgaW4gdGhlIG1hcCwgcmV0dXJuIG51bGxcbiAgQGlmICgkaSA+IGxlbmd0aCgkbWFwKSBvciAkaSA9PSAwKSB7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG4gIC8vIE90aGVyd2lzZSwgcmV0dXJuIHRoZSB2YWx1ZVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsIG50aCgkdmFsdWVzLCAkaSkpO1xuICB9XG5cbn1cblxuLy8vIEZpbmQgdGhlIG5leHQgbnVtYmVyIGluIGEgbWFwLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gdHJhdmVyc2UuXG4vLy8gQHBhcmFtIHtNaXhlZH0gJG51bWJlciAtIE51bWJlciB0byB1c2UgYXMgYSBzdGFydGluZyBwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtNaXhlZH0gVGhlIG51bWJlciBmb2xsb3dpbmcgYCRudW1iZXJgLCBpZiBgJG51bWJlcmAgd2FzIGZvdW5kLiBJZiBgJG51bWJlcmAgd2FzIG5vdCBmb3VuZCwgb3IgYCRudW1iZXJgIHdhcyB0aGUgYmlnZ2VzdCBudW1iZXIgaW4gdGhlIG1hcCwgcmV0dXJucyBgbnVsbGAuXG5AZnVuY3Rpb24gLXpmLW1hcC1uZXh0LW51bWJlcigkbWFwLCAkbnVtYmVyKSB7XG5cbiAgJG5leHRfbnVtYmVyOiBudWxsO1xuXG4gIEBlYWNoICRrLCAkdiBpbiAkbWFwIHtcbiAgICBAaWYgdHlwZS1vZigkdikgPT0gJ251bWJlcicgYW5kICR2ID4gJG51bWJlciBhbmQgKCRuZXh0X251bWJlciA9PSBudWxsIG9yICR2IDwgJG5leHRfbnVtYmVyKSB7XG4gICAgICAkbmV4dF9udW1iZXI6ICR2O1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG5leHRfbnVtYmVyO1xufVxuXG4vLy8gUmV0dXJuIGEgbGlzdCBvZiBvdXIgbmFtZWQgYnJlYWtwb2ludHMgbGVzcyB0aGFuICRrZXkuIFVzZWZ1bCBmb3IgZGVhbGluZyB3aXRoXG4vLy8gcmVzcG9uc2l2ZSBndXR0ZXJzIGZvciB0aGUgZ3JpZC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAka2V5IC0gS2V5IHRvIHVzZSBhcyBsYXN0IGJyZWFrcG9pbnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7QXJyYXl9IFRoZSBsaXN0IG9mIGJyZWFrcG9pbnRzIHVwIHRvIGFuZC4gSWYgJGtleSBpcyBhdXRvLCByZXR1cm5zIGJyZWFrcG9pbnRzIGFib3ZlIHRoZSB6ZXJvXG5AZnVuY3Rpb24gLXpmLWJyZWFrcG9pbnRzLWxlc3MtdGhhbigka2V5KSB7XG4gICRsaXN0OiAoKTtcbiAgJGZvdW5kX2tleTogZmFsc2U7XG5cbiAgQGVhY2ggJG5hbWUgaW4gJC16Zi1icmVha3BvaW50cy1rZXlzIHtcbiAgICBAaWYgKCRuYW1lID09ICRrZXkpIHtcbiAgICAgICRmb3VuZF9rZXk6IHRydWU7XG4gICAgfVxuICAgIEBpZiBub3QgJGZvdW5kX2tleSB7XG4gICAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkbmFtZSk7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJGxpc3Q7XG59XG5cbi8vLyBSZXR1cm4gYSBsaXN0IG9mIG91ciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gJGtleS4gVXNlZnVsIGZvciBkZWFsaW5nIHdpdGhcbi8vLyByZXNwb25zaXZlIGd1dHRlcnMgZm9yIHRoZSBncmlkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IC0gYSBuYW1lZCBvciBub24tbmFtZWQgYnJlYWtwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtBcnJheX0gVGhlIGxpc3Qgb2YgYnJlYWtwb2ludHMgdXAgdG8gYW5kLiBJZiAka2V5IGlzIGF1dG8sIHJldHVybnMgYnJlYWtwb2ludHMgYWJvdmUgdGhlIHplcm9cbkBmdW5jdGlvbiAtemYtY2xvc2VzdC1uYW1lZC1icmVha3BvaW50KCRicmVha3BvaW50KSB7XG4gICRsYXN0OiAkLXpmLXplcm8tYnJlYWtwb2ludDtcbiAgJGZvdW5kOiBmYWxzZTtcblxuICAkdmFsdWU6IHVuaXRsZXNzLWNhbGMoJGJyZWFrcG9pbnQsIDFweCk7XG4gIEBlYWNoICRrZXksICR2YWwgaW4gJGJyZWFrcG9pbnRzIHtcbiAgICBAaWYgbm90ICRmb3VuZCB7XG4gICAgICBAaWYgdW5pdGxlc3MtY2FsYygkdmFsKSA+ICR2YWx1ZSB7XG4gICAgICAgICRmb3VuZDogdHJ1ZTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkbGFzdDogJGtleTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsYXN0O1xufVxuXG4vLy8gR2V0IGEgdmFsdWUgZm9yIGEgYnJlYWtwb2ludCBmcm9tIGEgcmVzcG9uc2l2ZSBjb25maWcgbWFwIG9yIHNpbmdsZSB2YWx1ZS5cbi8vLyAtIElmIHRoZSBjb25maWcgaXMgYSBzaW5nbGUgdmFsdWUsIHJldHVybiBpdCByZWdhcmRsZXNzIG9mIGAkdmFsdWVgLlxuLy8vIC0gSWYgdGhlIGNvbmZpZyBpcyBhIG1hcCBhbmQgaGFzIHRoZSBrZXkgYCR2YWx1ZWAsIHRoZSBleGFjdCBicmVha3BvaW50IHZhbHVlIGlzIHJldHVybmVkLlxuLy8vIC0gSWYgdGhlIGNvbmZpZyBpcyBhIG1hcCBhbmQgZG9lcyAqbm90KiBoYXZlIHRoZSBicmVha3BvaW50LCB0aGUgdmFsdWUgbWF0Y2hpbmcgdGhlIG5leHQgbG93ZXN0IGJyZWFrcG9pbnQgaW4gdGhlIGNvbmZpZyBtYXAgaXMgcmV0dXJuZWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRtYXAgLSBSZXNwb25zaXZlIGNvbmZpZyBtYXAgb3Igc2luZ2xlIHZhbHVlLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHZhbHVlIC0gQnJlYWtwb2ludCBuYW1lIHRvIHVzZS5cbi8vL1xuLy8vIEByZXR1cm4ge01peGVkfSBUaGUgY29ycmVzcG9uZGluZyBicmVha3BvaW50IHZhbHVlLlxuQGZ1bmN0aW9uIC16Zi1nZXQtYnAtdmFsKCRtYXAsICR2YWx1ZSkge1xuICAvLyBJZiB0aGUgZ2l2ZW4gbWFwIGlzIGEgc2luZ2xlIHZhbHVlLCByZXR1cm4gaXRcbiAgQGlmIHR5cGUtb2YoJG1hcCkgPT0gJ251bWJlcicge1xuICAgIEByZXR1cm4gJG1hcDtcbiAgfVxuXG5cbiAgLy8gQ2hlY2sgaWYgdGhlIGJyZWFrcG9pbnQgbmFtZSBleGlzdHMgZ2xvYmFsbHlcbiAgQGlmIG5vdCBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICR2YWx1ZSkge1xuICAgIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gJ251bWJlcicge1xuICAgICAgJHZhbHVlOiAtemYtY2xvc2VzdC1uYW1lZC1icmVha3BvaW50KCR2YWx1ZSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG4gIC8vIENoZWNrIGlmIHRoZSBicmVha3BvaW50IG5hbWUgZXhpc3RzIGluIHRoZSBsb2NhbCBjb25maWcgbWFwXG4gIEBlbHNlIGlmIG1hcC1oYXMta2V5KCRtYXAsICR2YWx1ZSkge1xuICAgIC8vIElmIGl0IGRvZXMsIGp1c3QgcmV0dXJuIHRoZSB2YWx1ZVxuICAgIEByZXR1cm4gbWFwLWdldCgkbWFwLCAkdmFsdWUpO1xuICB9XG4gIC8vIE90aGVyd2lzZSwgZmluZCB0aGUgbmV4dCBsb3dlc3QgYnJlYWtwb2ludCBhbmQgcmV0dXJuIHRoYXQgdmFsdWVcbiAgQGVsc2Uge1xuICAgICRhbmNob3I6IG51bGw7XG4gICAgJGZvdW5kOiBmYWxzZTtcblxuICAgIEBlYWNoICRrZXksICR2YWwgaW4gJGJyZWFrcG9pbnRzIHtcbiAgICAgIEBpZiBub3QgJGZvdW5kIHtcbiAgICAgICAgQGlmIG1hcC1oYXMta2V5KCRtYXAsICRrZXkpIHtcbiAgICAgICAgICAkYW5jaG9yOiAka2V5O1xuICAgICAgICB9XG4gICAgICAgIEBpZiAka2V5ID09ICR2YWx1ZSB7XG4gICAgICAgICAgJGZvdW5kOiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsICRhbmNob3IpO1xuICB9XG59XG5cbi8vLyBSZXR1cm4gdGhlIGJlc3QgYnJlYWtwb2ludCB0byB1c2UgYWNjb3JkaW5nIHRvIHRoZSBjYWxsaW5nIGNvbnRleHQuIEl0IHJldHVybnMgaW4gb3JkZXI6XG4vLy8gMS4gdGhlIGdpdmVuIGAkdmFsdWVgIGFyZ3VtZW50IGlmIGl0IGlzIG5vdCBudWxsLlxuLy8vIDIuIHRoZSBnbG9iYWwgYnJlYWtwb2ludCBjb250ZXh0IGAkLXpmLXNpemVgIGlmIGl0IGlzIG5vdCBudWxsIChsaWtlIGlmIGNhbGxlZCBpbnNpZGUgdGhlbiBgYnJlYWtwb2ludCgpYCBtaXhpbilcbi8vLyAzLiB0aGUgZ2l2ZW4gYCRkZWZhdWx0YCBhcmd1bWVudC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHZhbHVlIFtudWxsXSAtIEJyZWFrcG9pbnQgdG8gdXNlIGluIHByaW9yaXR5IGlmIG5vbi1udWxsLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGRlZmF1bHQgW251bGxdIC0gQnJlYWtwb2ludCB0byB1c2UgYnkgZGVmYXVsdCBpZiBubyBvdGhlciB2YWx1ZSBjYW4gYmUgdXNlZC5cbi8vL1xuLy8vIEByZXR1cm4ge0tleXdvcmR9IFRoZSByZXNvbHZlZCBicmVha3BvaW50LlxuQGZ1bmN0aW9uIC16Zi1jdXJyZW50LWJyZWFrcG9pbnQoJHZhbHVlOiBudWxsLCAkZGVmYXVsdDogbnVsbCkge1xuICBAaWYgKCR2YWx1ZSAhPSBudWxsKSB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH1cbiAgQGVsc2UgaWYgKHZhcmlhYmxlLWV4aXN0cygtemYtc2l6ZSkgYW5kIHR5cGUtb2YoJC16Zi1zaXplKSAhPSAnbnVtYmVyJykgYW5kICQtemYtc2l6ZSAhPSBudWxsIHtcbiAgICBAcmV0dXJuICQtemYtc2l6ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkZGVmYXVsdDtcbiAgfVxufVxuXG4vLy8gUmV0dXJuIG1lZGlhIHF1ZXJ5IHN0cmluZyBmcm9tIHRoZSBnaXZlbiBtaW4gYW5kL29yIG1heCBsaW1pdHMuXG4vLy8gSWYgYSBsaW1pdCBpcyBlcXVhbCB0byBgbnVsbGAgb3IgYDBgLCBpdCBpcyBpZ25vcmVkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtaW4gWzBdIC0gTWluIG1lZGlhIHF1ZXJ5IGxpbWl0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbWF4IFswXSAtIE1heCBtZWRpYSBxdWVyeSBsaW1pdC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG1pbi1uYW1lIFsnbWluLXdpZHRoJ10gLSBOYW1lIG9mIHRoZSBtaW4gbWVkaWEgcXVlcnkgbGltaXQuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRkZWxpbWl0ZXIgWydtYXgtd2lkdGgnXSAtIE5hbWUgb2YgdGhlIG1heCBtZWRpYSBxdWVyeSBsaW1pdC5cbi8vL1xuLy8vIEByZXR1cm5zIHtTdHJpbmd9IE1lZGlhIFF1ZXJ5IHN0cmluZy5cbkBmdW5jdGlvbiAtemYtYnAtam9pbihcbiAgJG1pbjogMCxcbiAgJG1heDogMCxcbiAgJG1pbi1uYW1lOiAnbWluLXdpZHRoJyxcbiAgJG1heC1uYW1lOiAnbWF4LXdpZHRoJ1xuKSB7XG4gIEByZXR1cm4gemYtc3RyLWpvaW4oXG4gICAgaWYoJG1pbiBhbmQgJG1pbiA+IDAsICcoI3skbWluLW5hbWV9OiAjeyRtaW59KScsIG51bGwpLFxuICAgIGlmKCRtYXggYW5kICRtYXggPiAwLCAnKCN7JG1heC1uYW1lfTogI3skbWF4fSknLCBudWxsKSxcbiAgICAnIGFuZCAnKTtcbn1cblxuJHNtYWxsLXVwOiAnJztcbiRzbWFsbC1vbmx5OiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgc21hbGwpIHtcbiAgJHNtYWxsLXVwOiBzY3JlZW47XG4gICRzbWFsbC1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChzbWFsbCBvbmx5KX0nKTtcbn1cblxuJG1lZGl1bS11cDogJyc7XG4kbWVkaXVtLW9ubHk6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBtZWRpdW0pIHtcbiAgJG1lZGl1bS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobWVkaXVtKX0nKTtcbiAgJG1lZGl1bS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChtZWRpdW0gb25seSl9Jyk7XG59XG5cbiRsYXJnZS11cDogJyc7XG4kbGFyZ2Utb25seTogJyc7XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIGxhcmdlKSB7XG4gICRsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobGFyZ2UpfScpO1xuICAkbGFyZ2Utb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobGFyZ2Ugb25seSl9Jyk7XG59XG5cbiR4bGFyZ2UtdXA6ICcnO1xuJHhsYXJnZS1vbmx5OiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgeGxhcmdlKSB7XG4gICR4bGFyZ2UtdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHhsYXJnZSl9Jyk7XG4gICR4bGFyZ2Utb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeGxhcmdlIG9ubHkpfScpO1xufVxuXG4keHhsYXJnZS11cDogJyc7XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIHh4bGFyZ2UpIHtcbiAgJHh4bGFyZ2UtdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHh4bGFyZ2UpfScpO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4vLy8gQ3JlYXRlcyBhbiBpbm5lciBib3gtc2hhZG93IGZvciBvbmx5IG9uZSBzaWRlXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaWRlIC0gU2lkZSB0aGUgc2hhZG93IGlzIHN1cHBvc2VkIHRvIGFwcGVhci4gQ2FuIGJlIGB0b3BgLCBgbGVmdGAsIGByaWdodGAgb3IgYGJvdHRvbWAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzaXplIC0gV2lkdGggZm9yIHRoZSB0YXJnZXQgc2lkZS5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBDb2xvciBvZiB0aGUgc2hhZG93LlxuQG1peGluIGlubmVyLXNpZGUtc2hhZG93KFxuICAkc2lkZTogYm90dG9tLFxuICAkc2l6ZTogMjBweCxcbiAgJGNvbG9yOiByZ2JhKCRibGFjaywgMC4yNSlcbikge1xuXG4gICRoZWxwZXI6IHJvdW5kKCRzaXplICogMC42NSk7XG5cbiAgQGlmICgkc2lkZSA9PSB0b3ApIHtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwICRoZWxwZXIgJHNpemUgKC0xKSokaGVscGVyICRjb2xvcjtcbiAgfSBAZWxzZSBpZiAoJHNpZGUgPT0gbGVmdCkge1xuICAgIGJveC1zaGFkb3c6IGluc2V0ICRoZWxwZXIgMCAkc2l6ZSAoLTEpKiRoZWxwZXIgJGNvbG9yO1xuICB9IEBlbHNlIGlmICgkc2lkZSA9PSByaWdodCkge1xuICAgIGJveC1zaGFkb3c6IGluc2V0ICgtMSkqJGhlbHBlciAwICRzaXplICgtMSkqJGhlbHBlciAkY29sb3I7XG4gIH0gQGVsc2UgaWYgKCRzaWRlID09IGJvdHRvbSkge1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgKC0xKSokaGVscGVyICRzaXplICgtMSkqJGhlbHBlciAkY29sb3I7XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBDU1MgdHJpYW5nbGUsIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBkcm9wZG93biBhcnJvd3MsIGRyb3Bkb3duIHBpcHMsIGFuZCBtb3JlLiBVc2UgdGhpcyBtaXhpbiBpbnNpZGUgYSBgJjo6YmVmb3JlYCBvciBgJjo6YWZ0ZXJgIHNlbGVjdG9yLCB0byBhdHRhY2ggdGhlIHRyaWFuZ2xlIHRvIGFuIGV4aXN0aW5nIGVsZW1lbnQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHRyaWFuZ2xlLXNpemUgLSBXaWR0aCBvZiB0aGUgdHJpYW5nbGUuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJHRyaWFuZ2xlLWNvbG9yIC0gQ29sb3Igb2YgdGhlIHRyaWFuZ2xlLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHRyaWFuZ2xlLWRpcmVjdGlvbiAtIERpcmVjdGlvbiB0aGUgdHJpYW5nbGUgcG9pbnRzLiBDYW4gYmUgYHVwYCwgYHJpZ2h0YCwgYGRvd25gLCBvciBgbGVmdGAuXG5AbWl4aW4gY3NzLXRyaWFuZ2xlKFxuICAkdHJpYW5nbGUtc2l6ZSxcbiAgJHRyaWFuZ2xlLWNvbG9yLFxuICAkdHJpYW5nbGUtZGlyZWN0aW9uXG4pIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG5cbiAgYm9yZGVyOiBpbnNldCAkdHJpYW5nbGUtc2l6ZTtcblxuICBjb250ZW50OiAnJztcblxuICBAaWYgKCR0cmlhbmdsZS1kaXJlY3Rpb24gPT0gZG93bikge1xuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7XG4gICAgYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLWNvbG9yOiAkdHJpYW5nbGUtY29sb3IgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gIH1cbiAgQGlmICgkdHJpYW5nbGUtZGlyZWN0aW9uID09IHVwKSB7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogMDtcbiAgICBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICR0cmlhbmdsZS1jb2xvcjtcbiAgfVxuICBAaWYgKCR0cmlhbmdsZS1kaXJlY3Rpb24gPT0gcmlnaHQpIHtcbiAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XG4gICAgYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgJHRyaWFuZ2xlLWNvbG9yO1xuICB9XG4gIEBpZiAoJHRyaWFuZ2xlLWRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7XG4gICAgYm9yZGVyLXJpZ2h0LXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICR0cmlhbmdsZS1jb2xvciB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIG1lbnUgaWNvbiB3aXRoIGEgc2V0IHdpZHRoLCBoZWlnaHQsIG51bWJlciBvZiBiYXJzLCBhbmQgY29sb3JzLiBUaGUgbWl4aW4gdXNlcyB0aGUgaGVpZ2h0IG9mIHRoZSBpY29uIGFuZCB0aGUgd2VpZ2h0IG9mIHRoZSBiYXJzIHRvIGRldGVybWluZSBzcGFjaW5nLiA8ZGl2IGNsYXNzPVwiZG9jcy1leGFtcGxlLWJ1cmdlclwiPjwvZGl2PlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYmxhY2tdIC0gQ29sb3IgdG8gdXNlIGZvciB0aGUgaWNvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3ItaG92ZXIgWyRkYXJrLWdyYXldIC0gQ29sb3IgdG8gdXNlIHdoZW4gdGhlIGljb24gaXMgaG92ZXJlZCBvdmVyLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggWzIwcHhdIC0gV2lkdGggb2YgdGhlIGljb24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRoZWlnaHQgWzE2cHhdIC0gSGVpZ2h0IG9mIHRoZSBpY29uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2VpZ2h0IFsycHhdIC0gSGVpZ2h0IG9mIGluZGl2aWR1YWwgYmFycyBpbiB0aGUgaWNvbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhcnMgWzNdIC0gTnVtYmVyIG9mIGJhcnMgaW4gdGhlIGljb24uXG5AbWl4aW4gaGFtYnVyZ2VyKFxuICAkY29sb3I6ICRibGFjayxcbiAgJGNvbG9yLWhvdmVyOiAkZGFyay1ncmF5LFxuICAkd2lkdGg6IDIwcHgsXG4gICRoZWlnaHQ6IDE2cHgsXG4gICR3ZWlnaHQ6IDJweCxcbiAgJGJhcnM6IDNcbikge1xuICAvLyBib3gtc2hhZG93IENTUyBvdXRwdXRcbiAgJHNoYWRvdzogKCk7XG4gICRob3Zlci1zaGFkb3c6ICgpO1xuXG4gIC8vIFNwYWNpbmcgYmV0d2VlbiBiYXJzIGlzIGNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIHRvdGFsIGhlaWdodCBvZiB0aGUgaWNvbiBhbmQgdGhlIHdlaWdodCBvZiBlYWNoIGJhclxuICAkc3BhY2luZzogKCRoZWlnaHQgLSAoJHdlaWdodCAqICRiYXJzKSkgLyAoJGJhcnMgLSAxKTtcblxuICBAaWYgdW5pdCgkc3BhY2luZykgPT0gJ3B4JyB7XG4gICAgJHNwYWNpbmc6IGZsb29yKCRzcGFjaW5nKTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJGJhcnMge1xuICAgICRvZmZzZXQ6ICgkd2VpZ2h0ICsgJHNwYWNpbmcpICogKCRpIC0gMSk7XG4gICAgJHNoYWRvdzogYXBwZW5kKCRzaGFkb3csIDAgJG9mZnNldCAwICRjb2xvciwgY29tbWEpO1xuICB9XG5cbiAgLy8gSWNvbiBjb250YWluZXJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHdpZHRoOiAkd2lkdGg7XG4gIGhlaWdodDogJGhlaWdodDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gIC8vIEljb24gYmFyc1xuICAmOjphZnRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAkd2VpZ2h0O1xuXG4gICAgYmFja2dyb3VuZDogJGNvbG9yO1xuICAgIGJveC1zaGFkb3c6ICRzaGFkb3c7XG5cbiAgICBjb250ZW50OiAnJztcbiAgfVxuXG4gIC8vIEhvdmVyIHN0YXRlXG4gIEBpZiAkY29sb3ItaG92ZXIge1xuICAgIC8vIEdlbmVyYXRlIENTU1xuICAgIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJGJhcnMge1xuICAgICAgJG9mZnNldDogKCR3ZWlnaHQgKyAkc3BhY2luZykgKiAoJGkgLSAxKTtcbiAgICAgICRob3Zlci1zaGFkb3c6IGFwcGVuZCgkaG92ZXItc2hhZG93LCAwICRvZmZzZXQgMCAkY29sb3ItaG92ZXIsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAmOmhvdmVyOjphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItaG92ZXI7XG4gICAgICBib3gtc2hhZG93OiAkaG92ZXItc2hhZG93O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBhIGRvd253YXJkLWZhY2luZyB0cmlhbmdsZSBhcyBhIGJhY2tncm91bmQgaW1hZ2UgdG8gYW4gZWxlbWVudC4gVGhlIGltYWdlIGlzIGZvcm1hdHRlZCBhcyBhbiBTVkcsIG1ha2luZyBpdCBlYXN5IHRvIGNoYW5nZSB0aGUgY29sb3IuIEJlY2F1c2UgSW50ZXJuZXQgRXhwbG9yZXIgZG9lc24ndCBzdXBwb3J0IGVuY29kZWQgU1ZHcyBhcyBiYWNrZ3JvdW5kIGltYWdlcywgYSBQTkcgZmFsbGJhY2sgaXMgYWxzbyBpbmNsdWRlZC5cbi8vLyBUaGVyZSBhcmUgdHdvIFBORyBmYWxsYmFja3M6IGEgYmxhY2sgdHJpYW5nbGUgYW5kIGEgd2hpdGUgdHJpYW5nbGUuIFRoZSBvbmUgdXNlZCBkZXBlbmRzIG9uIHRoZSBsaWdodG5lc3Mgb2YgdGhlIGlucHV0IGNvbG9yLlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYmxhY2tdIC0gQ29sb3IgdG8gdXNlIGZvciB0aGUgdHJpYW5nbGUuXG5AbWl4aW4gYmFja2dyb3VuZC10cmlhbmdsZSgkY29sb3I6ICRibGFjaykge1xuICAkcmdiOiAncmdiJTI4I3tyb3VuZChyZWQoJGNvbG9yKSl9LCAje3JvdW5kKGdyZWVuKCRjb2xvcikpfSwgI3tyb3VuZChibHVlKCRjb2xvcikpfSUyOSc7XG5cbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZlcnNpb249JzEuMScgd2lkdGg9JzMyJyBoZWlnaHQ9JzI0JyB2aWV3Qm94PScwIDAgMzIgMjQnPjxwb2x5Z29uIHBvaW50cz0nMCwwIDMyLDAgMTYsMjQnIHN0eWxlPSdmaWxsOiAjeyRyZ2J9Jz48L3BvbHlnb24+PC9zdmc+XCIpO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MFxcMCkge1xuICAgIEBpZiBsaWdodG5lc3MoJGNvbG9yKSA8IDYwJSB7XG4gICAgICAvLyBXaGl0ZSB0cmlhbmdsZVxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQVlDQVlBQUFDYlUvODBBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQUlwSlJFRlVlTnJFa2NrTmdEQU1CQmZSa0V0ME9iUkJCZHNHWFVEZ21RZks0WGhIMm04Y3pRQUF5MjdSM3RzdzRRZmUyeDh1T082b1lMYjZHbE9vcjNHRitzd1VSQU9tVUorUnd0RUpzOVd2VEdFWXhCWHFJMU1RQVpoQ2ZVUUtSekRNVmorVHdyQUlWNmp2U1VFa1lBcjFMU2tjeVRCYi9WK0tZZlg3eEFldXNxM3NMRHRHSDNrRUdBQ1BXSWZsTlpmaFJRQUFBQUJKUlU1RXJrSmdnZz09Jyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIC8vIEJsYWNrIHRyaWFuZ2xlXG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBWUNBWUFBQUNiVS84MEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBTUJKUkVGVWVOckVsbHNPaENBTVJWc3pDOUlselU3S0NtVkhUSnNvTVdZTVV0cHl2OUJnYnVYUUI1WlNkZ0JZWVk0eWNnQml2azhLWUZzUU1mTWlUVEJQNG8zblV6Q0t6T2FiTEpiTHkyL2czMWV2R2tBZ2luUjQvWmVnS0g1cVgzYkpDc2NBM3QweDNrZ081dFFGeWhoRmY1MHhScUZMYnlNVU5KUXpneWpHUy93Z0Nwdktxa1JCcHVXckU0VjlkKzFFNGRQVVhxSWcxMDdTUU9FLzJEUlF4TXdURHlnSUluVkRFVDlUM2xDb2ovNmovVkNtR2paT2wybEtwWjhBQXdEUVA3eklpbURHRlFBQUFBQkpSVTVFcmtKZ2dnPT0nKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFwcGxpZXMgdGhlIG1pY3JvIGNsZWFyZml4IGhhY2sgcG9wdWxhcml6ZWQgYnkgTmljb2xhcyBHYWxsYWdoZXIuIEluY2x1ZGUgdGhpcyBtaXhpbiBvbiBhIGNvbnRhaW5lciBpZiBpdHMgY2hpbGRyZW4gYXJlIGFsbCBmbG9hdGVkLCB0byBnaXZlIHRoZSBjb250YWluZXIgYSBwcm9wZXIgaGVpZ2h0LlxuLy8vIFRoZSBjbGVhcmZpeCBpcyBhdWdtZW50ZWQgd2l0aCBzcGVjaWZpYyBzdHlsZXMgdG8gcHJldmVudCBib3JkZXJzIGluIGZsZXhib3ggZW52aXJvbm1lbnRzXG4vLy8gQGxpbmsgaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svIE1pY3JvIENsZWFyZml4IEhhY2tcbi8vLyBAbGluayBodHRwOi8vZGFuaXNhZGVzaWduZXIuY29tL2Jsb2cvZmxleGJveC1jbGVhci1maXgtcHNldWRvLWVsZW1lbnRzLyBGbGV4Ym94IGZpeFxuQG1peGluIGNsZWFyZml4IHtcbiAgJjo6YmVmb3JlLFxuICAmOjphZnRlciB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY29udGVudDogJyAnO1xuXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBmbGV4LWJhc2lzOiAwO1xuICAgICAgb3JkZXI6IDE7XG4gICAgfVxuICB9XG5cbiAgJjo6YWZ0ZXIge1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG59XG5cbi8vLyBBZGRzIENTUyBmb3IgYSBcInF1YW50aXR5IHF1ZXJ5XCIgc2VsZWN0b3IgdGhhdCBhdXRvbWF0aWNhbGx5IHNpemVzIGVsZW1lbnRzIGJhc2VkIG9uIGhvdyBtYW55IHRoZXJlIGFyZSBpbnNpZGUgYSBjb250YWluZXIuXG4vLy8gQGxpbmsgaHR0cDovL2FsaXN0YXBhcnQuY29tL2FydGljbGUvcXVhbnRpdHktcXVlcmllcy1mb3ItY3NzIFF1YW50aXR5IFF1ZXJpZXMgZm9yIENTU1xuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtYXggLSBNYXhpbXVtIG51bWJlciBvZiBpdGVtcyB0byBkZXRlY3QuIFRoZSBoaWdoZXIgdGhpcyBudW1iZXIgaXMsIHRoZSBtb3JlIENTUyB0aGF0J3MgcmVxdWlyZWQgdG8gY292ZXIgZWFjaCBudW1iZXIgb2YgaXRlbXMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZWxlbSBbbGldIC0gVGFnIHRvIHVzZSBmb3Igc2libGluZyBzZWxlY3RvcnMuXG5AbWl4aW4gYXV0by13aWR0aCgkbWF4LCAkZWxlbTogbGkpIHtcbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkbWF4IHtcbiAgICAmOm50aC1sYXN0LWNoaWxkKCN7JGl9KTpmaXJzdC1jaGlsZCxcbiAgICAmOm50aC1sYXN0LWNoaWxkKCN7JGl9KTpmaXJzdC1jaGlsZCB+ICN7JGVsZW19IHtcbiAgICAgIHdpZHRoOiBwZXJjZW50YWdlKDEgLyAkaSk7XG4gICAgfVxuICB9XG59XG5cbi8vLyBSZW1vdmVzIHRoZSBmb2N1cyByaW5nIGFyb3VuZCBhbiBlbGVtZW50IHdoZW4gYSBtb3VzZSBpbnB1dCBpcyBkZXRlY3RlZC5cbkBtaXhpbiBkaXNhYmxlLW1vdXNlLW91dGxpbmUge1xuICBbZGF0YS13aGF0aW5wdXQ9J21vdXNlJ10gJiB7XG4gICAgb3V0bGluZTogMDtcbiAgfVxufVxuXG4vLy8gTWFrZXMgYW4gZWxlbWVudCB2aXN1YWxseSBoaWRkZW4sIGJ1dCBzdGlsbCBhY2Nlc3NpYmxlIHRvIGtleWJvYXJkcyBhbmQgYXNzaXN0aXZlIGRldmljZXMuXG4vLy8gQGxpbmsgaHR0cDovL3Nub29rLmNhL2FyY2hpdmVzL2h0bWxfYW5kX2Nzcy9oaWRpbmctY29udGVudC1mb3ItYWNjZXNzaWJpbGl0eSBIaWRpbmcgQ29udGVudCBmb3IgQWNjZXNzaWJpbGl0eVxuLy8vIEBsaW5rIGh0dHA6Ly9odWdvZ2lyYXVkZWwuY29tLzIwMTYvMTAvMTMvY3NzLWhpZGUtYW5kLXNlZWsvXG4vLy9cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRlbmZvcmNlIC0gSWYgYHRydWVgLCB1c2UgYCFpbXBvcnRhbnRgIG9uIGFwcGxpZWQgcHJvcGVydGllc1xuQG1peGluIGVsZW1lbnQtaW52aXNpYmxlKFxuICAkZW5mb3JjZTogdHJ1ZVxuKSB7XG4gICRpbXBvcnRhbnQ6IGlmKCRlbmZvcmNlLCAnIWltcG9ydGFudCcsIG51bGwpO1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAjeyRpbXBvcnRhbnR9O1xuICB3aWR0aDogMXB4ICN7JGltcG9ydGFudH07XG4gIGhlaWdodDogMXB4ICN7JGltcG9ydGFudH07XG4gIHBhZGRpbmc6IDAgI3skaW1wb3J0YW50fTtcbiAgb3ZlcmZsb3c6IGhpZGRlbiAjeyRpbXBvcnRhbnR9O1xuICBjbGlwOiByZWN0KDAsMCwwLDApICN7JGltcG9ydGFudH07XG4gIHdoaXRlLXNwYWNlOiBub3dyYXAgI3skaW1wb3J0YW50fTtcbiAgYm9yZGVyOiAwICN7JGltcG9ydGFudH07XG59XG5cbi8vLyBSZXZlcnNlcyB0aGUgQ1NTIG91dHB1dCBjcmVhdGVkIGJ5IHRoZSBgZWxlbWVudC1pbnZpc2libGUoKWAgbWl4aW4uXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZW5mb3JjZSAtIElmIGB0cnVlYCwgdXNlIGAhaW1wb3J0YW50YCBvbiBhcHBsaWVkIHByb3BlcnRpZXNcbkBtaXhpbiBlbGVtZW50LWludmlzaWJsZS1vZmYoXG4gICRlbmZvcmNlOiB0cnVlXG4pIHtcbiAgJGltcG9ydGFudDogaWYoJGVuZm9yY2UsICchaW1wb3J0YW50JywgbnVsbCk7XG5cbiAgcG9zaXRpb246IHN0YXRpYyAjeyRpbXBvcnRhbnR9O1xuICB3aWR0aDogYXV0byAjeyRpbXBvcnRhbnR9O1xuICBoZWlnaHQ6IGF1dG8gI3skaW1wb3J0YW50fTtcbiAgb3ZlcmZsb3c6IHZpc2libGUgI3skaW1wb3J0YW50fTtcbiAgY2xpcDogYXV0byAjeyRpbXBvcnRhbnR9O1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsICN7JGltcG9ydGFudH07XG59XG5cbi8vLyBWZXJ0aWNhbGx5IGNlbnRlcnMgdGhlIGVsZW1lbnQgaW5zaWRlIG9mIGl0cyBmaXJzdCBub24tc3RhdGljIHBhcmVudCxcbi8vLyBAbGluayBodHRwOi8vd3d3LnNpdGVwb2ludC5jb20vY2VudGVyaW5nLXdpdGgtc2Fzcy8gQ2VudGVyaW5nIFdpdGggU2Fzc1xuQG1peGluIHZlcnRpY2FsLWNlbnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbn1cblxuLy8vIEhvcml6b250YWxseSBjZW50ZXJzIHRoZSBlbGVtZW50IGluc2lkZSBvZiBpdHMgZmlyc3Qgbm9uLXN0YXRpYyBwYXJlbnQsXG4vLy8gQGxpbmsgaHR0cDovL3d3dy5zaXRlcG9pbnQuY29tL2NlbnRlcmluZy13aXRoLXNhc3MvIENlbnRlcmluZyBXaXRoIFNhc3NcbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG59XG5cbi8vLyBBYnNvbHV0ZWx5IGNlbnRlcnMgdGhlIGVsZW1lbnQgaW5zaWRlIG9mIGl0cyBmaXJzdCBub24tc3RhdGljIHBhcmVudCxcbi8vLyBAbGluayBodHRwOi8vd3d3LnNpdGVwb2ludC5jb20vY2VudGVyaW5nLXdpdGgtc2Fzcy8gQ2VudGVyaW5nIFdpdGggU2Fzc1xuQG1peGluIGFic29sdXRlLWNlbnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG59XG5cbi8vLyBJdGVyYXRlcyB0aHJvdWdoIGJyZWFrcG9pbnRzIGRlZmluZWQgaW4gYCRicmVha3BvaW50LWNsYXNzZXNgIGFuZCBwcmludHMgdGhlIENTUyBpbnNpZGUgdGhlIG1peGluIGF0IGVhY2ggYnJlYWtwb2ludCdzIG1lZGlhIHF1ZXJ5LiBVc2UgdGhpcyB3aXRoIHRoZSBncmlkLCBvciBhbnkgb3RoZXIgY29tcG9uZW50IHRoYXQgaGFzIHJlc3BvbnNpdmUgY2xhc3Nlcy5cbi8vL1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHNtYWxsIFt0cnVlXSAtIElmIGBmYWxzZWAsIHRoZSBtaXhpbiB3aWxsIHNraXAgdGhlIGBzbWFsbGAgYnJlYWtwb2ludC4gVXNlIHRoaXMgd2l0aCBjb21wb25lbnRzIHRoYXQgZG9uJ3QgcHJlZml4IGNsYXNzZXMgd2l0aCBgc21hbGwtYCwgb25seSBgbWVkaXVtLWAgYW5kIHVwLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGF1dG8taW5zZXJ0LWJyZWFrcG9pbnRzIFt0cnVlXSAtIElmIGBmYWxzZWAsIHRoZSBtaXhpbiB3aWxsIGl0ZXJhdGUgb3ZlciBicmVha3BvaW50cyB3aXRob3V0IGRvaW5nIHRoZSBtZWRpYSBxdWVyeSBpdHNlbGYuIFVzZWZ1bCBmb3IgbW9yZSBjb21wbGV4IG1lZGlhIHF1ZXJ5IGdlbmVyYXRpb24gYXMgaW4gdGhlIG1hcmdpbiBncmlkLlxuQG1peGluIC16Zi1lYWNoLWJyZWFrcG9pbnQoXG4gICRzbWFsbDogdHJ1ZSxcbiAgJGF1dG8taW5zZXJ0LWJyZWFrcG9pbnRzOiB0cnVlXG4pIHtcbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludC1pbihhdXRvLCAtemYtYm9vbCgkc21hbGwpLCAtemYtYm9vbCgkYXV0by1pbnNlcnQtYnJlYWtwb2ludHMpKSB7XG4gICAgQGNvbnRlbnRcbiAgfTtcbn1cblxuLy8vIEl0ZXJhdGVzIHdpdGggYEBjb250ZW50YCB0aHJvdWdoIHRoZSBnaXZlbiBsaXN0IG9mIGJyZWFrcG9pbnRzIGAkYnJlYWtwb2ludHNgLlxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TGlzdH0gJGJyZWFrcG9pbnRzIFthdXRvXSAtIEJyZWFrcG9pbnRzIHRvIGl0ZXJhdGVzIG9uLiBJdCBjYW4gYmUgYSBicmVha3BvaW50IG5hbWUsIGxpc3Qgb2YgYnJlYWtwb2ludHMgb3IgYGF1dG9gIGZvciBhbGwgYnJlYWtwb2ludHMuXG4vLy8gQHBhcmFtIHtCb29sZWFufE51bGx9ICR6ZXJvLWJyZWFrcG9pbnQgW251bGxdIC0gV2hldGhlciB0aGUgemVyby1icmVha3BvaW50IChvZnRlbiBgc21hbGxgKSBtdXN0IGJlIGluY2x1ZGVkLiBJZiBgdHJ1ZWAsIGl0IHdpbGwgYWx3YXlzIGJlIGFkZGVkIHRvIHRoZSBsaXN0IGlmIG5vdCBhbHJlYWR5IHRoZXJlLiBJZiBgZmFsc2VgLCBpdCB3aWxsIGFsd2F5cyBiZSByZW1vdmVkLiBEb2VzIG5vdGhpbmcgYnkgZGVmYXVsdC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW58S2V5d29yZH0gJG1lZGlhLXF1ZXJpZXMgW3RydWVdIC0gV2hldGhlciBtZWRpYS1xdWVyaWVzIG11c3QgYmUgZ2VuZXJhdGVkLiBJZiBgZm9yLWxpc3RzYCwgb25seSBnZW5lcmF0ZSBtZWRpYS1xdWVyaWVzIHdoZW4gYCRicmVha3BvaW50c2AgaXMgYSBsaXN0LlxuQG1peGluIC16Zi1lYWNoLWJyZWFrcG9pbnQtaW4oXG4gICRicmVha3BvaW50czogYXV0byxcbiAgJHplcm8tYnJlYWtwb2ludDogbnVsbCxcbiAgJG1lZGlhLXF1ZXJpZXM6IHRydWVcbikge1xuICAkLWxpc3Q6ICgpO1xuICAkLWJyZWFrcG9pbnRzLWlzLWEtbGlzdDogdHJ1ZTtcblxuICAvLyBSZXRyaWV2ZSB0aGUgbGlzdCBvZiBicmVha3BvaW50KHMpIHRvIGl0ZXJhdGUgb24uXG4gIEBpZiAkYnJlYWtwb2ludHMgPT0gYXV0byB7XG4gICAgJC1saXN0OiAkYnJlYWtwb2ludC1jbGFzc2VzO1xuICB9XG4gIEBlbHNlIGlmIHR5cGUtb2YoJGJyZWFrcG9pbnRzKSA9PSAnbGlzdCcge1xuICAgICQtbGlzdDogJGJyZWFrcG9pbnRzO1xuICB9XG4gIEBlbHNlIGlmIHR5cGUtb2YoJGJyZWFrcG9pbnRzKSA9PSAnc3RyaW5nJyB7XG4gICAgJC1saXN0OiAoJGJyZWFrcG9pbnRzKTtcbiAgICAkLWJyZWFrcG9pbnRzLWlzLWEtbGlzdDogZmFsc2U7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBlcnJvciAnV3Jvbmcgc3ludGF4IGZvciBcIiRicmVha3BvaW50c1wiIGluIFwiLXpmLWVhY2gtYnJlYWtwb2ludC1pbigpXCIuIEdvdCBcIiN7JGJyZWFrcG9pbnRzfVwiICgje3R5cGUtb2YoJGJyZWFrcG9pbnRzKX0pLiBFeHBlY3RlZCBhIGJyZWFrcG9pbnQgbmFtZSwgYSBsaXN0IG9mIGJyZWFrcG9pbnRzIG9yIFwiYXV0b1wiJztcbiAgfVxuXG4gIC8vIEFkZCBvciByZW1vdmUgdGhlIHplcm8gYnJlYWtwb2ludCBhY2NvcmRpbmcgdG8gYCR6ZXJvLWJyZWFrcG9pbnRgXG4gIEBpZiAkemVyby1icmVha3BvaW50ID09IHRydWUge1xuICAgICQtbGlzdDogam9pbigoJC16Zi16ZXJvLWJyZWFrcG9pbnQpLCBzbC1yZW1vdmUoJC1saXN0LCAkLXpmLXplcm8tYnJlYWtwb2ludCkpO1xuICB9XG4gIEBlbHNlIGlmICR6ZXJvLWJyZWFrcG9pbnQgPT0gZmFsc2Uge1xuICAgICQtbGlzdDogc2wtcmVtb3ZlKCQtbGlzdCwgJC16Zi16ZXJvLWJyZWFrcG9pbnQpO1xuICB9XG5cbiAgLy8gSXRlcmF0ZSBvbiBicmVha3BvaW50KHMpXG4gIEBlYWNoICRicCBpbiAkLWxpc3Qge1xuICAgICRvbGQtemYtc2l6ZTogbnVsbDtcbiAgICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygtemYtc2l6ZSkge1xuICAgICAgJG9sZC16Zi1zaXplOiAkLXpmLXNpemU7XG4gICAgfVxuICAgICQtemYtc2l6ZTogJGJwICFnbG9iYWw7XG5cbiAgICBAaWYgKCRtZWRpYS1xdWVyaWVzID09IHRydWVcbiAgICAgIG9yICgkbWVkaWEtcXVlcmllcyA9PSAnZm9yLWxpc3RzJyBhbmQgJC1icmVha3BvaW50cy1pcy1hLWxpc3QpKSB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgJC16Zi1zaXplOiAkb2xkLXpmLXNpemUgIWdsb2JhbDtcbiAgfVxufVxuXG4vLy8gR2VuZXJhdGUgdGhlIGBAY29udGVudGAgcGFzc2VkIHRvIHRoZSBtaXhpbiB3aXRoIGEgdmFsdWUgYCQtemYtYnAtdmFsdWVgIHJlbGF0ZWQgdG8gYSBicmVha3BvaW50LCBkZXBlbmRpbmcgb24gdGhlIGAkbmFtZWAgcGFyYW1ldGVyOlxuLy8vIC0gRm9yIGEgc2luZ2xlIHZhbHVlLCBgJC16Zi1icC12YWx1ZWAgaXMgdGhpcyB2YWx1ZS5cbi8vLyAtIEZvciBhIGJyZWFrcG9pbnQgbmFtZSwgYCQtemYtYnAtdmFsdWVgIGlzIHRoZSBjb3JyZXNwb25kaW5nIGJyZWFrcG9pbnQgdmFsdWUgaW4gYCRtYXBgLlxuLy8vIC0gRm9yIFwiYXV0b1wiLCBgJC16Zi1icC12YWx1ZWAgaXMgdGhlIGNvcnJlc3BvbmRpbmcgYnJlYWtwb2ludCB2YWx1ZSBpbiBgJG1hcGAgYW5kIGlzIHBhc3NlZCB0byBgQGNvbnRlbnRgLCB3aGljaCBpcyBtYWRlIHJlc3BvbnNpdmUgZm9yIGVhY2ggYnJlYWtwb2ludCBvZiBgJG1hcGAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8QXJyYXl8S2V5d29yZH0gJG5hbWUgW2F1dG9dIC0gU2luZ2xlIHZhbHVlLCBicmVha3BvaW50IG5hbWUsIG9yIGxpc3Qgb2YgYnJlYWtwb2ludCBuYW1lcyB0byB1c2UuIFwiYXV0b1wiIGJ5IGRlZmF1bHQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkbWFwIC0gTWFwIG9mIGJyZWFrcG9pbnRzIGFuZCB2YWx1ZXMgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZS5cbkBtaXhpbiAtemYtYnJlYWtwb2ludC12YWx1ZShcbiAgJG5hbWU6IGF1dG8sXG4gICRtYXA6IG51bGxcbikge1xuICBAaWYgJG5hbWUgPT0gYXV0byBhbmQgdHlwZS1vZigkbWFwKSA9PSAnbWFwJyB7XG4gICAgLy8gXCJhdXRvXCJcbiAgICBAZWFjaCAkaywgJHYgaW4gJG1hcCB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRrKSB7XG4gICAgICAgIEBpbmNsdWRlIC16Zi1icmVha3BvaW50LXZhbHVlKCR2LCAkbWFwKSB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIGJyZWFrcG9pbnQgbmFtZVxuICAgIEBpZiB0eXBlLW9mKCRuYW1lKSA9PSAnc3RyaW5nJyB7XG4gICAgICAkYnAtdmFsdWU6IC16Zi1nZXQtYnAtdmFsKCRtYXAsICRuYW1lKTtcbiAgICAgIEBpZiAkYnAtdmFsdWUgIT0gbnVsbCB7XG4gICAgICAgICRuYW1lOiAkYnAtdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYnJlYWtwb2ludCB2YWx1ZVxuICAgICQtemYtYnAtdmFsdWU6ICRuYW1lICFnbG9iYWw7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuJC16Zi1mb250LXN0YWNrOiAoXG4gICdnZW9yZ2lhJzogKEdlb3JnaWEsIFwiVVJXIEJvb2ttYW4gTFwiLCBzZXJpZiksXG4gICdoZWx2ZXRpY2EnOiAoSGVsdmV0aWNhLCBBcmlhbCwgXCJOaW1idXMgU2FucyBMXCIsIHNhbnMtc2VyaWYpLFxuICAnbHVjaWRhLWdyYW5kZSc6IChcIkx1Y2lkYSBHcmFuZGVcIiwgXCJMdWNpZGEgU2FucyBVbmljb2RlXCIsIFwiQml0c3RyZWFtIFZlcmEgU2Fuc1wiLCBzYW5zLXNlcmlmKSxcbiAgJ21vbm9zcGFjZSc6IChcIkNvdXJpZXIgTmV3XCIsIENvdXJpZXIsIFwiTmltYnVzIFNhbnMgTFwiLCBtb25vc3BhY2UpLFxuICAnc3lzdGVtJzogKC1hcHBsZS1zeXN0ZW0sIHN5c3RlbS11aSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcIlNlZ29lIFVJXCIsIFwiUm9ib3RvXCIsIFwiT3h5Z2VuXCIsIFwiVWJ1bnR1XCIsIFwiQ2FudGFyZWxsXCIsIFwiRmlyYSBTYW5zXCIsIFwiSGVsdmV0aWNhIE5ldWVcIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZiksXG4gICd2ZXJkYW5hJzogKFZlcmRhbmEsIEdlbmV2YSwgXCJEZWphVnUgU2Fuc1wiLCBzYW5zLXNlcmlmKSxcbik7XG5cbi8vLyBSZXR1cm4gYSBmb250IHN0YWNrIGxpc3QgZnJvbSBhIG1hcC4gRXF1aXZhbGVudCB0byBgbWFwLXNhZmUtZ2V0KCRuYW1lLCAkLXpmLWZvbnQtc3RhY2spYC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3RhY2sgLSBOYW1lIG9mIHRoZSBmb250IHN0YWNrLlxuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIFskLXpmLWZvbnQtc3RhY2tdIC0gTWFwIG9mIGZvbnQgc3RhY2tzIHRvIHJldHJpZXZlIGEgbGlzdCBmcm9tLlxuLy8vXG4vLy8gQHJldHVybnMge0xpc3R9IEZvdW5kIGZvbnQgc3RhY2suXG5AZnVuY3Rpb24gZm9udC1zdGFjaygkc3RhY2ssICRtYXA6ICQtemYtZm9udC1zdGFjaykge1xuICBAcmV0dXJuIG1hcC1zYWZlLWdldCgkbWFwLCAkc3RhY2spO1xufVxuIiwiLyoqXG4gKiBDdXN0b20gdmFyaWFibGVzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuLyogVHJhbnNpdGlvbnMgKi9cbiRkdXJhdGlvbjogMC41cztcbiRlYXNpbmc6IGN1YmljLWJlemllcigwLCAwLjYsIDAuNywgMSk7XG4kdHJhbnNpdGlvbjogJGR1cmF0aW9uICRlYXNpbmc7XG5cbi8qIHotaW5kZXggKi9cbiR6LWluZGV4LW5lZ2F0aXZlOiAtMTtcbiR6LWluZGV4LWRlZmF1bHQ6IDA7XG4kei1pbmRleC1vdmVybGF5OiAxO1xuJHotaW5kZXgtc2NyZWVuLXJlYWRlcjogMTAwMDtcbiIsIi8qKlxuICogQ3VzdG9tIG1peGluc1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbi8qKlxuICogVXNlZCB0byBjb21waWxlIENTUyB0byBkaXNwbGF5IHJldGluYSBpbWFnZXMuXG4gKlxuICogRXhhbXBsZTpcbiAqIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UtcmV0aW5hKGxvZ28sIHBuZywgMjEwcHgsIDcwcHgpO1xuICpcbiAqL1xuQG1peGluIGJhY2tncm91bmQtaW1hZ2UtcmV0aW5hKCRmaWxlLCAkdHlwZSwgJHdpZHRoLCAkaGVpZ2h0KSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiYXNzZXRzL2ltYWdlcy9cIiArICRmaWxlICsgXCIuXCIgKyAkdHlwZSk7XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgb25seSBzY3JlZW4gYW5kICgtbW96LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLCBvbmx5IHNjcmVlbiBhbmQgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIgLyAxKSwgb25seSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgb25seSBzY3JlZW4gYW5kIChtaW4tcmVzb2x1dGlvbjogMTkyZHBpKSwgb25seSBzY3JlZW4gYW5kIChtaW4tcmVzb2x1dGlvbjogMmRwcHgpIHtcbiAgICAgICAgJiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJhc3NldHMvaW1hZ2VzL1wiICsgJGZpbGUgKyBcIkAyeC5cIiArICR0eXBlKTtcbiAgICAgICAgICAgIC13ZWJraXQtYmFja2dyb3VuZC1zaXplOiAkd2lkdGggJGhlaWdodDtcbiAgICAgICAgICAgIC1tb3otYmFja2dyb3VuZC1zaXplOiAkd2lkdGggJGhlaWdodDtcbiAgICAgICAgICAgIC1vLWJhY2tncm91bmQtc2l6ZTogJHdpZHRoICRoZWlnaHQ7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6ICR3aWR0aCAkaGVpZ2h0O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIEN1c3RvbSBwbGFjZWhvbGRlcnNcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG4ldW5zdHlsZWQtbGlzdCB7XG4gICAgbWFyZ2luOiB7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICB9O1xuICAgIHBhZGRpbmc6IHtcbiAgICAgICAgbGVmdDogMDtcbiAgICB9O1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbi8qKlxuICogQWRkIHN0eWxpbmcgdG8gcm9vdCAob3B0aW9uYWwpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuQG1peGluIG9wdGlvbmFsLWF0LXJvb3QoJHNlbCkge1xuICAgIEBhdC1yb290ICN7aWYobm90ICYsICRzZWwsIHNlbGVjdG9yLWFwcGVuZCgmLCAkc2VsKSl9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG4vKipcbiAqIEZvcm0gcGxhY2Vob2xkZXIgc3R5bGluZ1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbkBtaXhpbiBwbGFjZWhvbGRlciB7XG4gICAgQGluY2x1ZGUgb3B0aW9uYWwtYXQtcm9vdCgnOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyJykge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBvcHRpb25hbC1hdC1yb290KCc6LW1vei1wbGFjZWhvbGRlcicpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgb3B0aW9uYWwtYXQtcm9vdCgnOjotbW96LXBsYWNlaG9sZGVyJykge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBvcHRpb25hbC1hdC1yb290KCc6LW1zLWlucHV0LXBsYWNlaG9sZGVyJykge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbi8qKlxuICogQXV0b21hdGljYWxseSBpbmNsdWRlIGZvY3VzIHN0eWxlcyB3aXRoIGhvdmVyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuQG1peGluIGhvY3VzIHtcbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbi8qKlxuICogTWVkaWEgcXVlcmllc1xuICovXG5cbkBtaXhpbiBtZWRpYS1sYXJnZSB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAnbGFyZ2UnKSkge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbkBtaXhpbiBtZWRpYS1leHRyYS1sYXJnZSB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAneGxhcmdlJykpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG4vKipcbiAqIENvbnRhaW5lcnNcbiAqL1xuXG5AbWl4aW4gY29udGFpbmVyIHtcbiAgICB3aWR0aDogJGJsb2NrLXdpZHRoO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBtYXJnaW46IDAgYXV0bztcbn1cblxuQG1peGluIGNvbnRhaW5lci13aWRlIHtcbiAgICB3aWR0aDogJGJsb2NrLXdpZHRoLXdpZGU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbjogMCBhdXRvO1xufVxuIiwiLyohIG5vcm1hbGl6ZS5jc3MgdjguMC4xIHwgTUlUIExpY2Vuc2UgfCBnaXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcyAqL1xuXG4vKiBEb2N1bWVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBsaW5lIGhlaWdodCBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluIGlPUy5cbiAqL1xuXG5odG1sIHtcbiAgbGluZS1oZWlnaHQ6IDEuMTU7IC8qIDEgKi9cbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG59XG5cbi8qIFNlY3Rpb25zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSB0aGUgbWFyZ2luIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5ib2R5IHtcbiAgbWFyZ2luOiAwO1xufVxuXG4vKipcbiAqIFJlbmRlciB0aGUgYG1haW5gIGVsZW1lbnQgY29uc2lzdGVudGx5IGluIElFLlxuICovXG5cbm1haW4ge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBmb250IHNpemUgYW5kIG1hcmdpbiBvbiBgaDFgIGVsZW1lbnRzIHdpdGhpbiBgc2VjdGlvbmAgYW5kXG4gKiBgYXJ0aWNsZWAgY29udGV4dHMgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgU2FmYXJpLlxuICovXG5cbmgxIHtcbiAgZm9udC1zaXplOiAyZW07XG4gIG1hcmdpbjogMC42N2VtIDA7XG59XG5cbi8qIEdyb3VwaW5nIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cbiAqIDIuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UgYW5kIElFLlxuICovXG5cbmhyIHtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7IC8qIDEgKi9cbiAgaGVpZ2h0OiAwOyAvKiAxICovXG4gIG92ZXJmbG93OiB2aXNpYmxlOyAvKiAyICovXG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5wcmUge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IC8qIDEgKi9cbiAgZm9udC1zaXplOiAxZW07IC8qIDIgKi9cbn1cblxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgb24gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxuICovXG5cbmEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLyoqXG4gKiAxLiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgaW4gQ2hyb21lIDU3LVxuICogMi4gQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaS5cbiAqL1xuXG5hYmJyW3RpdGxlXSB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7IC8qIDEgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC8qIDIgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkOyAvKiAyICovXG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgd2VpZ2h0IGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cbiAqL1xuXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbmNvZGUsXG5rYmQsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvKiAxICovXG4gIGZvbnQtc2l6ZTogMWVtOyAvKiAyICovXG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc21hbGwge1xuICBmb250LXNpemU6IDgwJTtcbn1cblxuLyoqXG4gKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW5cbiAqIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zdWIsXG5zdXAge1xuICBmb250LXNpemU6IDc1JTtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG5zdWIge1xuICBib3R0b206IC0wLjI1ZW07XG59XG5cbnN1cCB7XG4gIHRvcDogLTAuNWVtO1xufVxuXG4vKiBFbWJlZGRlZCBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSB0aGUgYm9yZGVyIG9uIGltYWdlcyBpbnNpZGUgbGlua3MgaW4gSUUgMTAuXG4gKi9cblxuaW1nIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xufVxuXG4vKiBGb3Jtc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBDaGFuZ2UgdGhlIGZvbnQgc3R5bGVzIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIFJlbW92ZSB0aGUgbWFyZ2luIGluIEZpcmVmb3ggYW5kIFNhZmFyaS5cbiAqL1xuXG5idXR0b24sXG5pbnB1dCxcbm9wdGdyb3VwLFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICBmb250LWZhbWlseTogaW5oZXJpdDsgLyogMSAqL1xuICBmb250LXNpemU6IDEwMCU7IC8qIDEgKi9cbiAgbGluZS1oZWlnaHQ6IDEuMTU7IC8qIDEgKi9cbiAgbWFyZ2luOiAwOyAvKiAyICovXG59XG5cbi8qKlxuICogU2hvdyB0aGUgb3ZlcmZsb3cgaW4gSUUuXG4gKiAxLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlLlxuICovXG5cbmJ1dHRvbixcbmlucHV0IHsgLyogMSAqL1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEVkZ2UsIEZpcmVmb3gsIGFuZCBJRS5cbiAqIDEuIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRmlyZWZveC5cbiAqL1xuXG5idXR0b24sXG5zZWxlY3QgeyAvKiAxICovXG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG4gKi9cblxuYnV0dG9uLFxuW3R5cGU9XCJidXR0b25cIl0sXG5bdHlwZT1cInJlc2V0XCJdLFxuW3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBpbiBGaXJlZm94LlxuICovXG5cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwiYnV0dG9uXCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJyZXNldFwiXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwic3VibWl0XCJdOjotbW96LWZvY3VzLWlubmVyIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xuICBwYWRkaW5nOiAwO1xufVxuXG4vKipcbiAqIFJlc3RvcmUgdGhlIGZvY3VzIHN0eWxlcyB1bnNldCBieSB0aGUgcHJldmlvdXMgcnVsZS5cbiAqL1xuXG5idXR0b246LW1vei1mb2N1c3JpbmcsXG5bdHlwZT1cImJ1dHRvblwiXTotbW96LWZvY3VzcmluZyxcblt0eXBlPVwicmVzZXRcIl06LW1vei1mb2N1c3JpbmcsXG5bdHlwZT1cInN1Ym1pdFwiXTotbW96LWZvY3VzcmluZyB7XG4gIG91dGxpbmU6IDFweCBkb3R0ZWQgQnV0dG9uVGV4dDtcbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBwYWRkaW5nIGluIEZpcmVmb3guXG4gKi9cblxuZmllbGRzZXQge1xuICBwYWRkaW5nOiAwLjM1ZW0gMC43NWVtIDAuNjI1ZW07XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cbiAqIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cbiAqIDMuIFJlbW92ZSB0aGUgcGFkZGluZyBzbyBkZXZlbG9wZXJzIGFyZSBub3QgY2F1Z2h0IG91dCB3aGVuIHRoZXkgemVybyBvdXRcbiAqICAgIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbmxlZ2VuZCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgY29sb3I6IGluaGVyaXQ7IC8qIDIgKi9cbiAgZGlzcGxheTogdGFibGU7IC8qIDEgKi9cbiAgbWF4LXdpZHRoOiAxMDAlOyAvKiAxICovXG4gIHBhZGRpbmc6IDA7IC8qIDMgKi9cbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDsgLyogMSAqL1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG4gKi9cblxucHJvZ3Jlc3Mge1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRSAxMCsuXG4gKi9cblxudGV4dGFyZWEge1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuLyoqXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBJRSAxMC5cbiAqIDIuIFJlbW92ZSB0aGUgcGFkZGluZyBpbiBJRSAxMC5cbiAqL1xuXG5bdHlwZT1cImNoZWNrYm94XCJdLFxuW3R5cGU9XCJyYWRpb1wiXSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgcGFkZGluZzogMDsgLyogMiAqL1xufVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZS5cbiAqL1xuXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIG9kZCBhcHBlYXJhbmNlIGluIENocm9tZSBhbmQgU2FmYXJpLlxuICogMi4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXG4gKi9cblxuW3R5cGU9XCJzZWFyY2hcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLyogMSAqL1xuICBvdXRsaW5lLW9mZnNldDogLTJweDsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgaW5uZXIgcGFkZGluZyBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBtYWNPUy5cbiAqL1xuXG5bdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICogMi4gQ2hhbmdlIGZvbnQgcHJvcGVydGllcyB0byBgaW5oZXJpdGAgaW4gU2FmYXJpLlxuICovXG5cbjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMSAqL1xuICBmb250OiBpbmhlcml0OyAvKiAyICovXG59XG5cbi8qIEludGVyYWN0aXZlXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gRWRnZSwgSUUgMTArLCBhbmQgRmlyZWZveC5cbiAqL1xuXG5kZXRhaWxzIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc3VtbWFyeSB7XG4gIGRpc3BsYXk6IGxpc3QtaXRlbTtcbn1cblxuLyogTWlzY1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAxMCsuXG4gKi9cblxudGVtcGxhdGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwLlxuICovXG5cbltoaWRkZW5dIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbiIsIi8qKlxuICogUmVzZXQuXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuLyoqXG4gKiBBIHZlcnkgc2ltcGxlIHJlc2V0IHRoYXQgc2l0cyBvbiB0b3Agb2YgTm9ybWFsaXplLmNzcy5cbiAqL1xuXG5ib2R5LFxuaDEsXG5oMixcbmgzLFxuaDQsXG5oNSxcbmg2LFxuYmxvY2txdW90ZSxcbnAsXG5wcmUsXG5kbCxcbmRkLFxub2wsXG51bCxcbmZpZ3VyZSxcbmhyLFxuZmllbGRzZXQsXG5sZWdlbmQge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG4vKipcbiAqIFJlbW92ZSB0cmFpbGluZyBtYXJnaW5zIGZyb20gbmVzdGVkIGxpc3RzLlxuICovXG5cbmxpID4ge1xuICAgIG9sLFxuICAgIHVsIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG59XG5cbi8qKlxuICogUmVtb3ZlIGRlZmF1bHQgdGFibGUgc3BhY2luZy5cbiAqL1xuXG50YWJsZSB7XG4gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgICBib3JkZXItc3BhY2luZzogMDtcbn1cblxuLyoqXG4gKiAxLiBSZXNldCBDaHJvbWUgYW5kIEZpcmVmb3ggYmVoYXZpb3VyIHdoaWNoIHNldHMgYSBgbWluLXdpZHRoOiBtaW4tY29udGVudDtgXG4gKiAgICBvbiBmaWVsZHNldHMuXG4gKi9cblxuZmllbGRzZXQge1xuICAgIG1pbi13aWR0aDogMDsgLyogWzFdICovXG4gICAgYm9yZGVyOiAwO1xufVxuXG4vKipcbiAqIE1vcmUgc2Vuc2libGUgZGVmYXVsdCBib3gtc2l6aW5nLlxuICogQHNlZSBjc3MtdHJpY2tzLmNvbS9pbmhlcml0aW5nLWJveC1zaXppbmctcHJvYmFibHktc2xpZ2h0bHktYmV0dGVyLWJlc3QtcHJhY3RpY2VcbiAqL1xuXG5odG1sIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4qIHtcbiAgICAmLFxuICAgICY6YmVmb3JlLFxuICAgICY6YWZ0ZXIge1xuICAgICAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICAgIH1cbn1cblxuLyoqXG4gKiBSZXNldCBidXR0b24gc3R5bGVzXG4gKi9cblxuYnV0dG9uLFxuW3R5cGU9J2J1dHRvbiddLFxuW3R5cGU9J3Jlc2V0J10sXG5bdHlwZT0nc3VibWl0J10ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgYm9yZGVyOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGZvbnQ6IGluaGVyaXQ7XG59XG5cbip7bWFyZ2luOjA7IHBhZGRpbmc6MDt9XG4iLCIvKipcbiAqIFByaW50LlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbi8qKlxuICogVmVyeSBjcnVkZSwgcmVzZXQtbGlrZSBzdHlsZXMgdGFrZW4gZnJvbSB0aGUgSFRNTDUgQm9pbGVycGxhdGU6XG4gKiBodHRwczovL2dpdGh1Yi5jb20vaDVicC9odG1sNS1ib2lsZXJwbGF0ZS9ibG9iLzUuMy4wL2Rpc3QvZG9jL2Nzcy5tZCNwcmludC1zdHlsZXNcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9oNWJwL2h0bWw1LWJvaWxlcnBsYXRlL2Jsb2IvbWFzdGVyL2Rpc3QvY3NzL21haW4uY3NzI0wyMDUtTDI4MlxuICovXG5cbkBtZWRpYSBwcmludCB7XG4gICAgLyoqXG4gICAgICogMS4gQmxhY2sgcHJpbnRzIGZhc3RlcjogaHR0cDovL3d3dy5zYW5iZWlqaS5jb20vYXJjaGl2ZXMvOTUzXG4gICAgICoqL1xuXG4gICAgKixcbiAgICAqOmJlZm9yZSxcbiAgICAqOmFmdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgICAgY29sb3I6ICMwMDAgIWltcG9ydGFudDsgLyogWzFdICovXG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBhLFxuICAgIGE6dmlzaXRlZCB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cblxuICAgIGFbaHJlZl06YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnICgnIGF0dHIoaHJlZikgJyknO1xuICAgIH1cblxuICAgIGFiYnJbdGl0bGVdOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyAoJyBhdHRyKHRpdGxlKSAnKSc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAqIERvbuKAmXQgc2hvdyBsaW5rcyB0aGF0IGFyZSBmcmFnbWVudCBpZGVudGlmaWVycywgb3IgdXNlIHRoZSBgamF2YXNjcmlwdDpgXG4gICAqIHBzZXVkbyBwcm90b2NvbC5cbiAgICovXG5cbiAgICBhW2hyZWZePScjJ106YWZ0ZXIsXG4gICAgYVtocmVmXj0namF2YXNjcmlwdDonXTphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgIH1cblxuICAgIHByZSxcbiAgICBibG9ja3F1b3RlIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTtcbiAgICAgICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuICAgIH1cblxuICAgIC8qKlxuICAgKiBQcmludGluZyBUYWJsZXM6IGh0dHA6Ly9jc3MtZGlzY3Vzcy5pbmN1dGlvLmNvbS93aWtpL1ByaW50aW5nX1RhYmxlc1xuICAgKi9cblxuICAgIHRoZWFkIHtcbiAgICAgICAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwO1xuICAgIH1cblxuICAgIHRyLFxuICAgIGltZyB7XG4gICAgICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICB9XG5cbiAgICBpbWcge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBwLFxuICAgIGgyLFxuICAgIGgzIHtcbiAgICAgICAgb3JwaGFuczogMztcbiAgICAgICAgd2lkb3dzOiAzO1xuICAgIH1cblxuICAgIGgyLFxuICAgIGgzIHtcbiAgICAgICAgcGFnZS1icmVhay1hZnRlcjogYXZvaWQ7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBWaXNpYmlsaXR5IGNsYXNzZXNcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG4uaGlkZS1mb3ItbGFyZ2Uge1xuICAgIEBpbmNsdWRlIG1lZGlhLWxhcmdlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLnNob3ctZm9yLWxhcmdlIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1sYXJnZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuIiwiLnJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgQGluY2x1ZGUgbWVkaWEtbGFyZ2Uge1xuICAgICAgICBtYXJnaW46IDAgKC0xICogKCRibG9jay1ndXR0ZXIpKTtcbiAgICB9XG59XG5cbi5jb2x1bW4ge1xuICAgIHBhZGRpbmc6IDAgJGJsb2NrLWd1dHRlcjtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLmNvbHVtbi00IHtcbiAgICBAaW5jbHVkZSBtZWRpYS1sYXJnZSB7XG4gICAgICAgIGZsZXg6IDAgMCAzMy4zMzMzJTtcbiAgICAgICAgbWF4LXdpZHRoOiAzMy4zMzMzJTtcbiAgICB9XG59XG5cbi5jb2x1bW4tNiB7XG4gICAgQGluY2x1ZGUgbWVkaWEtbGFyZ2Uge1xuICAgICAgICBmbGV4OiAwIDAgNTAlO1xuICAgICAgICBtYXgtd2lkdGg6IDUwJTtcbiAgICB9XG59XG5cbi5jb2x1bW4tLWFsaWduLWNlbnRlciB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuIiwiLyoqXG4gKiBTY3JlZW4gUmVhZGVyIFRleHRcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG4uc2NyZWVuLXJlYWRlci10ZXh0IHtcbiAgICBAaW5jbHVkZSBlbGVtZW50LWludmlzaWJsZTtcbn1cbiIsIi8qKlxuICogQW5pbWF0aW9ucy5cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG5Aa2V5ZnJhbWVzIGZhZGUtaW4ge1xuICAgIDAlIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGUtZG93biB7XG4gICAgMCUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTMwcHgpO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgfVxufVxuXG5bZGF0YS1hbmltYXRpb25dIHtcbiAgICBvcGFjaXR5OiAwO1xuXG4gICAgJltkYXRhLWFuaW1hdGlvbi1hcHBlYXJpbmddIHtcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGZhZGUtaW47XG4gICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogJGR1cmF0aW9uO1xuICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiAkZWFzaW5nO1xuICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcblxuICAgICAgICAmW2RhdGEtYW5pbWF0aW9uPSdzbGlkZS1kb3duJ10ge1xuICAgICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlLWRvd247XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIDQwIHtcbiAgICAgICAgW2RhdGEtYW5pbWF0aW9uXVtkYXRhLWFuaW1hdGlvbi1kZWxheT0nI3skaSAqIDEwMH0nXVtkYXRhLWFuaW1hdGlvbi1kZWxheT0nI3skaSAqIDEwMH0nXSB7XG4gICAgICAgICAgICBhbmltYXRpb24tZGVsYXk6ICN7JGkgLyAxMH1zO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAgIFtkYXRhLWFuaW1hdGlvbl0ge1xuICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDAuMDAxcyAhaW1wb3J0YW50O1xuICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuMDAxcyAhaW1wb3J0YW50O1xuICAgIH1cbn1cbiIsIi8qKlxuICogV29yZFByZXNzLXNwZWNpZmljIHN0eWxlcy5cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG4uYWxpZ25ub25lIHtcbiAgICBtYXJnaW46IDVweCAyMHB4IDIwcHggMDtcbn1cblxuLmFsaWduY2VudGVyLFxuZGl2LmFsaWduY2VudGVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW46IDVweCBhdXRvIDVweCBhdXRvO1xufVxuXG4uYWxpZ25yaWdodCB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIG1hcmdpbjogNXB4IDAgMjBweCAyMHB4O1xufVxuXG4uYWxpZ25sZWZ0IHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW46IDVweCAyMHB4IDIwcHggMDtcbn1cblxuYSBpbWcuYWxpZ25yaWdodCB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIG1hcmdpbjogNXB4IDAgMjBweCAyMHB4O1xufVxuXG5hIGltZy5hbGlnbm5vbmUge1xuICAgIG1hcmdpbjogNXB4IDIwcHggMjBweCAwO1xufVxuXG5hIGltZy5hbGlnbmxlZnQge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbjogNXB4IDIwcHggMjBweCAwO1xufVxuXG5hIGltZy5hbGlnbmNlbnRlciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4ud3AtY2FwdGlvbiB7XG4gICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZjBmMGYwO1xuICAgIG1heC13aWR0aDogOTYlO1xuICAgIC8qIEltYWdlIGRvZXMgbm90IG92ZXJmbG93IHRoZSBjb250ZW50IGFyZWEgKi9cbiAgICBwYWRkaW5nOiA1cHggM3B4IDEwcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4ud3AtY2FwdGlvbi5hbGlnbm5vbmUge1xuICAgIG1hcmdpbjogNXB4IDIwcHggMjBweCAwO1xufVxuXG4ud3AtY2FwdGlvbi5hbGlnbmxlZnQge1xuICAgIG1hcmdpbjogNXB4IDIwcHggMjBweCAwO1xufVxuXG4ud3AtY2FwdGlvbi5hbGlnbnJpZ2h0IHtcbiAgICBtYXJnaW46IDVweCAwIDIwcHggMjBweDtcbn1cblxuLndwLWNhcHRpb24gaW1nIHtcbiAgICBib3JkZXI6IDAgbm9uZTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgbWFyZ2luOiAwO1xuICAgIG1heC13aWR0aDogOTguNSU7XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogYXV0bztcbn1cblxuLndwLWNhcHRpb24gcC53cC1jYXB0aW9uLXRleHQge1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBsaW5lLWhlaWdodDogMTdweDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMCA0cHggNXB4O1xufVxuXG4uZ2FsbGVyeSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IGNhbGMoMS41ICogMXJlbSk7XG59XG5cbi5nYWxsZXJ5LWl0ZW0ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLmdhbGxlcnktY29sdW1ucy0yIC5nYWxsZXJ5LWl0ZW0ge1xuICAgIG1heC13aWR0aDogY2FsYygoMTAwJSAtIDE2cHggKiAxKSAvIDIpO1xufVxuXG4uZ2FsbGVyeS1jb2x1bW5zLTIgLmdhbGxlcnktaXRlbTpudGgtb2YtdHlwZSgybiArIDIpIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG59XG5cbi5nYWxsZXJ5LWNvbHVtbnMtMyAuZ2FsbGVyeS1pdGVtIHtcbiAgICBtYXgtd2lkdGg6IGNhbGMoKDEwMCUgLSAxNnB4ICogMikgLyAzKTtcbn1cblxuLmdhbGxlcnktY29sdW1ucy0zIC5nYWxsZXJ5LWl0ZW06bnRoLW9mLXR5cGUoM24gKyAzKSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xufVxuXG4uZ2FsbGVyeS1jb2x1bW5zLTQgLmdhbGxlcnktaXRlbSB7XG4gICAgbWF4LXdpZHRoOiBjYWxjKCgxMDAlIC0gMTZweCAqIDMpIC8gNCk7XG59XG5cbi5nYWxsZXJ5LWNvbHVtbnMtNCAuZ2FsbGVyeS1pdGVtOm50aC1vZi10eXBlKDRuICsgNCkge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbn1cblxuLmdhbGxlcnktY29sdW1ucy01IC5nYWxsZXJ5LWl0ZW0ge1xuICAgIG1heC13aWR0aDogY2FsYygoMTAwJSAtIDE2cHggKiA0KSAvIDUpO1xufVxuXG4uZ2FsbGVyeS1jb2x1bW5zLTUgLmdhbGxlcnktaXRlbTpudGgtb2YtdHlwZSg1biArIDUpIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG59XG5cbi5nYWxsZXJ5LWNvbHVtbnMtNiAuZ2FsbGVyeS1pdGVtIHtcbiAgICBtYXgtd2lkdGg6IGNhbGMoKDEwMCUgLSAxNnB4ICogNSkgLyA2KTtcbn1cblxuLmdhbGxlcnktY29sdW1ucy02IC5nYWxsZXJ5LWl0ZW06bnRoLW9mLXR5cGUoNm4gKyA2KSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xufVxuXG4uZ2FsbGVyeS1jb2x1bW5zLTcgLmdhbGxlcnktaXRlbSB7XG4gICAgbWF4LXdpZHRoOiBjYWxjKCgxMDAlIC0gMTZweCAqIDYpIC8gNyk7XG59XG5cbi5nYWxsZXJ5LWNvbHVtbnMtNyAuZ2FsbGVyeS1pdGVtOm50aC1vZi10eXBlKDduICsgNykge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbn1cblxuLmdhbGxlcnktY29sdW1ucy04IC5nYWxsZXJ5LWl0ZW0ge1xuICAgIG1heC13aWR0aDogY2FsYygoMTAwJSAtIDE2cHggKiA3KSAvIDgpO1xufVxuXG4uZ2FsbGVyeS1jb2x1bW5zLTggLmdhbGxlcnktaXRlbTpudGgtb2YtdHlwZSg4biArIDgpIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG59XG5cbi5nYWxsZXJ5LWNvbHVtbnMtOSAuZ2FsbGVyeS1pdGVtIHtcbiAgICBtYXgtd2lkdGg6IGNhbGMoKDEwMCUgLSAxNnB4ICogOCkgLyA5KTtcbn1cblxuLmdhbGxlcnktY29sdW1ucy05IC5nYWxsZXJ5LWl0ZW06bnRoLW9mLXR5cGUoOW4gKyA5KSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xufVxuXG4uZ2FsbGVyeS1pdGVtOmxhc3Qtb2YtdHlwZSB7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbn1cblxuLmdhbGxlcnktY2FwdGlvbiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogMC41cmVtO1xufVxuXG4uZ2FsbGVyeS1pdGVtID4gZGl2ID4gYSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgI3dwYWRtaW5iYXIge1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBHbG9iYWwgc3R5bGVzIGFuZCBlbGVtZW50cyB1c2VkIHRocm91Z2hvdXQgdGhlIHNpdGUuXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuOjotbW96LXNlbGVjdGlvbiB7XG4gICAgYmFja2dyb3VuZDogJGNvbG9yLXByaW1hcnk7XG4gICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbn1cblxuOjpzZWxlY3Rpb24ge1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci1wcmltYXJ5O1xuICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG59XG5cbmJvZHkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuaHRtbCB7XG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG59XG5cbmEge1xuICAgIHRyYW5zaXRpb246IGFsbCAkdHJhbnNpdGlvbjtcbn1cblxucCB7XG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG59XG5cbmZvcm0ge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi52aWRlby1jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiB7XG4gICAgICAgIHRvcDogMjVweDtcbiAgICAgICAgYm90dG9tOiA1Ni4yNSU7XG4gICAgfVxuICAgIGhlaWdodDogMDtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgJHRyYW5zaXRpb247XG5cbiAgICBpZnJhbWUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICAmLmFjdGl2ZSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxufVxuXG5pbWcge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYztcbiAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xufVxuIiwiLyoqXG4gKiBUeXBvZ3JhcGh5XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuYm9keSB7XG4gICAgZm9udC1mYW1pbHk6ICRib2R5LWZvbnQtZmFtaWx5O1xuICAgIGZvbnQtc2l6ZTogJGdsb2JhbC1mb250LXNpemU7XG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xufVxuXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYge1xuICAgIGZvbnQtZmFtaWx5OiAkaGVhZGluZy1mb250LWZhbWlseTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gICAgY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICBsaW5lLWhlaWdodDogMS4xO1xuXG4gICAgYSB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB9XG59XG5cbmgxLFxuLmgxIHtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDQyKTtcbiAgICBAaW5jbHVkZSBtZWRpYS1sYXJnZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoNTIpO1xuICAgIH1cbn1cblxuaDIsXG4uaDIge1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMzIpO1xuICAgIEBpbmNsdWRlIG1lZGlhLWxhcmdlIHtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYyg0Mik7XG4gICAgfVxufVxuXG5oMyxcbi5oMyB7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygyOCk7XG4gICAgQGluY2x1ZGUgbWVkaWEtbGFyZ2Uge1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDMyKTtcbiAgICB9XG59XG5cbmg0LFxuLmg0IHtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDI0KTtcbiAgICBAaW5jbHVkZSBtZWRpYS1sYXJnZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjgpO1xuICAgIH1cbn1cblxuaDUsXG4uaDUge1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjIpO1xuICAgIEBpbmNsdWRlIG1lZGlhLWxhcmdlIHtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygyNCk7XG4gICAgfVxufVxuXG5oNixcbi5oNiB7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygxOCk7XG4gICAgQGluY2x1ZGUgbWVkaWEtbGFyZ2Uge1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDIyKTtcbiAgICB9XG59XG5cbnAge1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG51bCxcbm9sIHtcbiAgICBtYXJnaW46IDAgMCAxcmVtIDFyZW07XG59XG5cbmJsb2NrcXVvdGUge1xuICAgIHAge1xuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiAn4oCcJztcbiAgICAgICAgfVxuXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogJ+KAnSc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaXRlIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1kYXJrLWdyYXk7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBIZWFkZXIuXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuLmhlYWRlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDcycHg7XG4gICAgei1pbmRleDogMTA7XG59XG5cbmJvZHkuYWRtaW4tYmFyIHtcbiAgICAuaGVhZGVyIHtcbiAgICAgICAgdG9wOiAzMnB4O1xuICAgIH1cbn1cblxuLmhlYWRlcl9faW5uZXIge1xuICAgIEBpbmNsdWRlIGNvbnRhaW5lci13aWRlO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBwYWRkaW5nOiAwICRibG9jay1ndXR0ZXI7XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1sYXJnZSB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxufVxuXG4uc2l0ZS1icmFuZGluZyB7XG4gICAgcGFkZGluZzogcmVtLWNhbGMoMTYpO1xuICAgIHBhZGRpbmctbGVmdDogMDtcblxuICAgIGltZyB7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICB9XG59XG5cbi5tYWluLW5hdmlnYXRpb24ge1xuICAgIHBhZGRpbmctbGVmdDogcmVtLWNhbGMoMTYpO1xuXG4gICAgdWwge1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICB9XG5cbiAgICBsaSB7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjVzO1xuICAgIH1cblxuICAgIGxpIGEge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoOCkgcmVtLWNhbGMoMTYpO1xuICAgIH1cblxuICAgIGxpLmhpZ2hsaWdodGVkID4gYSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjb2xvci1wcmltYXJ5O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgIG1hcmdpbjogMCByZW0tY2FsYygxNik7XG4gICAgfVxuXG4gICAgbGk6aG92ZXIsXG4gICAgbGk6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cblxuICAgIGxpOmZvY3VzLXdpdGhpbiBhIHtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICB9XG5cbiAgICB1bCBsaSB1bCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjb2xvci1ibGFjaztcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICBtaW4td2lkdGg6IHJlbS1jYWxjKDIwMCk7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZTtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgei1pbmRleDogMztcbiAgICB9XG5cbiAgICB1bCBsaSB1bCBhIHtcbiAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoMTYpO1xuICAgIH1cblxuICAgIHVsIGxpOmhvdmVyID4gdWwsXG4gICAgdWwgbGk6Zm9jdXMtd2l0aGluID4gdWwsXG4gICAgdWwgbGkgdWw6aG92ZXIsXG4gICAgdWwgbGkgdWw6Zm9jdXMge1xuICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICBkaXNwbGF5OiBibG9ja1xuICAgIH1cblxuICAgIHVsIGxpIHVsIGxpIHtcbiAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbn1cblxuLmljb24tbmF2aWdhdGlvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG5cbiAgICBhIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXJnaW4tbGVmdDogOHB4O1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxuXG4gICAgaW1nIHtcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgIH1cbn1cblxuLm1vYmlsZS1tZW51IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB6LWluZGV4OiA5O1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgLm1vYmlsZS1tZW51X19pbm5lciB7XG4gICAgICAgIHBhZGRpbmctdG9wOiA5MHB4O1xuICAgIH1cblxuICAgIHVsIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICA+IHVsIHtcbiAgICAgICAgbWFyZ2luLXRvcDogNDBweDtcbiAgICB9XG5cbiAgICBsaSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICB9XG5cbiAgICBhIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDI0KTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDIuNjtcbiAgICB9XG5cbiAgICB1bCBsaSB1bCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG5ib2R5Lm1vYmlsZS1tZW51LW9wZW4gLm1vYmlsZS1tZW51IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuYm9keS5tb2JpbGUtbWVudS1vcGVuICNvcGVuLW1vYmlsZS1tZW51IHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG5ib2R5Om5vdCgubW9iaWxlLW1lbnUtb3BlbikgI2Nsb3NlLW1vYmlsZS1tZW51IHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuIiwiLnNpdGUtY29udGVudCB7XG4gICAgcGFkZGluZy10b3A6IDcycHg7XG5cbiAgICBhOm5vdCgud3AtYmxvY2stYnV0dG9uX19saW5rKSB7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbn1cblxuYm9keS5wYWdlLCBib2R5LmJsb2csIGJvZHkuY2F0ZWdvcnksIGJvZHkud29vY29tbWVyY2Uge1xuICAgIC5zaXRlLWNvbnRlbnQge1xuICAgICAgICBtYXJnaW4tdG9wOiAkYmxvY2stc3BhY2luZztcbiAgICB9XG59XG5cbmJvZHkucGFnZS5ob21lIC5zaXRlLWNvbnRlbnQge1xuICAgIG1hcmdpbi10b3A6IDA7XG59XG5cbiNicmVhZGNydW1icyB7XG4gICAgZm9udC1zaXplOiAxNHB4O1xufVxuXG4uZW50cnlfX2hlYWRlciB7XG4gICAgQGluY2x1ZGUgY29udGFpbmVyO1xuICAgIG1hcmdpbjogJGJsb2NrLXNwYWNpbmcgYXV0bztcbiAgICBwYWRkaW5nOiAwICRibG9jay1ndXR0ZXI7XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1sYXJnZSB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxufVxuXG4uZW50cnlfX2NvbnRlbnQge1xuICAgIGZvcm0ge1xuICAgICAgICBpbnB1dFt0eXBlPWNoZWNrYm94XSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5lbnRyeV9fY29tbWVudHMge1xuICAgIEBpbmNsdWRlIGNvbnRhaW5lcjtcbiAgICBtYXJnaW4tdG9wOiAkYmxvY2stc3BhY2luZyoyO1xuXG4gICAgLmNvbW1lbnQtZm9ybSB7XG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIH1cblxuICAgICAgICAuY29tbWVudC1mb3JtLWNvb2tpZXMtY29uc2VudCB7XG4gICAgICAgICAgICBpbnB1dCwgbGFiZWwge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmJsb2dfX2hlYWRlciwgLnBvc3RzLWdyaWQge1xuICAgIEBpbmNsdWRlIGNvbnRhaW5lci13aWRlO1xufVxuXG4uYmxvZ19faGVhZGVyIHtcbiAgICBwYWRkaW5nOiAwICRibG9jay1ndXR0ZXI7XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1sYXJnZSB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxufVxuXG4uZW50cnlfX2ltYWdlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAyMDBweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgIEBpbmNsdWRlIG1lZGlhLWxhcmdlIHtcbiAgICAgICAgaGVpZ2h0OiAyODBweDtcbiAgICB9XG59XG5cbi5lbnRyeS0tZ3JpZCB7XG4gICAgbWF4LXdpZHRoOiA0NTBweDtcbiAgICBtYXJnaW46IDMycHggMDtcblxuICAgIEBpbmNsdWRlIG1lZGlhLWxhcmdlIHtcbiAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgIH1cblxuICAgIGgyIHtcbiAgICAgICAgbWFyZ2luOiA4cHggMDtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygzMik7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cbiAgICAgICAgYSB7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uZW50cnlfX21ldGEge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygxNCk7XG5cbiAgICA+ICoge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiA4cHg7XG4gICAgfVxuXG4gICAgdWwsIGxpIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblxuICAgICAgICBhIHtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxpIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMXJlbTtcbiAgICB9XG59XG5cbi5ncmVjYXB0Y2hhLWJhZGdlIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG4iLCIvKipcbiAqIEZvb3Rlci5cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG4uZm9vdGVyIHtcbiAgICBtYXJnaW4tdG9wOiAkYmxvY2stc3BhY2luZztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogcmVtLWNhbGMoMzIpIDAgcmVtLWNhbGMoMTkyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgY29sb3I6ICRjb2xvci13aGl0ZTtcblxuICAgIEBpbmNsdWRlIG1lZGlhLWxhcmdlIHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IHJlbS1jYWxjKDIyNCk7XG4gICAgfVxuXG4gICAgLndpZGdldCB7XG4gICAgICAgIG1hcmdpbjogKCRibG9jay1zcGFjaW5nLzIpIDA7XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtbGFyZ2Uge1xuICAgICAgICAgICAgbWFyZ2luOiAkYmxvY2stc3BhY2luZyAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLndpZGdldF9fdGl0bGUge1xuICAgICAgICBmb250LWZhbWlseTogJGhlYWRpbmctZm9udC1mYW1pbHk7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMzIpO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgIH1cblxuICAgIHVsIHtcbiAgICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uZm9vdGVyX19pbm5lciB7XG4gICAgQGluY2x1ZGUgY29udGFpbmVyLXdpZGU7XG59XG5cbi5mb290ZXJfX2NvbHVtbiB7XG4gICAgcGFkZGluZzogMCAoJGJsb2NrLWd1dHRlciozKTtcblxuICAgIEBpbmNsdWRlIG1lZGlhLWxhcmdlIHtcbiAgICAgICAgcGFkZGluZzogMCAkYmxvY2stZ3V0dGVyO1xuICAgIH1cblxuICAgIGltZyB7XG4gICAgICAgIG1hcmdpbjogJGJsb2NrLXNwYWNpbmcgMDtcbiAgICAgICAgbWF4LXdpZHRoOiA1MCU7XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtbGFyZ2Uge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiA2MCU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5mb290ZXJfX3Zpc3VhbCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgYm90dG9tOiAwO1xuXG4gICAgaW1nIHtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIGhlaWdodDogMjAwcHg7XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtbGFyZ2Uge1xuICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWV4dHJhLWxhcmdlIHtcbiAgICAgICAgICAgIGhlaWdodDogMzgwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi52aXN1YWwge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBib3R0b206IC0xMHB4O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG4gICAgaW1nIHtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIGhlaWdodDogMTUwcHg7XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtbGFyZ2Uge1xuICAgICAgICAgICAgaGVpZ2h0OiAyMDBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWV4dHJhLWxhcmdlIHtcbiAgICAgICAgICAgIGhlaWdodDogMzAwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi52aXN1YWwtLWJvdHRvbS1sZWZ0IHtcbiAgICBsZWZ0OiAwO1xufVxuXG4udmlzdWFsLS1ib3R0b20tcmlnaHQge1xuICAgIHJpZ2h0OiAwO1xufVxuIiwiLyoqXG4gKiBCdXR0b24uXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuQG1peGluIGJ1dHRvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgZm9udDogaW5oZXJpdDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHBhZGRpbmc6IHJlbS1jYWxjKDgpIHJlbS1jYWxjKDE2KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgJHRyYW5zaXRpb247XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCAkY29sb3ItcHJpbWFyeTtcblxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5O1xuICAgIH1cbn1cblxuLmJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgYnV0dG9uO1xufVxuIiwiLyoqXG4gKiBGb3Jtc1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbiRpbnB1dC1iYWNrZ3JvdW5kOiAkY29sb3Itd2hpdGU7XG4kaW5wdXQtYm9yZGVyLXdpZHRoOiAxcHg7XG4kaW5wdXQtYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiRpbnB1dC1ib3JkZXItY29sb3I6ICRjb2xvci1saWdodC1ncmF5O1xuJGlucHV0LWJvcmRlci1mb2N1cy1jb2xvcjogJGNvbG9yLW1lZGl1bS1ncmF5O1xuJGlucHV0LXBhZGRpbmc6IDEwcHggMTVweDtcbiR0ZXh0YXJlYS1saW5lLWhlaWdodDogMS4yNXJlbTtcblxuLyoqXG4gKiBCYXNpYyBzdHlsaW5nXG4gKi9cblxuaW5wdXQ6bm90KFt0eXBlXSksXG5pbnB1dFt0eXBlPSd0ZXh0J10sXG5pbnB1dFt0eXBlPSdwYXNzd29yZCddLFxuaW5wdXRbdHlwZT0nZW1haWwnXSxcbmlucHV0W3R5cGU9J3VybCddLFxuaW5wdXRbdHlwZT0nZGF0ZSddLFxuaW5wdXRbdHlwZT0nbW9udGgnXSxcbmlucHV0W3R5cGU9J3RpbWUnXSxcbmlucHV0W3R5cGU9J2RhdGV0aW1lJ10sXG5pbnB1dFt0eXBlPSdkYXRldGltZS1sb2NhbCddLFxuaW5wdXRbdHlwZT0nd2VlayddLFxuaW5wdXRbdHlwZT0nbnVtYmVyJ10sXG5pbnB1dFt0eXBlPSdzZWFyY2gnXSxcbmlucHV0W3R5cGU9J3RlbCddLFxudGV4dGFyZWEge1xuICAgIGJhY2tncm91bmQ6ICRpbnB1dC1iYWNrZ3JvdW5kO1xuICAgIGJvcmRlcjogJGlucHV0LWJvcmRlci13aWR0aCAkaW5wdXQtYm9yZGVyLXN0eWxlICRpbnB1dC1ib3JkZXItY29sb3I7XG4gICAgcGFkZGluZzogJGlucHV0LXBhZGRpbmc7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG5cbiAgICAmOmZvY3VzLFxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgYm9yZGVyOiAkaW5wdXQtYm9yZGVyLXdpZHRoICRpbnB1dC1ib3JkZXItc3R5bGUgJGlucHV0LWJvcmRlci1mb2N1cy1jb2xvcjtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBwbGFjZWhvbGRlciB7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItZGFya2VzdC1ncmF5O1xuICAgIH1cbn1cblxuaW5wdXRbdHlwZT0ndGV4dCddLFxuaW5wdXRbdHlwZT0nZW1haWwnXSxcbmlucHV0W3R5cGU9J3Bhc3N3b3JkJ10sXG5pbnB1dFt0eXBlPSdudW1iZXInXXtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG59XG5cbi8qKlxuICogVGV4dGFyZWFcbiAqL1xuXG50ZXh0YXJlYSB7XG4gICAgbGluZS1oZWlnaHQ6ICR0ZXh0YXJlYS1saW5lLWhlaWdodDtcbn1cblxuLyoqXG4gKiBDaGVja2JveCBhbmQgcmFkaW9cbiAqL1xuXG5pbnB1dFt0eXBlPSdjaGVja2JveCddLFxuaW5wdXRbdHlwZT0ncmFkaW8nXSB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbi1yaWdodDogMC4yNXJlbTtcbiAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgY2xlYXI6IGJvdGg7XG59XG5cbi8qKlxuICogQnV0dG9uc1xuICovXG5cbmJ1dHRvbjpub3QoLmdtLWNvbnRyb2wtYWN0aXZlKSxcbmlucHV0W3R5cGU9J2J1dHRvbiddLFxuaW5wdXRbdHlwZT0ncmVzZXQnXSxcbmlucHV0W3R5cGU9J3N1Ym1pdCddOm5vdCgjd3BzbC1zZWFyY2gtYnRuKSxcbi5idXR0b24sXG4uYnRuLFxuLndwLWJsb2NrLWJ1dHRvbl9fbGluayxcbi5pcy1zdHlsZS1jaXJjdWxhciAud3AtYmxvY2stYnV0dG9uX19saW5rIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4ICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogcmVtLWNhbGMoMTYpIHJlbS1jYWxjKDI0KSAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTgpICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50O1xufVxuXG4ud3BzbC13cmFwIGJ1dHRvbiB7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xufVxuXG4vKipcbiAqIFNlbGVjdCB3aXRoIGRyb3Bkb3duIG1hcmtlclxuICovXG5cbnNlbGVjdCB7XG4gICAgYmFja2dyb3VuZDogJGlucHV0LWJhY2tncm91bmQ7XG4gICAgYm9yZGVyOiAkaW5wdXQtYm9yZGVyLXdpZHRoICRpbnB1dC1ib3JkZXItc3R5bGUgJGlucHV0LWJvcmRlci1jb2xvcjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAkaW5wdXQtcGFkZGluZztcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6XG4gICAgICAgIGxpbmVhci1ncmFkaWVudCg0NWRlZywgdHJhbnNwYXJlbnQgNTAlLCAkaW5wdXQtYm9yZGVyLWNvbG9yIDUwJSksXG4gICAgICAgIGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICRpbnB1dC1ib3JkZXItY29sb3IgNTAlLCB0cmFuc3BhcmVudCA1MCUpLFxuICAgICAgICBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICRpbnB1dC1ib3JkZXItY29sb3IsICRpbnB1dC1ib3JkZXItY29sb3IpO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246XG4gICAgICAgIGNhbGMoMTAwJSAtIDIwcHgpIGNhbGMoMWVtICsgMnB4KSxcbiAgICAgICAgY2FsYygxMDAlIC0gMTVweCkgY2FsYygxZW0gKyAycHgpLFxuICAgICAgICBjYWxjKDEwMCUgLSAyLjVlbSkgMC41ZW07XG4gICAgYmFja2dyb3VuZC1zaXplOlxuICAgICAgICA1cHggNXB4LFxuICAgICAgICA1cHggNXB4LFxuICAgICAgICAxcHggMS41ZW07XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbn1cblxuLyoqXG4gKiBEaXNhYmxlZFxuICovXG5cbmJ1dHRvbltkaXNhYmxlZF0sXG5pbnB1dFtkaXNhYmxlZF0sXG5zZWxlY3RbZGlzYWJsZWRdIHtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi8qKlxuICogU2VhcmNoXG4gKi9cblxuaW5wdXRbdHlwZT0nc2VhcmNoJ10ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xufVxuXG5pbnB1dFt0eXBlPSdzZWFyY2gnXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcbmlucHV0W3R5cGU9J3NlYXJjaCddOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbi8qKlxuICogQ29sb3JcbiAqL1xuXG5pbnB1dFt0eXBlPSdjb2xvciddIHtcbiAgICBiYWNrZ3JvdW5kOiAkaW5wdXQtYmFja2dyb3VuZDtcbiAgICBib3JkZXI6ICRpbnB1dC1ib3JkZXItd2lkdGggJGlucHV0LWJvcmRlci1zdHlsZSAkaW5wdXQtYm9yZGVyLWNvbG9yO1xufVxuIiwiLm5ld3NsZXR0ZXItb3ZlcmxheSB7XG4gICAgei1pbmRleDogMTE7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGNvbG9yLWRhcmtlc3QtZ3JheSwgMC41KTtcbn1cblxuLm5ld3NsZXR0ZXItbW9kYWwge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgd2lkdGg6IDkwJTtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDEwcHggMTBweCAycHggcmdiYSgkY29sb3ItYmxhY2ssIDAuNSkpO1xuXG4gICAgLm5ld3NsZXR0ZXItbW9kYWxfX2NvbnRlbnQge1xuICAgICAgICBwIHtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVkaWEtbGFyZ2Uge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHAubmV3c2xldHRlci1tb2RhbF9fdGl0bGUge1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygzMik7XG4gICAgICAgICAgICBmb250LWZhbWlseTogJGhlYWRpbmctZm9udC1mYW1pbHk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhLWxhcmdlIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDUyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJ1dHRvbi5uZXdzbGV0dGVyLW1vZGFsX19jbG9zZSB7XG4gICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogLTE1cHg7XG4gICAgICAgIHRvcDogLTE1cHg7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50O1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDI0KSAhaW1wb3J0YW50O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGJvcmRlcjogJGNvbG9yLWJsYWNrIHNvbGlkIDRweDtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1sYXJnZSB7XG4gICAgICAgIG1heC13aWR0aDogNjAwcHg7XG4gICAgICAgIHBhZGRpbmc6IDYwcHggNDBweDtcbiAgICB9XG59XG5cbi5uZXdzbGV0dGVyLWZvcm0ge1xuICAgIGlucHV0W3R5cGU9ZW1haWxdIHtcbiAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoOCk7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTYpO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgICAgICBAaW5jbHVkZSBtZWRpYS1sYXJnZSB7XG4gICAgICAgICAgICBwYWRkaW5nOiByZW0tY2FsYygxNik7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE4KTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbnB1dFt0eXBlPXN1Ym1pdF06bm90KCN3cHNsLXNlYXJjaC1idG4pIHtcbiAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoOCkgcmVtLWNhbGMoMTIpICFpbXBvcnRhbnQ7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5O1xuICAgICAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBAaW5jbHVkZSBtZWRpYS1sYXJnZSB7XG4gICAgICAgICAgICBwYWRkaW5nOiByZW0tY2FsYygxNikgcmVtLWNhbGMoMjQpICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5uZXdzbGV0dGVyLWZvcm1fX2ZlZWRiYWNrIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIGJvcmRlcjogJGNvbG9yLXdhcm5pbmcgc29saWQgM3B4O1xuICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgY29sb3I6ICRjb2xvci13aGl0ZTtcblxuICAgICYuc3VjY2VzcyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLXN1Y2Nlc3M7XG4gICAgfVxufVxuXG4ubGRzLWR1YWwtcmluZyB7XG4gICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICB3aWR0aDogMzBweDtcbiAgICAgaGVpZ2h0OiAzMHB4O1xuIH1cbi5sZHMtZHVhbC1yaW5nOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIiBcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgbWFyZ2luOiAwIDhweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYm9yZGVyOiA0cHggc29saWQgI2ZmZjtcbiAgICBib3JkZXItY29sb3I6ICNmZmYgdHJhbnNwYXJlbnQgI2ZmZiB0cmFuc3BhcmVudDtcbiAgICBhbmltYXRpb246IGxkcy1kdWFsLXJpbmcgMS4ycyBsaW5lYXIgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGxkcy1kdWFsLXJpbmcge1xuICAgIDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgfVxuICAgIDEwMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICAgIH1cbn1cblxuLm5ld3NsZXR0ZXItZm9ybV9fbG9hZGVyIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuIiwiLyogR3V0ZW5iZXJnIHNldHVwICovXG5AaW1wb3J0IFwiYmFzZVwiO1xuQGltcG9ydCBcImNsYXNzZXNcIjtcblxuLyogV1AgQmxvY2tzICovXG5AaW1wb3J0IFwiYmxvY2tzL3dwL3dwLWJsb2NrLWNvbHVtbnNcIjtcbkBpbXBvcnQgXCJibG9ja3Mvd3Avd3AtYmxvY2stZ3JvdXBcIjtcbkBpbXBvcnQgXCJibG9ja3Mvd3Avd3AtYmxvY2stYnV0dG9uXCI7XG5AaW1wb3J0IFwiYmxvY2tzL3dwL3dwLWJsb2NrLWNvZGVcIjtcbkBpbXBvcnQgXCJibG9ja3Mvd3Avd3AtYmxvY2stbGF0ZXN0LXBvc3RzXCI7XG5AaW1wb3J0IFwiYmxvY2tzL3dwL3dwLWJsb2NrLW1lZGlhLXRleHRcIjtcblxuLyogQ29CbG9ja3MgKi9cbkBpbXBvcnQgXCJibG9ja3MvY29ibG9ja3MvaGVyb1wiO1xuXG4vKiBFeHRyYSBjbGFzc2VzICovXG5AaW1wb3J0IFwiYmxvY2tzL2V4dHJhLWNsYXNzZXNcIjtcbiIsIi8qKlxuICogQmxvY2tzIGJhc2VcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuLmVudHJ5X19jb250ZW50IHtcbiAgICBwYWRkaW5nLWxlZnQ6ICRibG9jay1ndXR0ZXI7XG4gICAgcGFkZGluZy1yaWdodDogJGJsb2NrLWd1dHRlcjtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG5cbiAgICA+ICoge1xuICAgICAgICBtYXgtd2lkdGg6ICRibG9jay13aWR0aDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcblxuICAgICAgICAmLmFsaWdud2lkZSB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6ICRibG9jay13aWR0aC13aWRlO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5hbGlnbmZ1bGwge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgKyBjYWxjKCN7JGJsb2NrLWd1dHRlcn0gKiAyKSk7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygjeyRibG9jay1ndXR0ZXJ9ICogLTEpO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKCN7JGJsb2NrLWd1dHRlcn0gKiAtMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICA+IHVsLFxuICAgID4gb2wge1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMXJlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIERlZmF1bHQgYmxvY2sgc3BhY2luZ1xuICAgID4gKiArICosXG4gICAgLndwLWJsb2NrLWdyb3VwID4gKiArICosXG4gICAgLndwLWJsb2NrLWdyb3VwX19pbm5lci1jb250YWluZXIgPiAqICsgKiB7XG4gICAgICAgIG1hcmdpbjogJGJsb2NrLXNwYWNpbmcgYXV0bztcblxuICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiBNZWRpYSBFbGVtZW50c1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5zdmcsXG5pbWcsXG5lbWJlZCxcbm9iamVjdCxcbnBpY3R1cmUge1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdGhlaWdodDogYXV0bztcblx0bWF4LXdpZHRoOiAxMDAlO1xufVxuXG4vKipcbiAqIEFsaWdubWVudHNcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuLnRleHQtcmlnaHQge1xuXHR0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLnRleHQtbGVmdCB7XG5cdHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbi50ZXh0LWNlbnRlciB7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmFsaWdubGVmdCB7XG5cdGRpc3BsYXk6IGlubGluZTtcblx0ZmxvYXQ6IGxlZnQ7XG5cdG1hcmdpbi1yaWdodDogJGJsb2NrLWd1dHRlcjtcbn1cblxuLmFsaWducmlnaHQge1xuXHRkaXNwbGF5OiBpbmxpbmU7XG5cdGZsb2F0OiByaWdodDtcblx0bWFyZ2luLWxlZnQ6ICRibG9jay1ndXR0ZXI7XG59XG5cbi5hbGlnbmNlbnRlciB7XG5cdGNsZWFyOiBib3RoO1xuXHRkaXNwbGF5OiBibG9jaztcblx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdG1hcmdpbi1yaWdodDogYXV0bztcbn1cblxuLy8gRWRpdG9yIG9ubHkgc3R5bGVzXG5AaWYgKCRlZGl0b3IpIHtcblx0LmVkaXRvci1wb3N0LXRpdGxlIHtcblx0XHQud3AtYmxvY2sge1xuXHRcdFx0bWF4LXdpZHRoOiAkYmxvY2std2lkdGg7XG5cdFx0fVxuXHR9XG5cblx0LmJsb2NrLWVkaXRvci1ibG9jay1saXN0X19sYXlvdXQuaXMtcm9vdC1jb250YWluZXIge1xuXG4gICAgICAgID4gKiB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6ICRibG9jay13aWR0aDtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuXG4gICAgICAgICAgICAmW2RhdGEtYWxpZ249J3dpZGUnXSB7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAkYmxvY2std2lkdGgtd2lkZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJltkYXRhLWFsaWduPSdmdWxsJ10ge1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogY2FsYygxMDAlICsgY2FsYygjeyRibG9jay1ndXR0ZXJ9ICogMikpO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKCN7JGJsb2NrLWd1dHRlcn0gKiAtMSk7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKCN7JGJsb2NrLWd1dHRlcn0gKiAtMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICA+IHVsLFxuICAgICAgICA+IG9sIHtcbiAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMXJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERlZmF1bHQgYmxvY2sgc3BhY2luZ1xuICAgICAgICA+ICogKyAqLFxuICAgICAgICAud3AtYmxvY2stZ3JvdXAgPiAqICsgKixcbiAgICAgICAgLndwLWJsb2NrLWdyb3VwX19pbm5lci1jb250YWluZXIgPiAqICsgKiB7XG4gICAgICAgICAgICBtYXJnaW46ICRibG9jay1zcGFjaW5nIGF1dG87XG5cbiAgICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXHR9XG59XG4iLCIvKipcbiAqIEdlbmVyYXRlIGNvbG9yIGNsYXNzZXNcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkZ3V0ZW5iZXJnLWNvbG9ycyB7XG5cdC5oYXMtI3skbmFtZX0tYmFja2dyb3VuZC1jb2xvciB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuXHR9XG5cblx0Lmhhcy0jeyRuYW1lfS1jb2xvciB7XG5cdFx0Y29sb3I6ICRjb2xvcjtcblx0fVxuXG5cdC5oYXMtI3skbmFtZX0tdGV4dC1jb2xvciB7XG5cdFx0Y29sb3I6ICRjb2xvcjtcblx0fVxuXG5cdC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLSN7JG5hbWV9LWJhY2tncm91bmQtY29sb3Ige1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcblx0XHRib3JkZXItY29sb3I6ICRjb2xvcjtcblxuXHRcdCY6aG92ZXIsXG5cdFx0Jjpmb2N1cyB7XG5cdFx0XHRjb2xvcjogJGNvbG9yO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXdoaXRlO1xuXG5cdFx0XHRAaWYgKCRlZGl0b3IpIHtcblx0XHRcdFx0Jjpmb2N1cyB7XG5cdFx0XHRcdFx0Y29sb3I6ICRjb2xvci13aGl0ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIEdlbmVyYXRlIGdyYWRpZW50IGNvbG9yIGNsYXNzZXNcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuQGVhY2ggJG5hbWUsICRjb2xvcjEsICRjb2xvcjIgaW4gJGd1dGVuYmVyZy1ncmFkaWVudHMge1xuXHQuaGFzLSN7JG5hbWV9LWdyYWRpZW50LWJhY2tncm91bmQge1xuXHRcdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgkY29sb3IxLCAxKSAwJSwgcmdiYSgkY29sb3IyLCAxKSAxMDAlKTtcblx0fVxufVxuXG4vKipcbiAqIEdlbmVyYXRlIGZvbnQgc2l6ZSBjbGFzc2VzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cbkBlYWNoICRuYW1lLCAkZm9udFNpemUgaW4gJGd1dGVuYmVyZy1mb250LXNpemVzIHtcblx0Lmhhcy0jeyRuYW1lfS1mb250LXNpemUge1xuXHRcdGZvbnQtc2l6ZTogJGZvbnRTaXplO1xuXHR9XG59XG4iLCIud3AtYmxvY2stY29sdW1ucyB7XG5cbiAgICAmLmhhcy1iYWNrZ3JvdW5kIHtcbiAgICAgICAgcGFkZGluZzogJGJsb2NrLWd1dHRlcio0O1xuICAgIH1cblxuXHQud3AtYmxvY2stY29sdW1uIHtcblxuXHR9XG59XG4iLCIud3AtYmxvY2stZ3JvdXAge1xuICAgICosXG4gICAgLndwLWJsb2NrIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgICYuaGFzLWJhY2tncm91bmQge1xuICAgICAgICBwYWRkaW5nOiAkYmxvY2stc3BhY2luZyAkYmxvY2stZ3V0dGVyO1xuICAgICAgICBAaWYgKCRlZGl0b3IgIT0gdHJ1ZSkge1xuXG4gICAgICAgICAgICAmOm5vdCguYWxpZ253aWRlKTpub3QoLmFsaWduZnVsbCkge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAkYmxvY2std2lkdGg7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIud3AtYmxvY2stY29ibG9ja3MtaGVybyB7XG5cbiAgICAud3AtYmxvY2stYnV0dG9uIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcblxuICAgICAgICBAaW5jbHVkZSBtZWRpYS1sYXJnZSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ud3AtYmxvY2stYnV0dG9uX19saW5rIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbn1cbiIsIi53cC1ibG9jay1jb2RlIHtcblxuXHRjb2RlIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRvdmVyZmxvdy14OiBzY3JvbGw7XG5cdH1cblxufSIsIi53cC1ibG9jay1sYXRlc3QtcG9zdHMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcblxuICAgIGxpIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWxhcmdlIHtcbiAgICAgICAgICAgIGZsZXg6IDEgMCAyNSU7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDI1JTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGEge1xuICAgICAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbn1cbiIsIi5pcy1zdHlsZS1jYXJkIHtcbiAgICAud3AtYmxvY2stbWVkaWEtdGV4dF9fY29udGVudCB7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAxMHB4IHJnYmEoMCwwLDAsMC4xKTtcbiAgICB9XG59XG5cbi5pcy1zdGFja2VkLW9uLW1vYmlsZSB7XG4gICAgaW1nIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcblxuICAgICAgICBAaW5jbHVkZSBtZWRpYS1sYXJnZSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLndwLWJsb2NrLWNvYmxvY2tzLWhlcm9fX2NvbnRlbnQtd3JhcHBlciB7XG4gICAgQGluY2x1ZGUgY29udGFpbmVyLXdpZGU7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgIGgxLCBoMiwgaDMge1xuICAgICAgICBsaW5lLWhlaWdodDogMS4xICFpbXBvcnRhbnQ7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoNjApICFpbXBvcnRhbnQ7XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtbGFyZ2Uge1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYyg3MikgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLndwLWJsb2NrLWNvYmxvY2tzLWhlcm9fX2lubmVyIHtcbiAgICAmLmhhcy1iYWNrZ3JvdW5kIHtcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcbiAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgb3BhY2l0eTogMC4zO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICB0b3A6IDA7XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhLWxhcmdlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLm5ld3NsZXR0ZXItYmxvY2sge1xuICAgIC5tYzR3cC1mb3JtLWZpZWxkcyB7XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWxhcmdlIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm1jNHdwLXJlc3BvbnNlID4gZGl2IHtcbiAgICAgICAgbWFyZ2luLXRvcDogMXJlbTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgICBib3JkZXI6ICRjb2xvci13aGl0ZSBzb2xpZCAycHg7XG4gICAgfVxuXG4gICAgaW5wdXRbdHlwZT1lbWFpbF0ge1xuICAgICAgICBsaW5lLWhlaWdodDogMzhweDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICAgICAgICBtYXJnaW4tdG9wOiAxcmVtO1xuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWxhcmdlIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbnB1dFt0eXBlPXN1Ym1pdF0ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMCAhaW1wb3J0YW50O1xuICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMCAhaW1wb3J0YW50O1xuICAgIH1cblxufVxuXG4ud3AtYmxvY2stY29udGFjdC1mb3JtLTctY29udGFjdC1mb3JtLXNlbGVjdG9yIHtcbiAgICBsYWJlbCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbn1cbiIsIi53cGNmNy1mb3JtLWNvbnRyb2wtd3JhcCB7XG4gICAgaW5wdXRbdHlwZT1udW1iZXJdIHtcbiAgICAgICAgbWF4LXdpZHRoOiA3MHB4O1xuICAgIH1cbn1cbiIsIi8qIENvbXBvbmVudHMgKi9cbkBpbXBvcnQgJ2NvbXBvbmVudHMvYnV0dG9uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZm9ybXMnO1xuXG4vKiBNb2R1bGVzICovXG5AaW1wb3J0ICdtb2R1bGVzL3dvb2NvbW1lcmNlL2dsb2JhbCc7XG5AaW1wb3J0ICdtb2R1bGVzL3dvb2NvbW1lcmNlL2FyY2hpdmUnO1xuQGltcG9ydCAnbW9kdWxlcy93b29jb21tZXJjZS9ibG9ja3MnO1xuQGltcG9ydCAnbW9kdWxlcy93b29jb21tZXJjZS9wcm9kdWN0JztcbkBpbXBvcnQgJ21vZHVsZXMvd29vY29tbWVyY2UvY2hlY2tvdXQnO1xuQGltcG9ydCAnbW9kdWxlcy93b29jb21tZXJjZS9wcm9kdWN0X2J1bmRsZXMnO1xuQGltcG9ydCAnbW9kdWxlcy93cC1zdG9yZS1sb2NhdG9yJztcbiIsImJvZHkud29vY29tbWVyY2UsXG5ib2R5Lndvb2NvbW1lcmNlLXBhZ2Uge1xuXG4gICAgLmVudHJ5X19oZWFkZXIge1xuICAgICAgICB3aWR0aDogJGJsb2NrLXdpZHRoLXdpZGU7XG4gICAgfVxuXG4gICAgLmVudHJ5X19jb250ZW50ID4gKiB7XG4gICAgICAgIG1heC13aWR0aDogJGJsb2NrLXdpZHRoLXdpZGU7XG4gICAgfVxuXG59XG5cbi5wcmljZSB7XG4gICAgY29sb3I6ICRjb2xvci1ibGFjaztcbn1cblxuLndvb2NvbW1lcmNlICNyZXNwb25kIGlucHV0I3N1Ym1pdC5hbHQsIC53b29jb21tZXJjZSBhLmJ1dHRvbi5hbHQsIC53b29jb21tZXJjZSBidXR0b24uYnV0dG9uLmFsdCwgLndvb2NvbW1lcmNlIGlucHV0LmJ1dHRvbi5hbHQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5O1xufVxuXG4ud29vY29tbWVyY2UgI3Jlc3BvbmQgaW5wdXQjc3VibWl0LmFsdDpob3ZlciwgLndvb2NvbW1lcmNlIGEuYnV0dG9uLmFsdDpob3ZlciwgLndvb2NvbW1lcmNlIGJ1dHRvbi5idXR0b24uYWx0OmhvdmVyLCAud29vY29tbWVyY2UgaW5wdXQuYnV0dG9uLmFsdDpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXByaW1hcnktaG92ZXI7XG59XG5cbi53b29jb21tZXJjZS1pbmZvOjpiZWZvcmUge1xuICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbn1cblxuLndvb2NvbW1lcmNlLWluZm8ge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvci1wcmltYXJ5O1xufVxuIiwiLndvb2NvbW1lcmNlIHtcbiAgICB1bC5wcm9kdWN0cyB7XG4gICAgICAgIGxpLnByb2R1Y3Qge1xuICAgICAgICAgICAgLnByaWNlIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuYWRkX3RvX2NhcnRfYnV0dG9uIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ud29vY29tbWVyY2UgdWwucHJvZHVjdHMgbGkucHJvZHVjdCBhIGltZyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLndvb2NvbW1lcmNlIHVsLnByb2R1Y3RzIGxpLnByb2R1Y3QgLndvb2NvbW1lcmNlLWxvb3AtY2F0ZWdvcnlfX3RpdGxlLCAud29vY29tbWVyY2UgdWwucHJvZHVjdHMgbGkucHJvZHVjdCAud29vY29tbWVyY2UtbG9vcC1wcm9kdWN0X190aXRsZSwgLndvb2NvbW1lcmNlIHVsLnByb2R1Y3RzIGxpLnByb2R1Y3QgaDMge1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjgpO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG59XG5cbi53b29jb21tZXJjZS1yZXN1bHQtY291bnQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4ud29vY29tbWVyY2Utb3JkZXJpbmcge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4iLCIud2MtYmxvY2stZ3JpZF9fcHJvZHVjdCB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgIGEge1xuICAgICAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxufVxuIiwiLnNpbmdsZS1wcm9kdWN0IHtcbiAgICBoMSB7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMzYpO1xuICAgIH1cblxuICAgIC5wcm9kdWN0X21ldGEge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIHAucHJpY2UsXG4gICAgc3Bhbi5wcmljZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBjb2xvcjogJGNvbG9yLWJsYWNrICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLndvb2NvbW1lcmNlLXRhYnMge1xuICAgICAgICBtYXJnaW4tdG9wOiA1MHB4O1xuXG4gICAgICAgIGgyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAud29vY29tbWVyY2UgLnF1YW50aXR5IC5xdHkge1xuICAgICAgICBsaW5lLWhlaWdodDogMjhweDtcbiAgICB9XG59XG4iLCIuY291cG9uIHtcbiAgICAjY291cG9uX2NvZGUge1xuICAgICAgICBwYWRkaW5nOiAxcmVtIDEuNXJlbSAhaW1wb3J0YW50O1xuICAgICAgICB3aWR0aDogMTUwcHg7XG4gICAgfVxufVxuXG4ud29vY29tbWVyY2Uge1xuICAgIEBpbmNsdWRlIG1lZGlhLWxhcmdlIHtcbiAgICAgICAgdGFibGUuc2hvcF90YWJsZSB7XG4gICAgICAgICAgICBib3JkZXI6IDA7XG5cbiAgICAgICAgICAgIHRoLCB0ZCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmFjdGlvbnMge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDFyZW0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLndvb2NvbW1lcmNlLWlucHV0LXdyYXBwZXIge1xuICAgIC5vcHRpb25hbCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuIiwiLmJ1bmRsZV9mb3JtIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xuICAgIHBhZGRpbmc6IDhweDtcbn1cblxuLmJ1bmRsZWRfcHJvZHVjdF90aXRsZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xufVxuXG4uYnVuZGxlZF9wcm9kdWN0X3RpdGxlX2lubmVyIHtcbiAgICBmb250LWZhbWlseTogJGJvZHktZm9udC1mYW1pbHk7XG4gICAgZm9udC1zaXplOiAxNnB4O1xufVxuXG4uYnVuZGxlZF9wcm9kdWN0X3RpdGxlX2xpbmsge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5idW5kbGVfZm9ybSAucHJpY2Uge1xuICAgIGZvbnQtc2l6ZTogMTZweCAhaW1wb3J0YW50O1xufVxuXG5kaXYuYnVuZGxlZF9wcm9kdWN0X3N1bW1hcnksIC53b29jb21tZXJjZSBkaXYucHJvZHVjdC5idW5kbGVkX3Byb2R1Y3Rfc3VtbWFyeSB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4ICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZy1ib3R0b206IDhweCAhaW1wb3J0YW50O1xufVxuXG4uYnVuZGxlZF9pdGVtX3dyYXAgKisuYnVuZGxlZF9pdGVtX2J1dHRvbiAucXVhbnRpdHksIC5zaW5nbGUtcHJvZHVjdCBkaXYucHJvZHVjdCAuYnVuZGxlZF9pdGVtX3dyYXAgKisuYnVuZGxlZF9pdGVtX2J1dHRvbiAucXVhbnRpdHkge1xuICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xufVxuXG4ud29vY29tbWVyY2UtcGFnZSBkaXYucHJvZHVjdCBkaXYuYnVuZGxlZF9wcm9kdWN0X2ltYWdlcywgLndvb2NvbW1lcmNlLXBhZ2UgI2NvbnRlbnQgZGl2LnByb2R1Y3QgZGl2LmJ1bmRsZWRfcHJvZHVjdF9pbWFnZXMsIC53b29jb21tZXJjZSBkaXYucHJvZHVjdCBkaXYuYnVuZGxlZF9wcm9kdWN0X2ltYWdlcywgLndvb2NvbW1lcmNlICNjb250ZW50IGRpdi5wcm9kdWN0IGRpdi5idW5kbGVkX3Byb2R1Y3RfaW1hZ2VzIHtcbiAgICB3aWR0aDogMTUlICFpbXBvcnRhbnQ7XG59XG5kaXYuYnVuZGxlZF9wcm9kdWN0X3N1bW1hcnk6bm90KC50aHVtYm5haWxfaGlkZGVuKSAuZGV0YWlscyB7XG4gICAgd2lkdGg6IDg1JSAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDAgMCAwIDhweCAhaW1wb3J0YW50O1xufVxuXG4udmFyaWF0aW9uLVBhcnRvZiB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4ud29vY29tbWVyY2UtcHJvZHVjdC1kZXRhaWxzX19zaG9ydC1kZXNjcmlwdGlvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbn1cbiIsIiN3cHNsLWNoZWNrYm94LWZpbHRlci53cHNsLWNoZWNrYm94LTMtY29sdW1ucyBsaSwgLndwc2wtY3VzdG9tLWNoZWNrYm94ZXMud3BzbC1jaGVja2JveC0zLWNvbHVtbnMgbGkge1xuICAgIHdpZHRoOiBhdXRvO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFFQSxXQUFXO0FDRlg7OztHQUdHO0FBRUgsaUVBQWlFO0FBQ2pFLE9BQU8sQ0FBQyw4R0FBSTtBQUNaLE9BQU8sQ0FBQyx1Q0FBSTtBQUVaLFVBQVU7RUFDTixXQUFXLEVBQUUsVUFBVTtFQUN2QixHQUFHLEVBQUUsK0NBQStDLENBQUMsZUFBZSxFQUFFLDhDQUE4QyxDQUFDLGNBQWM7RUFDbkksWUFBWSxFQUFFLElBQUk7O0FEUHRCLGNBQWM7QUVMZDs7O0dBR0c7QUNISDs7O0dBR0c7QUFJSCxZQUFZO0FBR1osaUJBQWlCO0FBV2pCLGdCQUFnQjtBQUto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 */
