@import url(https://fonts.googleapis.com/css?family=Lato);
.works__items__picture::after, .work-stripe > div:hover .caption::after, .work-stripe > div .caption, .gallery a::after {
  background-image: -webkit-radial-gradient(center, ellipse cover, rgba(55, 114, 180, 0.5), rgba(0, 0, 0, 0.5));
  background-image: radial-gradient("circle", rgba(55, 114, 180, 0.5), rgba(0, 0, 0, 0.5)); }

.breadcrumbs a[href^="http"] {
  color: #fff !important;
  text-decoration: none; }

.sticky .menu a {
  color: #3772b4; }

/**
 * Foundation for Sites by ZURB
 * Version 6.0.6
 * foundation.zurb.com
 * Licensed under MIT Open Source
 */
.center-recaptcha {
  text-align: center; }

.g-recaptcha {
  display: inline-block; }

/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
/**
   * 1. Set default font family to sans-serif.
   * 2. Prevent iOS and IE text size adjust after device orientation change,
   *    without disabling user zoom.
   */
html {
  font-family: sans-serif;
  /* 1 */
  -ms-text-size-adjust: 100%;
  /* 2 */
  -webkit-text-size-adjust: 100%;
  /* 2 */ }

/**
   * Remove default margin.
   */
body {
  margin: 0; }

/* HTML5 display definitions
     ========================================================================== */
/**
   * Correct `block` display not defined for any HTML5 element in IE 8/9.
   * Correct `block` display not defined for `details` or `summary` in IE 10/11
   * and Firefox.
   * Correct `block` display not defined for `main` in IE 11.
   */
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block; }

/**
   * 1. Correct `inline-block` display not defined in IE 8/9.
   * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
   */
audio,
canvas,
progress,
video {
  display: inline-block;
  /* 1 */
  vertical-align: baseline;
  /* 2 */ }

/**
   * Prevent modern browsers from displaying `audio` without controls.
   * Remove excess height in iOS 5 devices.
   */
audio:not([controls]) {
  display: none;
  height: 0; }

/**
   * Address `[hidden]` styling not present in IE 8/9/10.
   * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
   */
[hidden],
template {
  display: none; }

/* Links
     ========================================================================== */
/**
   * Remove the gray background color from active links in IE 10.
   */
a {
  background-color: transparent; }

/**
   * Improve readability of focused elements when they are also in an
   * active/hover state.
   */
a:active,
a:hover {
  outline: 0; }

/* Text-level semantics
     ========================================================================== */
/**
   * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
   */
abbr[title] {
  border-bottom: 1px dotted; }

/**
   * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
   */
b,
strong {
  font-weight: bold; }

/**
   * Address styling not present in Safari and Chrome.
   */
dfn {
  font-style: italic; }

/**
   * Address variable `h1` font-size and margin within `section` and `article`
   * contexts in Firefox 4+, Safari, and Chrome.
   */
h1 {
  font-size: 2em;
  margin: 0.67em 0; }

/**
   * Address styling not present in IE 8/9.
   */
mark {
  background: #ff0;
  color: #000; }

/**
   * Address inconsistent and variable font size in all browsers.
   */
small {
  font-size: 80%; }

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

sup {
  top: -0.5em; }

sub {
  bottom: -0.25em; }

/* Embedded content
     ========================================================================== */
/**
   * Remove border when inside `a` element in IE 8/9/10.
   */
img {
  border: 0; }

/**
   * Correct overflow not hidden in IE 9/10/11.
   */
svg:not(:root) {
  overflow: hidden; }

/* Grouping content
     ========================================================================== */
/**
   * Address margin not present in IE 8/9 and Safari.
   */
figure {
  margin: 1em 40px; }

/**
   * Address differences between Firefox and other browsers.
   */
hr {
  box-sizing: content-box;
  height: 0; }

/**
   * Contain overflow in all browsers.
   */
pre {
  overflow: auto; }

/**
   * Address odd `em`-unit font size rendering in all browsers.
   */
code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em; }

/* Forms
     ========================================================================== */
/**
   * Known limitation: by default, Chrome and Safari on OS X allow very limited
   * styling of `select`, unless a `border` property is set.
   */
/**
   * 1. Correct color not being inherited.
   *    Known issue: affects color of disabled elements.
   * 2. Correct font properties not being inherited.
   * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
   */
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  /* 1 */
  font: inherit;
  /* 2 */
  margin: 0;
  /* 3 */ }

/**
   * Address `overflow` set to `hidden` in IE 8/9/10/11.
   */
button {
  overflow: visible; }

/**
   * Address inconsistent `text-transform` inheritance for `button` and `select`.
   * All other form control elements do not inherit `text-transform` values.
   * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
   * Correct `select` style inheritance in Firefox.
   */
button,
select {
  text-transform: none; }

/**
   * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
   *    and `video` controls.
   * 2. Correct inability to style clickable `input` types in iOS.
   * 3. Improve usability and consistency of cursor style between image-type
   *    `input` and others.
   */
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  /* 2 */
  cursor: pointer;
  /* 3 */ }

/**
   * Re-set default cursor for disabled elements.
   */
button[disabled],
html input[disabled] {
  cursor: default; }

/**
   * Remove inner padding and border in Firefox 4+.
   */
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0; }

/**
   * Address Firefox 4+ setting `line-height` on `input` using `!important` in
   * the UA stylesheet.
   */
input {
  line-height: normal; }

/**
   * It's recommended that you don't attempt to style these elements.
   * Firefox's implementation doesn't respect box-sizing, padding, or width.
   *
   * 1. Address box sizing set to `content-box` in IE 8/9/10.
   * 2. Remove excess padding in IE 8/9/10.
   */
input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
  /* 1 */
  padding: 0;
  /* 2 */ }

/**
   * Fix the cursor style for Chrome's increment/decrement buttons. For certain
   * `font-size` values of the `input`, it causes the cursor style of the
   * decrement button to change from `default` to `text`.
   */
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto; }

/**
   * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
   * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
   */
input[type="search"] {
  -webkit-appearance: textfield;
  /* 1 */
  box-sizing: content-box;
  /* 2 */ }

/**
   * Remove inner padding and search cancel button in Safari and Chrome on OS X.
   * Safari (but not Chrome) clips the cancel button when the search input has
   * padding (and `textfield` appearance).
   */
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none; }

/**
   * Define consistent border, margin, and padding.
   */
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em; }

/**
   * 1. Correct `color` not being inherited in IE 8/9/10/11.
   * 2. Remove padding so people aren't caught out if they zero out fieldsets.
   */
legend {
  border: 0;
  /* 1 */
  padding: 0;
  /* 2 */ }

/**
   * Remove default vertical scrollbar in IE 8/9/10/11.
   */
textarea {
  overflow: auto; }

/**
   * Don't inherit the `font-weight` (applied by a rule above).
   * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
   */
optgroup {
  font-weight: bold; }

/* Tables
     ========================================================================== */
/**
   * Remove most spacing between table cells.
   */
table {
  border-collapse: collapse;
  border-spacing: 0; }

td,
th {
  padding: 0; }

.foundation-mq {
  font-family: "small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"; }

html,
body {
  font-size: 100%;
  box-sizing: border-box; }

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

body {
  padding: 0;
  margin: 0;
  font-family: "Lato", "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif;
  font-weight: normal;
  line-height: 1.5;
  color: #333;
  background: #eee;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale; }

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

textarea {
  height: auto;
  min-height: 50px;
  border-radius: 0; }

select {
  width: 100%;
  border-radius: 0; }

#map_canvas img,
#map_canvas embed,
#map_canvas object,
.map_canvas img,
.map_canvas embed,
.map_canvas object,
.mqa-display img,
.mqa-display embed,
.mqa-display object {
  max-width: none !important; }

button {
  -webkit-appearance: none;
  -moz-appearance: none;
  background: transparent;
  padding: 0;
  border: 0;
  border-radius: 0;
  line-height: 1; }

div,
dl,
dt,
dd,
ul,
ol,
li,
h1,
h2,
h3,
h4,
h5,
h6,
pre,
form,
p,
blockquote,
th,
td {
  margin: 0;
  padding: 0; }

p {
  font-size: inherit;
  line-height: 1.6;
  margin-bottom: 1rem;
  text-rendering: optimizeLegibility; }

em,
i {
  font-style: italic;
  line-height: inherit; }

strong,
b {
  font-weight: bold;
  line-height: inherit; }

small {
  font-size: 80%;
  line-height: inherit; }

h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: "Lato", "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif;
  font-weight: normal;
  font-style: normal;
  color: inherit;
  text-rendering: optimizeLegibility;
  margin-top: 0;
  margin-bottom: 0.5rem;
  line-height: 1.4; }
  h1 small,
  h2 small,
  h3 small,
  h4 small,
  h5 small,
  h6 small {
    color: #cacaca;
    line-height: 0; }

h1 {
  font-size: 1.5rem; }

h2 {
  font-size: 1.25rem; }

h3 {
  font-size: 1.1875rem; }

h4 {
  font-size: 1.125rem; }

h5 {
  font-size: 1.0625rem; }

h6 {
  font-size: 1rem; }

@media screen and (min-width: 40em) {
  h1 {
    font-size: 3rem; }
  h2 {
    font-size: 2.5rem; }
  h3 {
    font-size: 1.9375rem; }
  h4 {
    font-size: 1.5625rem; }
  h5 {
    font-size: 1.25rem; }
  h6 {
    font-size: 1rem; } }

a {
  color: #ddd;
  text-decoration: none;
  line-height: inherit;
  cursor: pointer; }
  a:hover, a:focus {
    color: #bebebe; }
  a img {
    border: 0; }

hr {
  max-width: 75rem;
  height: 0;
  border-right: 0;
  border-top: 0;
  border-bottom: 1px solid #cacaca;
  border-left: 0;
  margin: 1.25rem auto;
  clear: both; }

ul,
ol,
dl {
  line-height: 1.6;
  margin-bottom: 1rem;
  list-style-position: outside; }

li {
  font-size: inherit; }

ul {
  list-style-type: disc;
  margin-left: 1.25rem; }

ol {
  margin-left: 1.25rem; }

ul ul, ol ul, ul ol, ol ol {
  margin-left: 1.25rem;
  margin-bottom: 0;
  list-style-type: inherit; }

dl {
  margin-bottom: 1rem; }
  dl dt {
    margin-bottom: 0.3rem;
    font-weight: bold; }

blockquote {
  margin: 0 0 1rem;
  padding: 0.5625rem 1.25rem 0 1.1875rem;
  border-left: 1px solid #cacaca; }
  blockquote, blockquote p {
    line-height: 1.6;
    color: #8a8a8a; }

cite {
  display: block;
  font-size: 0.8125rem;
  color: #8a8a8a; }
  cite:before {
    content: '\2014 \0020'; }

abbr {
  color: #333;
  cursor: help;
  border-bottom: 1px dotted #0a0a0a; }

code {
  font-family: Consolas, "Liberation Mono", Courier, monospace;
  font-weight: normal;
  color: #0a0a0a;
  background-color: #e6e6e6;
  border: 1px solid #cacaca;
  padding: 0.125rem 0.3125rem 0.0625rem; }

kbd {
  padding: 0.125rem 0.25rem 0;
  margin: 0;
  background-color: #e6e6e6;
  color: #0a0a0a;
  font-family: Consolas, "Liberation Mono", Courier, monospace; }

.subheader {
  margin-top: 0.2rem;
  margin-bottom: 0.5rem;
  font-weight: normal;
  line-height: 1.4;
  color: #8a8a8a; }

.lead {
  font-size: 125%;
  line-height: 1.6; }

.stat {
  font-size: 2.5rem;
  line-height: 1; }
  p + .stat {
    margin-top: -1rem; }

.no-bullet {
  margin-left: 0;
  list-style: none; }

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

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

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

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

@media screen and (min-width: 40em) {
  .medium-text-left {
    text-align: left; }
  .medium-text-right {
    text-align: right; }
  .medium-text-center {
    text-align: center; }
  .medium-text-justify {
    text-align: justify; } }

@media screen and (min-width: 64em) {
  .large-text-left {
    text-align: left; }
  .large-text-right {
    text-align: right; }
  .large-text-center {
    text-align: center; }
  .large-text-justify {
    text-align: justify; } }

.show-for-print {
  display: none !important; }

@media print {
  * {
    background: transparent !important;
    color: black !important;
    box-shadow: none !important;
    text-shadow: none !important; }
  .show-for-print {
    display: block !important; }
  .hide-for-print {
    display: none !important; }
  table.show-for-print {
    display: table !important; }
  thead.show-for-print {
    display: table-header-group !important; }
  tbody.show-for-print {
    display: table-row-group !important; }
  tr.show-for-print {
    display: table-row !important; }
  td.show-for-print {
    display: table-cell !important; }
  th.show-for-print {
    display: table-cell !important; }
  a,
  a:visited {
    text-decoration: underline; }
  a[href]:after {
    content: " (" attr(href) ")"; }
  .ir a:after,
  a[href^='javascript:']:after,
  a[href^='#']:after {
    content: ''; }
  abbr[title]:after {
    content: " (" attr(title) ")"; }
  pre,
  blockquote {
    border: 1px solid #999;
    page-break-inside: avoid; }
  thead {
    display: table-header-group; }
  tr,
  img {
    page-break-inside: avoid; }
  img {
    max-width: 100% !important; }
  @page {
    margin: 0.5cm; }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3; }
  h2,
  h3 {
    page-break-after: avoid; } }

[type='text'], [type='password'], [type='date'], [type='datetime'], [type='datetime-local'], [type='month'], [type='week'], [type='email'], [type='number'], [type='search'], [type='tel'], [type='time'], [type='url'], [type='color'],
textarea {
  display: block;
  box-sizing: border-box;
  width: 100%;
  height: 2.4375rem;
  padding: 0.5rem;
  border: 1px solid #346cab;
  margin: 0 0 1rem;
  font-family: inherit;
  font-size: 1rem;
  color: #3772b4;
  background-color: transparent;
  box-shadow: inset 0 1px 2px #f2f2f2;
  border-radius: 0;
  transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
  -webkit-appearance: none;
  -moz-appearance: none; }
  [type='text']:focus, [type='password']:focus, [type='date']:focus, [type='datetime']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='week']:focus, [type='email']:focus, [type='number']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='url']:focus, [type='color']:focus,
  textarea:focus {
    border: 1px solid #346cab;
    background: #fcfcfc;
    outline: none;
    box-shadow: 0 0 5px #f2f2f2;
    transition: box-shadow 0.5s, border-color 0.25s ease-in-out; }

textarea {
  max-width: 100%; }
  textarea[rows] {
    height: auto; }

input:disabled, input[readonly],
textarea:disabled,
textarea[readonly] {
  background-color: #e6e6e6;
  cursor: default; }

[type='submit'],
[type='button'] {
  border-radius: 0;
  -webkit-appearance: none;
  -moz-appearance: none; }

input[type='search'] {
  box-sizing: border-box; }

[type='file'],
[type='checkbox'],
[type='radio'] {
  margin: 0 0 1rem; }

[type='checkbox'] + label,
[type='radio'] + label {
  display: inline-block;
  margin-left: 0.5rem;
  margin-right: 1rem;
  margin-bottom: 0;
  vertical-align: baseline; }

label > [type='checkbox'],
label > [type='label'] {
  margin-right: 0.5rem; }

[type='file'] {
  width: 100%; }

label {
  display: block;
  margin: 0;
  font-size: 0.875rem;
  font-weight: bold;
  line-height: 1.8;
  color: #1c395a; }
  label.middle {
    margin: 0 0 1rem;
    padding: 0.5625rem 0; }

.help-text {
  margin-top: -0.5rem;
  font-size: 0.8125rem;
  font-style: italic;
  color: #333; }

.input-group {
  display: table;
  width: 100%;
  margin-bottom: 1rem; }
  .input-group > *:first-child {
    border-radius: 0 0 0 0; }
  .input-group > *:last-child > * {
    border-radius: 0 0 0 0; }

.input-group-label, .input-group-field, .input-group-button {
  display: table-cell;
  margin: 0;
  vertical-align: middle; }

.input-group-label {
  text-align: center;
  width: 1%;
  height: 100%;
  padding: 0 1rem;
  background: #e6e6e6;
  color: #0a0a0a;
  border: 1px solid #cacaca; }
  .input-group-label:first-child {
    border-right: 0; }
  .input-group-label:last-child {
    border-left: 0; }

.input-group-field {
  border-radius: 0;
  height: 2.5rem; }

.input-group-button {
  height: 100%;
  padding-top: 0;
  padding-bottom: 0;
  text-align: center;
  width: 1%; }
  .input-group-button a,
  .input-group-button input,
  .input-group-button button {
    margin: 0; }

fieldset {
  border: 0;
  padding: 0;
  margin: 0; }

legend {
  margin-bottom: 0.5rem; }

.fieldset {
  border: 1px solid #cacaca;
  padding: 1.25rem;
  margin: 1.125rem 0; }
  .fieldset legend {
    background: #eee;
    padding: 0 0.1875rem;
    margin: 0;
    margin-left: -0.1875rem; }

select {
  height: 2.4375rem;
  padding: 0.5rem;
  border: 1px solid #346cab;
  border-radius: 0;
  margin: 0 0 1rem;
  font-size: 1rem;
  font-family: inherit;
  line-height: normal;
  color: #3772b4;
  background-color: #fafafa;
  border-radius: 0;
  -webkit-appearance: none;
  -moz-appearance: none;
  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="32" height="24" viewBox="0 0 32 24"><polygon points="0,0 32,0 16,24" style="fill: rgb(51, 51, 51)"></polygon></svg>');
  background-size: 9px 6px;
  background-position: right 0.5rem center;
  background-repeat: no-repeat; }
  @media screen and (min-width: 0\0) {
    select {
      background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg=="); } }
  select:disabled {
    background-color: #e6e6e6;
    cursor: default; }
  select::-ms-expand {
    display: none; }
  select[multiple] {
    height: auto; }

.is-invalid-input:not(:focus) {
  background-color: rgba(236, 88, 64, 0.1);
  border-color: #ec5840; }

.is-invalid-label {
  color: #ec5840; }

.form-error {
  display: none;
  margin-top: -0.5rem;
  margin-bottom: 1rem;
  font-size: 0.75rem;
  font-weight: bold;
  color: #ec5840; }
  .form-error.is-visible {
    display: block; }

.hide {
  display: none !important; }

.invisible {
  visibility: hidden; }

@media screen and (min-width: 0em) and (max-width: 39.9375em) {
  .hide-for-small-only {
    display: none !important; } }

@media screen and (max-width: 0em), screen and (min-width: 40em) {
  .show-for-small-only {
    display: none !important; } }

@media screen and (min-width: 40em) {
  .hide-for-medium {
    display: none !important; } }

@media screen and (max-width: 39.9375em) {
  .show-for-medium {
    display: none !important; } }

@media screen and (min-width: 40em) and (max-width: 63.9375em) {
  .hide-for-medium-only {
    display: none !important; } }

@media screen and (max-width: 39.9375em), screen and (min-width: 64em) {
  .show-for-medium-only {
    display: none !important; } }

@media screen and (min-width: 64em) {
  .hide-for-large {
    display: none !important; } }

@media screen and (max-width: 63.9375em) {
  .show-for-large {
    display: none !important; } }

@media screen and (min-width: 64em) and (max-width: 74.9375em) {
  .hide-for-large-only {
    display: none !important; } }

@media screen and (max-width: 63.9375em), screen and (min-width: 75em) {
  .show-for-large-only {
    display: none !important; } }

.show-for-sr,
.show-on-focus {
  position: absolute !important;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0); }

.show-on-focus:active, .show-on-focus:focus {
  position: static !important;
  height: auto;
  width: auto;
  overflow: visible;
  clip: auto; }

.show-for-landscape,
.hide-for-portrait {
  display: block !important; }
  @media screen and (orientation: landscape) {
    .show-for-landscape,
    .hide-for-portrait {
      display: block !important; } }
  @media screen and (orientation: portrait) {
    .show-for-landscape,
    .hide-for-portrait {
      display: none !important; } }

.hide-for-landscape,
.show-for-portrait {
  display: none !important; }
  @media screen and (orientation: landscape) {
    .hide-for-landscape,
    .show-for-portrait {
      display: none !important; } }
  @media screen and (orientation: portrait) {
    .hide-for-landscape,
    .show-for-portrait {
      display: block !important; } }

.breadcrumbs {
  list-style: none;
  margin: 0 0 0 0; }
  .breadcrumbs::before, .breadcrumbs::after {
    content: ' ';
    display: table; }
  .breadcrumbs::after {
    clear: both; }
  .breadcrumbs li {
    float: left;
    color: #333;
    font-size: 0.6875rem;
    cursor: default;
    text-transform: uppercase; }
    .breadcrumbs li:not(:last-child)::after {
      color: #cacaca;
      content: "/";
      margin: 0 0.75rem;
      position: relative;
      top: 1px;
      opacity: 1; }
  .breadcrumbs a {
    color: #333; }
    .breadcrumbs a:hover {
      text-decoration: underline; }
  .breadcrumbs .disabled {
    color: #cacaca; }

.callout {
  margin: 0 0 1rem 0;
  padding: 1rem;
  border: 1px solid rgba(10, 10, 10, 0.25);
  border-radius: 0;
  position: relative;
  color: #333;
  background-color: white; }
  .callout > :first-child {
    margin-top: 0; }
  .callout > :last-child {
    margin-bottom: 0; }
  .callout.primary {
    background-color: #dfeaf5; }
  .callout.secondary {
    background-color: white; }
  .callout.success {
    background-color: #e1faea; }
  .callout.alert {
    background-color: #fce6e2; }
  .callout.warning {
    background-color: #fff3d9; }
  .callout.small {
    padding-top: 0.5rem;
    padding-right: 0.5rem;
    padding-bottom: 0.5rem;
    padding-left: 0.5rem; }
  .callout.large {
    padding-top: 3rem;
    padding-right: 3rem;
    padding-bottom: 3rem;
    padding-left: 3rem; }

.close-button {
  position: absolute;
  color: #8a8a8a;
  right: 1rem;
  top: 0.5rem;
  font-size: 2em;
  line-height: 1;
  cursor: pointer; }
  [data-whatinput='mouse'] .close-button {
    outline: 0; }
  .close-button:hover, .close-button:focus {
    color: #0a0a0a; }

.is-drilldown {
  position: relative;
  overflow: hidden; }

.is-drilldown-submenu {
  position: absolute;
  top: 0;
  left: 100%;
  z-index: -1;
  height: 100%;
  width: 100%;
  background: #fefefe;
  transition: transform 0.15s linear; }
  .is-drilldown-submenu.is-active {
    z-index: 1;
    display: block;
    transform: translateX(-100%); }
  .is-drilldown-submenu.is-closing {
    transform: translateX(100%); }

.is-drilldown-submenu-parent > a {
  position: relative; }
  .is-drilldown-submenu-parent > a::after {
    content: '';
    display: block;
    width: 0;
    height: 0;
    border: inset 6px;
    border-color: transparent transparent transparent #3772b4;
    border-left-style: solid;
    position: absolute;
    top: 50%;
    margin-top: -6px;
    right: 1rem; }

.js-drilldown-back::before {
  content: '';
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  border-color: transparent #3772b4 transparent transparent;
  border-right-style: solid;
  float: left;
  margin-right: 0.75rem;
  margin-left: 0.6rem;
  margin-top: 14px; }

.dropdown-pane {
  background-color: #eee;
  border: 1px solid #cacaca;
  display: block;
  padding: 1rem;
  position: absolute;
  visibility: hidden;
  width: 300px;
  z-index: 10;
  border-radius: 0; }
  .dropdown-pane.is-open {
    visibility: visible; }

.dropdown-pane.tiny {
  width: 100px; }

.dropdown-pane.small {
  width: 200px; }

.dropdown-pane.large {
  width: 400px; }

[data-whatinput='mouse'] .dropdown.menu a {
  outline: 0; }

.dropdown.menu .is-dropdown-submenu-parent {
  position: relative; }
  .dropdown.menu .is-dropdown-submenu-parent a::after {
    float: right;
    margin-top: 3px;
    margin-left: 10px; }
  .dropdown.menu .is-dropdown-submenu-parent.is-down-arrow a {
    padding-right: 1.5rem;
    position: relative; }
  .dropdown.menu .is-dropdown-submenu-parent.is-down-arrow > a::after {
    content: '';
    display: block;
    width: 0;
    height: 0;
    border: inset 5px;
    border-color: #ddd transparent transparent;
    border-top-style: solid;
    position: absolute;
    top: 0.825rem;
    right: 5px; }
  .dropdown.menu .is-dropdown-submenu-parent.is-left-arrow > a::after {
    content: '';
    display: block;
    width: 0;
    height: 0;
    border: inset 5px;
    border-color: transparent #ddd transparent transparent;
    border-right-style: solid;
    float: left;
    margin-left: 0;
    margin-right: 10px; }
  .dropdown.menu .is-dropdown-submenu-parent.is-right-arrow > a::after {
    content: '';
    display: block;
    width: 0;
    height: 0;
    border: inset 5px;
    border-color: transparent transparent transparent #ddd;
    border-left-style: solid; }
  .dropdown.menu .is-dropdown-submenu-parent.is-left-arrow.opens-inner .submenu {
    right: 0;
    left: auto; }
  .dropdown.menu .is-dropdown-submenu-parent.is-right-arrow.opens-inner .submenu {
    left: 0;
    right: auto; }
  .dropdown.menu .is-dropdown-submenu-parent.opens-inner .submenu {
    top: 100%; }

.no-js .dropdown.menu ul {
  display: none; }

.dropdown.menu .submenu {
  display: none;
  position: absolute;
  top: 0;
  left: 100%;
  min-width: 200px;
  z-index: 1;
  background: #fefefe;
  border: 1px solid #cacaca; }
  .dropdown.menu .submenu > li {
    width: 100%; }
  .dropdown.menu .submenu.first-sub {
    top: 100%;
    left: 0;
    right: auto; }
  .dropdown.menu .submenu:not(.js-dropdown-nohover) > .is-dropdown-submenu-parent:hover > .dropdown.menu .submenu, .dropdown.menu .submenu.js-dropdown-active {
    display: block; }

.dropdown.menu .is-dropdown-submenu-parent.opens-left .submenu {
  left: auto;
  right: 100%; }

.dropdown.menu.align-right .submenu.first-sub {
  top: 100%;
  left: auto;
  right: 0; }

.is-dropdown-menu.vertical {
  width: 100px; }
  .is-dropdown-menu.vertical.align-right {
    float: right; }
  .is-dropdown-menu.vertical > li .submenu {
    top: 0;
    left: 100%; }

.menu {
  margin: 0;
  list-style-type: none; }
  .menu > li {
    display: table-cell;
    vertical-align: middle; }
    [data-whatinput='mouse'] .menu > li {
      outline: 0; }
  .menu > li:not(.menu-text) > a {
    display: block;
    padding: 0.7rem 1rem;
    line-height: 1; }
  .menu input,
  .menu a,
  .menu button {
    margin-bottom: 0; }
  .menu > li > a > img,
  .menu > li > a > i {
    vertical-align: middle; }
  .menu > li > a > span {
    vertical-align: middle; }
  .menu > li > a > img,
  .menu > li > a > i {
    display: inline-block;
    margin-right: 0.25rem; }
  .menu > li {
    display: table-cell; }
  .menu.vertical > li {
    display: block; }
  @media screen and (min-width: 40em) {
    .menu.medium-horizontal > li {
      display: table-cell; }
    .menu.medium-vertical > li {
      display: block; } }
  @media screen and (min-width: 64em) {
    .menu.large-horizontal > li {
      display: table-cell; }
    .menu.large-vertical > li {
      display: block; } }
  .menu.simple a {
    padding: 0;
    margin-right: 1rem; }
  .menu.align-right > li {
    float: right; }
  .menu.expanded {
    display: table;
    width: 100%; }
    .menu.expanded > li:nth-last-child(2):first-child,
    .menu.expanded > li:nth-last-child(2):first-child ~ li {
      width: 50%; }
    .menu.expanded > li:nth-last-child(3):first-child,
    .menu.expanded > li:nth-last-child(3):first-child ~ li {
      width: 33.3333333333%; }
    .menu.expanded > li:nth-last-child(4):first-child,
    .menu.expanded > li:nth-last-child(4):first-child ~ li {
      width: 25%; }
    .menu.expanded > li:nth-last-child(5):first-child,
    .menu.expanded > li:nth-last-child(5):first-child ~ li {
      width: 20%; }
    .menu.expanded > li:nth-last-child(6):first-child,
    .menu.expanded > li:nth-last-child(6):first-child ~ li {
      width: 16.6666666667%; }
    .menu.expanded > li:first-child:last-child {
      width: 100%; }
  .menu.icon-top > li > a {
    text-align: center; }
    .menu.icon-top > li > a > img,
    .menu.icon-top > li > a > i {
      display: block;
      margin: 0 auto 0.25rem; }
  .menu.nested {
    margin-left: 1rem; }

.menu-text {
  font-weight: bold;
  color: inherit;
  line-height: 1;
  padding-top: 0;
  padding-bottom: 0;
  padding: 0.7rem 1rem; }

.no-js [data-responsive-menu] ul {
  display: none; }

.sticky-container {
  position: relative; }

.sticky {
  position: absolute;
  z-index: 0;
  transform: translate3d(0, 0, 0); }

.sticky.is-stuck {
  position: fixed;
  z-index: 5; }
  .sticky.is-stuck.is-at-top {
    top: 0; }
  .sticky.is-stuck.is-at-bottom {
    bottom: 0; }

.sticky.is-anchored {
  position: absolute;
  left: auto;
  right: auto; }
  .sticky.is-anchored.is-at-bottom {
    bottom: 0; }

table {
  margin-bottom: 1rem;
  border-radius: 0; }
  thead,
  tbody,
  tfoot {
    border: 1px solid #fafafa;
    background-color: #fff; }
  caption {
    font-weight: bold;
    padding: 0.5rem 0.625rem 0.625rem; }
  thead,
  tfoot {
    background: #fcfcfc;
    color: #333; }
    thead tr,
    tfoot tr {
      background: transparent; }
    thead th,
    thead td,
    tfoot th,
    tfoot td {
      padding: 0.5rem 0.625rem 0.625rem;
      font-weight: bold;
      text-align: left; }
  tbody tr:nth-child(even) {
    background-color: #fafafa; }
  tbody th,
  tbody td {
    padding: 0.5rem 0.625rem 0.625rem; }

@media screen and (max-width: 63.9375em) {
  table.stack thead {
    display: none; }
  table.stack tfoot {
    display: none; }
  table.stack tr,
  table.stack th,
  table.stack td {
    display: block; }
  table.stack td {
    border-top: 0; } }

table.scroll {
  display: block;
  width: 100%;
  overflow-y: scroll; }

table.hover tr:hover {
  background-color: #fafafa; }

table.hover tr:nth-of-type(even):hover {
  background-color: whitesmoke; }

.title-bar {
  background: #0a0a0a;
  color: #fefefe;
  padding: 0.5rem; }
  .title-bar::before, .title-bar::after {
    content: ' ';
    display: table; }
  .title-bar::after {
    clear: both; }
  .title-bar .menu-icon {
    margin-left: 0.25rem;
    margin-right: 0.5rem; }

.title-bar-left {
  float: left; }

.title-bar-right {
  float: right;
  text-align: right; }

.title-bar-title {
  font-weight: bold;
  vertical-align: middle;
  display: inline-block; }

.menu-icon {
  position: relative;
  display: inline-block;
  vertical-align: middle;
  cursor: pointer;
  width: 20px;
  height: 16px; }
  .menu-icon::after {
    content: '';
    position: absolute;
    display: block;
    width: 100%;
    height: 2px;
    background: #fefefe;
    top: 0;
    left: 0;
    box-shadow: 0 7px 0 #fefefe, 0 14px 0 #fefefe; }
  .menu-icon:hover::after {
    background: #cacaca;
    box-shadow: 0 7px 0 #cacaca, 0 14px 0 #cacaca; }

.top-bar {
  padding: 2rem; }
  .top-bar::before, .top-bar::after {
    content: ' ';
    display: table; }
  .top-bar::after {
    clear: both; }
  .top-bar,
  .top-bar ul {
    background-color: #fff; }
  .top-bar a {
    color: #ddd; }
  .top-bar input {
    width: 200px;
    margin-right: 1rem; }
  .top-bar input.button {
    width: auto; }

@media screen and (max-width: 39.9375em) {
  .stacked-for-small .top-bar-right {
    width: 100%; }
  .stacked-for-small .top-bar-left {
    width: 100%; } }

@media screen and (max-width: 63.9375em) {
  .stacked-for-medium .top-bar-right {
    width: 100%; }
  .stacked-for-medium .top-bar-left {
    width: 100%; } }

@media screen and (max-width: 74.9375em) {
  .stacked-for-large .top-bar-right {
    width: 100%; }
  .stacked-for-large .top-bar-left {
    width: 100%; } }

@media screen and (max-width: 39.9375em) {
  .top-bar-right {
    width: 100%; }
  .top-bar-left {
    width: 100%; } }

.top-bar-left {
  float: left; }

.top-bar-right {
  float: right; }

.top-bar {
  background: transparent;
  padding: 0;
  position: relative;
  z-index: 300;
  max-width: 75rem;
  display: flex;
  flex-flow: row wrap;
  margin-left: auto;
  margin-right: auto; }
  .top-bar .right,
  .top-bar .left {
    flex: 0 0 100%;
    padding-left: 0.9375rem;
    padding-right: 0.9375rem;
    max-width: 100%; }
  @media screen and (min-width: 0em) and (max-width: 39.9375em) {
    .top-bar .left {
      padding: 0; } }
  .top-bar ul {
    background: transparent; }
  .top-bar.expanded {
    position: fixed; }
  .top-bar.expanded ul {
    background: #fff; }
  .top-bar__icon img {
    max-height: calc($hero-max-height - 40px);
    max-width: 250px; }
  .top-bar li > a {
    text-transform: uppercase;
    font-weight: 700;
    transition: .2s all; }
    .top-bar li > a.button {
      border-color: #ddd;
      color: #ddd; }
  .top-bar li.active a,
  .top-bar a:hover {
    color: #fff; }
    .top-bar li.active a.button,
    .top-bar a:hover.button {
      border-color: #fff;
      color: #fff; }
  .top-bar.expanded {
    background: #fff; }
  @media screen and (min-width: 64em) {
    .top-bar__locale-picker {
      border-left: 1px solid #ddd; } }
  .top-bar__locale-picker svg {
    height: 16px;
    width: 21px; }
  @media screen and (max-width: 63.9375em) {
    .top-bar .menu-text {
      display: block;
      padding: .5rem;
      text-align: center;
      width: 100%; }
    .top-bar__icon {
      display: block;
      margin-top: 3rem; }
    .top-bar__toggle {
      float: left; }
    .top-bar .right li {
      text-align: center; }
    .top-bar .right .button {
      border: 0;
      margin: 0; } }
  @media screen and (min-width: 64em) {
    .top-bar .right {
      flex: 0 0 auto;
      padding-left: 0.9375rem;
      padding-right: 0.9375rem; }
    .top-bar .left {
      flex: 1 1 0px;
      padding-left: 0.9375rem;
      padding-right: 0.9375rem; }
    .top-bar .right {
      padding: 2rem 0;
      align-items: center;
      display: flex; } }

@media screen and (min-width: 64em) {
  .dropdown.menu .is-dropdown-submenu-parent.is-right-arrow > a::after {
    display: none; }
  .dropdown.menu .submenu.first-sub {
    left: auto !important;
    right: 0 !important; } }
  @media screen and (min-width: 64em) and (min-width: 64em) {
    .dropdown.menu .submenu.first-sub {
      background: transparent;
      border: none;
      border-left: 1px solid #ddd;
      max-width: inherit !important;
      min-width: inherit !important; } }

.hero {
  background: url("../img/background-s.png") center center/cover;
  height: 180px;
  overflow: hidden;
  position: relative; }
  @media screen and (min-width: 40em) {
    .hero {
      background-image: url("../img/background-m.png"); } }
  @media screen and (min-width: 64em) {
    .hero {
      background-image: url("../img/background-l.png"); } }
  @media screen and (min-width: 75em) {
    .hero {
      background-image: url("../img/background-xl.png"); } }
  @media screen and (min-width: 90em) {
    .hero {
      background-image: url("../img/background-xxl.png"); } }

.hero--full {
  min-height: 50vh; }

.hero--error {
  min-height: 100vh; }

.fullscreen-bg {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  overflow: hidden;
  z-index: -100;
  background: red; }

.fullscreen-bg__video {
  position: absolute;
  top: 50%;
  left: 50%;
  min-width: 100%;
  min-height: 180px;
  width: auto;
  height: auto;
  z-index: 1;
  transform: translateX(-50%) translateY(-50%);
  background-size: cover; }
  @media screen and (min-width: 0em) and (max-width: 39.9375em) {
    .fullscreen-bg__video {
      display: none !important; } }

.hero--full .fullscreen-bg__video {
  min-height: 100vh; }

@media screen and (min-width: 40em) {
  .top-bar-wrapper {
    background: rgba(55, 114, 180, 0.5);
    border-bottom: 1px solid rgba(52, 108, 171, 0.5); } }

.primary-footer {
  background: #fff;
  color: #999;
  padding: 2rem 0; }
  .primary-footer ul {
    list-style: none; }
  .primary-footer__company {
    max-width: 75rem;
    display: flex;
    flex-flow: row wrap;
    margin-left: auto;
    margin-right: auto;
    font-size: 0.875rem;
    align-items: center; }
    .primary-footer__company > div {
      flex: 0 0 100%;
      padding-left: 0.9375rem;
      padding-right: 0.9375rem;
      max-width: 100%;
      margin-bottom: 1rem; }
      @media screen and (min-width: 0em) and (max-width: 39.9375em) {
        .primary-footer__company > div {
          text-align: center; } }
      @media screen and (min-width: 40em) {
        .primary-footer__company > div {
          flex: 0 0 33.3333333333%;
          padding-left: 0.9375rem;
          padding-right: 0.9375rem;
          max-width: 33.3333333333%; } }
  .primary-footer__address {
    list-style: none; }
    .primary-footer__address li {
      position: relative;
      margin-bottom: .5rem; }
      @media screen and (min-width: 0em) and (max-width: 39.9375em) {
        .primary-footer__address li {
          padding-top: 25px;
          margin-bottom: 1rem; } }
      @media screen and (min-width: 40em) {
        .primary-footer__address li {
          padding-left: 25px; } }
      .primary-footer__address li strong {
        color: gray; }
    .primary-footer__address svg {
      fill: gray;
      height: 20px;
      width: 20px; }
      @media screen and (min-width: 0em) and (max-width: 39.9375em) {
        .primary-footer__address svg {
          position: absolute;
          top: 0;
          position: absolute;
          left: 50%;
          transform: translateX(-50%); } }
      @media screen and (min-width: 40em) {
        .primary-footer__address svg {
          position: absolute;
          left: 0; } }
  .primary-footer__copyright {
    margin: 0; }
    .primary-footer__copyright svg {
      height: 0.875rem;
      width: 0.875rem;
      fill: #000 !important; }
    .primary-footer__copyright li {
      display: inline-block;
      margin-right: .5rem; }
      .primary-footer__copyright li a {
        color: #999; }
      .primary-footer__copyright li:not(:last-child)::after {
        content: '/';
        padding-right: .5rem;
        padding-left: .5rem;
        color: gray; }
  .primary-footer__links {
    max-width: 75rem;
    display: flex;
    flex-flow: row wrap;
    margin-left: auto;
    margin-right: auto;
    border-bottom: 1px solid #999;
    text-align: center;
    margin-bottom: 1rem; }
    .primary-footer__links > div {
      flex: 0 0 100%;
      padding-left: 0.9375rem;
      padding-right: 0.9375rem;
      max-width: 100%;
      text-align: center;
      margin-bottom: 1rem; }
      @media screen and (min-width: 40em) {
        .primary-footer__links > div {
          flex: 0 0 50%;
          padding-left: 0.9375rem;
          padding-right: 0.9375rem;
          max-width: 50%; } }
    .primary-footer__links a {
      color: #999;
      transition: .5s all; }
      .primary-footer__links a svg {
        fill: gray; }
    @media screen and (min-width: 40em) {
      .primary-footer__links > div {
        margin-bottom: inherit; }
      .primary-footer__links > div:first-child {
        text-align: left; }
      .primary-footer__links > div:last-child {
        text-align: right; } }
  .primary-footer__sociale {
    list-style: none; }
    .primary-footer__sociale li {
      display: inline-block;
      margin: 0 1rem; }
      .primary-footer__sociale li:hover svg {
        fill: #5c5c5c; }
    .primary-footer__sociale svg {
      transition: .5s all;
      fill: gray;
      height: 20px;
      width: 20px; }

.about-us {
  max-width: 75rem;
  display: flex;
  flex-flow: row wrap;
  margin-left: auto;
  margin-right: auto; }
  .about-us__anchor {
    flex: 0 0 100%;
    padding-left: 0.9375rem;
    padding-right: 0.9375rem;
    max-width: 100%; }
    @media screen and (min-width: 40em) {
      .about-us__anchor {
        flex: 0 0 33.3333333333%;
        padding-left: 0.9375rem;
        padding-right: 0.9375rem;
        max-width: 33.3333333333%;
        order: 2; } }
    .about-us__anchor > div {
      width: 100%; }
    .about-us__anchor ul {
      width: 100%; }
    .about-us__anchor a {
      width: 100%;
      display: block; }
    .about-us__anchor a.active {
      background: #3772b4;
      color: #fff; }
  .about-us__items {
    flex: 0 0 100%;
    padding-left: 0.9375rem;
    padding-right: 0.9375rem;
    max-width: 100%; }
    @media screen and (min-width: 40em) {
      .about-us__items {
        flex: 0 0 66.6666666667%;
        padding-left: 0.9375rem;
        padding-right: 0.9375rem;
        max-width: 66.6666666667%;
        order: 1; } }
  .about-us__item {
    margin-bottom: 2rem; }
  .about-us__content {
    padding: 4rem; }

.contact {
  max-width: 75rem;
  display: flex;
  flex-flow: row wrap;
  margin-left: auto;
  margin-right: auto; }
  .contact__address {
    flex: 0 0 100%;
    padding-left: 0.9375rem;
    padding-right: 0.9375rem;
    max-width: 100%; }
    @media screen and (min-width: 40em) {
      .contact__address {
        flex: 0 0 33.3333333333%;
        padding-left: 0.9375rem;
        padding-right: 0.9375rem;
        max-width: 33.3333333333%;
        order: 2; } }
    .contact__address.content {
      padding: 4rem 1rem; }
  .contact__inquire {
    flex: 0 0 100%;
    padding-left: 0.9375rem;
    padding-right: 0.9375rem;
    max-width: 100%; }
    @media screen and (min-width: 40em) {
      .contact__inquire {
        flex: 0 0 66.6666666667%;
        padding-left: 0.9375rem;
        padding-right: 0.9375rem;
        max-width: 66.6666666667%;
        order: 1; } }
  .contact__callout {
    max-width: 75rem;
    display: flex;
    flex-flow: row wrap;
    margin-left: auto;
    margin-right: auto; }
    .contact__callout .callout {
      flex: 1 1 0px;
      padding-left: 0.9375rem;
      padding-right: 0.9375rem; }

.news {
  max-width: 75rem;
  display: flex;
  flex-flow: row wrap;
  margin-left: auto;
  margin-right: auto;
  padding: 4rem 1rem;
  align-items: center; }
  .news__content {
    order: 2; }
    @media screen and (min-width: 40em) {
      .news__content {
        flex: 0 0 58.3333333333%;
        padding-left: 5rem;
        padding-right: 5rem;
        max-width: 58.3333333333%;
        order: 1; } }
  .news__content--wide {
    order: 1;
    flex: 0 0 100%;
    padding-left: 5rem;
    padding-right: 5rem;
    max-width: 100%; }
    @media screen and (min-width: 0em) and (max-width: 39.9375em) {
      .news__content--wide {
        flex: 0 0 100%;
        padding-left: 0.5rem;
        padding-right: 0.5rem;
        max-width: 100%; } }
  .news__picture {
    text-align: center;
    flex: 1 1 0px;
    padding-left: 0.9375rem;
    padding-right: 0.9375rem;
    order: 1; }
    @media screen and (min-width: 0em) and (max-width: 39.9375em) {
      .news__picture {
        padding-bottom: 2rem; } }
    .news__picture img {
      transition: .2s linear all; }
    @media screen and (min-width: 0em) and (max-width: 39.9375em) {
      .news__picture {
        margin-top: 2rem; } }
    @media screen and (min-width: 40em) {
      .news__picture {
        flex: 0 0 41.6666666667%;
        padding-left: 5rem;
        padding-right: 5rem;
        max-width: 41.6666666667%;
        order: 2; }
        .news__picture img {
          margin-bottom: 0;
          margin-bottom: 0; } }
  .news__title {
    font-size: 1.75rem;
    margin-bottom: 1rem; }
    .news__title > small {
      font-size: 1.125rem;
      margin-left: 1rem; }
  .news__short-description {
    font-size: 0.875rem;
    margin-bottom: 2rem; }
  @media screen and (min-width: 0em) and (max-width: 39.9375em) {
    .news .button {
      display: block;
      width: 100%;
      margin-left: 0;
      margin-right: 0; } }
  .news.text-right .button {
    margin-right: 0; }
  .news:hover .news__picture img {
    transform: scale(1.1); }

@media screen and (min-width: 0em) and (max-width: 39.9375em) {
  .news.text-right {
    text-align: center; }
    .news.text-right h2 {
      margin-top: 1rem; } }

.post {
  max-width: 75rem;
  display: flex;
  flex-flow: row wrap;
  margin-left: auto;
  margin-right: auto; }
  .post > * {
    width: 100%; }
  .post__header {
    max-width: 75rem;
    display: flex;
    flex-flow: row wrap;
    margin-left: auto;
    margin-right: auto;
    background: #3772b4;
    align-items: center; }
  .post__picture {
    flex: 0 0 100%;
    padding-left: 0.9375rem;
    padding-right: 0.9375rem;
    max-width: 100%;
    margin: 0;
    padding: 0 !important;
    text-align: center; }
    @media screen and (min-width: 40em) {
      .post__picture {
        text-align: left;
        flex: 0 0 50%;
        padding-left: 0.9375rem;
        padding-right: 0.9375rem;
        max-width: 50%; } }
  .post__metas {
    flex: 0 0 100%;
    padding-left: 0.9375rem;
    padding-right: 0.9375rem;
    max-width: 100%;
    padding: 3rem !important; }
    .post__metas h1 {
      color: #fff;
      font-size: 2rem; }
    .post__metas time {
      color: #fff;
      margin-bottom: 1rem;
      font-size: 0.875rem; }
      .post__metas time svg {
        height: 0.875rem;
        width: 0.875rem; }
    .post__metas svg {
      fill: #fff; }
    .post__metas .buttons {
      margin-top: 4rem;
      max-width: 75rem;
      display: flex;
      flex-flow: row wrap;
      margin-left: auto;
      margin-right: auto; }
      .post__metas .buttons > div {
        flex: 0 0 100%;
        padding-left: 0.9375rem;
        padding-right: 0.9375rem;
        max-width: 100%; }
    .post__metas .button {
      border: 1px solid #fff;
      color: #fff;
      display: block;
      width: 100%;
      margin-left: 0;
      margin-right: 0; }
      .post__metas .button:hover, .post__metas .button:focus {
        border-color: gray;
        color: gray; }
      .post__metas .button, .post__metas .button:hover, .post__metas .button:focus {
        background: transparent; }
      .post__metas .button svg {
        fill: #fff;
        height: 1rem;
        width: 1rem; }
      .post__metas .button:hover svg {
        fill: gray; }
    @media screen and (min-width: 40em) {
      .post__metas {
        text-align: left;
        flex: 0 0 50%;
        padding-left: 0.9375rem;
        padding-right: 0.9375rem;
        max-width: 50%; } }
  .post__content {
    padding: 4rem;
    background: #f3f3f3; }
  .post__footer::before, .post__footer::after {
    content: ' ';
    display: table; }
  .post__footer::after {
    clear: both; }
  @media screen and (max-width: 63.9375em) {
    .post__footer {
      display: none !important; } }
  .post__footer .button {
    border: 1px solid #929292;
    color: #929292; }
    .post__footer .button, .post__footer .button:hover, .post__footer .button:focus {
      background: transparent; }
    .post__footer .button:hover, .post__footer .button:focus {
      border-color: #494949;
      color: #494949; }
    .post__footer .button svg {
      height: 10px;
      width: 10px;
      fill: #929292; }
    .post__footer .button:hover svg {
      fill: #494949; }
  .post__footer .right {
    float: right; }
  .post__footer .left {
    float: left; }

.works {
  max-width: 75rem;
  display: flex;
  flex-flow: row wrap;
  margin-left: auto;
  margin-right: auto; }
  .works__items {
    margin-bottom: 2rem;
    flex: 0 0 100%;
    padding-left: 0.9375rem;
    padding-right: 0.9375rem;
    max-width: 100%;
    background: #fff;
    background-clip: content-box; }
    @media screen and (min-width: 40em) {
      .works__items {
        flex: 0 0 50%;
        padding-left: 0.9375rem;
        padding-right: 0.9375rem;
        max-width: 50%; } }
    @media screen and (min-width: 64em) {
      .works__items {
        flex: 0 0 33.3333333333%;
        padding-left: 0.9375rem;
        padding-right: 0.9375rem;
        max-width: 33.3333333333%; } }
    .works__items > article {
      color: #333;
      margin-bottom: 0; }
    .works__items__picture {
      position: relative;
      text-align: center;
      overflow: hidden; }
      .works__items__picture::after {
        opacity: 0;
        content: '';
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
        position: absolute;
        transition: all .5s; }
      .works__items__picture .button {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        transform: translateY(100vh);
        z-index: 9999; }
    .works__items:hover .works__items__picture .button {
      transform: translateY(0);
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%); }
    .works__items:hover .works__items__picture::after {
      opacity: 1; }
    .works__items__title {
      padding: 1rem;
      color: #333;
      font-size: 1.125rem;
      font-weight: bold;
      font-family: "Lato", "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif;
      text-align: center;
      height: 100%; }

.work {
  max-width: 75rem;
  display: flex;
  flex-flow: row wrap;
  margin-left: auto;
  margin-right: auto; }
  .work > div {
    flex: 0 0 100%;
    padding-left: 0.9375rem;
    padding-right: 0.9375rem;
    max-width: 100%; }
  .work__footer {
    margin-top: 2rem; }
    .work__footer::before, .work__footer::after {
      content: ' ';
      display: table; }
    .work__footer::after {
      clear: both; }
    @media screen and (max-width: 63.9375em) {
      .work__footer {
        display: none !important; } }
    .work__footer .button {
      border: 1px solid #929292;
      color: #929292; }
      .work__footer .button, .work__footer .button:hover, .work__footer .button:focus {
        background: transparent; }
      .work__footer .button:hover, .work__footer .button:focus {
        border-color: #494949;
        color: #494949; }
      .work__footer .button svg {
        height: 10px;
        width: 10px;
        fill: #929292; }
      .work__footer .button:hover svg {
        fill: #494949; }
    .work__footer .right {
      float: right; }
    .work__footer .left {
      float: left; }

.work-stripe {
  max-width: 100vw;
  display: flex;
  flex-flow: row wrap;
  margin-left: auto;
  margin-right: auto; }
  .work-stripe > div > a {
    display: block;
    z-index: 99999; }
  .work-stripe > div {
    flex: 0 0 100%;
    padding-left: 0;
    padding-right: 0;
    max-width: 100%;
    position: relative;
    text-align: center;
    overflow: hidden; }
    @media screen and (min-width: 40em) {
      .work-stripe > div {
        flex: 0 0 50%;
        padding-left: 0;
        padding-right: 0;
        max-width: 50%; } }
    @media screen and (min-width: 64em) {
      .work-stripe > div {
        flex: 0 0 25%;
        padding-left: 0;
        padding-right: 0;
        max-width: 25%; } }
    .work-stripe > div:hover .caption {
      opacity: 1; }
      .work-stripe > div:hover .caption a {
        transform: translateY(0); }
      .work-stripe > div:hover .caption::after {
        opacity: 0;
        content: '';
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
        position: absolute;
        transition: all .5s; }
    .work-stripe > div .caption {
      opacity: 0;
      content: '';
      top: 0;
      bottom: 0;
      left: 0;
      right: 0;
      position: absolute;
      transition: all .5s;
      pointer-events: none;
      color: #ddd; }
      .work-stripe > div .caption a {
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        transform: translateY(100vh);
        margin: 0; }
    .work-stripe > div img {
      width: 100%;
      object-fit: cover; }

[data-whatinput='touch'] .work-stripe caption {
  opacity: 1; }

.strip {
  max-width: 75rem;
  display: flex;
  flex-flow: row wrap;
  margin-left: auto;
  margin-right: auto;
  align-items: center;
  margin-bottom: 2rem; }

.strip__title {
  padding: 1rem;
  flex: 1 1 0px;
  padding-left: 0.9375rem;
  padding-right: 0.9375rem;
  color: #eee;
  text-transform: uppercase;
  font-size: 2rem; }
  @media screen and (min-width: 0em) and (max-width: 39.9375em) {
    .strip__title {
      text-align: center; } }

.strip__breadcrumbs {
  flex: 0 0 auto;
  padding-left: 0.9375rem;
  padding-right: 0.9375rem; }
  @media screen and (min-width: 0em) and (max-width: 39.9375em) {
    .strip__breadcrumbs {
      display: none; } }

.strip--secondary {
  background: #3772b4; }

.strip--no-margin,
.strip--no-margin .strip {
  margin-bottom: 0; }

.strip--callout {
  padding: 10rem 0;
  background: url("../img/accessory-s.png") no-repeat center center fixed;
  background-size: cover;
  position: relative; }
  @media screen and (min-width: 40em) {
    .strip--callout {
      background-image: url("../img/accessory-m.png"); } }
  @media screen and (min-width: 64em) {
    .strip--callout {
      background-image: url("../img/accessory-l.png"); } }
  @media screen and (min-width: 75em) {
    .strip--callout {
      background-image: url("../img/accessory-xl.png"); } }
  @media screen and (min-width: 90em) {
    .strip--callout {
      background-image: url("../img/accessory-xxl.png"); } }
  .strip--callout::after {
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    bottom: 0; }
  .strip--callout > div {
    max-width: 75rem;
    display: flex;
    flex-flow: row wrap;
    margin-left: auto;
    margin-right: auto;
    position: relative;
    color: #fff;
    z-index: 9999; }
    .strip--callout > div > div {
      flex: 1 1 0px;
      padding-left: 0.9375rem;
      padding-right: 0.9375rem;
      text-align: center; }

.strip--callout-newsletter {
  background: url("../img/newsletter-m.png") no-repeat center center fixed;
  background-size: cover; }
  @media screen and (min-width: 40em) {
    .strip--callout-newsletter {
      background-image: url("../img/newsletter-m.png"); } }
  @media screen and (min-width: 64em) {
    .strip--callout-newsletter {
      background-image: url("../img/newsletter-l.png"); } }
  @media screen and (min-width: 75em) {
    .strip--callout-newsletter {
      background-image: url("../img/newsletter-xl.png"); } }
  @media screen and (min-width: 90em) {
    .strip--callout-newsletter {
      background-image: url("../img/newsletter-xxl.png"); } }

@keyframes bounce {
  0% {
    transform: translateY(-10px); }
  50% {
    transform: translateY(0); }
  100% {
    transform: translateY(-10px); } }

.map {
  height: 50vh; }

section,
article,
.grid-margin {
  margin-bottom: 2rem; }

.no-margin {
  margin-bottom: 0; }

.zebra {
  width: 100%; }

.zebra .zebra__item:nth-child(1n) {
  background: #fff; }
  .zebra .zebra__item:nth-child(1n) .about__items {
    position: relative; }
    .zebra .zebra__item:nth-child(1n) .about__items::after {
      content: '';
      position: absolute;
      border: 10px solid #fff;
      top: 0;
      right: 0;
      left: 0;
      bottom: 0;
      pointer-events: none; }

.zebra--shadow .zebra__item:nth-child(1n):hover {
  box-shadow: 0 0 5px 1px #e6e6e6; }

.zebra .zebra__item:nth-child(2n) {
  background: #ddd; }
  .zebra .zebra__item:nth-child(2n) .about__items {
    position: relative; }
    .zebra .zebra__item:nth-child(2n) .about__items::after {
      content: '';
      position: absolute;
      border: 10px solid #ddd;
      top: 0;
      right: 0;
      left: 0;
      bottom: 0;
      pointer-events: none; }

.zebra--shadow .zebra__item:nth-child(2n):hover {
  box-shadow: 0 0 5px 1px #c7c7c7; }

.zebra .zebra__item:nth-child(1n) h1,
.zebra .zebra__item:nth-child(1n) h2,
.zebra .zebra__item:nth-child(1n) h3,
.zebra .zebra__item:nth-child(1n) h4,
.zebra .zebra__item:nth-child(1n) h5,
.zebra .zebra__item:nth-child(1n) h6 {
  color: #3772b4; }

.zebra .zebra__item:nth-child(1n) {
  color: #333; }
  .zebra .zebra__item:nth-child(1n) .about svg {
    fill: rgba(51, 51, 51, 0.2); }
  .zebra .zebra__item:nth-child(1n) .about__item {
    border: 1px solid rgba(51, 51, 51, 0.1); }

.zebra .zebra__item {
  transition: .5s linear all; }
  .zebra .zebra__item * {
    color: currentColor; }

.zebra .zebra__item:nth-child(1n) .button {
  background: #333;
  color: #fff; }
  .zebra .zebra__item:nth-child(1n) .button:hover, .zebra .zebra__item:nth-child(1n) .button:focus {
    background: #858585;
    color: #fff; }

.button,
button[type=submit],
button[type=reset] {
  display: inline-block;
  text-align: center;
  line-height: 1;
  cursor: pointer;
  -webkit-appearance: none;
  transition: all 0.25s ease-out;
  vertical-align: middle;
  border: 1px solid transparent;
  border-radius: 0;
  padding: 0.85em 1em;
  margin: 0 1rem 1rem 0;
  font-size: 0.9rem;
  background: #3772b4;
  color: #fff; }
  [data-whatinput='mouse'] .button, [data-whatinput='mouse']
  button[type=submit], [data-whatinput='mouse']
  button[type=reset] {
    outline: 0; }
  .button:hover, .button:focus,
  button[type=submit]:hover,
  button[type=submit]:focus,
  button[type=reset]:hover,
  button[type=reset]:focus {
    background: #2f6199;
    color: #fff; }
  .button.hollow,
  button[type=submit].hollow,
  button[type=reset].hollow {
    border: 1px solid #3772b4;
    color: #3772b4; }
    .button.hollow, .button.hollow:hover, .button.hollow:focus,
    button[type=submit].hollow,
    button[type=submit].hollow:hover,
    button[type=submit].hollow:focus,
    button[type=reset].hollow,
    button[type=reset].hollow:hover,
    button[type=reset].hollow:focus {
      background: transparent; }
    .button.hollow:hover, .button.hollow:focus,
    button[type=submit].hollow:hover,
    button[type=submit].hollow:focus,
    button[type=reset].hollow:hover,
    button[type=reset].hollow:focus {
      border-color: #1c395a;
      color: #1c395a; }
  .button.secondary:not(.secondary),
  button[type=submit].secondary:not(.secondary),
  button[type=reset].secondary:not(.secondary) {
    background: #fff;
    color: #000; }
    .button.secondary:not(.secondary):hover, .button.secondary:not(.secondary):focus,
    button[type=submit].secondary:not(.secondary):hover,
    button[type=submit].secondary:not(.secondary):focus,
    button[type=reset].secondary:not(.secondary):hover,
    button[type=reset].secondary:not(.secondary):focus {
      background: #2f6199;
      color: #000; }
  .button.hollow.secondary,
  button[type=submit].hollow.secondary,
  button[type=reset].hollow.secondary {
    border: 1px solid #fff;
    color: #fff; }
    .button.hollow.secondary:hover, .button.hollow.secondary:focus,
    button[type=submit].hollow.secondary:hover,
    button[type=submit].hollow.secondary:focus,
    button[type=reset].hollow.secondary:hover,
    button[type=reset].hollow.secondary:focus {
      border-color: gray;
      color: gray; }

.scroll-down {
  position: absolute;
  bottom: 2rem;
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  z-index: 600;
  animation: bounce 3s infinite; }
  @media screen and (min-width: 0em) and (max-width: 39.9375em) {
    .scroll-down {
      display: none !important; } }
  .scroll-down svg {
    fill: #ddd;
    height: 40px;
    width: 40px; }

.scroll-top {
  z-index: 600;
  position: fixed;
  bottom: 2rem;
  display: none;
  right: 2rem;
  height: 40px;
  width: 40px;
  background: rgba(55, 114, 180, 0.4);
  transform: translateX(200px);
  transition: .5s transform; }
  .scroll-top svg {
    fill: #346cab;
    height: 40px;
    width: 40px; }
  .scroll-top.visible {
    transform: translateX(0);
    display: block; }

.content {
  max-width: 75rem;
  display: flex;
  flex-flow: row wrap;
  margin-left: auto;
  margin-right: auto;
  padding: 1rem;
  margin-bottom: 2rem;
  background: #fff;
  color: #333; }
  @media screen and (min-width: 40em) {
    .content {
      padding: 4rem; } }
  .content > div {
    flex: 1 1 0px;
    padding-left: 0.9375rem;
    padding-right: 0.9375rem; }
  .content table {
    width: 100% !important;
    max-width: 100% !important; }

.hero {
  position: relative; }

.hero::after {
  content: '';
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  bottom: 0;
  z-index: 200; }

.hero > .hero__content {
  text-align: center;
  color: #fff;
  z-index: 250;
  text-align: center;
  width: 100vw;
  position: absolute;
  top: 50%;
  transform: translateY(-50%); }
  .hero > .hero__content * {
    color: #fff; }

.about {
  max-width: 75rem;
  display: flex;
  flex-flow: row wrap;
  margin-left: auto;
  margin-right: auto;
  padding-top: 3rem;
  padding-bottom: 3rem;
  justify-content: center; }
  .about__hero {
    text-align: center;
    margin-bottom: 3rem;
    flex: 0 0 100%;
    padding-left: 0.9375rem;
    padding-right: 0.9375rem;
    max-width: 100%; }
  .about__items {
    max-width: 75rem;
    display: flex;
    flex-flow: row wrap;
    margin-left: auto;
    margin-right: auto; }
  .about__item {
    flex: 0 0 100%;
    padding-left: 0.9375rem;
    padding-right: 0.9375rem;
    max-width: 100%;
    padding: 1rem;
    text-align: center; }
    .about__item svg {
      height: 60px;
      width: 60px; }
    .about__item h2 {
      font-size: 1.375rem;
      margin: 1rem 0; }
    .about__item p {
      font-size: 0.875rem; }
    @media screen and (min-width: 40em) {
      .about__item {
        flex: 0 0 50%;
        padding-left: 4rem;
        padding-right: 4rem;
        max-width: 50%; } }
    @media screen and (min-width: 64em) {
      .about__item {
        flex: 0 0 33.3333333333%;
        padding-left: 4rem;
        padding-right: 4rem;
        max-width: 33.3333333333%; } }

.gallery {
  max-width: 75rem;
  display: flex;
  flex-flow: row wrap;
  margin-left: auto;
  margin-right: auto; }
  .gallery a::after {
    opacity: 0;
    content: '';
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    position: absolute;
    transition: all .5s; }
  .gallery a:hover::after {
    opacity: 1; }

.row {
  max-width: 75rem;
  display: flex;
  flex-flow: row wrap;
  margin-left: auto;
  margin-right: auto;
  justify-content: space-around; }

.cols {
  flex: 1 1 0px;
  padding-left: 0.9375rem;
  padding-right: 0.9375rem; }
  @media screen and (min-width: 0em) and (max-width: 39.9375em) {
    .cols {
      flex: 0 0 100%;
      padding-left: 0.9375rem;
      padding-right: 0.9375rem;
      max-width: 100%; } }

.newsletter-signup__field {
  max-width: 500px;
  margin: 1rem auto;
  opacity: .5; }
  .newsletter-signup__field:focus {
    opacity: 1;
    border: 0; }

.newsletter-signup__submit[type=submit] {
  background: #3adb76;
  color: #fff; }
  .newsletter-signup__submit[type=submit]:hover, .newsletter-signup__submit[type=submit]:focus {
    background: #2f6199;
    color: #fff; }

.newsletter-signup__submit {
  margin-right: 0; }

.lg-thumb-item img {
  object-fit: cover !important; }

a[href^="http"], .link__internal {
  color: #3772b4 !important;
  text-decoration: underline; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9zZXR0aW5ncy5zY3NzIiwibGF5b3V0L193b3Jrcy5zY3NzIiwiLi4vLi4vc3RkaW4iLCIuLi9saWIvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2ZvdW5kYXRpb24uc2NzcyIsIi4uL2xpYi9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdHlwb2dyYXBoeS9fYmFzZS5zY3NzIiwiLi4vbGliL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9fZ2xvYmFsLnNjc3MiLCJfc2V0dGluZ3NfZm91bmRhdGlvbi5zY3NzIiwiLi4vbGliL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL191bml0LnNjc3MiLCIuLi9saWIvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2JyZWFrcG9pbnQuc2NzcyIsIi4uL2xpYi9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdHlwb2dyYXBoeS9faGVscGVycy5zY3NzIiwiLi4vbGliL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy90eXBvZ3JhcGh5L19hbGlnbm1lbnQuc2NzcyIsIi4uL2xpYi9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdHlwb2dyYXBoeS9fcHJpbnQuc2NzcyIsIi4uL2xpYi9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3RleHQuc2NzcyIsIi4uL2xpYi9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fY29sb3Iuc2NzcyIsIi4uL2xpYi9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX2NoZWNrYm94LnNjc3MiLCIuLi9saWIvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19sYWJlbC5zY3NzIiwiLi4vbGliL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9faGVscC10ZXh0LnNjc3MiLCIuLi9saWIvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19pbnB1dC1ncm91cC5zY3NzIiwiLi4vbGliL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fZmllbGRzZXQuc2NzcyIsIi4uL2xpYi9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3NlbGVjdC5zY3NzIiwiLi4vbGliL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19taXhpbnMuc2NzcyIsIi4uL2xpYi9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX2Vycm9yLnNjc3MiLCIuLi9saWIvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3Zpc2liaWxpdHkuc2NzcyIsIi4uL2xpYi9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fYnJlYWRjcnVtYnMuc2NzcyIsIi4uL2xpYi9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fY2FsbG91dC5zY3NzIiwiLi4vbGliL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19jbG9zZS1idXR0b24uc2NzcyIsIi4uL2xpYi9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fZHJpbGxkb3duLnNjc3MiLCIuLi9saWIvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2Ryb3Bkb3duLnNjc3MiLCIuLi9saWIvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2Ryb3Bkb3duLW1lbnUuc2NzcyIsIi4uL2xpYi9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fbWVudS5zY3NzIiwiLi4vbGliL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19zdGlja3kuc2NzcyIsIi4uL2xpYi9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdGFibGUuc2NzcyIsIi4uL2xpYi9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdGl0bGUtYmFyLnNjc3MiLCIuLi9saWIvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3RvcC1iYXIuc2NzcyIsImxheW91dC9fdG9wYmFyLnNjc3MiLCIuLi9saWIvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2ZsZXgtZ3JpZC5zY3NzIiwiLi4vbGliL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19jb2x1bW4uc2NzcyIsImxheW91dC9fZm9vdGVyLnNjc3MiLCJsYXlvdXQvX2Fib3V0LnNjc3MiLCJsYXlvdXQvX2NvbnRhY3Quc2NzcyIsImxheW91dC9fbmV3cy5zY3NzIiwiLi4vbGliL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19idXR0b24uc2NzcyIsIm1vZHVsZXMvX3N0cmlwZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdEQSxPQUFPLENBQUMsaURBQUk7QUNoRFosc0JBQU0sQUFtQ08sT0FBTyxFQXdGcEIsWUFBWSxHQVFOLEdBQUcsQUFnQkEsTUFBTSxDQUFDLFFBQVEsQUFRWCxPQUFPLEVBaENwQixZQUFZLEdBUU4sR0FBRyxDQXVDRCxRQUFRLEVDK0toQixRQUFRLENBSUosQ0FBQyxPQUFPLENGdE9FO0VFaEhOLGdCQUFnQixFQUFFLDJGQUF1QjtFQUN6QyxnQkFBZ0IsRUFBRSxzRUFBZSxHRm1IeEM7O0FBZUQsWUFBWSxDQUFDLENBQUMsQ0FBQSxJQUFDLEVBQU0sTUFBTixBQUFZLEVBQUU7RUFDekIsS0FBSyxFQUFFLGVBQWdCO0VBQ3ZCLGVBQWUsRUFBRSxJQUFLLEdBQ3pCOztBQUVELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0VBQ1osS0FBSyxFQWhJTyxPQUFPLEdBaUl0Qjs7QUdqSkQ7Ozs7O0dBS0c7QUNrYkgsaUJBQWlCLENBQUM7RUFBRSxVQUFVLEVBQUUsTUFBTyxHQUFJOztBQUMzQyxZQUFZLENBQUM7RUFBRSxPQUFPLEVBQUUsWUFBYSxHQUFJOztBQ2hQdkMsNEVBQTRFO0FBRTVFOzs7O0tBSUc7QUFFSCxJQUFJLENBQUM7RUFDSCxXQUFXLEVBQUUsVUFBVztFQUFFLE9BQU87RUFDakMsb0JBQW9CLEVBQUUsSUFBSztFQUFFLE9BQU87RUFDcEMsd0JBQXdCLEVBQUUsSUFBSztFQUFFLE9BQU8sRUFDekM7O0FBRUQ7O0tBRUc7QUFFSCxJQUFJLENBQUM7RUFDSCxNQUFNLEVBQUUsQ0FBRSxH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LE1BQU0sRUFBRSxDQUFFLEdBQ2I7O0FBVFQsMEJBQWtCLENBWUwsSUFBQyxDQUFELE1BQUMsRUFBYTtFdUN2UnpCLFVBQVUsRW5DeEVJLE9BQU87RW1DeUVyQixLQUFLLEVuQ3NHUSxJQUFJLEdKbUxkO0VBZkwsMEJBQWtCLENBWUwsSUFBQyxDQUFELE1BQUMsQ3VDcFJYLE1BQU0sRXZDd1FULDBCQUFrQixDQVlMLElBQUMsQ0FBRCxNQUFDLEN1Q3BSRixNQUFNLENBQUM7SUFDZixVQUFVLEVuQ2tHWSxPQUFXO0ltQ2pHakMsS0FBSyxFbkNrR00sSUFBSSxHbUNqR2hCOztBdkN3UkgsMEJBQTBCLENBQUM7RUFDdkIsWUFBWSxFQUFFLENBQUUsR0FDbkI7O0FBS0QsY0FBYyxDQUFDLEdBQUcsQ0FBQztFQUNmLFVBQVUsRUFBRSxnQkFBaUIsR0FDaEM7O0FBR0QsQ0FBQyxDQUFBLElBQUMsRUFBTSxNQUFOLEFBQVksR0FBRyxlQUFlLENBQUE7RUFDNUIsS0FBSyxFRjlZTyxPQUFPLENFOFlBLFVBQVU7RUFDN0IsZUFBZSxFQUFFLFNBQVUsR0FDOUIiLCJmaWxlIjoiYXBwLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uL2xpYi9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC91dGlsJztcblxuLy8gMS4gTW9kdWxlc1xuLy8gLS0tLS0tLS0tXG4kc3RhbmRhcmQtbW9kdWxlLXNlcnZpY2U6IHRydWU7XG4kc3RhbmRhcmQtbW9kdWxlLW5ld3M6IHRydWU7XG4kc3RhbmRhcmQtbW9kdWxlLXdvcmtzOiB0cnVlO1xuJHN0YW5kYXJkLW1vZHVsZS1jb250YWN0OiB0cnVlO1xuXG4vLyAyLiBUaGVtZVxuLy8gLS0tLS0tLS0tXG5cbiRnbG9iYWwtcmFkaXVzOiAwO1xuXG4vLyBDb2xvcnNcbi8vIC0tLS0tLS0tLVxuJHByaW1hcnktY29sb3I6ICMzNzcyYjQ7XG4kc2Vjb25kYXJ5LWNvbG9yOiAjZmZmO1xuXG4kbGluay1jb2xvcjogJHByaW1hcnktY29sb3I7XG5cbiRib2R5LWJhY2tncm91bmQ6ICNlZWU7XG4kYm9keS1mb250LWNvbG9yOiAjMzMzO1xuXG4kbGVhZC1jb2xvcjogJHByaW1hcnktY29sb3I7XG4kbGVhZC10aXRsZS1jb2xvcjogJGJvZHktYmFja2dyb3VuZDtcbiRsZWFkLXRpdGxlLXN0eWxlOiB1cHBlcmNhc2U7XG4kbGVhZC10ZXh0LWNvbG9yOiAjMDAwO1xuXG4kY2FyZHMtYmFja2dyb3VuZDogI2ZmZjtcbiRjYXJkcy1jb2xvcjogJGJvZHktZm9udC1jb2xvcjtcblxuJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3I6ICMzMzM7XG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1jdXJyZW50OiAjMzMzO1xuXG4kZm9vdGVyLWJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4kZm9vdGVyLWNvbG9yOiAjOTk5O1xuXG4kemVicmEtYmFja2dyb3VuZC1jb2xvcjogI2ZmZiwgI2RkZDtcbiR6ZWJyYS10aXRsZS1jb2xvcjogJHByaW1hcnktY29sb3I7XG4kemVicmEtY29sb3I6ICRib2R5LWZvbnQtY29sb3I7XG5cbiR6ZWJyYS1idXR0b24tY29sb3I6ICR6ZWJyYS1jb2xvcjtcblxuXG4vLyBQb2xpY2Vcbi8vIC0tLS0tLS0tLVxuXG5AaW1wb3J0IHVybChodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9TGF0byk7XG5cbiRnbG9iYWwtd2VpZ2h0LW5vcm1hbDogbm9ybWFsO1xuJGdsb2JhbC13ZWlnaHQtYm9sZDogYm9sZDtcblxuJGJvZHktZm9udC1mYW1pbHk6IFwiTGF0b1wiLCBcIkhlbHZldGljYSBOZXVlXCIsIEhlbHZldGljYSwgUm9ib3RvLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiRoZWFkZXItZm9udC1mYW1pbHk6ICRib2R5LWZvbnQtZmFtaWx5O1xuJGhlYWRlci1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsO1xuXG4vLyBNYXBcbi8vIC0tLS0tLS0tLVxuXG4kbWFwLWhlaWdodDogNTB2aDtcblxuLy8gTmF2XG4vLyAtLS0tLS0tLS1cbiR0b3BiYXItcGFkZGluZzogMnJlbTtcbiR0b3BiYXItYmFja2dyb3VuZDogI2ZmZjtcbiR0b3BiYXItbGluay1zdHlsZTogdXBwZXJjYXNlO1xuJHRvcGJhci1saW5rLWNvbG9yOiAjZGRkO1xuJHRvcGJhci1saW5rLWNvbG9yLWhvdmVyOiAjZmZmO1xuJHRvcGJhci1saW5rLXdlaWdodDogNzAwO1xuJHRvcGJhci1iYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRwcmltYXJ5LWNvbG9yLCAuNSk7XG5cbi8vIEhlcm9cbi8vIC0tLS0tLS0tLVxuJGhlcm8taG9tZXBhZ2UtbWF4LWhlaWdodDogNTB2aDtcbiRoZXJvLW1heC1oZWlnaHQ6IDE4MHB4O1xuJGhlcm8tY29sb3I6ICNmZmY7XG5cblxuLy8gRk9STVxuLy8gLS0tLS0tLS0tXG4kaW5wdXQtZm9udC1zaXplOiByZW0tY2FsYygxNik7XG4kaW5wdXQtYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4kaW5wdXQtYmFja2dyb3VuZC1mb2N1czogc21hcnQtc2NhbGUoJGNhcmRzLWJhY2tncm91bmQsIDElKTtcbiRpbnB1dC1ib3JkZXI6IDFweCBzb2xpZCBzbWFydC1zY2FsZSgkcHJpbWFyeS1jb2xvciwgNSUpO1xuJGlucHV0LWJvcmRlci1mb2N1czogMXB4IHNvbGlkIHNtYXJ0LXNjYWxlKCRwcmltYXJ5LWNvbG9yLCA1JSk7XG4kaW5wdXQtc2hhZG93OiBpbnNldCAwIDFweCAycHggc21hcnQtc2NhbGUoJGNhcmRzLWJhY2tncm91bmQsIDUlKTtcbiRpbnB1dC1zaGFkb3ctZm9jdXM6IDAgMCA1cHggc21hcnQtc2NhbGUoJGNhcmRzLWJhY2tncm91bmQsIDUlKTtcbiRpbnB1dC1jb2xvcjogJHByaW1hcnktY29sb3I7XG4kaW5wdXQtZm9udC1mYW1pbHk6IGluaGVyaXQ7XG5cblxuJWZpbHRlci1oZXJvIHtcbiAgICAvL0BpbmNsdWRlIGZpbHRlci1maWxsKHJnYmEoJHByaW1hcnktY29sb3IsIC42KSk7XG4gICAgLy9AaW5jbHVkZSBmaWx0ZXItZmlsbChyZ2JhKDAsIDAsIDAsIC4zKSk7XG4gICAgLy9AaW5jbHVkZSBmaWx0ZXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKCMwMDAsIC45KSA0JSwgcmdiYSgkcHJpbWFyeS1jb2xvciwgLjUpKTtcbiAgICAvL0BpbmNsdWRlIGZpbHRlci1wYXR0ZXJuKHN0cmlwZXMsIGRlZXBwaW5rLCAxMHB4KTtcbn1cblxuXG5cbiVmaWx0ZXItaGVyby1zZWNvbmRhcnkge1xuICAgIC8vQGluY2x1ZGUgZmlsdGVyLWZpbGwocmdiYSgjMDAwLCAuMykpO1xuICAgIC8vQGluY2x1ZGUgZmlsdGVyLWZpbGwocmdiYShkZWVwcGluaywgLjUpKTtcbiAgICAvL0BpbmNsdWRlIGZpbHRlci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoZGVlcHBpbmssIC41KSwgcmdiYShtaWRuaWdodGJsdWUsIC41KSk7XG4gICAgLy9AaW5jbHVkZSBmaWx0ZXItcGF0dGVybihzdHJpcGVzLCBkZWVwcGluaywgMTBweCk7XG59XG5cbiVmaWx0ZXItYWNjZXNzb3J5IHtcbiAgICAvL0BpbmNsdWRlIGZpbHRlci1maWxsKHJnYmEoZGVlcHBpbmssIC41KSk7XG4gICAgLy9AaW5jbHVkZSBmaWx0ZXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKGRlZXBwaW5rLCAuNSksIHJnYmEobWlkbmlnaHRibHVlLCAuNSkpO1xuICAgIC8vQGluY2x1ZGUgZmlsdGVyLXBhdHRlcm4oY3Jvc3MsIGRlZXBwaW5rLCAxMHB4KTtcbn1cblxuJWZpbHRlci1lbWFpbGluZyB7XG4gICAgLy9AaW5jbHVkZSBmaWx0ZXItZmlsbChyZ2JhKGRlZXBwaW5rLCAuNSkpO1xuICAgIC8vQGluY2x1ZGUgZmlsdGVyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYShkZWVwcGluaywgLjUpLCByZ2JhKG1pZG5pZ2h0Ymx1ZSwgLjUpKTtcbiAgICAvL0BpbmNsdWRlIGZpbHRlci1wYXR0ZXJuKHN0cmlwZXMsIGRlZXBwaW5rLCAxMHB4KTtcbn1cblxuJWZpbHRlci1ob3ZlciB7XG4gICAgLy9AaW5jbHVkZSBmaWx0ZXItZmlsbChyZ2JhKHJlZCwgLjUpKTtcbiAgICBAaW5jbHVkZSBmaWx0ZXItZ3JhZGllbnQocmFkaWFsLCByZ2JhKCRwcmltYXJ5LWNvbG9yLCAuNSksIHJnYmEoIzAwMCwgLjUpKTtcbiAgICAvL0BpbmNsdWRlIGZpbHRlci1wYXR0ZXJuKGNyb3NzLCBkZWVwcGluaywgMTBweCk7XG59XG5cblxuJHotaW5kZXg6IChcbiAgICBmdWxsU2NyZWVuVmlkZW86IDEsXG4gICAgaGVyb092ZXJsYXk6IDIwMCxcbiAgICBoZXJvVGV4dDogMjUwLFxuICAgIHRvcGJhcjogMzAwLFxuICAgIHNjcm9sbFRvcDogNjAwXG4pO1xuXG5AaW1wb3J0ICdzZXR0aW5nc19mb3VuZGF0aW9uJztcblxuXG5cbi5icmVhZGNydW1icyBhW2hyZWZePVwiaHR0cFwiXSB7XG4gICAgY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi5zdGlja3kgLm1lbnUgYSB7XG4gICAgY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xufVxuXG4kZm9ybS1sYWJlbC1jb2xvcjogc21hcnQtc2NhbGUoJHByaW1hcnktY29sb3IsIDUwJSk7XG4kZm9ybS1sYWJlbC1mb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbiRmb3JtLWxhYmVsLWZvbnQtd2VpZ2h0OiBib2xkO1xuJGZvcm0tbGFiZWwtbGluZS1oZWlnaHQ6IDEuODtcblxuIiwiLndvcmtzIHtcbiAgICBAaW5jbHVkZSBmbGV4LWdyaWQtcm93KCk7XG5cblxuXG4gICAgJl9faXRlbXMge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbiAqIDI7XG5cbiAgICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLWNvbHVtbigxMik7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1jb2x1bW4oNik7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlIHVwKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtY29sdW1uKDQpO1xuICAgICAgICB9XG5cbiAgICAgICAgYmFja2dyb3VuZDogJGNhcmRzLWJhY2tncm91bmQ7XG4gICAgICAgIGJhY2tncm91bmQtY2xpcDogY29udGVudC1ib3g7XG5cblxuICAgICAgICA+IGFydGljbGUge1xuXG4gICAgICAgICAgICBjb2xvcjogJGNhcmRzLWNvbG9yO1xuXG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgJl9fcGljdHVyZSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG5cbiAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIC41cztcblxuICAgICAgICAgICAgICAgIEBleHRlbmQgJWZpbHRlci1ob3ZlcjtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuYnV0dG9uIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXI7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMHZoKTtcbiAgICAgICAgICAgICAgICB6LWluZGV4OiA5OTk5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciAmX19waWN0dXJlIC5idXR0b257XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgICAgICAgICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyICZfX3BpY3R1cmU6OmFmdGVyIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAmX190aXRsZSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAkZ2xvYmFsLXBhZGRpbmc7XG4gICAgICAgICAgICBjb2xvcjogJGJvZHktZm9udC1jb2xvcjtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTgpO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XG4gICAgICAgICAgICBmb250LWZhbWlseTogJGJvZHktZm9udC1mYW1pbHk7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi53b3JrIHtcbiAgICBAaW5jbHVkZSBmbGV4LWdyaWQtcm93KCk7XG5cbiAgICBAaWYgKGxpZ2h0bmVzcygkYm9keS1iYWNrZ3JvdW5kKSA+IDYwJSkge1xuICAgICAgICAkYmFja2dyb3VuZC1jb2xvcjogbGlnaHRlbigkYm9keS1iYWNrZ3JvdW5kLCAyJSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAgICRiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oJGJvZHktYmFja2dyb3VuZCwgMiUpO1xuICAgIH1cblxuICAgID4gZGl2IHtcbiAgICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLWNvbHVtbigxMik7XG4gICAgfVxuXG4gICAgJl9fZm9vdGVyIHtcbiAgICAgICAgbWFyZ2luLXRvcDogJGdsb2JhbC1tYXJnaW4gKiAyO1xuICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeCgpO1xuICAgICAgICBAaW5jbHVkZSBzaG93LWZvcihsYXJnZSk7XG5cbiAgICAgICAgLmJ1dHRvbiB7XG5cbiAgICAgICAgICAgICRidXR0b24tY29sb3I6IHNtYXJ0LXNjYWxlKCRiYWNrZ3JvdW5kLWNvbG9yLCA0MCUpO1xuICAgICAgICAgICAgJGJ1dHRvbi1ob3Zlcjogc2NhbGUtY29sb3IoJGJ1dHRvbi1jb2xvciwgJGxpZ2h0bmVzczogLTUwJSk7XG4gICAgICAgICAgICBAaW5jbHVkZSBidXR0b24taG9sbG93KCk7XG4gICAgICAgICAgICBAaW5jbHVkZSBidXR0b24taG9sbG93LXN0eWxlKCRidXR0b24tY29sb3IpO1xuXG4gICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTBweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTBweDtcbiAgICAgICAgICAgICAgICBmaWxsOiAkYnV0dG9uLWNvbG9yO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmhvdmVyIHN2ZyB7XG4gICAgICAgICAgICAgICAgZmlsbDogJGJ1dHRvbi1ob3ZlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5yaWdodCB7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICAubGVmdCB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLndvcmstc3RyaXBlIHtcbiAgICBAaW5jbHVkZSBmbGV4LWdyaWQtcm93KG5lc3RlZCwgMTAwdncpO1xuXG4gICAgPiBkaXYgPiBhIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHotaW5kZXg6IDk5OTk5O1xuICAgIH1cblxuICAgID4gZGl2IHtcbiAgICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLWNvbHVtbigxMiwgMCk7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1jb2x1bW4oNiwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLWNvbHVtbigzLCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG5cblxuICAgICAgICAmOmhvdmVyIC5jYXB0aW9uIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG5cblxuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAuNXM7XG5cbiAgICAgICAgICAgICAgICBAZXh0ZW5kICVmaWx0ZXItaG92ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuXG4gICAgICAgIC5jYXB0aW9uIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAuNXM7XG5cbiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG4gICAgICAgICAgICBjb2xvcjogJHRvcGJhci1saW5rLWNvbG9yO1xuXG4gICAgICAgICAgICBAZXh0ZW5kICVmaWx0ZXItaG92ZXI7XG5cbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwdmgpO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5bZGF0YS13aGF0aW5wdXQ9J3RvdWNoJ10gLndvcmstc3RyaXBlIGNhcHRpb24ge1xuICAgIG9wYWNpdHk6IDE7XG59IixudWxsLCIvKipcbiAqIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbiAqIFZlcnNpb24gNi4wLjZcbiAqIGZvdW5kYXRpb24uenVyYi5jb21cbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuICovXG5cbi8vIFNhc3MgdXRpbGl0aWVzXG5AaW1wb3J0ICd1dGlsL3V0aWwnO1xuXG4vLyBHbG9iYWwgdmFyaWFibGVzIGFuZCBzdHlsZXNcbkBpbXBvcnQgJ2dsb2JhbCc7XG5cbi8vIENvbXBvbmVudHNcbkBpbXBvcnQgJ2dyaWQvZ3JpZCc7XG5AaW1wb3J0ICd0eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQGltcG9ydCAnZm9ybXMvZm9ybXMnO1xuQGltcG9ydCAnY29tcG9uZW50cy92aXNpYmlsaXR5JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZmxvYXQnO1xuQGltcG9ydCAnY29tcG9uZW50cy9idXR0b24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9idXR0b24tZ3JvdXAnO1xuQGltcG9ydCAnY29tcG9uZW50cy9hY2NvcmRpb24tbWVudSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2FjY29yZGlvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2JhZGdlJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYnJlYWRjcnVtYnMnO1xuQGltcG9ydCAnY29tcG9uZW50cy9jYWxsb3V0JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvY2xvc2UtYnV0dG9uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZHJpbGxkb3duJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZHJvcGRvd24tbWVudSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2Ryb3Bkb3duJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZmxleC12aWRlbyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2xhYmVsJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbWVkaWEtb2JqZWN0JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbWVudSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL29mZi1jYW52YXMnO1xuQGltcG9ydCAnY29tcG9uZW50cy9vcmJpdCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3BhZ2luYXRpb24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9wcm9ncmVzcy1iYXInO1xuQGltcG9ydCAnY29tcG9uZW50cy9yZXZlYWwnO1xuQGltcG9ydCAnY29tcG9uZW50cy9zbGlkZXInO1xuQGltcG9ydCAnY29tcG9uZW50cy9zdGlja3knO1xuQGltcG9ydCAnY29tcG9uZW50cy9zd2l0Y2gnO1xuQGltcG9ydCAnY29tcG9uZW50cy90YWJsZSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RhYnMnO1xuQGltcG9ydCAnY29tcG9uZW50cy90aXRsZS1iYXInO1xuQGltcG9ydCAnY29tcG9uZW50cy90b3AtYmFyJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdGh1bWJuYWlsJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdG9vbHRpcCc7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWV2ZXJ5dGhpbmcge1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWdsb2JhbC1zdHlsZXM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZ3JpZDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10eXBvZ3JhcGh5O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWJ1dHRvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtcztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi12aXNpYmlsaXR5LWNsYXNzZXM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZmxvYXQtY2xhc3NlcztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1hY2NvcmRpb247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYWNjb3JkaW9uLW1lbnU7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYmFkZ2U7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYnJlYWRjcnVtYnM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYnV0dG9uLWdyb3VwO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWNhbGxvdXQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tY2xvc2UtYnV0dG9uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWRyaWxsZG93bi1tZW51O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWRyb3Bkb3duO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWRyb3Bkb3duLW1lbnU7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZmxleC12aWRlbztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1sYWJlbDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1tZWRpYS1vYmplY3Q7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tbWVudTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1vZmYtY2FudmFzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW9yYml0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXBhZ2luYXRpb247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvZ3Jlc3MtYmFyO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXNsaWRlcjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1zdGlja3k7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcmV2ZWFsO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXN3aXRjaDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10YWJsZTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10YWJzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRodW1ibmFpbDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10aXRsZS1iYXI7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdG9vbHRpcDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10b3AtYmFyO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdHlwb2dyYXBoeS1iYXNlXG4vLy8vXG5cbi8vIEJhc2UgVHlwb2dyYXBoeVxuLy8gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC1cbi8vIFRoZXNlIGFyZSBzdHlsZXMgYXBwbGllZCB0byBiYXNpYyBIVE1MIHRhZ3MsIGluY2x1ZGluZzpcbi8vICAgLSBQYXJhZ3JhcGhzIDxwPlxuLy8gICAtIEJvbGQvaXRhbGljcyA8Yj4gPHN0cm9uZz4gPGk+IDxlbT5cbi8vICAgLSBTbWFsbCB0ZXh0IDxzbWFsbD5cbi8vICAgLSBIZWFkaW5ncyA8aDE+4oCUPGg2PlxuLy8gICAtIEFuY2hvcnMgPGE+XG4vLyAgIC0gRGl2aWRlcnMgPGhyPlxuLy8gICAtIExpc3RzIDx1bD4gPG9sPiA8ZGw+XG4vLyAgIC0gQmxvY2txdW90ZXMgPGJsb2NrcXVvdGU+XG4vLyAgIC0gQ29kZSBibG9ja3MgPGNvZGU+XG4vLyAgIC0gQWJicmV2aWF0aW9ucyA8YWJicj5cbi8vICAgLSBDaXRhdGlvbnMgPGNpdGU+XG4vLyAgIC0gS2V5c3Ryb2tlcyA8a2JkPlxuXG4vLy8gRm9udCBmYW1pbHkgZm9yIGhlYWRlciBlbGVtZW50cy5cbi8vLyBAdHlwZSBTdHJpbmcgfCBMaXN0XG4kaGVhZGVyLWZvbnQtZmFtaWx5OiAkYm9keS1mb250LWZhbWlseSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgd2VpZ2h0IG9mIGhlYWRlcnMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kaGVhZGVyLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHN0eWxlIChlLmcuIGl0YWxpY2l6ZWQpIG9mIGhlYWRlcnMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kaGVhZGVyLWZvbnQtc3R5bGU6IG5vcm1hbCAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc3RhY2sgdXNlZCBmb3IgZWxlbWVudHMgdGhhdCB1c2UgbW9ub3NwYWNlZCB0eXBlLCBzdWNoIGFzIGNvZGUgc2FtcGxlc1xuLy8vIEB0eXBlIFN0cmluZyB8IExpc3RcbiRmb250LWZhbWlseS1tb25vc3BhY2U6IENvbnNvbGFzLCAnTGliZXJhdGlvbiBNb25vJywgQ291cmllciwgbW9ub3NwYWNlICFkZWZhdWx0O1xuXG4vLy8gU2l6ZXMgb2YgaGVhZGluZ3MgYXQgdmFyaW91cyBzY3JlZW4gc2l6ZXMuIEVhY2gga2V5IGlzIGEgYnJlYWtwb2ludCwgYW5kIGVhY2ggdmFsdWUgaXMgYSBtYXAgb2YgaGVhZGluZyBzaXplcy5cbi8vLyBAdHlwZSBNYXBcbiRoZWFkZXItc2l6ZXM6IChcbiAgc21hbGw6IChcbiAgICAnaDEnOiAyNCxcbiAgICAnaDInOiAyMCxcbiAgICAnaDMnOiAxOSxcbiAgICAnaDQnOiAxOCxcbiAgICAnaDUnOiAxNyxcbiAgICAnaDYnOiAxNixcbiAgKSxcbiAgbWVkaXVtOiAoXG4gICAgJ2gxJzogNDgsXG4gICAgJ2gyJzogNDAsXG4gICAgJ2gzJzogMzEsXG4gICAgJ2g0JzogMjUsXG4gICAgJ2g1JzogMjAsXG4gICAgJ2g2JzogMTYsXG4gICksXG4pICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgaGVhZGVycy5cbi8vLyBAdHlwZSBDb2xvclxuJGhlYWRlci1jb2xvcjogaW5oZXJpdCAhZGVmYXVsdDtcblxuLy8vIExpbmUgaGVpZ2h0IG9mIGhlYWRlcnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kaGVhZGVyLWxpbmVoZWlnaHQ6IDEuNCAhZGVmYXVsdDtcblxuLy8vIEJvdHRvbSBtYXJnaW4gb2YgaGVhZGVycy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRoZWFkZXItbWFyZ2luLWJvdHRvbTogMC41cmVtICFkZWZhdWx0O1xuXG4vLy8gVGV4dCByZW5kZXJpbmcgbWV0aG9kIG9mIGhlYWRlcnMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kaGVhZGVyLXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHkgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHNpemUgb2YgYDxzbWFsbD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIE51bWJlclxuJHNtYWxsLWZvbnQtc2l6ZTogODAlICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgYDxzbWFsbD5gIGVsZW1lbnRzIHdoZW4gcGxhY2VkIGluc2lkZSBoZWFkZXJzLlxuLy8vIEB0eXBlIENvbG9yXG4kaGVhZGVyLXNtYWxsLWZvbnQtY29sb3I6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIExpbmUgaGVpZ2h0IG9mIHRleHQgaW5zaWRlIGA8cD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIE51bWJlclxuJHBhcmFncmFwaC1saW5laGVpZ2h0OiAxLjYgIWRlZmF1bHQ7XG5cbi8vLyBCb3R0b20gbWFyZ2luIG9mIHBhcmFncmFwaHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcGFyYWdyYXBoLW1hcmdpbi1ib3R0b206IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IHJlbmRlcmluZyBtZXRob2QgZm9yIHBhcmFncmFwaCB0ZXh0LlxuLy8vIEB0eXBlIFN0cmluZ1xuJHBhcmFncmFwaC10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5ICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBjb2xvciBvZiBjb2RlIHNhbXBsZXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRjb2RlLWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBGb250IGZhbWlseSBvZiBjb2RlIHNhbXBsZXMuXG4vLy8gQHR5cGUgU3RyaW5nIHwgTGlzdFxuJGNvZGUtZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1tb25vc3BhY2UgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHdlaWdodCBvZiB0ZXh0IGluIGNvZGUgc2FtcGxlcy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRjb2RlLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGNvZGUgc2FtcGxlcy5cbi8vLyBAdHlwZSBDb2xvclxuJGNvZGUtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgYXJvdW5kIGNvZGUgc2FtcGxlcy5cbi8vLyBAdHlwZSBMaXN0XG4kY29kZS1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGFyb3VuZCB0ZXh0IG9mIGNvZGUgc2FtcGxlcy5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4kY29kZS1wYWRkaW5nOiByZW0tY2FsYygyIDUgMSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIGZvciBsaW5rcy5cbi8vLyBAdHlwZSBDb2xvclxuJGFuY2hvci1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIGZvciBsaW5rcyBvbiBob3Zlci5cbi8vLyBAdHlwZSBDb2xvclxuJGFuY2hvci1jb2xvci1ob3Zlcjogc2NhbGUtY29sb3IoJGFuY2hvci1jb2xvciwgJGxpZ2h0bmVzczogLTE0JSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgZGVvY3JhdGlvbiBmb3IgbGlua3MuXG4vLy8gQHR5cGUgU3RyaW5nXG4kYW5jaG9yLXRleHQtZGVjb3JhdGlvbjogbm9uZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdGV4dCBkZWNvcmF0aW9uIGZvciBsaW5rcyBvbiBob3Zlci5cbi8vLyBAdHlwZSBTdHJpbmdcbiRhbmNob3ItdGV4dC1kZWNvcmF0aW9uLWhvdmVyOiBub25lICFkZWZhdWx0O1xuXG4vLy8gTWF4aW11bSB3aWR0aCBvZiBhIGRpdmlkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kaHItd2lkdGg6ICRnbG9iYWwtd2lkdGggIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBmb3IgYSBkaXZpZGVyLlxuLy8vIEB0eXBlIExpc3RcbiRoci1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IG1hcmdpbiBmb3IgYSBkaXZpZGVyLlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiRoci1tYXJnaW46IHJlbS1jYWxjKDIwKSBhdXRvICFkZWZhdWx0O1xuXG4vLy8gTGluZSBoZWlnaHQgZm9yIGl0ZW1zIGluIGEgbGlzdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsaXN0LWxpbmVoZWlnaHQ6ICRwYXJhZ3JhcGgtbGluZWhlaWdodCAhZGVmYXVsdDtcblxuLy8vIEJvdHRvbSBtYXJnaW4gZm9yIGl0ZW1zIGluIGEgbGlzdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsaXN0LW1hcmdpbi1ib3R0b206ICRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbSAhZGVmYXVsdDtcblxuLy8vIEJ1bGxldCB0eXBlIHRvIHVzZSBmb3IgdW5vcmRlcmVkIGxpc3RzIChlLmcuLCBgc3F1YXJlYCwgYGNpcmNsZWAsIGBkaXNjYCkuXG4vLy8gQHR5cGUgU3RyaW5nXG4kbGlzdC1zdHlsZS10eXBlOiBkaXNjICFkZWZhdWx0O1xuXG4vLy8gUG9zaXRpb25pbmcgZm9yIGJ1bGxldHMgb24gdW5vcmRlcmVkIGxpc3QgaXRlbXMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kbGlzdC1zdHlsZS1wb3NpdGlvbjogb3V0c2lkZSAhZGVmYXVsdDtcblxuLy8vIExlZnQgKG9yIHJpZ2h0KSBtYXJnaW4gZm9yIGxpc3RzLlxuLy8vIEB0eXBlIE51bWJlclxuJGxpc3Qtc2lkZS1tYXJnaW46IDEuMjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBMZWZ0IChvciByaWdodCkgbWFyZ2luIGZvciBhIGxpc3QgaW5zaWRlIGEgbGlzdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsaXN0LW5lc3RlZC1zaWRlLW1hcmdpbjogMS4yNXJlbSAhZGVmYXVsdDtcblxuLy8vIEJvdHRvbSBtYXJnaW4gZm9yIGA8ZGw+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkZWZubGlzdC1tYXJnaW4tYm90dG9tOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3ZWlnaHQgZm9yIGA8ZHQ+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRkZWZubGlzdC10ZXJtLXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcblxuLy8vIFNwYWNpbmcgYmV0d2VlbiBgPGR0PmAgYW5kIGA8ZGQ+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkZWZubGlzdC10ZXJtLW1hcmdpbi1ib3R0b206IDAuM3JlbSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgYDxibG9ja3F1b3RlPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRibG9ja3F1b3RlLWNvbG9yOiAkZGFyay1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBpbnNpZGUgYSBgPGJsb2NrcXVvdGU+YCBlbGVtZW50LlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiRibG9ja3F1b3RlLXBhZGRpbmc6IHJlbS1jYWxjKDkgMjAgMCAxOSkgIWRlZmF1bHQ7XG5cbi8vLyBTaWRlIGJvcmRlciBmb3IgYDxibG9ja3F1b3RlPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTGlzdFxuJGJsb2NrcXVvdGUtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIGZvciBgPGNpdGU+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRjaXRlLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTMpICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBjb2xvciBmb3IgYDxjaXRlPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRjaXRlLWNvbG9yOiAkZGFyay1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRm9udCBmYW1pbHkgZm9yIGA8a2JkPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgU3RyaW5nIHwgTGlzdFxuJGtleXN0cm9rZS1mb250OiAkZm9udC1mYW1pbHktbW9ub3NwYWNlICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBjb2xvciBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBDb2xvclxuJGtleXN0cm9rZS1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBDb2xvclxuJGtleXN0cm9rZS1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgZm9yIGA8a2JkPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJGtleXN0cm9rZS1wYWRkaW5nOiByZW0tY2FsYygyIDQgMCkgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgcmFkaXVzIGZvciBgPGtiZD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiRrZXlzdHJva2UtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIEJvdHRvbSBib3JkZXIgc3R5bGUgZm9yIGA8YWJicj5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIExpc3RcbiRhYmJyLXVuZGVybGluZTogMXB4IGRvdHRlZCAkYmxhY2sgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXR5cG9ncmFwaHktYmFzZSB7XG4gIC8vIFR5cG9ncmFwaHkgcmVzZXRzXG4gIGRpdixcbiAgZGwsXG4gIGR0LFxuICBkZCxcbiAgdWwsXG4gIG9sLFxuICBsaSxcbiAgaDEsXG4gIGgyLFxuICBoMyxcbiAgaDQsXG4gIGg1LFxuICBoNixcbiAgcHJlLFxuICBmb3JtLFxuICBwLFxuICBibG9ja3F1b3RlLFxuICB0aCxcbiAgdGQge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgLy8gUGFyYWdyYXBoc1xuICBwIHtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6ICRwYXJhZ3JhcGgtbGluZWhlaWdodDtcbiAgICBtYXJnaW4tYm90dG9tOiAkcGFyYWdyYXBoLW1hcmdpbi1ib3R0b207XG4gICAgdGV4dC1yZW5kZXJpbmc6ICRwYXJhZ3JhcGgtdGV4dC1yZW5kZXJpbmc7XG4gIH1cblxuICAvLyBFbXBoYXNpemVkIHRleHRcbiAgZW0sXG4gIGkge1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgfVxuXG4gIC8vIFN0cm9uZyB0ZXh0XG4gIHN0cm9uZyxcbiAgYiB7XG4gICAgZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gIH1cblxuICAvLyBTbWFsbCB0ZXh0XG4gIHNtYWxsIHtcbiAgICBmb250LXNpemU6ICRzbWFsbC1mb250LXNpemU7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gIH1cblxuICAvLyBIZWFkaW5nc1xuICBoMSxcbiAgaDIsXG4gIGgzLFxuICBoNCxcbiAgaDUsXG4gIGg2IHtcbiAgICBmb250LWZhbWlseTogJGhlYWRlci1mb250LWZhbWlseTtcbiAgICBmb250LXdlaWdodDogJGhlYWRlci1mb250LXdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkaGVhZGVyLWZvbnQtc3R5bGU7XG4gICAgY29sb3I6ICRoZWFkZXItY29sb3I7XG4gICAgdGV4dC1yZW5kZXJpbmc6ICRoZWFkZXItdGV4dC1yZW5kZXJpbmc7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAkaGVhZGVyLW1hcmdpbi1ib3R0b207XG4gICAgbGluZS1oZWlnaHQ6ICRoZWFkZXItbGluZWhlaWdodDtcblxuICAgIHNtYWxsIHtcbiAgICAgIGNvbG9yOiAkaGVhZGVyLXNtYWxsLWZvbnQtY29sb3I7XG4gICAgICBsaW5lLWhlaWdodDogMDtcbiAgICB9XG4gIH1cblxuICAvLyBIZWFkaW5nIHNpemVzXG4gIEBlYWNoICRzaXplLCAkaGVhZGVycyBpbiAkaGVhZGVyLXNpemVzIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICBAZWFjaCAkaGVhZGVyLCAkZm9udC1zaXplIGluICRoZWFkZXJzIHtcbiAgICAgICAgI3skaGVhZGVyfSB7IGZvbnQtc2l6ZTogcmVtLWNhbGMoJGZvbnQtc2l6ZSk7IH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBMaW5rc1xuICBhIHtcbiAgICBjb2xvcjogJGFuY2hvci1jb2xvcjtcbiAgICB0ZXh0LWRlY29yYXRpb246ICRhbmNob3ItdGV4dC1kZWNvcmF0aW9uO1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICBjb2xvcjogJGFuY2hvci1jb2xvci1ob3ZlcjtcbiAgICAgIEBpZiAkYW5jaG9yLXRleHQtZGVjb3JhdGlvbi1ob3ZlciAhPSAkYW5jaG9yLXRleHQtZGVjb3JhdGlvbiB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogJGFuY2hvci10ZXh0LWRlY29yYXRpb24taG92ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaW1nIHtcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gIH1cblxuICAvLyBIb3Jpem9udGFsIHJ1bGVcbiAgaHIge1xuICAgIG1heC13aWR0aDogJGhyLXdpZHRoO1xuICAgIGhlaWdodDogMDtcbiAgICBib3JkZXItcmlnaHQ6IDA7XG4gICAgYm9yZGVyLXRvcDogMDtcbiAgICBib3JkZXItYm90dG9tOiAkaHItYm9yZGVyO1xuICAgIGJvcmRlci1sZWZ0OiAwO1xuICAgIG1hcmdpbjogJGhyLW1hcmdpbjtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxuXG4gIC8vIExpc3RzXG4gIHVsLFxuICBvbCxcbiAgZGwge1xuICAgIGxpbmUtaGVpZ2h0OiAkbGlzdC1saW5laGVpZ2h0O1xuICAgIG1hcmdpbi1ib3R0b206ICRsaXN0LW1hcmdpbi1ib3R0b207XG4gICAgbGlzdC1zdHlsZS1wb3NpdGlvbjogJGxpc3Qtc3R5bGUtcG9zaXRpb247XG4gIH1cblxuICAvLyBMaXN0IGl0ZW1zXG4gIGxpIHtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gIH1cblxuICAvLyBVbm9yZGVyZWQgbGlzdHNcbiAgdWwge1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogJGxpc3Qtc3R5bGUtdHlwZTtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkbGlzdC1zaWRlLW1hcmdpbjtcbiAgfVxuXG4gIC8vIE9yZGVyZWQgbGlzdHNcbiAgb2wge1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06ICRsaXN0LXNpZGUtbWFyZ2luO1xuICB9XG5cbiAgLy8gTmVzdGVkIHVub3JkZXJlZC9vcmRlcmVkIGxpc3RzXG4gIHVsLCBvbCB7XG4gICAgJiAmIHtcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06ICRsaXN0LW5lc3RlZC1zaWRlLW1hcmdpbjtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICBsaXN0LXN0eWxlLXR5cGU6IGluaGVyaXQ7XG4gICAgfVxuICB9XG5cbiAgLy8gRGVmaW5pdGlvbiBsaXN0c1xuICBkbCB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGRlZm5saXN0LW1hcmdpbi1ib3R0b207XG5cbiAgICBkdCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkZGVmbmxpc3QtdGVybS1tYXJnaW4tYm90dG9tO1xuICAgICAgZm9udC13ZWlnaHQ6ICRkZWZubGlzdC10ZXJtLXdlaWdodDtcbiAgICB9XG4gIH1cblxuICAvLyBCbG9ja3F1b3Rlc1xuICBibG9ja3F1b3RlIHtcbiAgICBtYXJnaW46IDAgMCAkcGFyYWdyYXBoLW1hcmdpbi1ib3R0b207XG4gICAgcGFkZGluZzogJGJsb2NrcXVvdGUtcGFkZGluZztcbiAgICBib3JkZXItI3skZ2xvYmFsLWxlZnR9OiAkYmxvY2txdW90ZS1ib3JkZXI7XG5cbiAgICAmLCBwIHtcbiAgICAgIGxpbmUtaGVpZ2h0OiAkcGFyYWdyYXBoLWxpbmVoZWlnaHQ7XG4gICAgICBjb2xvcjogJGJsb2NrcXVvdGUtY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2l0YXRpb25zXG4gIGNpdGUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtc2l6ZTogJGNpdGUtZm9udC1zaXplO1xuICAgIGNvbG9yOiAkY2l0ZS1jb2xvcjtcblxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICdcXDIwMTQgXFwwMDIwJztcbiAgICB9XG4gIH1cblxuICAvLyBBYmJyZXZpYXRpb25zXG4gIGFiYnIge1xuICAgIGNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xuICAgIGN1cnNvcjogaGVscDtcbiAgICBib3JkZXItYm90dG9tOiAkYWJici11bmRlcmxpbmU7XG4gIH1cblxuICAvLyBDb2RlXG4gIGNvZGUge1xuICAgIGZvbnQtZmFtaWx5OiAkY29kZS1mb250LWZhbWlseTtcbiAgICBmb250LXdlaWdodDogJGNvZGUtZm9udC13ZWlnaHQ7XG4gICAgY29sb3I6ICRjb2RlLWNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2RlLWJhY2tncm91bmQ7XG4gICAgYm9yZGVyOiAkY29kZS1ib3JkZXI7XG4gICAgcGFkZGluZzogJGNvZGUtcGFkZGluZztcbiAgfVxuXG4gIC8vIEtleXN0cm9rZXNcbiAga2JkIHtcbiAgICBwYWRkaW5nOiAka2V5c3Ryb2tlLXBhZGRpbmc7XG4gICAgbWFyZ2luOiAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRrZXlzdHJva2UtYmFja2dyb3VuZDtcbiAgICBjb2xvcjogJGtleXN0cm9rZS1jb2xvcjtcbiAgICBmb250LWZhbWlseTogJGtleXN0cm9rZS1mb250O1xuICB9XG59XG5cbi5jZW50ZXItcmVjYXB0Y2hhIHsgdGV4dC1hbGlnbjogY2VudGVyOyB9XG4uZy1yZWNhcHRjaGEgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdsb2JhbFxuLy8vL1xuXG4vLy8gR2xvYmFsIHdpZHRoIG9mIHlvdXIgc2l0ZS4gVXNlZCBieSB0aGUgZ3JpZCB0byBkZXRlcm1pbmUgcm93IHdpZHRoLlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC13aWR0aDogcmVtLWNhbGMoMTIwMCkgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHNpemUgYXR0cmlidXRlIGFwcGxpZWQgdG8gYDxodG1sPmAgYW5kIGA8Ym9keT5gLiBXZSB1c2UgMTAwJSBieSBkZWZhdWx0IHNvIHRoZSB2YWx1ZSBpcyBpbmhlcml0ZWQgZnJvbSB0aGUgdXNlcidzIGJyb3dzZXIgc2V0dGluZ3MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLWZvbnQtc2l6ZTogMTAwJSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbGluZSBoZWlnaHQgZm9yIGFsbCB0eXBlLiBgJGdsb2JhbC1saW5laGVpZ2h0YCBpcyAyNHB4IHdoaWxlIGAkZ2xvYmFsLWZvbnQtc2l6ZWAgaXMgMTZweFxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1saW5laGVpZ2h0OiAxLjUgIWRlZmF1bHQ7XG5cbi8vLyBQcmltYXJ5IGNvbG9yIGZvciBpbnRlcmFjdGl2ZSBjb21wb25lbnRzIGxpa2UgbGlua3MgYW5kIGJ1dHRvbnMuXG4vLy8gQHR5cGUgQ29sb3JcbiRwcmltYXJ5LWNvbG9yOiAjMjE5OWU4ICFkZWZhdWx0O1xuXG4vLy8gU2Vjb25kYXJ5IGNvbG9yLCB1c2VkIHdpdGggY29tcG9uZW50cyB0aGF0IHN1cHBvcnQgdGhlIGAuc2Vjb25kYXJ5YCBjbGFzcy5cbi8vLyBAdHlwZSBDb2xvclxuJHNlY29uZGFyeS1jb2xvcjogIzc3NyAhZGVmYXVsdDtcblxuLy8vIENvbG9yIHRvIGluZGljYXRlIGEgcG9zaXRpdmUgc3RhdHVzIG9yIGFjdGlvbiwgdXNlZCB3aXRoIHRoZSBgLnN1Y2Nlc3NgIGNsYXNzLlxuLy8vIEB0eXBlIENvbG9yXG4kc3VjY2Vzcy1jb2xvcjogIzNhZGI3NiAhZGVmYXVsdDtcblxuLy8vIENvbG9yIHRvIGluZGljYXRlIGEgY2F1dGlvbiBzdGF0dXMgb3IgYWN0aW9uLCB1c2VkIHdpdGggdGhlIGAud2FybmluZ2AgY2xhc3MuXG4vLy8gQHR5cGUgQ29sb3JcbiR3YXJuaW5nLWNvbG9yOiAjZmZhZTAwICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgdG8gaW5kaWNhdGUgYSBuZWdhdGl2ZSBzdGF0dXMgb3IgYWN0aW9uLCB1c2VkIHdpdGggdGhlIGAuYWxlcnRgIGNsYXNzLlxuLy8vIEB0eXBlIENvbG9yXG4kYWxlcnQtY29sb3I6ICNlYzU4NDAgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB1c2VkIGZvciBsaWdodCBncmF5IFVJIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kbGlnaHQtZ3JheTogI2U2ZTZlNiAhZGVmYXVsdDtcblxuLy8vIENvbG9yIHVzZWQgZm9yIG1lZGl1bSBncmF5IFVJIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kbWVkaXVtLWdyYXk6ICNjYWNhY2EgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB1c2VkIGZvciBkYXJrIGdyYXkgVUkgaXRlbXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRkYXJrLWdyYXk6ICM4YThhOGEgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB1c2VkIGZvciBibGFjayB1aSBpdGVtcy5cbi8vLyBAdHlwZSBDb2xvclxuJGJsYWNrOiAjMGEwYTBhICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgdXNlZCBmb3Igd2hpdGUgdWkgaXRlbXMuXG4vLy8gQHR5cGUgQ29sb3JcbiR3aGl0ZTogI2ZlZmVmZSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJvZHkuXG4vLy8gQHR5cGUgQ29sb3JcbiRib2R5LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgdGhlIGJvZHkuXG4vLy8gQHR5cGUgQ29sb3JcbiRib2R5LWZvbnQtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc3RhY2sgb2YgdGhlIGJvZHkuXG4vLy8gQHR5cGUgTGlzdFxuJGJvZHktZm9udC1mYW1pbHk6ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgUm9ib3RvLCBBcmlhbCwgc2Fucy1zZXJpZiAhZGVmYXVsdDtcblxuLy8vIFNldCB0byBgdHJ1ZWAgdG8gZW5hYmxlIGFudGlhbGlhc2VkIHR5cGUsIHVzaW5nIHRoZSBgLXdlYmtpdC1mb250LXNtb290aGluZ2AgYW5kIGAtbW96LW9zeC1mb250LXNtb290aGluZ2AgQ1NTIHByb3BlcnRpZXMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGJvZHktYW50aWFsaWFzZWQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgbWFyZ2luIG9uIGNvbXBvbmVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLW1hcmdpbjogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEdsb2JhbCB2YWx1ZSB1c2VkIGZvciBwYWRkaW5nIG9uIGNvbXBvbmVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgZm9udCB3ZWlnaHQgdXNlZCBmb3Igbm9ybWFsIHR5cGUuXG4vLy8gQHR5cGUgS2V5d29yZCB8IE51bWJlclxuJGdsb2JhbC13ZWlnaHQtbm9ybWFsOiBub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgZm9udCB3ZWlnaHQgdXNlZCBmb3IgYm9sZCB0eXBlLlxuLy8vIEB0eXBlIEtleXdvcmQgfCBOdW1iZXJcbiRnbG9iYWwtd2VpZ2h0LWJvbGQ6IGJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgYWxsIGVsZW1lbnRzIHRoYXQgaGF2ZSBhIGJvcmRlciByYWRpdXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLXJhZGl1czogMCAhZGVmYXVsdDtcblxuLy8vIFNldHMgdGhlIHRleHQgZGlyZWN0aW9uIG9mIHRoZSBDU1MuIENhbiBiZSBlaXRoZXIgYGx0cmAgb3IgYHJ0bGAuXG4kZ2xvYmFsLXRleHQtZGlyZWN0aW9uOiBsdHIgIWRlZmF1bHQ7XG5cbi8vIEludGVybmFsIHZhcmlhYmxlcyB1c2VkIGZvciB0ZXh0IGRpcmVjdGlvblxuJGdsb2JhbC1sZWZ0OiBpZigkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IHJ0bCwgcmlnaHQsIGxlZnQpO1xuJGdsb2JhbC1yaWdodDogaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBydGwsIGxlZnQsIHJpZ2h0KTtcblxuLy8gSW50ZXJuYWwgbWFwIHVzZWQgdG8gaXRlcmF0ZSB0aHJvdWdoIGNvbG9ycywgdG8gZ2VuZXJhdGUgQ1NTIGNsYXNzZXMgd2l0aCBsZXNzIGNvZGVcbiRmb3VuZGF0aW9uLWNvbG9yczogKFxuICBwcmltYXJ5OiAkcHJpbWFyeS1jb2xvcixcbiAgc2Vjb25kYXJ5OiAkc2Vjb25kYXJ5LWNvbG9yLFxuICBzdWNjZXNzOiAkc3VjY2Vzcy1jb2xvcixcbiAgYWxlcnQ6ICRhbGVydC1jb2xvcixcbiAgd2FybmluZzogJHdhcm5pbmctY29sb3IsXG4pO1xuXG5AbWl4aW4gZm91bmRhdGlvbi1nbG9iYWwtc3R5bGVzIHtcbiAgQGluY2x1ZGUgLXpmLW5vcm1hbGl6ZTtcblxuICAvLyBUaGVzZSBzdHlsZXMgYXJlIGFwcGxpZWQgdG8gYSA8bWV0YT4gdGFnLCB3aGljaCBpcyByZWFkIGJ5IHRoZSBGb3VuZGF0aW9uIEphdmFTY3JpcHRcbiAgLmZvdW5kYXRpb24tbXEge1xuICAgIGZvbnQtZmFtaWx5OiAnI3stemYtYnAtc2VyaWFsaXplKCRicmVha3BvaW50cyl9JztcbiAgfVxuXG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGZvbnQtc2l6ZTogJGdsb2JhbC1mb250LXNpemU7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuXG4gIC8vIFNldCBib3gtc2l6aW5nIGdsb2JhbGx5IHRvIGhhbmRsZSBwYWRkaW5nIGFuZCBib3JkZXIgd2lkdGhzXG4gICosXG4gICo6YmVmb3JlLFxuICAqOmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICB9XG5cbiAgLy8gRGVmYXVsdCBib2R5IHN0eWxlc1xuICBib2R5IHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBmb250LWZhbWlseTogJGJvZHktZm9udC1mYW1pbHk7XG4gICAgZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbDtcbiAgICBsaW5lLWhlaWdodDogJGdsb2JhbC1saW5laGVpZ2h0O1xuICAgIGNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xuICAgIGJhY2tncm91bmQ6ICRib2R5LWJhY2tncm91bmQ7XG5cbiAgICBAaWYgKCRib2R5LWFudGlhbGlhc2VkKSB7XG4gICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gICAgfVxuICB9XG5cbiAgaW1nIHtcbiAgICAvLyBHcmlkIGRlZmF1bHRzIHRvIGdldCBpbWFnZXMgYW5kIGVtYmVkcyB0byB3b3JrIHByb3Blcmx5XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgICAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljO1xuXG4gICAgLy8gR2V0IHJpZCBvZiBnYXAgdW5kZXIgaW1hZ2VzIGJ5IG1ha2luZyB0aGVtIGRpc3BsYXk6IGlubGluZS1ibG9jazsgYnkgZGVmYXVsdFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB9XG5cbiAgLy8gTWFrZSBzdXJlIHRleHRhcmVhIHRha2VzIG9uIGhlaWdodCBhdXRvbWF0aWNhbGx5XG4gIHRleHRhcmVhIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgbWluLWhlaWdodDogNTBweDtcbiAgICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgfVxuXG4gIC8vIE1ha2Ugc2VsZWN0IGVsZW1lbnRzIGFyZSAxMDAlIHdpZHRoIGJ5IGRlZmF1bHRcbiAgc2VsZWN0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgfVxuXG4gIC8vIFN0eWxlcyBHb29nbGUgTWFwcyBhbmQgTWFwUXVlc3QgZW1iZWRzIHByb3Blcmx5XG4gIC8vIHNjc3MtbGludDpkaXNhYmxlIElkU2VsZWN0b3JcbiAgI21hcF9jYW52YXMsXG4gIC5tYXBfY2FudmFzLFxuICAubXFhLWRpc3BsYXkge1xuICAgIGltZyxcbiAgICBlbWJlZCxcbiAgICBvYmplY3Qge1xuICAgICAgbWF4LXdpZHRoOiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzZXQgPGJ1dHRvbj4gc3R5bGVzIGNyZWF0ZWQgYnkgbW9zdCBicm93c2Vyc1xuICBidXR0b24ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXI6IDA7XG4gICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gIH1cbn1cblxuLy8vIExvYWRzIG5vcm1hbGl6ZS5jc3MuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gLXpmLW5vcm1hbGl6ZSB7XG4gIC8qISBub3JtYWxpemUuY3NzIHYzLjAuMyB8IE1JVCBMaWNlbnNlIHwgZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MgKi9cblxuICAvKipcbiAgICogMS4gU2V0IGRlZmF1bHQgZm9udCBmYW1pbHkgdG8gc2Fucy1zZXJpZi5cbiAgICogMi4gUHJldmVudCBpT1MgYW5kIElFIHRleHQgc2l6ZSBhZGp1c3QgYWZ0ZXIgZGV2aWNlIG9yaWVudGF0aW9uIGNoYW5nZSxcbiAgICogICAgd2l0aG91dCBkaXNhYmxpbmcgdXNlciB6b29tLlxuICAgKi9cblxuICBodG1sIHtcbiAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsgLyogMSAqL1xuICAgIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG4gICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGRlZmF1bHQgbWFyZ2luLlxuICAgKi9cblxuICBib2R5IHtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICAvKiBIVE1MNSBkaXNwbGF5IGRlZmluaXRpb25zXG4gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgLyoqXG4gICAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBhbnkgSFRNTDUgZWxlbWVudCBpbiBJRSA4LzkuXG4gICAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBgZGV0YWlsc2Agb3IgYHN1bW1hcnlgIGluIElFIDEwLzExXG4gICAqIGFuZCBGaXJlZm94LlxuICAgKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYG1haW5gIGluIElFIDExLlxuICAgKi9cblxuICBhcnRpY2xlLFxuICBhc2lkZSxcbiAgZGV0YWlscyxcbiAgZmlnY2FwdGlvbixcbiAgZmlndXJlLFxuICBmb290ZXIsXG4gIGhlYWRlcixcbiAgaGdyb3VwLFxuICBtYWluLFxuICBtZW51LFxuICBuYXYsXG4gIHNlY3Rpb24sXG4gIHN1bW1hcnkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgLyoqXG4gICAqIDEuIENvcnJlY3QgYGlubGluZS1ibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBpbiBJRSA4LzkuXG4gICAqIDIuIE5vcm1hbGl6ZSB2ZXJ0aWNhbCBhbGlnbm1lbnQgb2YgYHByb2dyZXNzYCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cbiAgICovXG5cbiAgYXVkaW8sXG4gIGNhbnZhcyxcbiAgcHJvZ3Jlc3MsXG4gIHZpZGVvIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8qIDEgKi9cbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IC8qIDIgKi9cbiAgfVxuXG4gIC8qKlxuICAgKiBQcmV2ZW50IG1vZGVybiBicm93c2VycyBmcm9tIGRpc3BsYXlpbmcgYGF1ZGlvYCB3aXRob3V0IGNvbnRyb2xzLlxuICAgKiBSZW1vdmUgZXhjZXNzIGhlaWdodCBpbiBpT1MgNSBkZXZpY2VzLlxuICAgKi9cblxuICBhdWRpbzpub3QoW2NvbnRyb2xzXSkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgaGVpZ2h0OiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHJlc3MgYFtoaWRkZW5dYCBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC5cbiAgICogSGlkZSB0aGUgYHRlbXBsYXRlYCBlbGVtZW50IGluIElFIDgvOS8xMC8xMSwgU2FmYXJpLCBhbmQgRmlyZWZveCA8IDIyLlxuICAgKi9cblxuICBbaGlkZGVuXSxcbiAgdGVtcGxhdGUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAvKiBMaW5rc1xuICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gIC8qKlxuICAgKiBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBjb2xvciBmcm9tIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cbiAgICovXG5cbiAgYSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cblxuICAvKipcbiAgICogSW1wcm92ZSByZWFkYWJpbGl0eSBvZiBmb2N1c2VkIGVsZW1lbnRzIHdoZW4gdGhleSBhcmUgYWxzbyBpbiBhblxuICAgKiBhY3RpdmUvaG92ZXIgc3RhdGUuXG4gICAqL1xuXG4gIGE6YWN0aXZlLFxuICBhOmhvdmVyIHtcbiAgICBvdXRsaW5lOiAwO1xuICB9XG5cbiAgLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAvKipcbiAgICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC8xMSwgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICAgKi9cblxuICBhYmJyW3RpdGxlXSB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRyZXNzIHN0eWxlIHNldCB0byBgYm9sZGVyYCBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4gICAqL1xuXG4gIGIsXG4gIHN0cm9uZyB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIH1cblxuICAvKipcbiAgICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIFNhZmFyaSBhbmQgQ2hyb21lLlxuICAgKi9cblxuICBkZm4ge1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRyZXNzIHZhcmlhYmxlIGBoMWAgZm9udC1zaXplIGFuZCBtYXJnaW4gd2l0aGluIGBzZWN0aW9uYCBhbmQgYGFydGljbGVgXG4gICAqIGNvbnRleHRzIGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cbiAgICovXG5cbiAgaDEge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xuICAgIG1hcmdpbjogMC42N2VtIDA7XG4gIH1cblxuICAvKipcbiAgICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS5cbiAgICovXG5cbiAgbWFyayB7XG4gICAgYmFja2dyb3VuZDogI2ZmMDtcbiAgICBjb2xvcjogIzAwMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRyZXNzIGluY29uc2lzdGVudCBhbmQgdmFyaWFibGUgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAgICovXG5cbiAgc21hbGwge1xuICAgIGZvbnQtc2l6ZTogODAlO1xuICB9XG5cbiAgLyoqXG4gICAqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGFmZmVjdGluZyBgbGluZS1oZWlnaHRgIGluIGFsbCBicm93c2Vycy5cbiAgICovXG5cbiAgc3ViLFxuICBzdXAge1xuICAgIGZvbnQtc2l6ZTogNzUlO1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG4gIH1cblxuICBzdXAge1xuICAgIHRvcDogLTAuNWVtO1xuICB9XG5cbiAgc3ViIHtcbiAgICBib3R0b206IC0wLjI1ZW07XG4gIH1cblxuICAvKiBFbWJlZGRlZCBjb250ZW50XG4gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgLyoqXG4gICAqIFJlbW92ZSBib3JkZXIgd2hlbiBpbnNpZGUgYGFgIGVsZW1lbnQgaW4gSUUgOC85LzEwLlxuICAgKi9cblxuICBpbWcge1xuICAgIGJvcmRlcjogMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb3JyZWN0IG92ZXJmbG93IG5vdCBoaWRkZW4gaW4gSUUgOS8xMC8xMS5cbiAgICovXG5cbiAgc3ZnOm5vdCg6cm9vdCkge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cblxuICAvKiBHcm91cGluZyBjb250ZW50XG4gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgLyoqXG4gICAqIEFkZHJlc3MgbWFyZ2luIG5vdCBwcmVzZW50IGluIElFIDgvOSBhbmQgU2FmYXJpLlxuICAgKi9cblxuICBmaWd1cmUge1xuICAgIG1hcmdpbjogMWVtIDQwcHg7XG4gIH1cblxuICAvKipcbiAgICogQWRkcmVzcyBkaWZmZXJlbmNlcyBiZXR3ZWVuIEZpcmVmb3ggYW5kIG90aGVyIGJyb3dzZXJzLlxuICAgKi9cblxuICBociB7XG4gICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgaGVpZ2h0OiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnRhaW4gb3ZlcmZsb3cgaW4gYWxsIGJyb3dzZXJzLlxuICAgKi9cblxuICBwcmUge1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHJlc3Mgb2RkIGBlbWAtdW5pdCBmb250IHNpemUgcmVuZGVyaW5nIGluIGFsbCBicm93c2Vycy5cbiAgICovXG5cbiAgY29kZSxcbiAga2JkLFxuICBwcmUsXG4gIHNhbXAge1xuICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgfVxuXG4gIC8qIEZvcm1zXG4gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgLyoqXG4gICAqIEtub3duIGxpbWl0YXRpb246IGJ5IGRlZmF1bHQsIENocm9tZSBhbmQgU2FmYXJpIG9uIE9TIFggYWxsb3cgdmVyeSBsaW1pdGVkXG4gICAqIHN0eWxpbmcgb2YgYHNlbGVjdGAsIHVubGVzcyBhIGBib3JkZXJgIHByb3BlcnR5IGlzIHNldC5cbiAgICovXG5cbiAgLyoqXG4gICAqIDEuIENvcnJlY3QgY29sb3Igbm90IGJlaW5nIGluaGVyaXRlZC5cbiAgICogICAgS25vd24gaXNzdWU6IGFmZmVjdHMgY29sb3Igb2YgZGlzYWJsZWQgZWxlbWVudHMuXG4gICAqIDIuIENvcnJlY3QgZm9udCBwcm9wZXJ0aWVzIG5vdCBiZWluZyBpbmhlcml0ZWQuXG4gICAqIDMuIEFkZHJlc3MgbWFyZ2lucyBzZXQgZGlmZmVyZW50bHkgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICAgKi9cblxuICBidXR0b24sXG4gIGlucHV0LFxuICBvcHRncm91cCxcbiAgc2VsZWN0LFxuICB0ZXh0YXJlYSB7XG4gICAgY29sb3I6IGluaGVyaXQ7IC8qIDEgKi9cbiAgICBmb250OiBpbmhlcml0OyAvKiAyICovXG4gICAgbWFyZ2luOiAwOyAvKiAzICovXG4gIH1cblxuICAvKipcbiAgICogQWRkcmVzcyBgb3ZlcmZsb3dgIHNldCB0byBgaGlkZGVuYCBpbiBJRSA4LzkvMTAvMTEuXG4gICAqL1xuXG4gIGJ1dHRvbiB7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIH1cblxuICAvKipcbiAgICogQWRkcmVzcyBpbmNvbnNpc3RlbnQgYHRleHQtdHJhbnNmb3JtYCBpbmhlcml0YW5jZSBmb3IgYGJ1dHRvbmAgYW5kIGBzZWxlY3RgLlxuICAgKiBBbGwgb3RoZXIgZm9ybSBjb250cm9sIGVsZW1lbnRzIGRvIG5vdCBpbmhlcml0IGB0ZXh0LXRyYW5zZm9ybWAgdmFsdWVzLlxuICAgKiBDb3JyZWN0IGBidXR0b25gIHN0eWxlIGluaGVyaXRhbmNlIGluIEZpcmVmb3gsIElFIDgvOS8xMC8xMSwgYW5kIE9wZXJhLlxuICAgKiBDb3JyZWN0IGBzZWxlY3RgIHN0eWxlIGluaGVyaXRhbmNlIGluIEZpcmVmb3guXG4gICAqL1xuXG4gIGJ1dHRvbixcbiAgc2VsZWN0IHtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAxLiBBdm9pZCB0aGUgV2ViS2l0IGJ1ZyBpbiBBbmRyb2lkIDQuMC4qIHdoZXJlICgyKSBkZXN0cm95cyBuYXRpdmUgYGF1ZGlvYFxuICAgKiAgICBhbmQgYHZpZGVvYCBjb250cm9scy5cbiAgICogMi4gQ29ycmVjdCBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIGBpbnB1dGAgdHlwZXMgaW4gaU9TLlxuICAgKiAzLiBJbXByb3ZlIHVzYWJpbGl0eSBhbmQgY29uc2lzdGVuY3kgb2YgY3Vyc29yIHN0eWxlIGJldHdlZW4gaW1hZ2UtdHlwZVxuICAgKiAgICBgaW5wdXRgIGFuZCBvdGhlcnMuXG4gICAqL1xuXG4gIGJ1dHRvbixcbiAgaHRtbCBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdLCAvKiAxICovXG4gIGlucHV0W3R5cGU9XCJyZXNldFwiXSxcbiAgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8qIDIgKi9cbiAgICBjdXJzb3I6IHBvaW50ZXI7IC8qIDMgKi9cbiAgfVxuXG4gIC8qKlxuICAgKiBSZS1zZXQgZGVmYXVsdCBjdXJzb3IgZm9yIGRpc2FibGVkIGVsZW1lbnRzLlxuICAgKi9cblxuICBidXR0b25bZGlzYWJsZWRdLFxuICBodG1sIGlucHV0W2Rpc2FibGVkXSB7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBib3JkZXIgaW4gRmlyZWZveCA0Ky5cbiAgICovXG5cbiAgYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuICBpbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgYm9yZGVyOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAvKipcbiAgICogQWRkcmVzcyBGaXJlZm94IDQrIHNldHRpbmcgYGxpbmUtaGVpZ2h0YCBvbiBgaW5wdXRgIHVzaW5nIGAhaW1wb3J0YW50YCBpblxuICAgKiB0aGUgVUEgc3R5bGVzaGVldC5cbiAgICovXG5cbiAgaW5wdXQge1xuICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gIH1cblxuICAvKipcbiAgICogSXQncyByZWNvbW1lbmRlZCB0aGF0IHlvdSBkb24ndCBhdHRlbXB0IHRvIHN0eWxlIHRoZXNlIGVsZW1lbnRzLlxuICAgKiBGaXJlZm94J3MgaW1wbGVtZW50YXRpb24gZG9lc24ndCByZXNwZWN0IGJveC1zaXppbmcsIHBhZGRpbmcsIG9yIHdpZHRoLlxuICAgKlxuICAgKiAxLiBBZGRyZXNzIGJveCBzaXppbmcgc2V0IHRvIGBjb250ZW50LWJveGAgaW4gSUUgOC85LzEwLlxuICAgKiAyLiBSZW1vdmUgZXhjZXNzIHBhZGRpbmcgaW4gSUUgOC85LzEwLlxuICAgKi9cblxuICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0sXG4gIGlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xuICAgIHBhZGRpbmc6IDA7IC8qIDIgKi9cbiAgfVxuXG4gIC8qKlxuICAgKiBGaXggdGhlIGN1cnNvciBzdHlsZSBmb3IgQ2hyb21lJ3MgaW5jcmVtZW50L2RlY3JlbWVudCBidXR0b25zLiBGb3IgY2VydGFpblxuICAgKiBgZm9udC1zaXplYCB2YWx1ZXMgb2YgdGhlIGBpbnB1dGAsIGl0IGNhdXNlcyB0aGUgY3Vyc29yIHN0eWxlIG9mIHRoZVxuICAgKiBkZWNyZW1lbnQgYnV0dG9uIHRvIGNoYW5nZSBmcm9tIGBkZWZhdWx0YCB0byBgdGV4dGAuXG4gICAqL1xuXG4gIGlucHV0W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG4gIGlucHV0W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxuXG4gIC8qKlxuICAgKiAxLiBBZGRyZXNzIGBhcHBlYXJhbmNlYCBzZXQgdG8gYHNlYXJjaGZpZWxkYCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiAgICogMi4gQWRkcmVzcyBgYm94LXNpemluZ2Agc2V0IHRvIGBib3JkZXItYm94YCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiAgICovXG5cbiAgaW5wdXRbdHlwZT1cInNlYXJjaFwiXSB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8qIDEgKi9cbiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLyogMiAqL1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBzZWFyY2ggY2FuY2VsIGJ1dHRvbiBpbiBTYWZhcmkgYW5kIENocm9tZSBvbiBPUyBYLlxuICAgKiBTYWZhcmkgKGJ1dCBub3QgQ2hyb21lKSBjbGlwcyB0aGUgY2FuY2VsIGJ1dHRvbiB3aGVuIHRoZSBzZWFyY2ggaW5wdXQgaGFzXG4gICAqIHBhZGRpbmcgKGFuZCBgdGV4dGZpZWxkYCBhcHBlYXJhbmNlKS5cbiAgICovXG5cbiAgaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcbiAgaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSBjb25zaXN0ZW50IGJvcmRlciwgbWFyZ2luLCBhbmQgcGFkZGluZy5cbiAgICovXG5cbiAgZmllbGRzZXQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gICAgbWFyZ2luOiAwIDJweDtcbiAgICBwYWRkaW5nOiAwLjM1ZW0gMC42MjVlbSAwLjc1ZW07XG4gIH1cblxuICAvKipcbiAgICogMS4gQ29ycmVjdCBgY29sb3JgIG5vdCBiZWluZyBpbmhlcml0ZWQgaW4gSUUgOC85LzEwLzExLlxuICAgKiAyLiBSZW1vdmUgcGFkZGluZyBzbyBwZW9wbGUgYXJlbid0IGNhdWdodCBvdXQgaWYgdGhleSB6ZXJvIG91dCBmaWVsZHNldHMuXG4gICAqL1xuXG4gIGxlZ2VuZCB7XG4gICAgYm9yZGVyOiAwOyAvKiAxICovXG4gICAgcGFkZGluZzogMDsgLyogMiAqL1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRSA4LzkvMTAvMTEuXG4gICAqL1xuXG4gIHRleHRhcmVhIHtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgfVxuXG4gIC8qKlxuICAgKiBEb24ndCBpbmhlcml0IHRoZSBgZm9udC13ZWlnaHRgIChhcHBsaWVkIGJ5IGEgcnVsZSBhYm92ZSkuXG4gICAqIE5PVEU6IHRoZSBkZWZhdWx0IGNhbm5vdCBzYWZlbHkgYmUgY2hhbmdlZCBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYLlxuICAgKi9cblxuICBvcHRncm91cCB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIH1cblxuICAvKiBUYWJsZXNcbiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAvKipcbiAgICogUmVtb3ZlIG1vc3Qgc3BhY2luZyBiZXR3ZWVuIHRhYmxlIGNlbGxzLlxuICAgKi9cblxuICB0YWJsZSB7XG4gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgICBib3JkZXItc3BhY2luZzogMDtcbiAgfVxuXG4gIHRkLFxuICB0aCB7XG4gICAgcGFkZGluZzogMDtcbiAgfVxufVxuIiwiLy8gIEZvdW5kYXRpb24gZm9yIFNpdGVzIFNldHRpbmdzXG4vLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vXG4vLyAgVGFibGUgb2YgQ29udGVudHM6XG4vL1xuLy8gICAxLiBHbG9iYWxcbi8vICAgMi4gQnJlYWtwb2ludHNcbi8vICAgMy4gVGhlIEdyaWRcbi8vICAgNC4gQmFzZSBUeXBvZ3JhcGh5XG4vLyAgIDUuIFR5cG9ncmFwaHkgSGVscGVyc1xuLy8gICA2LiBBYmlkZVxuLy8gICA3LiBBY2NvcmRpb25cbi8vICAgOC4gQWNjb3JkaW9uIE1lbnVcbi8vICAgOS4gQmFkZ2Vcbi8vICAxMC4gQnJlYWRjcnVtYnNcbi8vICAxMS4gQnV0dG9uXG4vLyAgMTIuIEJ1dHRvbiBHcm91cFxuLy8gIDEzLiBDYWxsb3V0XG4vLyAgMTQuIENsb3NlIEJ1dHRvblxuLy8gIDE1LiBEcmlsbGRvd25cbi8vICAxNi4gRHJvcGRvd25cbi8vICAxNy4gRHJvcGRvd24gTWVudVxuLy8gIDE4LiBGbGV4IFZpZGVvXG4vLyAgMTkuIEZvcm1zXG4vLyAgMjAuIExhYmVsXG4vLyAgMjEuIE1lZGlhIE9iamVjdFxuLy8gIDIyLiBNZW51XG4vLyAgMjMuIE9mZi1jYW52YXNcbi8vICAyNC4gT3JiaXRcbi8vICAyNS4gUGFnaW5hdGlvblxuLy8gIDI2LiBQcm9ncmVzcyBCYXJcbi8vICAyNy4gUmV2ZWFsXG4vLyAgMjguIFNsaWRlclxuLy8gIDI5LiBTd2l0Y2hcbi8vICAzMC4gVGFibGVcbi8vICAzMS4gVGFic1xuLy8gIDMyLiBUaHVtYm5haWxcbi8vICAzMy4gVG9vbHRpcFxuLy8gIDM0LiBUb3AgQmFyXG5cbi8vIDEuIEdsb2JhbFxuLy8gLS0tLS0tLS0tXG4vLyRoZXJvLWZpbHRlci10eXBlOiAnbm9uZScgIWRlZmF1bHQ7XG4kc3VjY2Vzcy1jb2xvcjogIzNhZGI3NjtcbiR3YXJuaW5nLWNvbG9yOiAjZmZhZTAwO1xuJGFsZXJ0LWNvbG9yOiAjZWM1ODQwO1xuXG4kZ2xvYmFsLXdpZHRoOiByZW0tY2FsYygxMjAwKTtcbiRnbG9iYWwtZm9udC1zaXplOiAxMDAlO1xuJGdsb2JhbC1saW5laGVpZ2h0OiAxLjU7XG4kbGlnaHQtZ3JheTogI2U2ZTZlNjtcbiRtZWRpdW0tZ3JheTogI2NhY2FjYTtcbiRkYXJrLWdyYXk6ICM4YThhOGE7XG4kYmxhY2s6ICMwYTBhMGE7XG4kd2hpdGU6ICNmZWZlZmU7XG4kYm9keS1hbnRpYWxpYXNlZDogdHJ1ZTtcbiR0ZXh0LWRpcmVjdGlvbjogbHRyO1xuJGdsb2JhbC1tYXJnaW46IDFyZW07XG4kZ2xvYmFsLXBhZGRpbmc6IDFyZW07XG4vLyRnbG9iYWwtcmFkaXVzOiAwO1xuJGdsb2JhbC1uYW1lc3BhY2U6IGZhbHNlO1xuJGdsb2JhbC10ZXh0LWRpcmVjdGlvbjogbHRyO1xuJHJlbS1iYXNlOiAxNnB4O1xuXG4vLyAyLiBCcmVha3BvaW50c1xuLy8gLS0tLS0tLS0tLS0tLS1cblxuJGJyZWFrcG9pbnRzOiAoXG4gICAgc21hbGw6IDAsXG4gICAgbWVkaXVtOiA2NDBweCxcbiAgICBsYXJnZTogMTAyNHB4LFxuICAgIHhsYXJnZTogMTIwMHB4LFxuICAgIHh4bGFyZ2U6IDE0NDBweCxcbik7XG4kYnJlYWtwb2ludC1jbGFzc2VzOiAoc21hbGwgbWVkaXVtIGxhcmdlKTtcblxuLy8gMy4gVGhlIEdyaWRcbi8vIC0tLS0tLS0tLS0tXG5cbiRncmlkLXJvdy13aWR0aDogJGdsb2JhbC13aWR0aDtcbiRncmlkLWNvbHVtbi1jb3VudDogMTI7XG4kZ3JpZC1jb2x1bW4tZ3V0dGVyOiAzMHB4O1xuJGJsb2NrLWdyaWQtbWF4OiA2O1xuXG4vLyA0LiBCYXNlIFR5cG9ncmFwaHlcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kaGVhZGVyLWZvbnQtc3R5bGU6IG5vcm1hbDtcbiRmb250LWZhbWlseS1tb25vc3BhY2U6IENvbnNvbGFzLCBcIkxpYmVyYXRpb24gTW9ub1wiLCBDb3VyaWVyLCBtb25vc3BhY2U7XG4kaGVhZGVyLXNpemVzOiAoXG4gICAgc21hbGw6IChcbiAgICAgICAgJ2gxJzogMjQsXG4gICAgICAgICdoMic6IDIwLFxuICAgICAgICAnaDMnOiAxOSxcbiAgICAgICAgJ2g0JzogMTgsXG4gICAgICAgICdoNSc6IDE3LFxuICAgICAgICAnaDYnOiAxNixcbiAgICApLFxuICAgIG1lZGl1bTogKFxuICAgICAgICAnaDEnOiA0OCxcbiAgICAgICAgJ2gyJzogNDAsXG4gICAgICAgICdoMyc6IDMxLFxuICAgICAgICAnaDQnOiAyNSxcbiAgICAgICAgJ2g1JzogMjAsXG4gICAgICAgICdoNic6IDE2LFxuICAgICksXG4pO1xuJGhlYWRlci1jb2xvcjogaW5oZXJpdDtcbiRoZWFkZXItbGluZWhlaWdodDogMS40O1xuJGhlYWRlci1tYXJnaW4tYm90dG9tOiAwLjVyZW07XG4kaGVhZGVyLXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG4kc21hbGwtZm9udC1zaXplOiA4MCU7XG4kaGVhZGVyLXNtYWxsLWZvbnQtY29sb3I6ICRtZWRpdW0tZ3JheTtcbiRwYXJhZ3JhcGgtbGluZWhlaWdodDogMS42O1xuJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tOiAxcmVtO1xuJHBhcmFncmFwaC10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xuJGNvZGUtY29sb3I6ICRibGFjaztcbiRjb2RlLWZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktbW9ub3NwYWNlO1xuJGNvZGUtZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbDtcbiRjb2RlLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5O1xuJGNvZGUtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5O1xuJGNvZGUtcGFkZGluZzogcmVtLWNhbGMoMiA1IDEpO1xuJGFuY2hvci1jb2xvcjogJHRvcGJhci1saW5rLWNvbG9yO1xuJGFuY2hvci1jb2xvci1ob3Zlcjogc2NhbGUtY29sb3IoJGFuY2hvci1jb2xvciwgJGxpZ2h0bmVzczogLTE0JSk7XG4kYW5jaG9yLXRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiRhbmNob3ItdGV4dC1kZWNvcmF0aW9uLWhvdmVyOiBub25lO1xuJGhyLXdpZHRoOiAkZ2xvYmFsLXdpZHRoO1xuJGhyLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRoci1tYXJnaW46IHJlbS1jYWxjKDIwKSBhdXRvO1xuJGxpc3QtbGluZWhlaWdodDogJHBhcmFncmFwaC1saW5laGVpZ2h0O1xuJGxpc3QtbWFyZ2luLWJvdHRvbTogJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tO1xuJGxpc3Qtc3R5bGUtdHlwZTogZGlzYztcbiRsaXN0LXN0eWxlLXBvc2l0aW9uOiBvdXRzaWRlO1xuJGxpc3Qtc2lkZS1tYXJnaW46IDEuMjVyZW07XG4kbGlzdC1uZXN0ZWQtc2lkZS1tYXJnaW46IDEuMjVyZW07XG4kZGVmbmxpc3QtbWFyZ2luLWJvdHRvbTogMXJlbTtcbiRkZWZubGlzdC10ZXJtLXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcbiRkZWZubGlzdC10ZXJtLW1hcmdpbi1ib3R0b206IDAuM3JlbTtcbiRibG9ja3F1b3RlLWNvbG9yOiAkZGFyay1ncmF5O1xuJGJsb2NrcXVvdGUtcGFkZGluZzogcmVtLWNhbGMoOSAyMCAwIDE5KTtcbiRibG9ja3F1b3RlLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRjaXRlLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTMpO1xuJGNpdGUtY29sb3I6ICRkYXJrLWdyYXk7XG4ka2V5c3Ryb2tlLWZvbnQ6ICRmb250LWZhbWlseS1tb25vc3BhY2U7XG4ka2V5c3Ryb2tlLWNvbG9yOiAkYmxhY2s7XG4ka2V5c3Ryb2tlLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5O1xuJGtleXN0cm9rZS1wYWRkaW5nOiByZW0tY2FsYygyIDQgMCk7XG4ka2V5c3Ryb2tlLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kYWJici11bmRlcmxpbmU6IDFweCBkb3R0ZWQgJGJsYWNrO1xuXG4vLyA1LiBUeXBvZ3JhcGh5IEhlbHBlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kbGVhZC1mb250LXNpemU6ICRnbG9iYWwtZm9udC1zaXplICogMS4yNTtcbiRsZWFkLWxpbmVoZWlnaHQ6IDEuNjtcbiRzdWJoZWFkZXItbGluZWhlaWdodDogMS40O1xuJHN1YmhlYWRlci1jb2xvcjogJGRhcmstZ3JheTtcbiRzdWJoZWFkZXItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbDtcbiRzdWJoZWFkZXItbWFyZ2luLXRvcDogMC4ycmVtO1xuJHN1YmhlYWRlci1tYXJnaW4tYm90dG9tOiAwLjVyZW07XG4kc3RhdC1mb250LXNpemU6IDIuNXJlbTtcblxuLy8gNi4gQWJpZGVcbi8vIC0tLS0tLS0tXG5cbiRhYmlkZS1pbnB1dHM6IHRydWU7XG4kYWJpZGUtbGFiZWxzOiB0cnVlO1xuJGlucHV0LWJhY2tncm91bmQtaW52YWxpZDogJGFsZXJ0LWNvbG9yO1xuJGZvcm0tbGFiZWwtY29sb3ItaW52YWxpZDogJGFsZXJ0LWNvbG9yO1xuJGlucHV0LWVycm9yLWNvbG9yOiAkYWxlcnQtY29sb3I7XG4kaW5wdXQtZXJyb3ItZm9udC1zaXplOiByZW0tY2FsYygxMik7XG4kaW5wdXQtZXJyb3ItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XG5cbi8vIDcuIEFjY29yZGlvblxuLy8gLS0tLS0tLS0tLS0tXG5cbiRhY2NvcmRpb24tYmFja2dyb3VuZDogJHdoaXRlO1xuJGFjY29yZGlvbi1wbHVzbWludXM6IHRydWU7XG4kYWNjb3JkaW9uLWl0ZW0tY29sb3I6IGZvcmVncm91bmQoJGFjY29yZGlvbi1iYWNrZ3JvdW5kLCAkcHJpbWFyeS1jb2xvcik7XG4kYWNjb3JkaW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJGxpZ2h0LWdyYXk7XG4kYWNjb3JkaW9uLWl0ZW0tcGFkZGluZzogMS4yNXJlbSAxcmVtO1xuJGFjY29yZGlvbi1jb250ZW50LWJhY2tncm91bmQ6ICR3aGl0ZTtcbiRhY2NvcmRpb24tY29udGVudC1ib3JkZXI6IDFweCBzb2xpZCAkbGlnaHQtZ3JheTtcbiRhY2NvcmRpb24tY29udGVudC1jb2xvcjogZm9yZWdyb3VuZCgkYWNjb3JkaW9uLWJhY2tncm91bmQsICRwcmltYXJ5LWNvbG9yKTtcbiRhY2NvcmRpb24tY29udGVudC1wYWRkaW5nOiAxcmVtO1xuXG4vLyA4LiBBY2NvcmRpb24gTWVudVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cblxuJGFjY29yZGlvbm1lbnUtYXJyb3dzOiB0cnVlO1xuXG4vLyA5LiBCYWRnZVxuLy8gLS0tLS0tLS1cblxuJGJhZGdlLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xuJGJhZGdlLWNvbG9yOiBmb3JlZ3JvdW5kKCRiYWRnZS1iYWNrZ3JvdW5kKTtcbiRiYWRnZS1wYWRkaW5nOiAwLjNlbTtcbiRiYWRnZS1taW53aWR0aDogMi4xZW07XG4kYmFkZ2UtZm9udC1zaXplOiAwLjZyZW07XG5cbi8vIDEwLiBCcmVhZGNydW1ic1xuLy8gLS0tLS0tLS0tLS0tLS0tXG5cbiRicmVhZGNydW1icy1tYXJnaW46IDAgMCAwIDA7XG4kYnJlYWRjcnVtYnMtaXRlbS1mb250LXNpemU6IHJlbS1jYWxjKDExKTtcbiRicmVhZGNydW1icy1pdGVtLWNvbG9yLWRpc2FibGVkOiAkbWVkaXVtLWdyYXk7XG4kYnJlYWRjcnVtYnMtaXRlbS1tYXJnaW46IDAuNzVyZW07XG4kYnJlYWRjcnVtYnMtaXRlbS11cHBlcmNhc2U6IHRydWU7XG4kYnJlYWRjcnVtYnMtaXRlbS1zbGFzaDogdHJ1ZTtcblxuLy8gMTEuIEJ1dHRvblxuLy8gLS0tLS0tLS0tLVxuXG4kYnV0dG9uLXBhZGRpbmc6IDAuODVlbSAxZW07XG4kYnV0dG9uLW1hcmdpbjogMCAkZ2xvYmFsLW1hcmdpbiAkZ2xvYmFsLW1hcmdpbiAwO1xuJGJ1dHRvbi1maWxsOiBzb2xpZDtcbiRidXR0b24tYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XG4kYnV0dG9uLWJhY2tncm91bmQtaG92ZXI6IHNjYWxlLWNvbG9yKCRidXR0b24tYmFja2dyb3VuZCwgJGxpZ2h0bmVzczogLTE1JSk7XG4kYnV0dG9uLWNvbG9yOiAjZmZmO1xuJGJ1dHRvbi1jb2xvci1hbHQ6ICMwMDA7XG4kYnV0dG9uLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kYnV0dG9uLXNpemVzOiAoXG4gICAgdGlueTogMC42cmVtLFxuICAgIHNtYWxsOiAwLjc1cmVtLFxuICAgIGRlZmF1bHQ6IDAuOXJlbSxcbiAgICBsYXJnZTogMS4yNXJlbSxcbik7XG4kYnV0dG9uLW9wYWNpdHktZGlzYWJsZWQ6IDAuMjU7XG5cbi8vIDEyLiBCdXR0b24gR3JvdXBcbi8vIC0tLS0tLS0tLS0tLS0tLS1cblxuJGJ1dHRvbmdyb3VwLW1hcmdpbjogMXJlbTtcbiRidXR0b25ncm91cC1zcGFjaW5nOiAxcHg7XG4kYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3I6ICcuYnV0dG9uJztcbiRidXR0b25ncm91cC1leHBhbmQtbWF4OiA2O1xuXG4vLyAxMy4gQ2FsbG91dFxuLy8gLS0tLS0tLS0tLS1cblxuJGNhbGxvdXQtYmFja2dyb3VuZDogJHdoaXRlO1xuJGNhbGxvdXQtYmFja2dyb3VuZC1mYWRlOiA4NSU7XG4kY2FsbG91dC1ib3JkZXI6IDFweCBzb2xpZCByZ2JhKCRibGFjaywgMC4yNSk7XG4kY2FsbG91dC1tYXJnaW46IDAgMCAxcmVtIDA7XG4kY2FsbG91dC1wYWRkaW5nOiAxcmVtO1xuJGNhbGxvdXQtZm9udC1jb2xvcjogJGJvZHktZm9udC1jb2xvcjtcbiRjYWxsb3V0LWZvbnQtY29sb3ItYWx0OiAkYm9keS1iYWNrZ3JvdW5kO1xuJGNhbGxvdXQtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiRjYWxsb3V0LWxpbmstdGludDogMzAlO1xuXG4vLyAxNC4gQ2xvc2UgQnV0dG9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG5cbiRjbG9zZWJ1dHRvbi1wb3NpdGlvbjogcmlnaHQgdG9wO1xuJGNsb3NlYnV0dG9uLW9mZnNldC1ob3Jpem9udGFsOiAxcmVtO1xuJGNsb3NlYnV0dG9uLW9mZnNldC12ZXJ0aWNhbDogMC41cmVtO1xuJGNsb3NlYnV0dG9uLXNpemU6IDJlbTtcbiRjbG9zZWJ1dHRvbi1saW5laGVpZ2h0OiAxO1xuJGNsb3NlYnV0dG9uLWNvbG9yOiAkZGFyay1ncmF5O1xuJGNsb3NlYnV0dG9uLWNvbG9yLWhvdmVyOiAkYmxhY2s7XG5cbi8vIDE1LiBEcmlsbGRvd25cbi8vIC0tLS0tLS0tLS0tLS1cblxuJGRyaWxsZG93bi10cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMgbGluZWFyO1xuJGRyaWxsZG93bi1hcnJvd3M6IHRydWU7XG5cbi8vIDE2LiBEcm9wZG93blxuLy8gLS0tLS0tLS0tLS0tXG5cbiRkcm9wZG93bi1wYWRkaW5nOiAxcmVtO1xuJGRyb3Bkb3duLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRkcm9wZG93bi1mb250LXNpemU6IDE2cmVtO1xuJGRyb3Bkb3duLXdpZHRoOiAzMDBweDtcbiRkcm9wZG93bi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJGRyb3Bkb3duLXNpemVzOiAoXG4gICAgdGlueTogMTAwcHgsXG4gICAgc21hbGw6IDIwMHB4LFxuICAgIGxhcmdlOiA0MDBweCxcbik7XG5cbi8vIDE3LiBEcm9wZG93biBNZW51XG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuXG4kZHJvcGRvd25tZW51LWFycm93czogdHJ1ZTtcbiRkcm9wZG93bm1lbnUtbWluLXdpZHRoOiAyMDBweDtcbiRkcm9wZG93bm1lbnUtYmFja2dyb3VuZDogJHdoaXRlO1xuJGRyb3Bkb3duLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcblxuLy8gMTguIEZsZXggVmlkZW9cbi8vIC0tLS0tLS0tLS0tLS0tXG5cbiRmbGV4dmlkZW8tcGFkZGluZy10b3A6IHJlbS1jYWxjKDI1KTtcbiRmbGV4dmlkZW8tbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMTYpO1xuJGZsZXh2aWRlby1yYXRpbzogNCBieSAzO1xuJGZsZXh2aWRlby1yYXRpby13aWRlc2NyZWVuOiAxNiBieSA5O1xuXG4vLyAxOS4gRm9ybXNcbi8vIC0tLS0tLS0tLVxuXG4kZmllbGRzZXQtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5O1xuJGZpZWxkc2V0LXBhZGRpbmc6IHJlbS1jYWxjKDIwKTtcbiRmaWVsZHNldC1tYXJnaW46IHJlbS1jYWxjKDE4IDApO1xuJGxlZ2VuZC1wYWRkaW5nOiByZW0tY2FsYygwIDMpO1xuJGZvcm0tc3BhY2luZzogcmVtLWNhbGMoMTYpO1xuJGhlbHB0ZXh0LWNvbG9yOiAjMzMzO1xuJGhlbHB0ZXh0LWZvbnQtc2l6ZTogcmVtLWNhbGMoMTMpO1xuJGhlbHB0ZXh0LWZvbnQtc3R5bGU6IGl0YWxpYztcbiRpbnB1dC1wcmVmaXgtY29sb3I6ICRibGFjaztcbiRpbnB1dC1wcmVmaXgtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXk7XG4kaW5wdXQtcHJlZml4LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRpbnB1dC1wcmVmaXgtcGFkZGluZzogMXJlbTtcbiRmb3JtLWxhYmVsLWNvbG9yOiBzbWFydC1zY2FsZSgkYm9keS1iYWNrZ3JvdW5kLCA1MCUpO1xuJGZvcm0tbGFiZWwtZm9udC1zaXplOiByZW0tY2FsYygxNCk7XG4kZm9ybS1sYWJlbC1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsO1xuJGZvcm0tbGFiZWwtbGluZS1oZWlnaHQ6IDEuODtcbiRzZWxlY3QtYmFja2dyb3VuZDogI2ZhZmFmYTtcbiRzZWxlY3QtdHJpYW5nbGUtY29sb3I6ICMzMzM7XG4kc2VsZWN0LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG47XG4kaW5wdXQtYmFja2dyb3VuZC1kaXNhYmxlZDogJGxpZ2h0LWdyYXk7XG4kaW5wdXQtY3Vyc29yLWRpc2FibGVkOiBkZWZhdWx0O1xuJGlucHV0LXRyYW5zaXRpb246IGJveC1zaGFkb3cgMC41cywgYm9yZGVyLWNvbG9yIDAuMjVzIGVhc2UtaW4tb3V0O1xuJGlucHV0LW51bWJlci1zcGlubmVyczogdHJ1ZTtcbiRpbnB1dC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuXG4vLyAyMC4gTGFiZWxcbi8vIC0tLS0tLS0tLVxuXG4kbGFiZWwtYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XG4kbGFiZWwtY29sb3I6IGZvcmVncm91bmQoJGxhYmVsLWJhY2tncm91bmQpO1xuJGxhYmVsLWZvbnQtc2l6ZTogMC44cmVtO1xuJGxhYmVsLXBhZGRpbmc6IDAuMzMzMzNyZW0gMC41cmVtO1xuJGxhYmVsLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG5cbi8vIDIxLiBNZWRpYSBPYmplY3Rcbi8vIC0tLS0tLS0tLS0tLS0tLS1cblxuJG1lZGlhb2JqZWN0LW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xuJG1lZGlhb2JqZWN0LXNlY3Rpb24tcGFkZGluZzogJGdsb2JhbC1wYWRkaW5nO1xuJG1lZGlhb2JqZWN0LWltYWdlLXdpZHRoLXN0YWNrZWQ6IDEwMCU7XG5cbi8vIDIyLiBNZW51XG4vLyAtLS0tLS0tLVxuXG4kbWVudS1tYXJnaW46IDA7XG4kbWVudS1tYXJnaW4tbmVzdGVkOiAxcmVtO1xuJG1lbnUtaXRlbS1wYWRkaW5nOiAwLjdyZW0gMXJlbTtcbiRtZW51LWljb24tc3BhY2luZzogMC4yNXJlbTtcbiRtZW51LWV4cGFuZC1tYXg6IDY7XG5cbi8vIDIzLiBPZmYtY2FudmFzXG4vLyAtLS0tLS0tLS0tLS0tLVxuXG4kb2ZmY2FudmFzLXNpemU6IDI1MHB4O1xuJG9mZmNhbnZhcy1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheTtcbiRvZmZjYW52YXMtemluZGV4OiAtMTtcbiRvZmZjYW52YXMtdHJhbnNpdGlvbi1sZW5ndGg6IDAuNXM7XG4kb2ZmY2FudmFzLXRyYW5zaXRpb24tdGltaW5nOiBlYXNlO1xuJG9mZmNhbnZhcy1leGl0LWJhY2tncm91bmQ6IHJnYmEoJHdoaXRlLCAwLjI1KTtcbiRtYWluY29udGVudC1jbGFzczogJ29mZi1jYW52YXMtY29udGVudCc7XG4kbWFpbmNvbnRlbnQtc2hhZG93OiAwIDAgMTBweCByZ2JhKCRibGFjaywgMC41KTtcblxuLy8gMjQuIE9yYml0XG4vLyAtLS0tLS0tLS1cblxuJG9yYml0LWJ1bGxldC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXk7XG4kb3JiaXQtYnVsbGV0LWJhY2tncm91bmQtYWN0aXZlOiAkZGFyay1ncmF5O1xuJG9yYml0LWJ1bGxldC1kaWFtZXRlcjogMS4ycmVtO1xuJG9yYml0LWJ1bGxldC1tYXJnaW46IDAuMXJlbTtcbiRvcmJpdC1idWxsZXQtbWFyZ2luLXRvcDogMC44cmVtO1xuJG9yYml0LWJ1bGxldC1tYXJnaW4tYm90dG9tOiAwLjhyZW07XG4kb3JiaXQtY2FwdGlvbi1iYWNrZ3JvdW5kOiByZ2JhKCRibGFjaywgMC41KTtcbiRvcmJpdC1jYXB0aW9uLXBhZGRpbmc6IDFyZW07XG4kb3JiaXQtY29udHJvbC1iYWNrZ3JvdW5kLWhvdmVyOiByZ2JhKCRibGFjaywgMC41KTtcbiRvcmJpdC1jb250cm9sLXBhZGRpbmc6IDFyZW07XG4kb3JiaXQtY29udHJvbC16aW5kZXg6IDEwO1xuXG4vLyAyNS4gUGFnaW5hdGlvblxuLy8gLS0tLS0tLS0tLS0tLS1cblxuJHBhZ2luYXRpb24tZm9udC1zaXplOiByZW0tY2FsYygxNCk7XG4kcGFnaW5hdGlvbi1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcbiRwYWdpbmF0aW9uLWl0ZW0tY29sb3I6ICRibGFjaztcbiRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZzogcmVtLWNhbGMoMyAxMCk7XG4kcGFnaW5hdGlvbi1pdGVtLXNwYWNpbmc6IHJlbS1jYWxjKDEpO1xuJHBhZ2luYXRpb24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiRwYWdpbmF0aW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJGxpZ2h0LWdyYXk7XG4kcGFnaW5hdGlvbi1pdGVtLWJhY2tncm91bmQtY3VycmVudDogJHByaW1hcnktY29sb3I7XG4kcGFnaW5hdGlvbi1pdGVtLWNvbG9yLWN1cnJlbnQ6IGZvcmVncm91bmQoJHBhZ2luYXRpb24taXRlbS1iYWNrZ3JvdW5kLWN1cnJlbnQpO1xuJHBhZ2luYXRpb24taXRlbS1jb2xvci1kaXNhYmxlZDogJG1lZGl1bS1ncmF5O1xuJHBhZ2luYXRpb24tZWxsaXBzaXMtY29sb3I6ICRibGFjaztcbiRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtczogZmFsc2U7XG4kcGFnaW5hdGlvbi1hcnJvd3M6IHRydWU7XG5cbi8vIDI2LiBQcm9ncmVzcyBCYXJcbi8vIC0tLS0tLS0tLS0tLS0tLS1cblxuJHByb2dyZXNzLWhlaWdodDogMXJlbTtcbiRwcm9ncmVzcy1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXk7XG4kcHJvZ3Jlc3MtbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW47XG4kcHJvZ3Jlc3MtbWV0ZXItYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XG4kcHJvZ3Jlc3MtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcblxuLy8gMjcuIFJldmVhbFxuLy8gLS0tLS0tLS0tLVxuXG4kcmV2ZWFsLWJhY2tncm91bmQ6ICR3aGl0ZTtcbiRyZXZlYWwtd2lkdGg6IDYwMHB4O1xuJHJldmVhbC1tYXgtd2lkdGg6ICRnbG9iYWwtd2lkdGg7XG4kcmV2ZWFsLW9mZnNldDogcmVtLWNhbGMoMTAwKTtcbiRyZXZlYWwtcGFkZGluZzogJGdsb2JhbC1wYWRkaW5nO1xuJHJldmVhbC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XG4kcmV2ZWFsLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kcmV2ZWFsLXppbmRleDogMTAwNTtcbiRyZXZlYWwtb3ZlcmxheS1iYWNrZ3JvdW5kOiByZ2JhKCRibGFjaywgMC40NSk7XG5cbi8vIDI4LiBTbGlkZXJcbi8vIC0tLS0tLS0tLS1cblxuJHNsaWRlci1oZWlnaHQ6IDAuNXJlbTtcbiRzbGlkZXItd2lkdGgtdmVydGljYWw6ICRzbGlkZXItaGVpZ2h0O1xuJHNsaWRlci1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheTtcbiRzbGlkZXItZmlsbC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXk7XG4kc2xpZGVyLWhhbmRsZS1oZWlnaHQ6IDEuNHJlbTtcbiRzbGlkZXItaGFuZGxlLXdpZHRoOiAxLjRyZW07XG4kc2xpZGVyLWhhbmRsZS1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcbiRzbGlkZXItb3BhY2l0eS1kaXNhYmxlZDogMC4yNTtcbiRzbGlkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiRzbGlkZXItdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7XG5cbi8vIDI5LiBTd2l0Y2hcbi8vIC0tLS0tLS0tLS1cblxuJHN3aXRjaC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXk7XG4kc3dpdGNoLWJhY2tncm91bmQtYWN0aXZlOiAkcHJpbWFyeS1jb2xvcjtcbiRzd2l0Y2gtaGVpZ2h0OiAycmVtO1xuJHN3aXRjaC1oZWlnaHQtdGlueTogMS41cmVtO1xuJHN3aXRjaC1oZWlnaHQtc21hbGw6IDEuNzVyZW07XG4kc3dpdGNoLWhlaWdodC1sYXJnZTogMi41cmVtO1xuJHN3aXRjaC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJHN3aXRjaC1tYXJnaW46ICRnbG9iYWwtbWFyZ2luO1xuJHN3aXRjaC1wYWRkbGUtYmFja2dyb3VuZDogJHdoaXRlO1xuJHN3aXRjaC1wYWRkbGUtb2Zmc2V0OiAwLjI1cmVtO1xuJHN3aXRjaC1wYWRkbGUtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiRzd2l0Y2gtcGFkZGxlLXRyYW5zaXRpb246IGFsbCAwLjI1cyBlYXNlLW91dDtcblxuLy8gMzAuIFRhYmxlXG4vLyAtLS0tLS0tLS1cblxuJHRhYmxlLWJhY2tncm91bmQ6ICRjYXJkcy1iYWNrZ3JvdW5kO1xuJHRhYmxlLWNvbG9yLXNjYWxlOiAyJTtcbiR0YWJsZS1ib3JkZXI6IDFweCBzb2xpZCBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlKTtcbiR0YWJsZS1wYWRkaW5nOiByZW0tY2FsYyg4IDEwIDEwKTtcbiR0YWJsZS1ob3Zlci1zY2FsZTogMiU7XG4kdGFibGUtcm93LWhvdmVyOiBkYXJrZW4oJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1ob3Zlci1zY2FsZSk7XG4kdGFibGUtcm93LXN0cmlwZS1ob3ZlcjogZGFya2VuKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUgKyAkdGFibGUtaG92ZXItc2NhbGUpO1xuJHRhYmxlLXN0cmlwZWQtYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSk7XG4kdGFibGUtc3RyaXBlOiBldmVuO1xuJHRhYmxlLWhlYWQtYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSAvIDIpO1xuJHRhYmxlLWZvb3QtYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSk7XG4kdGFibGUtaGVhZC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xuJHNob3ctaGVhZGVyLWZvci1zdGFja2VkOiBmYWxzZTtcblxuLy8gMzEuIFRhYnNcbi8vIC0tLS0tLS0tXG5cbiR0YWItbWFyZ2luOiAwO1xuJHRhYi1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kdGFiLWJhY2tncm91bmQtYWN0aXZlOiAkbGlnaHQtZ3JheTtcbiR0YWItYm9yZGVyOiAkbGlnaHQtZ3JheTtcbiR0YWItaXRlbS1jb2xvcjogZm9yZWdyb3VuZCgkdGFiLWJhY2tncm91bmQsICRwcmltYXJ5LWNvbG9yKTtcbiR0YWItaXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkd2hpdGU7XG4kdGFiLWl0ZW0tcGFkZGluZzogMS4yNXJlbSAxLjVyZW07XG4kdGFiLWV4cGFuZC1tYXg6IDY7XG4kdGFiLWNvbnRlbnQtYmFja2dyb3VuZDogJHdoaXRlO1xuJHRhYi1jb250ZW50LWJvcmRlcjogJGxpZ2h0LWdyYXk7XG4kdGFiLWNvbnRlbnQtY29sb3I6IGZvcmVncm91bmQoJHRhYi1iYWNrZ3JvdW5kLCAkcHJpbWFyeS1jb2xvcik7XG4kdGFiLWNvbnRlbnQtcGFkZGluZzogMXJlbTtcblxuLy8gMzIuIFRodW1ibmFpbFxuLy8gLS0tLS0tLS0tLS0tLVxuXG4kdGh1bWJuYWlsLWJvcmRlcjogc29saWQgNHB4ICR3aGl0ZTtcbiR0aHVtYm5haWwtbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW47XG4kdGh1bWJuYWlsLXNoYWRvdzogMCAwIDAgMXB4IHJnYmEoJGJsYWNrLCAwLjIpO1xuJHRodW1ibmFpbC1zaGFkb3ctaG92ZXI6IDAgMCA2cHggMXB4IHJnYmEoJHByaW1hcnktY29sb3IsIDAuNSk7XG4kdGh1bWJuYWlsLXRyYW5zaXRpb246IGJveC1zaGFkb3cgMjAwbXMgZWFzZS1vdXQ7XG4kdGh1bWJuYWlsLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG5cbi8vIDMzLiBUb29sdGlwXG4vLyAtLS0tLS0tLS0tLVxuXG4kdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yOiAkYmxhY2s7XG4kdG9vbHRpcC1jb2xvcjogJHdoaXRlO1xuJHRvb2x0aXAtcGFkZGluZzogMC43NXJlbTtcbiR0b29sdGlwLWZvbnQtc2l6ZTogJHNtYWxsLWZvbnQtc2l6ZTtcbiR0b29sdGlwLXBpcC13aWR0aDogMC43NXJlbTtcbiR0b29sdGlwLXBpcC1oZWlnaHQ6ICR0b29sdGlwLXBpcC13aWR0aCAqIDAuODY2O1xuJHRvb2x0aXAtcGlwLW9mZnNldDogMS4yNXJlbTtcbiR0b29sdGlwLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG5cbi8vIDM0LiBUb3AgQmFyXG4vLyAtLS0tLS0tLS0tLVxuXG4kdG9wYmFyLWlucHV0LXdpZHRoOiAyMDBweDtcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4vLyBzY3NzLWxpbnQ6ZGlzYWJsZSBaZXJvVW5pdFxuXG4vLy8gRGVmaW5lcyB0aGUgYmFzZSBmb250IHNpemUgb2YgdGhlIHBhZ2UsIHdoaWNoIGlzIHRoZSB2YWx1ZSBgMXJlbWAgaXMgZXF1YWwgdG8uXG4vLy8gQHR5cGUgTnVtYmVyXG4vLy8gQGdyb3VwIGdsb2JhbFxuJHJlbS1iYXNlOiAxNnB4ICFkZWZhdWx0O1xuXG4vLy8gUmVtb3ZlcyB0aGUgdW5pdCAoZS5nLiBweCwgZW0sIHJlbSkgZnJvbSBhIHZhbHVlLCByZXR1cm5pbmcgdGhlIG51bWJlciBvbmx5LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW0gLSBOdW1iZXIgdG8gc3RyaXAgdW5pdCBmcm9tLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIHNhbWUgbnVtYmVyLCBzYW5zIHVuaXQuXG5AZnVuY3Rpb24gc3RyaXAtdW5pdCgkbnVtKSB7XG4gIEByZXR1cm4gJG51bSAvICgkbnVtICogMCArIDEpO1xufVxuXG4vLy8gQ29udmVydHMgb25lIG9yIG1vcmUgcGl4ZWwgdmFsdWVzIGludG8gbWF0Y2hpbmcgcmVtIHZhbHVlcy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICR2YWx1ZXMgLSBPbmUgb3IgbW9yZSB2YWx1ZXMgdG8gY29udmVydC4gQmUgc3VyZSB0byBzZXBhcmF0ZSB0aGVtIHdpdGggc3BhY2VzIGFuZCBub3QgY29tbWFzLiBJZiB5b3UgbmVlZCB0byBjb252ZXJ0IGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsIHdyYXAgdGhlIGxpc3QgaW4gcGFyZW50aGVzZXMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlIFskcmVtLWJhc2VdIC0gVGhlIGJhc2UgdmFsdWUgdG8gdXNlIHdoZW4gY2FsY3VsYXRpbmcgdGhlIGByZW1gLiBJZiB5b3UncmUgdXNpbmcgRm91bmRhdGlvbiBvdXQgb2YgdGhlIGJveCwgdGhpcyBpcyAxNnB4LlxuLy8vXG4vLy8gQHJldHVybnMge0xpc3R9IEEgbGlzdCBvZiBjb252ZXJ0ZWQgdmFsdWVzLlxuQGZ1bmN0aW9uIHJlbS1jYWxjKCR2YWx1ZXMsICRiYXNlOiAkcmVtLWJhc2UpIHtcbiAgJHJlbS12YWx1ZXM6ICgpO1xuICAkY291bnQ6IGxlbmd0aCgkdmFsdWVzKTtcblxuICBAaWYgJGJhc2UgPT0gbnVsbCB7XG4gICAgJGJhc2U6ICRyZW0tYmFzZTtcbiAgfVxuXG4gIEBpZiAkY291bnQgPT0gMSB7XG4gICAgQHJldHVybiAtemYtdG8tcmVtKCR2YWx1ZXMsICRiYXNlKTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGNvdW50IHtcbiAgICAkcmVtLXZhbHVlczogYXBwZW5kKCRyZW0tdmFsdWVzLCAtemYtdG8tcmVtKG50aCgkdmFsdWVzLCAkaSksICRiYXNlKSk7XG4gIH1cblxuICBAcmV0dXJuICRyZW0tdmFsdWVzO1xufVxuXG4vLyBDb252ZXJ0cyBhIHVuaXRsZXNzLCBwaXhlbCwgb3IgcmVtIHZhbHVlIHRvIGVtLCBmb3IgdXNlIGluIGJyZWFrcG9pbnRzLlxuQGZ1bmN0aW9uIC16Zi1icC10by1lbSgkdmFsdWUpIHtcbiAgLy8gUGl4ZWwgYW5kIHVuaXRsZXNzIHZhbHVlcyBhcmUgY29udmVydGVkIHRvIHJlbXNcbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAncHgnIG9yIHVuaXRsZXNzKCR2YWx1ZSkge1xuICAgICR2YWx1ZTogcmVtLWNhbGMoJHZhbHVlKTtcbiAgfVxuXG4gIC8vIFRoZW4gdGhlIHZhbHVlIGlzIGNvbnZlcnRlZCB0byBlbXNcbiAgQHJldHVybiBzdHJpcC11bml0KCR2YWx1ZSkgKiAxZW07XG59XG5cbi8vLyBDb252ZXJ0cyBhIHBpeGVsIHZhbHVlIHRvIG1hdGNoaW5nIHJlbSB2YWx1ZS4gKkFueSogdmFsdWUgcGFzc2VkLCByZWdhcmRsZXNzIG9mIHVuaXQsIGlzIGFzc3VtZWQgdG8gYmUgYSBwaXhlbCB2YWx1ZS4gQnkgZGVmYXVsdCwgdGhlIGJhc2UgcGl4ZWwgdmFsdWUgdXNlZCB0byBjYWxjdWxhdGUgdGhlIHJlbSB2YWx1ZSBpcyB0YWtlbiBmcm9tIHRoZSBgJHJlbS1iYXNlYCB2YXJpYWJsZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdmFsdWUgLSBQaXhlbCB2YWx1ZSB0byBjb252ZXJ0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSBbJHJlbS1iYXNlXSAtIEJhc2UgZm9yIHBpeGVsIGNvbnZlcnNpb24uXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBBIG51bWJlciBpbiByZW1zLCBjYWxjdWxhdGVkIGJhc2VkIG9uIHRoZSBnaXZlbiB2YWx1ZSBhbmQgdGhlIGJhc2UgcGl4ZWwgdmFsdWUuIHJlbSB2YWx1ZXMgYXJlIHBhc3NlZCB0aHJvdWdoIGFzIGlzLlxuQGZ1bmN0aW9uIC16Zi10by1yZW0oJHZhbHVlLCAkYmFzZTogJHJlbS1iYXNlKSB7XG4gIC8vIENhbGN1bGF0ZSByZW0gaWYgdW5pdHMgZm9yICR2YWx1ZSBpcyBub3QgcmVtXG4gIEBpZiAodW5pdCgkdmFsdWUpICE9ICdyZW0nKSB7XG4gICAgJHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgLyBzdHJpcC11bml0KCRiYXNlKSAqIDFyZW07XG4gIH1cbiAgLy8gVHVybiAwcmVtIGludG8gMFxuICBAaWYgKCR2YWx1ZSA9PSAwcmVtKSB7ICR2YWx1ZTogMDsgfVxuICBAcmV0dXJuICR2YWx1ZTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGJyZWFrcG9pbnRzXG4vLy8vXG5cbi8vIHNjc3MtbGludDpkaXNhYmxlIFplcm9Vbml0XG5cbi8vLyBBIGxpc3Qgb2YgbmFtZWQgYnJlYWtwb2ludHMuIFlvdSBjYW4gdXNlIHRoZXNlIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRvIHF1aWNrbHkgY3JlYXRlIG1lZGlhIHF1ZXJpZXMuXG4vLy8gQHR5cGUgTWFwXG4kYnJlYWtwb2ludHM6IChcbiAgc21hbGw6IDAsXG4gIG1lZGl1bTogNjQwcHgsXG4gIGxhcmdlOiAxMDI0cHgsXG4gIHhsYXJnZTogMTIwMHB4LFxuICB4eGxhcmdlOiAxNDQwcHgsXG4pICFkZWZhdWx0O1xuXG4vLy8gQWxsIG9mIHRoZSBuYW1lcyBpbiB0aGlzIGxpc3Qgd2lsbCBiZSBvdXRwdXQgYXMgY2xhc3NlcyBpbiB5b3VyIENTUywgbGlrZSBgLnNtYWxsLTEyYCwgYC5tZWRpdW0tNmAsIGFuZCBzbyBvbi4gRWFjaCB2YWx1ZSBpbiB0aGlzIGxpc3QgbXVzdCBhbHNvIGJlIGluIHRoZSBgJGJyZWFrcG9pbnRzYCBtYXAuXG4vLy8gQHR5cGUgTGlzdFxuJGJyZWFrcG9pbnQtY2xhc3NlczogKHNtYWxsIG1lZGl1bSBsYXJnZSkgIWRlZmF1bHQ7XG5cbi8vLyBHZW5lcmF0ZXMgYSBtZWRpYSBxdWVyeSBzdHJpbmcgbWF0Y2hpbmcgdGhlIGlucHV0IHZhbHVlLiBSZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGBicmVha3BvaW50KClgIG1peGluIHRvIHNlZSB3aGF0IHRoZSBwb3NzaWJsZSBpbnB1dHMgYXJlLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHZhbCBbc21hbGxdIC0gQnJlYWtwb2ludCBuYW1lLCBvciBweCwgcmVtLCBvciBlbSB2YWx1ZSB0byBwcm9jZXNzLlxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQoJHZhbDogc21hbGwpIHtcbiAgLy8gU2l6ZSBvciBrZXl3b3JkXG4gICRicDogbnRoKCR2YWwsIDEpO1xuICAvLyBWYWx1ZSBmb3IgbWF4LXdpZHRoIG1lZGlhIHF1ZXJpZXNcbiAgJGJwLW1heDogMDtcbiAgLy8gRGlyZWN0aW9uIG9mIG1lZGlhIHF1ZXJ5ICh1cCwgZG93biwgb3Igb25seSlcbiAgJGRpcjogaWYobGVuZ3RoKCR2YWwpID4gMSwgbnRoKCR2YWwsIDIpLCB1cCk7XG4gIC8vIEV2ZW50dWFsIG91dHB1dFxuICAkc3RyOiAnJztcbiAgLy8gSXMgaXQgYSBuYW1lZCBtZWRpYSBxdWVyeT9cbiAgJG5hbWVkOiBmYWxzZTtcblxuICAvLyBPcmllbnRhdGlvbiBtZWRpYSBxdWVyaWVzIGhhdmUgYSB1bmlxdWUgc3ludGF4XG4gIEBpZiAkYnAgPT0gJ2xhbmRzY2FwZScgb3IgJGJwID09ICdwb3J0cmFpdCcge1xuICAgIEByZXR1cm4gJyhvcmllbnRhdGlvbjogI3skYnB9KSc7XG4gIH1cbiAgQGVsc2UgaWYgJGJwID09ICdyZXRpbmEnIHtcbiAgICBAcmV0dXJuICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpJztcbiAgfVxuXG4gIC8vIFRyeSB0byBwdWxsIGEgbmFtZWQgYnJlYWtwb2ludCBvdXQgb2YgdGhlICRicmVha3BvaW50cyBtYXBcbiAgQGlmIHR5cGUtb2YoJGJwKSA9PSAnc3RyaW5nJyB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJGJwKSB7XG4gICAgICBAaWYgJGRpciA9PSAnb25seScgb3IgJGRpciA9PSAnZG93bicge1xuICAgICAgICAkbmV4dC1icDogLXpmLW1hcC1uZXh0KCRicmVha3BvaW50cywgJGJwKTtcblxuICAgICAgICBAaWYgJG5leHQtYnAgPT0gbnVsbCB7XG4gICAgICAgICAgJGJwLW1heDogbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgJGJwLW1heDogJG5leHQtYnA7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJGJwOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJGJwKTtcbiAgICAgICRuYW1lZDogdHJ1ZTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGJwOiAwO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbnZlcnQgYW55IHBpeGVsLCByZW0sIG9yIHVuaXRsZXNzIHZhbHVlIHRvIGVtXG4gICRicDogLXpmLWJwLXRvLWVtKCRicCk7XG4gIEBpZiAkYnAtbWF4IHtcbiAgICAkYnAtbWF4OiAtemYtYnAtdG8tZW0oJGJwLW1heCkgLSAoMS8xNik7XG4gIH1cblxuICAvLyBTa2lwIG1lZGlhIHF1ZXJ5IGNyZWF0aW9uIGlmIHRoZSBpbnB1dCBpcyBcIjAgdXBcIiBvciBcIjAgZG93blwiXG4gIEBpZiAkYnAgPiAwIG9yICRkaXIgPT0gJ29ubHknIHtcbiAgICAvLyBgb25seWAgcmFuZ2VzIHVzZSB0aGUgZm9ybWF0IGAobWluLXdpZHRoOiBuKSBhbmQgKG1heC13aWR0aDogbilgXG4gICAgQGlmICRkaXIgPT0gJ29ubHknIHtcbiAgICAgIEBpZiAkbmFtZWQgPT0gdHJ1ZSB7XG4gICAgICAgICRzdHI6ICRzdHIgKyAnKG1pbi13aWR0aDogI3skYnB9KSc7XG5cbiAgICAgICAgQGlmICRicC1tYXggIT0gbnVsbCB7XG4gICAgICAgICAgJHN0cjogJHN0ciArICcgYW5kIChtYXgtd2lkdGg6ICN7JGJwLW1heH0pJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBAd2FybiAnT25seSBuYW1lZCBtZWRpYSBxdWVyaWVzIGNhbiBoYXZlIGFuIGBvbmx5YCByYW5nZS4nO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGBkb3duYCByYW5nZXMgdXNlIHRoZSBmb3JtYXQgYChtYXgtd2lkdGg6IG4pYFxuICAgIEBlbHNlIGlmICRkaXIgPT0gJ2Rvd24nIHtcbiAgICAgICRtYXg6IDA7XG5cbiAgICAgIC8vIEZvciBuYW1lZCBicmVha3BvaW50cywgc3VidHJhY3QgdGhlIGJyZWFrcG9pbnQgdmFsdWUgYnkgb25lIFwicGl4ZWxcIiwgb3IgMS8xNmVtLlxuICAgICAgQGlmICRuYW1lZCB7XG4gICAgICAgICRtYXg6ICRicC1tYXg7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRtYXg6ICRicDtcbiAgICAgIH1cblxuICAgICAgJHN0cjogJHN0ciArICcobWF4LXdpZHRoOiAjeyRtYXh9KSc7XG4gICAgfVxuXG4gICAgLy8gYHVwYCByYW5nZXMgdXNlIHRoZSBmb3JtYXQgYChtaW4td2lkdGg6IG4pYFxuICAgIEBlbHNlIGlmIHN0cmlwLXVuaXQoJGJwKSA+IDAge1xuICAgICAgJHN0cjogJHN0ciArICcobWluLXdpZHRoOiAjeyRicH0pJztcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRzdHI7XG59XG5cbi8vLyBXcmFwcyBhIG1lZGlhIHF1ZXJ5IGFyb3VuZCB0aGUgY29udGVudCB5b3UgcHV0IGluc2lkZSB0aGUgbWl4aW4uIFRoaXMgbWl4aW4gYWNjZXB0cyBhIG51bWJlciBvZiB2YWx1ZXM6XG4vLy8gIC0gSWYgYSBzdHJpbmcgaXMgcGFzc2VkLCB0aGUgbWl4aW4gd2lsbCBsb29rIGZvciBpdCBpbiB0aGUgYCRicmVha3BvaW50c2AgbWFwLCBhbmQgdXNlIGEgbWVkaWEgcXVlcnkgdGhlcmUuXG4vLy8gIC0gSWYgYSBwaXhlbCB2YWx1ZSBpcyBwYXNzZWQsIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIGFuIGVtIHZhbHVlIHVzaW5nIGAkcmVtLWJhc2VgLlxuLy8vICAtIElmIGEgcmVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHVuaXQgd2lsbCBiZSBjaGFuZ2VkIHRvIGVtLlxuLy8vICAtIElmIGFuIGVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHZhbHVlIHdpbGwgYmUgdXNlZCBhcy1pcy5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICR2YWx1ZSAtIEJyZWFrcG9pbnQgbmFtZSwgb3IgcHgsIHJlbSwgb3IgZW0gdmFsdWUgdG8gcHJvY2Vzcy5cbi8vL1xuLy8vIEBvdXRwdXQgSWYgdGhlIGJyZWFrcG9pbnQgaXMgXCIwcHggYW5kIGxhcmdlclwiLCBvdXRwdXRzIHRoZSBjb250ZW50IGFzLWlzLiBPdGhlcndpc2UsIG91dHB1dHMgdGhlIGNvbnRlbnQgd3JhcHBlZCBpbiBhIG1lZGlhIHF1ZXJ5LlxuQG1peGluIGJyZWFrcG9pbnQoJHZhbHVlKSB7XG4gICRzdHI6IGJyZWFrcG9pbnQoJHZhbHVlKTtcblxuICAvLyBJZiAkc3RyIGlzIHN0aWxsIGFuIGVtcHR5IHN0cmluZywgbm8gbWVkaWEgcXVlcnkgaXMgbmVlZGVkXG4gIEBpZiAkc3RyID09ICcnIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG4gIC8vIE90aGVyd2lzZSwgd3JhcCB0aGUgY29udGVudCBpbiBhIG1lZGlhIHF1ZXJ5XG4gIEBlbHNlIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAjeyRzdHJ9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQ29udmVycyB0aGUgYnJlYWtwb2ludHMgbWFwIHRvIGEgVVJMLWVuY29kZWQgc3RyaW5nLCBsaWtlIHRoaXM6IGBrZXkxPXZhbHVlMSZrZXkyPXZhbHVlMmAuIFRoZSB2YWx1ZSBpcyB0aGVuIGRyb3BwZWQgaW50byB0aGUgQ1NTIGZvciBhIHNwZWNpYWwgYDxtZXRhPmAgdGFnLCB3aGljaCBpcyByZWFkIGJ5IHRoZSBGb3VuZGF0aW9uIEphdmFTY3JpcHQuIFRoaXMgaXMgaG93IHdlIHRyYW5zZmVyIHZhbHVlcyBmcm9tIFNhc3MgdG8gSmF2YVNjcmlwdCwgc28gdGhleSBjYW4gYmUgZGVmaW5lZCBpbiBvbmUgcGxhY2UuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byBjb252ZXJ0LlxuLy8vXG4vLy8gQHJldHVybnMge1N0cmluZ30gQSBzdHJpbmcgY29udGFpbmluZyB0aGUgbWFwJ3MgY29udGVudHMuXG5AZnVuY3Rpb24gLXpmLWJwLXNlcmlhbGl6ZSgkbWFwKSB7XG4gICRzdHI6ICcnO1xuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcCB7XG4gICAgJHN0cjogJHN0ciArICRrZXkgKyAnPScgKyAtemYtYnAtdG8tZW0oJHZhbHVlKSArICcmJztcbiAgfVxuICAkc3RyOiBzdHItc2xpY2UoJHN0ciwgMSwgLTIpO1xuXG4gIEByZXR1cm4gJHN0cjtcbn1cblxuLy8vIEZpbmQgdGhlIG5leHQga2V5IGluIGEgbWFwLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gdHJhdmVyc2UuXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGtleSAtIEtleSB0byB1c2UgYXMgYSBzdGFydGluZyBwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtNaXhlZH0gVGhlIHZhbHVlIGZvciB0aGUga2V5IGFmdGVyIGAka2V5YCwgaWYgYCRrZXlgIHdhcyBmb3VuZC4gSWYgYCRrZXlgIHdhcyBub3QgZm91bmQsIG9yIGAka2V5YCB3YXMgdGhlIGxhc3QgdmFsdWUgaW4gdGhlIG1hcCwgcmV0dXJucyBgbnVsbGAuXG5AZnVuY3Rpb24gLXpmLW1hcC1uZXh0KCRtYXAsICRrZXkpIHtcbiAgLy8gU3RvcmUgdGhlIHZhbHVlcyBvZiB0aGUgbWFwIGFzIGEgbGlzdCwgc28gd2UgY2FuIGFjY2VzcyB0aGVtIHdpdGggbnRoXG4gICR2YWx1ZXM6IG1hcC12YWx1ZXMoJG1hcCk7XG5cbiAgLy8gR2hldHRvIGZvciBsb29wXG4gICRpOiAxO1xuICAkZm91bmQ6IGZhbHNlO1xuICBAZWFjaCAkdmFsIGluIG1hcC1rZXlzKCRtYXApIHtcbiAgICBAaWYgJGZvdW5kID09IGZhbHNlIHtcbiAgICAgIEBpZiAoJGtleSA9PSAkdmFsKSB7XG4gICAgICAgICRmb3VuZDogdHJ1ZTtcbiAgICAgIH1cbiAgICAgICRpOiAkaSArIDE7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0LCBvciBpdCdzIHRoZSBsYXN0IGtleSBpbiB0aGUgbWFwLCByZXR1cm4gbnVsbFxuICBAaWYgJGkgPiBsZW5ndGgoJG1hcCkge1xuICAgIEByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBPdGhlcndpc2UsIHJldHVybiB0aGUgdmFsdWVcbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbnRoKCR2YWx1ZXMsICRpKTtcbiAgfVxufVxuXG4vLyBMZWdhY3kgYnJlYWtwb2ludCB2YXJpYWJsZXNcbi8vIFRoZXNlIHdpbGwgYmUgcmVtb3ZlZCBpbiA2LjJcbiRzbWFsbC11cDogbnVsbDtcbiRzbWFsbC1vbmx5OiBudWxsO1xuJG1lZGl1bS11cDogbnVsbDtcbiRtZWRpdW0tb25seTogbnVsbDtcbiRsYXJnZS11cDogbnVsbDtcbiRsYXJnZS1vbmx5OiBudWxsO1xuJHhsYXJnZS11cDogbnVsbDtcbiR4bGFyZ2Utb25seTogbnVsbDtcbiR4eGxhcmdlLXVwOiBudWxsO1xuJHh4bGFyZ2Utb25seTogbnVsbDtcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgc21hbGwpIHtcbiAgJHNtYWxsLXVwOiBzY3JlZW47XG4gICRzbWFsbC1vbmx5OiBzY3JlZW4gYW5kICN7YnJlYWtwb2ludChzbWFsbCBvbmx5KX07XG59XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIG1lZGl1bSkge1xuICAkbWVkaXVtLXVwOiBzY3JlZW4gYW5kICN7YnJlYWtwb2ludChtZWRpdW0pfTtcbiAgJG1lZGl1bS1vbmx5OiBzY3JlZW4gYW5kICN7YnJlYWtwb2ludChtZWRpdW0gb25seSl9O1xufVxuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBsYXJnZSkge1xuICAkbGFyZ2UtdXA6IHNjcmVlbiBhbmQgI3ticmVha3BvaW50KGxhcmdlKX07XG4gICRsYXJnZS1vbmx5OiBzY3JlZW4gYW5kICN7YnJlYWtwb2ludChsYXJnZSBvbmx5KX07XG59XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIHhsYXJnZSkge1xuICAkeGxhcmdlLXVwOiBzY3JlZW4gYW5kICN7YnJlYWtwb2ludCh4bGFyZ2UpfTtcbiAgJHhsYXJnZS1vbmx5OiBzY3JlZW4gYW5kICN7YnJlYWtwb2ludCh4bGFyZ2Ugb25seSl9O1xufVxuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCB4eGxhcmdlKSB7XG4gICR4eGxhcmdlLXVwOiBzY3JlZW4gYW5kICN7YnJlYWtwb2ludCh4eGxhcmdlKX07XG4gICR4eGxhcmdlLW9ubHk6IHNjcmVlbiBhbmQgI3ticmVha3BvaW50KHh4bGFyZ2Ugb25seSl9O1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdHlwb2dyYXBoeS1oZWxwZXJzXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBmb3IgbGVhZCBwYXJhZ3JhcGhzLlxuLy8vIEB0eXBlIE51bWJlclxuJGxlYWQtZm9udC1zaXplOiAkZ2xvYmFsLWZvbnQtc2l6ZSAqIDEuMjUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGxpbmUgaGVpZ2h0IGZvciBsZWFkIHBhcmFncmFwaHMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kbGVhZC1saW5laGVpZ2h0OiAxLjYgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGxpbmUgaGVpZ2h0IGZvciBzdWJoZWFkZXJzLlxuLy8vIEB0eXBlIE51bWJlclxuJHN1YmhlYWRlci1saW5laGVpZ2h0OiAxLjQgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIHN1YmhlYWRlcnMuXG4vLy8gQHR5cGUgQ29sb3JcbiRzdWJoZWFkZXItY29sb3I6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgd2VpZ2h0IGZvciBzdWJoZWFkZXJzLlxuLy8vIEB0eXBlIFN0cmluZ1xuJHN1YmhlYWRlci1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB0b3AgbWFyZ2luIGZvciBzdWJoaGVhZGVycy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzdWJoZWFkZXItbWFyZ2luLXRvcDogMC4ycmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3R0b20gbWFyZ2luIGZvciBzdWJoZWFkZXJzLlxuLy8vIEB0eXBlIE51bWJlclxuJHN1YmhlYWRlci1tYXJnaW4tYm90dG9tOiAwLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBmb3Igc3RhdGlzdGljIG51bWJlcnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3RhdC1mb250LXNpemU6IDIuNXJlbSAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tdHlwb2dyYXBoeS1oZWxwZXJzIHtcbiAgLy8gVXNlIHRvIGNyZWF0ZSBhIHN1YmhlYWRpbmcgdW5kZXIgYSBtYWluIGhlYWRlclxuICAvLyBNYWtlIHN1cmUgeW91IHBhaXIgdGhlIHR3byBlbGVtZW50cyBpbiBhIDxoZWFkZXI+IGVsZW1lbnQsIGxpa2UgdGhpczpcbiAgLy8gPGhlYWRlcj5cbiAgLy8gICA8aDE+SGVhZGluZzwvaDE+XG4gIC8vICAgPGgyPlN1YmhlYWRpbmc8L2gyPlxuICAvLyA8L2hlYWRlcj5cbiAgLnN1YmhlYWRlciB7XG4gICAgbWFyZ2luLXRvcDogJHN1YmhlYWRlci1tYXJnaW4tdG9wO1xuICAgIG1hcmdpbi1ib3R0b206ICRzdWJoZWFkZXItbWFyZ2luLWJvdHRvbTtcbiAgICBmb250LXdlaWdodDogJHN1YmhlYWRlci1mb250LXdlaWdodDtcbiAgICBsaW5lLWhlaWdodDogJHN1YmhlYWRlci1saW5laGVpZ2h0O1xuICAgIGNvbG9yOiAkc3ViaGVhZGVyLWNvbG9yO1xuICB9XG5cbiAgLy8gVXNlIHRvIHN0eWxlIGFuIGludHJvZHVjdG9yeSBsZWFkLCBkZWNrLCBibHVyYiwgZXRjLlxuICAubGVhZCB7XG4gICAgZm9udC1zaXplOiAkbGVhZC1mb250LXNpemU7XG4gICAgbGluZS1oZWlnaHQ6ICRsZWFkLWxpbmVoZWlnaHQ7XG4gIH1cblxuICAvLyBVc2UgdG8gc3R5bGUgYSBsYXJnZSBudW1iZXIgdG8gZGlzcGxheSBhIHN0YXRpc3RpY1xuICAuc3RhdCB7XG4gICAgZm9udC1zaXplOiAkc3RhdC1mb250LXNpemU7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG5cbiAgICBwICsgJiB7XG4gICAgICBtYXJnaW4tdG9wOiAtMXJlbTtcbiAgICB9XG4gIH1cblxuICAvLyBVc2UgdG8gcmVtb3ZlIHRoZSBidWxsZXRzIGZyb20gYW4gdW5vcmRlcmVkIGxpc3RcbiAgLm5vLWJ1bGxldCB7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuQG1peGluIGZvdW5kYXRpb24tdGV4dC1hbGlnbm1lbnQge1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAZWFjaCAkYWxpZ24gaW4gKGxlZnQsIHJpZ2h0LCBjZW50ZXIsIGp1c3RpZnkpIHtcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJ3NtYWxsJyB7XG4gICAgICAgICAgICAuI3skc2l6ZX0tdGV4dC0jeyRhbGlnbn0ge1xuICAgICAgICAgICAgICB0ZXh0LWFsaWduOiAkYWxpZ247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIEBlbHNlIHsgICAgICAgICAgICBcbiAgICAgICAgICAgIC50ZXh0LSN7JGFsaWdufSB7XG4gICAgICAgICAgICAgIHRleHQtYWxpZ246ICRhbGlnbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB0eXBvZ3JhcGh5XG4vLy8vXG5cbi8vIHNjc3MtbGludDpkaXNhYmxlIGFsbFxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcmludC1zdHlsZXMge1xuICAuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cblxuICBAbWVkaWEgcHJpbnQge1xuICAgICoge1xuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgIGNvbG9yOiBibGFjayAhaW1wb3J0YW50OyAvLyBCbGFjayBwcmludHMgZmFzdGVyOiBoNWJwLmNvbS9zXG4gICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICB0ZXh0LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgICAuaGlkZS1mb3ItcHJpbnQgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cblxuICAgIHRhYmxlLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsgfVxuICAgIHRoZWFkLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwICFpbXBvcnRhbnQ7IH1cbiAgICB0Ym9keS5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlLXJvdy1ncm91cCAhaW1wb3J0YW50OyB9XG4gICAgdHIuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsgfVxuICAgIHRkLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OyB9XG4gICAgdGguc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7IH1cblxuICAgIC8vIERpc3BsYXkgdGhlIFVSTCBvZiBhIGxpbmsgYWZ0ZXIgdGhlIHRleHRcbiAgICBhLFxuICAgIGE6dmlzaXRlZCB7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO31cbiAgICBhW2hyZWZdOmFmdGVyIHsgY29udGVudDogJyAoJyBhdHRyKGhyZWYpICcpJzsgfVxuXG4gICAgLy8gRG9uJ3QgZGlzcGxheSB0aGUgVVJMIGZvciBpbWFnZXMgb3IgSmF2YVNjcmlwdC9pbnRlcm5hbCBsaW5rc1xuICAgIC5pciBhOmFmdGVyLFxuICAgIGFbaHJlZl49J2phdmFzY3JpcHQ6J106YWZ0ZXIsXG4gICAgYVtocmVmXj0nIyddOmFmdGVyIHsgY29udGVudDogJyc7IH1cblxuICAgIC8vIERpc3BsYXkgd2hhdCBhbiBhYmJyZXZpYXRpb24gc3RhbmRzIGZvciBhZnRlciB0aGUgdGV4dFxuICAgIGFiYnJbdGl0bGVdOmFmdGVyIHsgY29udGVudDogJyAoJyBhdHRyKHRpdGxlKSAnKSc7IH1cblxuICAgIC8vIFByZXZlbnQgcGFnZSBicmVha3MgaW4gdGhlIG1pZGRsZSBvZiBhIGJsb2NrcXVvdGUgb3IgcHJlZm9ybWF0dGVkIHRleHQgYmxvY2tcbiAgICBwcmUsXG4gICAgYmxvY2txdW90ZSB7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjOTk5O1xuICAgICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuICAgIH1cblxuICAgIC8vIGg1YnAuY29tL3RcbiAgICB0aGVhZCB7IGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDsgfVxuXG4gICAgdHIsXG4gICAgaW1nIHsgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOyB9XG5cbiAgICBpbWcgeyBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfVxuXG4gICAgQHBhZ2UgeyBtYXJnaW46IDAuNWNtOyB9XG5cbiAgICBwLFxuICAgIGgyLFxuICAgIGgzIHtcbiAgICAgIG9ycGhhbnM6IDM7XG4gICAgICB3aWRvd3M6IDM7XG4gICAgfVxuXG4gICAgLy8gQXZvaWQgcGFnZSBicmVha3MgYWZ0ZXIgYSBoZWFkaW5nXG4gICAgaDIsXG4gICAgaDMgeyBwYWdlLWJyZWFrLWFmdGVyOiBhdm9pZDsgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmb3Jtc1xuLy8vL1xuXG4vLy8gRm9udCBjb2xvciBvZiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBGb250IGZhbWlseSBvZiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBGb250XG4kaW5wdXQtZm9udC1mYW1pbHk6IGluaGVyaXQgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHNpemUgb2YgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kaW5wdXQtZm9udC1zaXplOiByZW0tY2FsYygxNikgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBmb2N1c2VkIG9mIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtYmFja2dyb3VuZC1mb2N1czogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBkaXNhYmxlZCB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LWJhY2tncm91bmQtZGlzYWJsZWQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIGFyb3VuZCB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBCb3JkZXJcbiRpbnB1dC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgYXJvdW5kIGZvY3VzZWQgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1ib3JkZXItZm9jdXM6IDFweCBzb2xpZCAkZGFyay1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQm94IHNoYWRvdyBpbnNpZGUgdGV4dCBpbnB1dHMgd2hlbiBub3QgZm9jdXNlZC5cbi8vLyBAdHlwZSBTaGFkb3dcbiRpbnB1dC1zaGFkb3c6IGluc2V0IDAgMXB4IDJweCByZ2JhKCRibGFjaywgMC4xKSAhZGVmYXVsdDtcblxuLy8vIEJveCBzaGFkb3cgb3V0c2lkZSB0ZXh0IGlucHV0cyB3aGVuIGZvY3VzZWQuXG4vLy8gQHR5cGUgU2hhZG93XG4kaW5wdXQtc2hhZG93LWZvY3VzOiAwIDAgNXB4ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEN1cnNvciB0byB1c2Ugd2hlbiBob3ZlcmluZyBvdmVyIGEgZGlzYWJsZWQgdGV4dCBpbnB1dC5cbi8vLyBAdHlwZSBDdXJzb3JcbiRpbnB1dC1jdXJzb3ItZGlzYWJsZWQ6IGRlZmF1bHQgIWRlZmF1bHQ7XG5cbi8vLyBQcm9wZXJ0aWVzIHRvIHRyYW5zaXRpb24gb24gdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgVHJhbnNpdGlvblxuJGlucHV0LXRyYW5zaXRpb246IGJveC1zaGFkb3cgMC41cywgYm9yZGVyLWNvbG9yIDAuMjVzIGVhc2UtaW4tb3V0ICFkZWZhdWx0O1xuXG4vLy8gRW5hYmxlcyB0aGUgdXAvZG93biBidXR0b25zIHRoYXQgQ2hyb21lIGFuZCBGaXJlZm94IGFkZCB0byBgPGlucHV0IHR5cGU9J251bWJlcic+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kaW5wdXQtbnVtYmVyLXNwaW5uZXJzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gUmFkaXVzIGZvciB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBCb3JkZXJcbiRpbnB1dC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG5AbWl4aW4gZm9ybS1lbGVtZW50IHtcbiAgJGhlaWdodDogKCRpbnB1dC1mb250LXNpemUgKyAoJGZvcm0tc3BhY2luZyAqIDEuNSkgLSByZW0tY2FsYygxKSk7XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIHBhZGRpbmc6ICRmb3JtLXNwYWNpbmcgLyAyO1xuICBib3JkZXI6ICRpbnB1dC1ib3JkZXI7XG4gIG1hcmdpbjogMCAwICRmb3JtLXNwYWNpbmc7XG5cbiAgZm9udC1mYW1pbHk6ICRpbnB1dC1mb250LWZhbWlseTtcbiAgZm9udC1zaXplOiAkaW5wdXQtZm9udC1zaXplO1xuICBjb2xvcjogJGlucHV0LWNvbG9yO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmFja2dyb3VuZDtcbiAgYm94LXNoYWRvdzogJGlucHV0LXNoYWRvdztcbiAgYm9yZGVyLXJhZGl1czogJGlucHV0LXJhZGl1cztcblxuICBAaWYgaGFzLXZhbHVlKCRpbnB1dC10cmFuc2l0aW9uKSB7XG4gICAgdHJhbnNpdGlvbjogJGlucHV0LXRyYW5zaXRpb247XG4gIH1cblxuICAvLyBGb2N1cyBzdGF0ZVxuICAmOmZvY3VzIHtcbiAgICBib3JkZXI6ICRpbnB1dC1ib3JkZXItZm9jdXM7XG4gICAgYmFja2dyb3VuZDogJGlucHV0LWJhY2tncm91bmQtZm9jdXM7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3gtc2hhZG93OiAkaW5wdXQtc2hhZG93LWZvY3VzO1xuXG4gICAgQGlmIGhhcy12YWx1ZSgkaW5wdXQtdHJhbnNpdGlvbikge1xuICAgICAgdHJhbnNpdGlvbjogJGlucHV0LXRyYW5zaXRpb247XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tdGV4dCB7XG4gIC8vIFRleHQgaW5wdXRzXG4gICN7dGV4dC1pbnB1dHMoKX0sXG4gIHRleHRhcmVhIHtcbiAgICBAaW5jbHVkZSBmb3JtLWVsZW1lbnQ7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuXG4gIC8vIFRleHQgYXJlYXNcbiAgdGV4dGFyZWEge1xuICAgIG1heC13aWR0aDogMTAwJTtcblxuICAgICZbcm93c10ge1xuICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgIH1cbiAgfVxuXG4gIC8vIERpc2FibGVkL3JlYWRvbmx5IHN0YXRlXG4gIGlucHV0LFxuICB0ZXh0YXJlYSB7XG4gICAgJjpkaXNhYmxlZCxcbiAgICAmW3JlYWRvbmx5XSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmFja2dyb3VuZC1kaXNhYmxlZDtcbiAgICAgIGN1cnNvcjogJGlucHV0LWN1cnNvci1kaXNhYmxlZDtcbiAgICB9XG4gIH1cblxuICAvLyBSZXNldCBzdHlsZXMgb24gYnV0dG9uLWxpa2UgaW5wdXRzXG4gIFt0eXBlPSdzdWJtaXQnXSxcbiAgW3R5cGU9J2J1dHRvbiddIHtcbiAgICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICB9XG5cbiAgLy8gUmVzZXQgTm9ybWFsaXplIHNldHRpbmcgY29udGVudC1ib3ggdG8gc2VhcmNoIGVsZW1lbnRzXG4gIGlucHV0W3R5cGU9J3NlYXJjaCddIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG5cbiAgLy8gTnVtYmVyIGlucHV0IHN0eWxlc1xuICBbdHlwZT0nbnVtYmVyJ10ge1xuICAgIEBpZiBub3QgJGlucHV0LW51bWJlci1zcGlubmVycyB7XG4gICAgICAtbW96LWFwcGVhcmFuY2U6IHRleHRmaWVsZDtcblxuICAgICAgW3R5cGU9J251bWJlciddOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuICAgICAgW3R5cGU9J251bWJlciddOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuLy8vIENoZWNrcyB0aGUgbGlnaHRuZXNzIG9mIGAkY29sb3JgLCBhbmQgaWYgaXQgcGFzc2VzIHRoZSBgJHRocmVzaG9sZGAgb2YgbGlnaHRuZXNzLCBpdCByZXR1cm5zIHRoZSBgJHllc2AgY29sb3IuIE90aGVyd2lzZSwgaXQgcmV0dXJucyB0aGUgYCRub2AgY29sb3IuIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIGR5bmFtaWNhbGx5IG91dHB1dCBhIGZvcmVncm91bmQgY29sb3IgYmFzZWQgb24gYSBnaXZlbiBiYWNrZ3JvdW5kIGNvbG9yLlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gQ29sb3IgdG8gY2hlY2sgdGhlIGxpZ2h0bmVzcyBvZi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkeWVzIFskYmxhY2tdIC0gQ29sb3IgdG8gcmV0dXJuIGlmIGAkY29sb3JgIGlzIGxpZ2h0LlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRubyBbJHdoaXRlXSAtIENvbG9yIHRvIHJldHVybiBpZiBgJGNvbG9yYCBpcyBkYXJrLlxuLy8vIEBwYXJhbSB7UGVyY2VudGFnZX0gJHRocmVzaG9sZCBbNjAlXSAtIFRocmVzaG9sZCBvZiBsaWdodG5lc3MgdG8gY2hlY2sgYWdhaW5zdC5cbi8vL1xuLy8vIEByZXR1cm5zIHtDb2xvcn0gVGhlICR5ZXMgY29sb3Igb3IgJG5vIGNvbG9yLlxuQGZ1bmN0aW9uIGZvcmVncm91bmQoJGNvbG9yLCAkeWVzOiAkYmxhY2ssICRubzogJHdoaXRlLCAkdGhyZXNob2xkOiA2MCUpIHtcbiAgQGlmICRjb2xvciA9PSB0cmFuc3BhcmVudCB7XG4gICAgJGNvbG9yOiAkYm9keS1iYWNrZ3JvdW5kO1xuICB9XG4gIEBpZiAobGlnaHRuZXNzKCRjb2xvcikgPiAkdGhyZXNob2xkKSB7XG4gICAgQHJldHVybiAkeWVzO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRubztcbiAgfVxufVxuXG4vLy8gU2NhbGVzIGEgY29sb3IgdG8gYmUgbGlnaHRlciBpZiBpdCdzIGxpZ2h0LCBvciBkYXJrZXIgaWYgaXQncyBkYXJrLiBVc2UgdGhpcyBmdW5jdGlvbiB0byB0aW50IGEgY29sb3IgYXBwcm9wcmlhdGUgdG8gaXRzIGxpZ2h0bmVzcy5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIENvbG9yIHRvIHNjYWxlLlxuLy8vIEBwYXJhbSB7UGVyY2VudGFnZX0gJHNjYWxlIFs1JV0gLSBBbW91bnQgdG8gc2NhbGUgdXAgb3IgZG93bi5cbi8vLyBAcGFyYW0ge1BlcmNlbnRhZ2V9ICR0aHJlc2hvbGQgWzQwJV0gLSBUaHJlc2hvbGQgb2YgbGlnaHRuZXNzIHRvIGNoZWNrIGFnYWluc3QuXG4vLy9cbi8vLyBAcmV0dXJucyB7Q29sb3J9IEEgc2NhbGVkIGNvbG9yLlxuQGZ1bmN0aW9uIHNtYXJ0LXNjYWxlKCRjb2xvciwgJHNjYWxlOiA1JSwgJHRocmVzaG9sZDogNDAlKSB7XG4gIEBpZiBsaWdodG5lc3MoJGNvbG9yKSA+ICR0aHJlc2hvbGQge1xuICAgICRzY2FsZTogLSRzY2FsZTtcbiAgfVxuICBAcmV0dXJuIHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJHNjYWxlKTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tY2hlY2tib3gge1xuICBbdHlwZT0nZmlsZSddLFxuICBbdHlwZT0nY2hlY2tib3gnXSxcbiAgW3R5cGU9J3JhZGlvJ10ge1xuICAgIG1hcmdpbjogMCAwICRmb3JtLXNwYWNpbmc7XG4gIH1cblxuICAvLyBTdHlsZXMgZm9yIGlucHV0L2xhYmVsIHNpYmxpbmdzXG4gIFt0eXBlPSdjaGVja2JveCddICsgbGFiZWwsXG4gIFt0eXBlPSdyYWRpbyddICsgbGFiZWwge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkZm9ybS1zcGFjaW5nICogMC41O1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkZm9ybS1zcGFjaW5nO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICB9XG5cbiAgLy8gU3R5bGVzIGZvciBpbnB1dHMgaW5zaWRlIGxhYmVsc1xuICBsYWJlbCA+IFt0eXBlPSdjaGVja2JveCddLFxuICBsYWJlbCA+IFt0eXBlPSdsYWJlbCddIHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJGZvcm0tc3BhY2luZyAqIDAuNTtcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSBmaWxlIGlucHV0IHdpZHRoXG4gIFt0eXBlPSdmaWxlJ10ge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmb3Jtc1xuLy8vL1xuXG4vLy8gQ29sb3IgZm9yIGZvcm0gbGFiZWxzLlxuLy8vIEB0eXBlIENvbG9yXG4kZm9ybS1sYWJlbC1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIGZvciBmb3JtIGxhYmVscy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmb3JtLWxhYmVsLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3ZWlnaHQgZm9yIGZvcm0gbGFiZWxzLlxuLy8vIEB0eXBlIEtleXdvcmRcbiRmb3JtLWxhYmVsLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBMaW5lIGhlaWdodCBmb3IgZm9ybSBsYWJlbHMuIFRoZSBoaWdoZXIgdGhlIG51bWJlciwgdGhlIG1vcmUgc3BhY2UgYmV0d2VlbiB0aGUgbGFiZWwgYW5kIGl0cyBpbnB1dCBmaWVsZC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmb3JtLWxhYmVsLWxpbmUtaGVpZ2h0OiAxLjggIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3JtLWxhYmVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1zaXplOiAkZm9ybS1sYWJlbC1mb250LXNpemU7XG4gIGZvbnQtd2VpZ2h0OiAkZm9ybS1sYWJlbC1mb250LXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRmb3JtLWxhYmVsLWxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJGZvcm0tbGFiZWwtY29sb3I7XG59XG5cbkBtaXhpbiBmb3JtLWxhYmVsLW1pZGRsZSB7XG4gICRpbnB1dC1ib3JkZXItd2lkdGg6IGdldC1ib3JkZXItdmFsdWUoJGlucHV0LWJvcmRlciwgd2lkdGgpO1xuICBtYXJnaW46IDAgMCAkZm9ybS1zcGFjaW5nO1xuICBwYWRkaW5nOiAoJGZvcm0tc3BhY2luZyAvIDIgKyByZW0tY2FsYygkaW5wdXQtYm9yZGVyLXdpZHRoKSkgMDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1sYWJlbCB7XG4gIGxhYmVsIHtcbiAgICBAaW5jbHVkZSBmb3JtLWxhYmVsO1xuXG4gICAgJi5taWRkbGUge1xuICAgICAgQGluY2x1ZGUgZm9ybS1sYWJlbC1taWRkbGU7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmb3Jtc1xuLy8vL1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgaGVscCB0ZXh0LlxuLy8vIEB0eXBlIENvbG9yXG4kaGVscHRleHQtY29sb3I6ICMzMzMgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBmb3IgaGVscCB0ZXh0LlxuLy8vIEB0eXBlIE51bWJlclxuJGhlbHB0ZXh0LWZvbnQtc2l6ZTogcmVtLWNhbGMoMTMpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHN0eWxlIGZvciBoZWxwIHRleHQuXG4vLy8gQHR5cGUgS2V5d29yZFxuJGhlbHB0ZXh0LWZvbnQtc3R5bGU6IGl0YWxpYyAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1oZWxwdGV4dCB7XG4gIC5oZWxwLXRleHQge1xuICAgICRtYXJnaW4tdG9wOiAoJGZvcm0tc3BhY2luZyAqIDAuNSkgKiAtMTtcblxuICAgIG1hcmdpbi10b3A6ICRtYXJnaW4tdG9wO1xuICAgIGZvbnQtc2l6ZTogJGhlbHB0ZXh0LWZvbnQtc2l6ZTtcbiAgICBmb250LXN0eWxlOiAkaGVscHRleHQtZm9udC1zdHlsZTtcbiAgICBjb2xvcjogJGhlbHB0ZXh0LWNvbG9yO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmb3Jtc1xuLy8vL1xuXG4vLy8gQ29sb3Igb2YgbGFiZWxzIHByZWZpeGVkIHRvIGFuIGlucHV0LlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtcHJlZml4LWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGxhYmVscyBwcmVmaXhlZCB0byBhbiBpbnB1dC5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LXByZWZpeC1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBhcm91bmQgbGFiZWxzIHByZWZpeGVkIHRvIGFuIGlucHV0LlxuLy8vIEB0eXBlIEJvcmRlclxuJGlucHV0LXByZWZpeC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBMZWZ0L3JpZ2h0IHBhZGRpbmcgb2YgYW4gcHJlL3Bvc3RmaXhlZCBpbnB1dCBsYWJlbFxuJGlucHV0LXByZWZpeC1wYWRkaW5nOiAxcmVtICFkZWZhdWx0O1xuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLXByZXBvc3RmaXgge1xuICAkaGVpZ2h0OiAoJGlucHV0LWZvbnQtc2l6ZSArICRmb3JtLXNwYWNpbmcgKiAxLjUpO1xuXG5cbiAgLmlucHV0LWdyb3VwIHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tYm90dG9tOiAkZm9ybS1zcGFjaW5nO1xuXG4gICAgJiA+ICo6Zmlyc3QtY2hpbGQge1xuICAgICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgMCAwICRnbG9iYWwtcmFkaXVzO1xuICAgIH1cblxuICAgICYgPiAqOmxhc3QtY2hpbGQge1xuICAgICAgJiA+ICoge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwICRnbG9iYWwtcmFkaXVzICRnbG9iYWwtcmFkaXVzIDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJWlucHV0LWdyb3VwLWNoaWxkIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIG1hcmdpbjogMDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB9XG5cbiAgLmlucHV0LWdyb3VwLWxhYmVsIHtcbiAgICBAZXh0ZW5kICVpbnB1dC1ncm91cC1jaGlsZDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgd2lkdGg6IDElO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBwYWRkaW5nOiAwICRpbnB1dC1wcmVmaXgtcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiAkaW5wdXQtcHJlZml4LWJhY2tncm91bmQ7XG4gICAgY29sb3I6ICRpbnB1dC1wcmVmaXgtY29sb3I7XG4gICAgYm9yZGVyOiAkaW5wdXQtcHJlZml4LWJvcmRlcjtcblxuICAgIEBpZiBoYXMtdmFsdWUoJGlucHV0LXByZWZpeC1ib3JkZXIpIHtcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItI3skZ2xvYmFsLXJpZ2h0fTogMDtcbiAgICAgIH1cblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLSN7JGdsb2JhbC1sZWZ0fTogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuaW5wdXQtZ3JvdXAtZmllbGQge1xuICAgIEBleHRlbmQgJWlucHV0LWdyb3VwLWNoaWxkO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICB9XG5cbiAgLmlucHV0LWdyb3VwLWJ1dHRvbiB7XG4gICAgQGV4dGVuZCAlaW5wdXQtZ3JvdXAtY2hpbGQ7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB3aWR0aDogMSU7XG5cbiAgICBhLFxuICAgIGlucHV0LFxuICAgIGJ1dHRvbiB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmb3Jtc1xuLy8vL1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgYXJvdW5kIGN1c3RvbSBmaWVsZHNldHMuXG4vLy8gQHR5cGUgQm9yZGVyXG4kZmllbGRzZXQtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGluc2lkZSBjdXN0b20gZmllbGRzZXRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGZpZWxkc2V0LXBhZGRpbmc6IHJlbS1jYWxjKDIwKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbWFyZ2luIGFyb3VuZCBjdXN0b20gZmllbGRzZXRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGZpZWxkc2V0LW1hcmdpbjogcmVtLWNhbGMoMTggMCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgYmV0d2VlbiB0aGUgbGVnZW5kIHRleHQgYW5kIGZpZWxkc2V0IGJvcmRlci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsZWdlbmQtcGFkZGluZzogcmVtLWNhbGMoMCAzKSAhZGVmYXVsdDtcblxuQG1peGluIGZpZWxkc2V0IHtcbiAgYm9yZGVyOiAkZmllbGRzZXQtYm9yZGVyO1xuICBwYWRkaW5nOiAkZmllbGRzZXQtcGFkZGluZztcbiAgbWFyZ2luOiAkZmllbGRzZXQtbWFyZ2luO1xuXG4gIGxlZ2VuZCB7XG4gICAgLy8gQ292ZXJzIHVwIHRoZSBmaWVsZHNldCdzIGJvcmRlciB0byBjcmVhdGUgYXJ0aWZpY2lhbCBwYWRkaW5nXG4gICAgYmFja2dyb3VuZDogJGJvZHktYmFja2dyb3VuZDtcbiAgICBwYWRkaW5nOiAkbGVnZW5kLXBhZGRpbmc7XG4gICAgbWFyZ2luOiAwO1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IHJlbS1jYWxjKC0zKTtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLWZpZWxkc2V0IHtcbiAgZmllbGRzZXQge1xuICAgIGJvcmRlcjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuXG4gIGxlZ2VuZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGZvcm0tc3BhY2luZyAqIDAuNTtcbiAgfVxuXG4gIC5maWVsZHNldCB7XG4gICAgQGluY2x1ZGUgZmllbGRzZXQ7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBzZWxlY3QgbWVudXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRzZWxlY3QtYmFja2dyb3VuZDogI2ZhZmFmYSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIHRoZSBkcm9wZG93biB0cmlhbmdsZSBpbnNpZGUgc2VsZWN0IG1lbnVzLiBTZXQgdG8gYHRyYW5zcGFyZW50YCB0byByZW1vdmUgaXQgZW50aXJlbHkuXG4vLy8gQHR5cGUgQ29sb3JcbiRzZWxlY3QtdHJpYW5nbGUtY29sb3I6ICMzMzMgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHJhZGl1cyBmb3Igc2VsZWN0IG1lbnVzLlxuLy8vIEB0eXBlIENvbG9yXG4kc2VsZWN0LXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3JtLXNlbGVjdCB7XG4gICRoZWlnaHQ6ICgkaW5wdXQtZm9udC1zaXplICsgKCRmb3JtLXNwYWNpbmcgKiAxLjUpIC0gcmVtLWNhbGMoMSkpO1xuXG4gIGhlaWdodDogJGhlaWdodDtcbiAgcGFkZGluZzogKCRmb3JtLXNwYWNpbmcgLyAyKTtcbiAgYm9yZGVyOiAkaW5wdXQtYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgbWFyZ2luOiAwIDAgJGZvcm0tc3BhY2luZztcbiAgZm9udC1zaXplOiAkaW5wdXQtZm9udC1zaXplO1xuICBmb250LWZhbWlseTogJGlucHV0LWZvbnQtZmFtaWx5O1xuICBsaW5lLWhlaWdodDogbm9ybWFsO1xuICBjb2xvcjogJGlucHV0LWNvbG9yO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2VsZWN0LWJhY2tncm91bmQ7XG4gIGJvcmRlci1yYWRpdXM6ICRzZWxlY3QtcmFkaXVzO1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcblxuICBAaWYgJHNlbGVjdC10cmlhbmdsZS1jb2xvciAhPSB0cmFuc3BhcmVudCB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC10cmlhbmdsZSgkc2VsZWN0LXRyaWFuZ2xlLWNvbG9yKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDlweCA2cHg7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogJGdsb2JhbC1yaWdodCAoJGZvcm0tc3BhY2luZyAvIDIpIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICB9XG4gIC8vIERpc2FibGVkIHN0YXRlXG4gICY6ZGlzYWJsZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1iYWNrZ3JvdW5kLWRpc2FibGVkO1xuICAgIGN1cnNvcjogJGlucHV0LWN1cnNvci1kaXNhYmxlZDtcbiAgfVxuXG4gIC8vIEhpZGUgdGhlIGRyb3Bkb3duIGFycm93IHNob3duIGluIG5ld2VyIElFIHZlcnNpb25zXG4gICY6Oi1tcy1leHBhbmQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAmW211bHRpcGxlXSB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tc2VsZWN0IHtcbiAgc2VsZWN0IHtcbiAgICBAaW5jbHVkZSBmb3JtLXNlbGVjdDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbi8vLyBDcmVhdGVzIGEgQ1NTIHRyaWFuZ2xlLCB3aGljaCBjYW4gYmUgdXNlZCBmb3IgZHJvcGRvd24gYXJyb3dzLCBkcm9wZG93biBwaXBzLCBhbmQgbW9yZS4gVXNlIHRoaXMgbWl4aW4gaW5zaWRlIGEgYCY6OmJlZm9yZWAgb3IgYCY6OmFmdGVyYCBzZWxlY3RvciwgdG8gYXR0YWNoIHRoZSB0cmlhbmdsZSB0byBhbiBleGlzdGluZyBlbGVtZW50LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0cmlhbmdsZS1zaXplIC0gV2lkdGggb2YgdGhlIHRyaWFuZ2xlLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICR0cmlhbmdsZS1jb2xvciAtIENvbG9yIG9mIHRoZSB0cmlhbmdsZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR0cmlhbmdsZS1kaXJlY3Rpb24gLSBEaXJlY3Rpb24gdGhlIHRyaWFuZ2xlIHBvaW50cy4gQ2FuIGJlIGB1cGAsIGByaWdodGAsIGBkb3duYCwgb3IgYGxlZnRgLlxuQG1peGluIGNzcy10cmlhbmdsZShcbiAgJHRyaWFuZ2xlLXNpemUsXG4gICR0cmlhbmdsZS1jb2xvcixcbiAgJHRyaWFuZ2xlLWRpcmVjdGlvblxuKSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcbiAgYm9yZGVyOiBpbnNldCAkdHJpYW5nbGUtc2l6ZTtcblxuICBAaWYgKCR0cmlhbmdsZS1kaXJlY3Rpb24gPT0gZG93bikge1xuICAgIGJvcmRlci1jb2xvcjogJHRyaWFuZ2xlLWNvbG9yIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci10b3Atc3R5bGU6IHNvbGlkO1xuICB9XG4gIEBpZiAoJHRyaWFuZ2xlLWRpcmVjdGlvbiA9PSB1cCkge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgJHRyaWFuZ2xlLWNvbG9yO1xuICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xuICB9XG4gIEBpZiAoJHRyaWFuZ2xlLWRpcmVjdGlvbiA9PSByaWdodCkge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgJHRyaWFuZ2xlLWNvbG9yO1xuICAgIGJvcmRlci1sZWZ0LXN0eWxlOiBzb2xpZDtcbiAgfVxuICBAaWYgKCR0cmlhbmdsZS1kaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgJHRyaWFuZ2xlLWNvbG9yIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1yaWdodC1zdHlsZTogc29saWQ7XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBtZW51IGljb24gd2l0aCBhIHNldCB3aWR0aCwgaGVpZ2h0LCBudW1iZXIgb2YgYmFycywgYW5kIGNvbG9ycy4gVGhlIG1peGluIHVzZXMgdGhlIGhlaWdodCBvZiB0aGUgaWNvbiBhbmQgdGhlIHdlaWdodCBvZiB0aGUgYmFycyB0byBkZXRlcm1pbmUgc3BhY2luZy4gPGRpdiBjbGFzcz1cImRvY3MtZXhhbXBsZS1idXJnZXJcIj48L2Rpdj5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIENvbG9yIHRvIHVzZSBmb3IgdGhlIGljb24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yLWhvdmVyIC0gQ29sb3IgdG8gdXNlIHdoZW4gdGhlIGljb24gaXMgaG92ZXJlZCBvdmVyLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggLSBXaWR0aCBvZiB0aGUgaWNvbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGhlaWdodCAtIEhlaWdodCBvZiB0aGUgaWNvbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHdlaWdodCAtIEhlaWdodCBvZiBpbmRpdmlkdWFsIGJhcnMgaW4gdGhlIGljb24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXJzIC0gTnVtYmVyIG9mIGJhcnMgaW4gdGhlIGljb24uXG5AbWl4aW4gaGFtYnVyZ2VyKFxuICAkY29sb3I6IGJsYWNrLFxuICAkY29sb3ItaG92ZXI6ICM2NjYsXG4gICR3aWR0aDogMjBweCxcbiAgJGhlaWdodDogMTZweCxcbiAgJHdlaWdodDogMnB4LFxuICAkYmFyczogM1xuKSB7XG4gIC8vIGJveC1zaGFkb3cgQ1NTIG91dHB1dFxuICAkc2hhZG93OiAoKTtcbiAgJGhvdmVyLXNoYWRvdzogKCk7XG5cbiAgLy8gU3BhY2luZyBiZXR3ZWVuIGJhcnMgaXMgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgdG90YWwgaGVpZ2h0IG9mIHRoZSBpY29uIGFuZCB0aGUgd2VpZ2h0IG9mIGVhY2ggYmFyXG4gICRzcGFjaW5nOiBmbG9vcigoJGhlaWdodCAtICgkd2VpZ2h0ICogJGJhcnMpKSAvICgkYmFycyAtIDEpKTtcblxuICAvLyBJY29uIGNvbnRhaW5lclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB3aWR0aDogJHdpZHRoO1xuICBoZWlnaHQ6ICRoZWlnaHQ7XG5cbiAgLy8gSWNvbiBiYXJzXG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAkd2VpZ2h0O1xuICAgIGJhY2tncm91bmQ6ICRjb2xvcjtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcblxuICAgIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJGJhcnMge1xuICAgICAgJG9mZnNldDogKCR3ZWlnaHQgKyAkc3BhY2luZykgKiAoJGkgLSAxKTtcbiAgICAgICRzaGFkb3c6IGFwcGVuZCgkc2hhZG93LCAwICRvZmZzZXQgMCAkY29sb3IsIGNvbW1hKTtcbiAgICB9XG5cbiAgICBib3gtc2hhZG93OiAkc2hhZG93O1xuICB9XG5cbiAgLy8gSG92ZXIgc3RhdGVcbiAgQGlmICRjb2xvci1ob3ZlciB7XG4gICAgLy8gR2VuZXJhdGUgQ1NTXG4gICAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkYmFycyB7XG4gICAgICAkb2Zmc2V0OiAoJHdlaWdodCArICRzcGFjaW5nKSAqICgkaSAtIDEpO1xuICAgICAgJGhvdmVyLXNoYWRvdzogYXBwZW5kKCRob3Zlci1zaGFkb3csIDAgJG9mZnNldCAwICRjb2xvci1ob3ZlciwgY29tbWEpO1xuICAgIH1cblxuICAgICY6aG92ZXI6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRjb2xvci1ob3ZlcjtcbiAgICAgIGJveC1zaGFkb3c6ICRob3Zlci1zaGFkb3c7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIGEgZG93bndhcmQtZmFjaW5nIHRyaWFuZ2xlIGFzIGEgYmFja2dyb3VuZCBpbWFnZSB0byBhbiBlbGVtZW50LiBUaGUgaW1hZ2UgaXMgZm9ybWF0dGVkIGFzIGFuIFNWRywgbWFraW5nIGl0IGVhc3kgdG8gY2hhbmdlIHRoZSBjb2xvci4gQmVjYXVzZSBJbnRlcm5ldCBFeHBsb3JlciBkb2Vzbid0IHN1cHBvcnQgZW5jb2RlZCBTVkdzIGFzIGJhY2tncm91bmQgaW1hZ2VzLCBhIFBORyBmYWxsYmFjayBpcyBhbHNvIGluY2x1ZGVkLlxuLy8vIFRoZXJlIGFyZSB0d28gUE5HIGZhbGxiYWNrczogYSBibGFjayB0cmlhbmdsZSBhbmQgYSB3aGl0ZSB0cmlhbmdsZS4gVGhlIG9uZSB1c2VkIGRlcGVuZHMgb24gdGhlIGxpZ2h0bmVzcyBvZiB0aGUgaW5wdXQgY29sb3IuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRibGFja10gLSBDb2xvciB0byB1c2UgZm9yIHRoZSB0cmlhbmdsZS5cbkBtaXhpbiBiYWNrZ3JvdW5kLXRyaWFuZ2xlKCRjb2xvcjogJGJsYWNrKSB7XG4gICRyZ2I6ICdyZ2IoI3tyZWQoJGNvbG9yKX0sICN7Z3JlZW4oJGNvbG9yKX0sICN7Ymx1ZSgkY29sb3IpfSknO1xuXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmVyc2lvbj1cIjEuMVwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMzIgMjRcIj48cG9seWdvbiBwb2ludHM9XCIwLDAgMzIsMCAxNiwyNFwiIHN0eWxlPVwiZmlsbDogI3skcmdifVwiPjwvcG9seWdvbj48L3N2Zz4nKTtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjBcXDApIHtcbiAgICBAaWYgbGlnaHRuZXNzKCRjb2xvcikgPCA1MCUge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQVlDQVlBQUFDYlUvODBBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQUlwSlJFRlVlTnJFa2NrTmdEQU1CQmZSa0V0ME9iUkJCZHNHWFVEZ21RZks0WGhIMm04Y3pRQUF5MjdSM3RzdzRRZmUyeDh1T082b1lMYjZHbE9vcjNHRitzd1VSQU9tVUorUnd0RUpzOVd2VEdFWXhCWHFJMU1RQVpoQ2ZVUUtSekRNVmorVHdyQUlWNmp2U1VFa1lBcjFMU2tjeVRCYi9WK0tZZlg3eEFldXNxM3NMRHRHSDNrRUdBQ1BXSWZsTlpmaFJRQUFBQUJKUlU1RXJrSmdnZz09Jyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFZQ0FZQUFBQ2JVLzgwQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFNQkpSRUZVZU5yRWxsc09oQ0FNUlZzekM5SWx6VTdLQ21WSFRKc29NV1lNVXRweXY5QmdidVhRQjVaU2RnQllZWTR5Y2dCaXZrOEtZRnNRTWZNaVRUQlA0bzNuVXpDS3pPYWJMSmJMeTIvZzMxZXZHa0FnaW5SNC9aZWdLSDVxWDNiSkNzY0EzdDB4M2tnTzV0UUZ5aGhGZjUweFJxRkxieU1VTkpRemd5akdTL3dnQ3B2S3FrUkJwdVdyRTRWOWQrMUU0ZFBVWHFJZzEwN1NRT0UvMkRSUXhNd1REeWdJSW5WREVUOVQzbENvai82ai9WQ21HalpPbDJsS3BaOEFBd0RRUDd6SWltREdGUUFBQUFCSlJVNUVya0pnZ2c9PScpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQXBwbGllcyB0aGUgbWljcm8gY2xlYXJmaXggaGFjayBwb3B1bGFyaXplZCBieSBOaWNvbGFzIEdhbGxhZ2hlci4gSW5jbHVkZSB0aGlzIG1peGluIG9uIGEgY29udGFpbmVyIGlmIGl0cyBjaGlsZHJlbiBhcmUgYWxsIGZsb2F0ZWQsIHRvIGdpdmUgdGhlIGNvbnRhaW5lciBhIHByb3BlciBoZWlnaHQuXG4vLy8gQGxpbmsgaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svIE1pY3JvIENsZWFyZml4IEhhY2tcbkBtaXhpbiBjbGVhcmZpeCB7XG4gICY6OmJlZm9yZSxcbiAgJjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcgJztcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgfVxuXG4gICY6OmFmdGVyIHtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxufVxuXG4vLy8gQWRkcyBDU1MgZm9yIGEgXCJxdWFudGl0eSBxdWVyeVwiIHNlbGVjdG9yIHRoYXQgYXV0b21hdGljYWxseSBzaXplcyBlbGVtZW50cyBiYXNlZCBvbiBob3cgbWFueSB0aGVyZSBhcmUgaW5zaWRlIGEgY29udGFpbmVyLlxuLy8vIEBsaW5rIGh0dHA6Ly9hbGlzdGFwYXJ0LmNvbS9hcnRpY2xlL3F1YW50aXR5LXF1ZXJpZXMtZm9yLWNzcyBRdWFudGl0eSBRdWVyaWVzIGZvciBDU1Ncbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbWF4IC0gTWF4aW11bSBudW1iZXIgb2YgaXRlbXMgdG8gZGV0ZWN0LiBUaGUgaGlnaGVyIHRoaXMgbnVtYmVyIGlzLCB0aGUgbW9yZSBDU1MgdGhhdCdzIHJlcXVpcmVkIHRvIGNvdmVyIGVhY2ggbnVtYmVyIG9mIGl0ZW1zLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGVsZW0gW2xpXSAtIFRhZyB0byB1c2UgZm9yIHNpYmxpbmcgc2VsZWN0b3JzLlxuQG1peGluIGF1dG8td2lkdGgoJG1heCwgJGVsZW06IGxpKSB7XG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJG1heCB7XG4gICAgJjpudGgtbGFzdC1jaGlsZCgjeyRpfSk6Zmlyc3QtY2hpbGQsXG4gICAgJjpudGgtbGFzdC1jaGlsZCgjeyRpfSk6Zmlyc3QtY2hpbGQgfiAjeyRlbGVtfSB7XG4gICAgICB3aWR0aDogcGVyY2VudGFnZSgxIC8gJGkpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gUmVtb3ZlcyB0aGUgZm9jdXMgcmluZyBhcm91bmQgYW4gZWxlbWVudCB3aGVuIGEgbW91c2UgaW5wdXQgaXMgZGV0ZWN0ZWQuXG5AbWl4aW4gZGlzYWJsZS1tb3VzZS1vdXRsaW5lIHtcbiAgW2RhdGEtd2hhdGlucHV0PSdtb3VzZSddICYge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cbn1cblxuLy8vIE1ha2VzIGFuIGVsZW1lbnQgdmlzdWFsbHkgaGlkZGVuLCBidXQgc3RpbGwgYWNjZXNzaWJsZSB0byBrZXlib2FyZHMgYW5kIGFzc2lzdGl2ZSBkZXZpY2VzLlxuLy8vIEBsaW5rIGh0dHA6Ly9zbm9vay5jYS9hcmNoaXZlcy9odG1sX2FuZF9jc3MvaGlkaW5nLWNvbnRlbnQtZm9yLWFjY2Vzc2liaWxpdHkgSGlkaW5nIENvbnRlbnQgZm9yIEFjY2Vzc2liaWxpdHlcbkBtaXhpbiBlbGVtZW50LWludmlzaWJsZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICB3aWR0aDogMXB4O1xuICBoZWlnaHQ6IDFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcbn1cblxuLy8vIFJldmVyc2VzIHRoZSBDU1Mgb3V0cHV0IGNyZWF0ZWQgYnkgdGhlIGBlbGVtZW50LWludmlzaWJsZSgpYCBtaXhpbi5cbkBtaXhpbiBlbGVtZW50LWludmlzaWJsZS1vZmYge1xuICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogYXV0bztcbiAgd2lkdGg6IGF1dG87XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICBjbGlwOiBhdXRvO1xufVxuXG4vLy8gVmVydGljYWxseSBjZW50ZXJzIHRoZSBlbGVtZW50IGluc2lkZSBvZiBpdHMgZmlyc3Qgbm9uLXN0YXRpYyBwYXJlbnQsXG4vLy8gQGxpbmsgaHR0cDovL3d3dy5zaXRlcG9pbnQuY29tL2NlbnRlcmluZy13aXRoLXNhc3MvIENlbnRlcmluZyBXaXRoIFNhc3NcbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG5cbi8vLyBIb3Jpem9udGFsbHkgY2VudGVycyB0aGUgZWxlbWVudCBpbnNpZGUgb2YgaXRzIGZpcnN0IG5vbi1zdGF0aWMgcGFyZW50LFxuLy8vIEBsaW5rIGh0dHA6Ly93d3cuc2l0ZXBvaW50LmNvbS9jZW50ZXJpbmctd2l0aC1zYXNzLyBDZW50ZXJpbmcgV2l0aCBTYXNzXG5AbWl4aW4gaG9yaXpvbnRhbC1jZW50ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xufVxuXG4vLy8gQWJzb2x1dGVseSBjZW50ZXJzIHRoZSBlbGVtZW50IGluc2lkZSBvZiBpdHMgZmlyc3Qgbm9uLXN0YXRpYyBwYXJlbnQsXG4vLy8gQGxpbmsgaHR0cDovL3d3dy5zaXRlcG9pbnQuY29tL2NlbnRlcmluZy13aXRoLXNhc3MvIENlbnRlcmluZyBXaXRoIFNhc3NcbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xufVxuXG4vLyBSZW1vdmUgaW4gNi4xLlxuLy8gVmVydGljYWxseSBjZW50ZXJzIGFuIGVsZW1lbnQgdXNpbmcgYHRyYW5zZm9ybWAuXG5AbWl4aW4gdi1hbGlnbi1taWRkbGUge1xuICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXI7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBhYmlkZVxuLy8vL1xuXG4vLy8gU2V0cyBpZiBlcnJvciBzdHlsZXMgc2hvdWxkIGJlIGFkZGVkIHRvIGlucHV0cy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYWJpZGUtaW5wdXRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBpZiBlcnJvciBzdHlsZXMgc2hvdWxkIGJlIGFkZGVkIHRvIGxhYmVscy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYWJpZGUtbGFiZWxzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciB0byB1c2UgZm9yIGludmFsaWQgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1iYWNrZ3JvdW5kLWludmFsaWQ6ICRhbGVydC1jb2xvciAhZGVmYXVsdDtcblxuLy8vIENvbG9yIHRvIHVzZSBmb3IgbGFiZWxzIG9mIGludmFsaWQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kZm9ybS1sYWJlbC1jb2xvci1pbnZhbGlkOiAkYWxlcnQtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIGZvcm0gZXJyb3IgdGV4dC5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LWVycm9yLWNvbG9yOiAkYWxlcnQtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBmb3IgZm9ybSBlcnJvciB0ZXh0LlxuLy8vIEB0eXBlIE51bWJlclxuJGlucHV0LWVycm9yLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHdlaWdodCBmb3IgZm9ybSBlcnJvciB0ZXh0LlxuLy8vIEB0eXBlIEtleXdvcmRcbiRpbnB1dC1lcnJvci1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcblxuLy8vIFN0eWxlcyB0aGUgYmFja2dyb3VuZCBhbmQgYm9yZGVyIG9mIGFuIGlucHV0IGZpZWxkIHRvIGhhdmUgYW4gZXJyb3Igc3RhdGUuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZCBbJGFsZXJ0LWNvbG9yXSAtIENvbG9yIHRvIHVzZSBmb3IgdGhlIGJhY2tncm91bmQgYW5kIGJvcmRlci5cbkBtaXhpbiBmb3JtLWlucHV0LWVycm9yKFxuICAkYmFja2dyb3VuZDogJGFsZXJ0LWNvbG9yXG4pIHtcbiAgJjpub3QoOmZvY3VzKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkYmFja2dyb3VuZCwgMC4xKTtcbiAgICBib3JkZXItY29sb3I6ICRiYWNrZ3JvdW5kO1xuICB9XG59XG5cbi8vLyBBZGRzIGVycm9yIHN0eWxlcyB0byBhIGZvcm0gZWxlbWVudCwgdXNpbmcgdGhlIHZhbHVlcyBpbiB0aGUgc2V0dGluZ3MgZmlsZS5cbkBtaXhpbiBmb3JtLWVycm9yIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgbWFyZ2luLXRvcDogJGZvcm0tc3BhY2luZyAqIC0wLjU7XG4gIG1hcmdpbi1ib3R0b206ICRmb3JtLXNwYWNpbmc7XG4gIGZvbnQtc2l6ZTogJGlucHV0LWVycm9yLWZvbnQtc2l6ZTtcbiAgZm9udC13ZWlnaHQ6ICRpbnB1dC1lcnJvci1mb250LXdlaWdodDtcbiAgY29sb3I6ICRpbnB1dC1lcnJvci1jb2xvcjtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1lcnJvciB7XG4gIEBpZiAkYWJpZGUtaW5wdXRzIHtcbiAgICAvLyBFcnJvciBjbGFzcyBmb3IgaW52YWxpZCBpbnB1dHNcbiAgICAuaXMtaW52YWxpZC1pbnB1dCB7XG4gICAgICBAaW5jbHVkZSBmb3JtLWlucHV0LWVycm9yO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkYWJpZGUtbGFiZWxzIHtcbiAgICAvLyBFcnJvciBjbGFzcyBmb3IgbGFiZWxzIG9mIGludmFsaWQgb3V0cHV0c1xuICAgIC5pcy1pbnZhbGlkLWxhYmVsIHtcbiAgICAgIGNvbG9yOiAkZm9ybS1sYWJlbC1jb2xvci1pbnZhbGlkO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZvcm0gZXJyb3IgZWxlbWVudFxuICAuZm9ybS1lcnJvciB7XG4gICAgQGluY2x1ZGUgZm9ybS1lcnJvcjtcblxuICAgICYuaXMtdmlzaWJsZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8gSGlkZSBhbiBlbGVtZW50IGJ5IGRlZmF1bHQsIG9ubHkgZGlzcGxheWluZyBpdCBhYm92ZSBhIGNlcnRhaW4gc2NyZWVuIHNpemUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSAtIEJyZWFrcG9pbnQgdG8gdXNlLiAqKk11c3QgYmUgYSBicmVha3BvaW50IGRlZmluZWQgaW4gYCRicmVha3BvaW50c2AuKipcbkBtaXhpbiBzaG93LWZvcigkc2l6ZSkge1xuICAkc2l6ZTogbWFwLWdldCgkYnJlYWtwb2ludHMsICRzaXplKTtcbiAgJHNpemU6IC16Zi1icC10by1lbSgkc2l6ZSkgLSAoMS8xNik7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSBkb3duKSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8vLyBIaWRlIGFuIGVsZW1lbnQgYnkgZGVmYXVsdCwgb25seSBkaXNwbGF5aW5nIGl0IHdpdGhpbiBhIGNlcnRhaW4gYnJlYWtwb2ludC5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gQnJlYWtwb2ludCB0byB1c2UuICoqTXVzdCBiZSBhIGJyZWFrcG9pbnQgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnRzYC4qKlxuQG1peGluIHNob3ctZm9yLW9ubHkoJHNpemUpIHtcbiAgJGxvd2VyLWJvdW5kLXNpemU6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkc2l6ZSk7XG4gICR1cHBlci1ib3VuZC1zaXplOiAtemYtbWFwLW5leHQoJGJyZWFrcG9pbnRzLCAkc2l6ZSk7XG5cbiAgLy8gbW9yZSBvZnRlbiB0aGFuIG5vdCB0aGlzIHdpbGwgYmUgY29ycmVjdCwganVzdCBvbmUgdGltZSByb3VuZCB0aGUgbG9vcCBpdCB3b24ndCBzbyBzZXQgaW4gc2NvcGUgaGVyZVxuICAkbG93ZXItYm91bmQ6IC16Zi1icC10by1lbSgkbG93ZXItYm91bmQtc2l6ZSkgLSAoMS8xNik7XG4gIC8vIHRlc3QgYWN0dWFsIGxvd2VyLWJvdW5kLXNpemUsIGlmIDAgc2V0IGl0IHRvIDBlbVxuICBAaWYgJGxvd2VyLWJvdW5kLXNpemUgPT0gMCB7XG4gICAgJGxvd2VyLWJvdW5kOiAtemYtYnAtdG8tZW0oJGxvd2VyLWJvdW5kLXNpemUpO1xuICB9XG5cbiAgQGlmICR1cHBlci1ib3VuZC1zaXplID09IG51bGwge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRsb3dlci1ib3VuZCkge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJHVwcGVyLWJvdW5kOiAtemYtYnAtdG8tZW0oJHVwcGVyLWJvdW5kLXNpemUpO1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRsb3dlci1ib3VuZCksIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJHVwcGVyLWJvdW5kKSB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8vIFNob3cgYW4gZWxlbWVudCBieSBkZWZhdWx0LCBhbmQgaGlkZSBpdCBhYm92ZSBhIGNlcnRhaW4gc2NyZWVuIHNpemUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSAtIEJyZWFrcG9pbnQgdG8gdXNlLiAqKk11c3QgYmUgYSBicmVha3BvaW50IGRlZmluZWQgaW4gYCRicmVha3BvaW50c2AuKipcbkBtaXhpbiBoaWRlLWZvcigkc2l6ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8vLyBTaG93IGFuIGVsZW1lbnQgYnkgZGVmYXVsdCwgYW5kIGhpZGUgaXQgYWJvdmUgYSBjZXJ0YWluIHNjcmVlbiBzaXplLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgLSBCcmVha3BvaW50IHRvIHVzZS4gKipNdXN0IGJlIGEgYnJlYWtwb2ludCBkZWZpbmVkIGluIGAkYnJlYWtwb2ludHNgLioqXG5AbWl4aW4gaGlkZS1mb3Itb25seSgkc2l6ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplIG9ubHkpIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tdmlzaWJpbGl0eS1jbGFzc2VzIHtcbiAgLy8gQmFzaWMgaGlkaW5nIGNsYXNzZXNcbiAgLmhpZGUge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5pbnZpc2libGUge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgfVxuXG4gIC8vIFJlc3BvbnNpdmUgdmlzaWJpbGl0eSBjbGFzc2VzXG4gIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgIEBpZiAkc2l6ZSAhPSBzbWFsbCB7XG4gICAgICAuaGlkZS1mb3ItI3skc2l6ZX0ge1xuICAgICAgICBAaW5jbHVkZSBoaWRlLWZvcigkc2l6ZSk7XG4gICAgICB9XG5cbiAgICAgIC5zaG93LWZvci0jeyRzaXplfSB7XG4gICAgICAgIEBpbmNsdWRlIHNob3ctZm9yKCRzaXplKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuaGlkZS1mb3ItI3skc2l6ZX0tb25seSB7XG4gICAgICBAaW5jbHVkZSBoaWRlLWZvci1vbmx5KCRzaXplKTtcbiAgICB9XG5cbiAgICAuc2hvdy1mb3ItI3skc2l6ZX0tb25seSB7XG4gICAgICBAaW5jbHVkZSBzaG93LWZvci1vbmx5KCRzaXplKTtcbiAgICB9XG4gIH1cblxuICAvLyBTY3JlZW4gcmVhZGVyIHZpc2liaWxpdHkgY2xhc3Nlc1xuICAvLyBOZWVkIGEgXCJoaWRlLWZvci1zclwiIGNsYXNzPyBBZGQgYXJpYS1oaWRkZW49J3RydWUnIHRvIHRoZSBlbGVtZW50XG4gIC5zaG93LWZvci1zcixcbiAgLnNob3ctb24tZm9jdXMge1xuICAgIEBpbmNsdWRlIGVsZW1lbnQtaW52aXNpYmxlO1xuICB9XG5cbiAgLy8gT25seSBkaXNwbGF5IHRoZSBlbGVtZW50IHdoZW4gaXQncyBmb2N1c2VkXG4gIC5zaG93LW9uLWZvY3VzIHtcbiAgICAmOmFjdGl2ZSxcbiAgICAmOmZvY3VzIHtcbiAgICAgIEBpbmNsdWRlIGVsZW1lbnQtaW52aXNpYmxlLW9mZjtcbiAgICB9XG4gIH1cblxuICAvLyBMYW5kc2NhcGUgYW5kIHBvcnRyYWl0IHZpc2liaWxpdHlcbiAgLnNob3ctZm9yLWxhbmRzY2FwZSxcbiAgLmhpZGUtZm9yLXBvcnRyYWl0IHtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYW5kc2NhcGUpIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChwb3J0cmFpdCkge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gIC5oaWRlLWZvci1sYW5kc2NhcGUsXG4gIC5zaG93LWZvci1wb3J0cmFpdCB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYW5kc2NhcGUpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHBvcnRyYWl0KSB7XG4gICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYnJlYWRjcnVtYnNcbi8vLy9cblxuLy8vIE1hcmdpbiBhcm91bmQgYSBicmVhZGNydW1icyBjb250YWluZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnJlYWRjcnVtYnMtbWFyZ2luOiAwIDAgJGdsb2JhbC1tYXJnaW4gMCAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBvZiBicmVhZGNydW1iIGxpbmtzLlxuLy8vIEB0eXBlIE51bWJlclxuJGJyZWFkY3J1bWJzLWl0ZW0tZm9udC1zaXplOiByZW0tY2FsYygxMSkgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiBicmVhZGNydW1iIGxpbmtzLlxuLy8vIEB0eXBlIENvbG9yXG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiB0aGUgYWN0aXZlIGJyZWFkY3J1bWIgbGluay5cbi8vLyBAdHlwZSBDb2xvclxuJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3ItY3VycmVudDogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gT3BhY2l0eSBvZiBkaXNhYmxlZCBicmVhZGNydW1iIGxpbmtzLlxuLy8vIEB0eXBlIE51bWJlclxuJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3ItZGlzYWJsZWQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIE1hcmdpbiBiZXR3ZWVuIGJyZWFkY3J1bWIgaXRlbXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnJlYWRjcnVtYnMtaXRlbS1tYXJnaW46IDAuNzVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIG1ha2VzIGJyZWFkY3J1bWIgbGlua3MgdXBwZXJjYXNlLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRicmVhZGNydW1icy1pdGVtLXVwcGVyY2FzZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgYWRkcyBhIHNsYXNoIGJldHdlZW4gYnJlYWRjcnVtYiBsaW5rcy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYnJlYWRjcnVtYnMtaXRlbS1zbGFzaDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGJyZWFkY3J1bWJzIGNvbnRhaW5lciwgYWxvbmcgd2l0aCB0aGUgc3R5bGVzIGZvciB0aGUgYDxsaT5gIGFuZCBgPGE+YCBlbGVtZW50cyBpbnNpZGUgb2YgaXQuXG5AbWl4aW4gYnJlYWRjcnVtYnMtY29udGFpbmVyIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIG1hcmdpbjogJGJyZWFkY3J1bWJzLW1hcmdpbjtcblxuICAvLyBJdGVtIHdyYXBwZXJcbiAgbGkge1xuICAgIGZsb2F0OiAjeyRnbG9iYWwtbGVmdH07XG4gICAgY29sb3I6ICRicmVhZGNydW1icy1pdGVtLWNvbG9yLWN1cnJlbnQ7XG4gICAgZm9udC1zaXplOiAkYnJlYWRjcnVtYnMtaXRlbS1mb250LXNpemU7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xuXG4gICAgQGlmICRicmVhZGNydW1icy1pdGVtLXVwcGVyY2FzZSB7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIH1cblxuICAgIEBpZiAkYnJlYWRjcnVtYnMtaXRlbS1zbGFzaCB7XG4gICAgICAvLyBOZWVkIHRvIGVzY2FwZSB0aGUgYmFja3NsYXNoXG4gICAgICAkc2xhc2g6IGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gJ2x0cicsICcvJywgJ1xcXFwnKTtcblxuICAgICAgJjpub3QoOmxhc3QtY2hpbGQpOjphZnRlciB7XG4gICAgICAgIGNvbG9yOiAkbWVkaXVtLWdyYXk7XG4gICAgICAgIGNvbnRlbnQ6ICRzbGFzaDtcbiAgICAgICAgbWFyZ2luOiAwICRicmVhZGNydW1icy1pdGVtLW1hcmdpbjtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0b3A6IDFweDtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRicmVhZGNydW1icy1pdGVtLW1hcmdpbjtcbiAgICB9XG4gIH1cblxuICAvLyBQYWdlIGxpbmtzXG4gIGEge1xuICAgIGNvbG9yOiAkYnJlYWRjcnVtYnMtaXRlbS1jb2xvcjtcblxuICAgICY6aG92ZXIge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWJyZWFkY3J1bWJzIHtcbiAgLmJyZWFkY3J1bWJzIHtcbiAgICBAaW5jbHVkZSBicmVhZGNydW1icy1jb250YWluZXI7XG5cbiAgICAuZGlzYWJsZWQge1xuICAgICAgY29sb3I6ICRicmVhZGNydW1icy1pdGVtLWNvbG9yLWRpc2FibGVkO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgY2FsbG91dFxuLy8vL1xuXG4vLy8gRGVmdWFsdCBiYWNrZ3JvdW5kIGNvbG9yLlxuLy8vIEB0eXBlIENvbG9yXG4kY2FsbG91dC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZhZGUgdmFsdWUgZm9yIGNhbGxvdXQgYmFja2dyb3VuZHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kY2FsbG91dC1iYWNrZ3JvdW5kLWZhZGU6IDg1JSAhZGVmYXVsdDtcblxuLy8vIERlZnVhbHQgYm9yZGVyIHN0eWxlIGZvciBjYWxsb3V0cy5cbi8vLyBAdHlwZSBMaXN0XG4kY2FsbG91dC1ib3JkZXI6IDFweCBzb2xpZCByZ2JhKCRibGFjaywgMC4yNSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvdHRvbSBtYXJnaW4gZm9yIGNhbGxvdXRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGNhbGxvdXQtbWFyZ2luOiAwIDAgMXJlbSAwICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBpbm5lciBwYWRkaW5nIGZvciBjYWxsb3V0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRjYWxsb3V0LXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIGNhbGxvdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kY2FsbG91dC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IGNvbG9yIGZvciBjYWxsb3V0cywgaWYgdGhlIGNhbGxvdXQgaGFzIGEgZGFyayBiYWNrZ3JvdW5kLlxuLy8vIEB0eXBlIENvbG9yXG4kY2FsbG91dC1mb250LWNvbG9yLWFsdDogJGJvZHktYmFja2dyb3VuZCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm9yZGVyIHJhZGl1cyBmb3IgY2FsbG91dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRjYWxsb3V0LXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBBbW91bnQgdG8gdGludCBsaW5rcyB1c2VkIHdpdGhpbiBjb2xvcmVkIHBhbmVscy4gU2V0IHRvIGBmYWxzZWAgdG8gZGlzYWJsZSB0aGlzIGZlYXR1cmUuXG4vLy8gQHR5cGUgTnVtYmVyIHwgQm9vbGVhblxuJGNhbGxvdXQtbGluay10aW50OiAzMCUgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIGJhc2ljIHN0eWxlcyBmb3IgYSBjYWxsb3V0LCBpbmNsdWRpbmcgcGFkZGluZyBhbmQgbWFyZ2luLlxuQG1peGluIGNhbGxvdXQtYmFzZSgpIHtcbiAgbWFyZ2luOiAkY2FsbG91dC1tYXJnaW47XG4gIHBhZGRpbmc6ICRjYWxsb3V0LXBhZGRpbmc7XG4gIGJvcmRlcjogJGNhbGxvdXQtYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkY2FsbG91dC1yYWRpdXM7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgY29sb3I6ICRjYWxsb3V0LWZvbnQtY29sb3I7XG5cbiAgLy8gUmVzcGVjdCB0aGUgcGFkZGluZywgZm9vbC5cbiAgPiA6Zmlyc3QtY2hpbGQge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cblxuICA+IDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbi8vLyBHZW5lcmF0ZSBxdWljayBzdHlsZXMgZm9yIGEgY2FsbG91dCB1c2luZyBhIHNpbmdsZSBjb2xvciBhcyBhIGJhc2VsaW5lLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGNhbGxvdXQtYmFja2dyb3VuZF0gLSBDb2xvciB0byB1c2UuXG5AbWl4aW4gY2FsbG91dC1zdHlsZSgkY29sb3I6ICRjYWxsb3V0LWJhY2tncm91bmQpIHtcbiAgJGJhY2tncm91bmQ6IHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGNhbGxvdXQtYmFja2dyb3VuZC1mYWRlKTtcblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbn1cblxuQG1peGluIGNhbGxvdXQtc2l6ZSgkcGFkZGluZykge1xuICBwYWRkaW5nLXRvcDogJHBhZGRpbmc7XG4gIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmc7XG4gIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG59XG5cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGNhbGxvdXQuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskY2FsbG91dC1iYWNrZ3JvdW5kXSAtIENvbG9yIHRvIHVzZS5cbkBtaXhpbiBjYWxsb3V0KCRjb2xvcjogJGNhbGxvdXQtYmFja2dyb3VuZCkge1xuICBAaW5jbHVkZSBjYWxsb3V0LWJhc2U7XG4gIEBpbmNsdWRlIGNhbGxvdXQtc3R5bGUoJGNvbG9yKTtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tY2FsbG91dCB7XG4gIC5jYWxsb3V0IHtcbiAgICBAaW5jbHVkZSBjYWxsb3V0O1xuXG4gICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkZm91bmRhdGlvbi1jb2xvcnMge1xuICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgIEBpbmNsdWRlIGNhbGxvdXQtc3R5bGUoJGNvbG9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnNtYWxsIHtcbiAgICAgIEBpbmNsdWRlIGNhbGxvdXQtc2l6ZSguNXJlbSk7XG4gICAgfVxuXG4gICAgJi5sYXJnZSB7XG4gICAgICBAaW5jbHVkZSBjYWxsb3V0LXNpemUoM3JlbSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBjbG9zZS1idXR0b25cbi8vLy9cblxuLy8vIERlZmF1bHQgcG9zaXRpb24gb2YgdGhlIGNsb3NlIGJ1dHRvbi4gVGhlIGZpcnN0IHZhbHVlIHNob3VsZCBiZSBgcmlnaHRgIG9yIGBsZWZ0YCwgYW5kIHRoZSBzZWNvbmQgdmFsdWUgc2hvdWxkIGJlIGB0b3BgIG9yIGBib3R0b21gLlxuLy8vIEB0eXBlIExpc3RcbiRjbG9zZWJ1dHRvbi1wb3NpdGlvbjogcmlnaHQgdG9wICFkZWZhdWx0O1xuXG4vLy8gUmlnaHQgKG9yIGxlZnQpIG9mZnNldCBmb3IgYSBjbG9zZSBidXR0b24uXG4vLy8gQHR5cGUgTnVtYmVyXG4kY2xvc2VidXR0b24tb2Zmc2V0LWhvcml6b250YWw6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBUb3AgKG9yIGJvdHRvbSkgb2Zmc2V0IGZvciBhIGNsb3NlIGJ1dHRvbi5cbi8vLyBAdHlwZSBOdW1iZXJcbiRjbG9zZWJ1dHRvbi1vZmZzZXQtdmVydGljYWw6IDAuNXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBzaXplIG9mIHRoZSBjbG9zZSBidXR0b24uXG4vLy8gQHR5cGUgTnVtYmVyXG4kY2xvc2VidXR0b24tc2l6ZTogMmVtICFkZWZhdWx0O1xuXG4vLy8gVGhlIGxpbmUtaGVpZ2h0IG9mIHRoZSBjbG9zZSBidXR0b24uIEl0IGFmZmVjdHMgdGhlIHNwYWNpbmcgb2YgdGhlIGVsZW1lbnQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kY2xvc2VidXR0b24tbGluZWhlaWdodDogMSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgdGhlIGNsb3NlIGJ1dHRvbi5cbi8vLyBAdHlwZSBDb2xvclxuJGNsb3NlYnV0dG9uLWNvbG9yOiAkZGFyay1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiB0aGUgY2xvc2UgYnV0dG9uIHdoZW4gYmVpbmcgaG92ZXJlZCBvbi5cbi8vLyBAdHlwZSBDb2xvclxuJGNsb3NlYnV0dG9uLWNvbG9yLWhvdmVyOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjbG9zZSBidXR0b24sIHVzaW5nIHRoZSBzdHlsZXMgaW4gdGhlIHNldHRpbmdzIHZhcmlhYmxlcy5cbkBtaXhpbiBjbG9zZS1idXR0b24ge1xuICAkeDogbnRoKCRjbG9zZWJ1dHRvbi1wb3NpdGlvbiwgMSk7XG4gICR5OiBudGgoJGNsb3NlYnV0dG9uLXBvc2l0aW9uLCAyKTtcblxuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgY29sb3I6ICRjbG9zZWJ1dHRvbi1jb2xvcjtcbiAgI3skeH06ICRjbG9zZWJ1dHRvbi1vZmZzZXQtaG9yaXpvbnRhbDtcbiAgI3skeX06ICRjbG9zZWJ1dHRvbi1vZmZzZXQtdmVydGljYWw7XG4gIGZvbnQtc2l6ZTogJGNsb3NlYnV0dG9uLXNpemU7XG4gIGxpbmUtaGVpZ2h0OiAkY2xvc2VidXR0b24tbGluZWhlaWdodDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIGNvbG9yOiAkY2xvc2VidXR0b24tY29sb3ItaG92ZXI7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tY2xvc2UtYnV0dG9uIHtcbiAgLmNsb3NlLWJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgY2xvc2UtYnV0dG9uO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBkcmlsbGRvd25cbi8vLy9cblxuLy8vIFRyYW5zaXRpb24gcHJvcGVydHkgdG8gdXNlIGZvciBhbmltYXRpbmcgbWVudXMuXG4vLy8gQHR5cGUgVHJhbnNpdGlvblxuJGRyaWxsZG93bi10cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMgbGluZWFyICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBhcnJvd3MgdG8gZHJpbGxkb3duIGl0ZW1zIHdpdGggc3VibWVudXMsIGFzIHdlbGwgYXMgdGhlIGJhY2sgYnV0dG9uLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRkcmlsbGRvd24tYXJyb3dzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgZHJpbGxkb3duIHN1Ym1lbnVzLlxuLy8vIEB0eXBlIENvbG9yXG4kZHJpbGxkb3duLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tZHJpbGxkb3duLW1lbnUge1xuICAvLyBBcHBsaWVkIHRvIHRoZSBNZW51IGNvbnRhaW5lclxuICAuaXMtZHJpbGxkb3duIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuXG4gIC8vIEFwcGxpZWQgdG8gbmVzdGVkIDx1bD5zXG4gIC5pcy1kcmlsbGRvd24tc3VibWVudSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICAjeyRnbG9iYWwtbGVmdH06IDEwMCU7XG4gICAgei1pbmRleDogLTE7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJhY2tncm91bmQ6ICRkcmlsbGRvd24tYmFja2dyb3VuZDtcbiAgICB0cmFuc2l0aW9uOiAkZHJpbGxkb3duLXRyYW5zaXRpb247XG5cbiAgICAmLmlzLWFjdGl2ZSB7XG4gICAgICB6LWluZGV4OiAxO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBsdHIsIC0xMDAlLCAxMDAlKSk7XG4gICAgfVxuXG4gICAgJi5pcy1jbG9zaW5nIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWChpZigkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IGx0ciwgMTAwJSwgLTEwMCUpKTtcbiAgICB9XG4gIH1cblxuICBAaWYgJGRyaWxsZG93bi1hcnJvd3Mge1xuICAgIC5pcy1kcmlsbGRvd24tc3VibWVudS1wYXJlbnQgPiBhIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoNnB4LCAkcHJpbWFyeS1jb2xvciwgJGdsb2JhbC1yaWdodCk7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIG1hcmdpbi10b3A6IC02cHg7XG4gICAgICAgICN7JGdsb2JhbC1yaWdodH06IDFyZW07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmpzLWRyaWxsZG93bi1iYWNrOjpiZWZvcmUge1xuICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKDZweCwgJHByaW1hcnktY29sb3IsICRnbG9iYWwtbGVmdCk7XG4gICAgICBmbG9hdDogJGdsb2JhbC1sZWZ0O1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDAuNzVyZW07IC8vIENyZWF0ZXMgc3BhY2UgYmV0d2VlbiB0aGUgYXJyb3cgYW5kIHRoZSB0ZXh0XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwLjZyZW07IC8vIExpbmVzIHRoZSB0aXAgb2YgdGhlIGFycm93IHdpdGggdGhlIGl0ZW1zIGJlbG93XG4gICAgICBtYXJnaW4tdG9wOiAxNHB4OyAvLyBBbGlnbnMgdGhlIGFycm93IHdpdGggdGhlIHRleHRcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGRyb3Bkb3duXG4vLy8vXG5cbi8vLyBQYWRkaW5nIGZvciBkcm9wZG93biBwYW5lcy5cbi8vLyBAdHlwZSBMaXN0XG4kZHJvcGRvd24tcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBmb3IgZHJvcGRvd24gcGFuZXMuXG4vLy8gQHR5cGUgTGlzdFxuJGRyb3Bkb3duLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBmb3IgZHJvcGRvd24gcGFuZXMuXG4vLy8gQHR5cGUgTGlzdFxuJGRyb3Bkb3duLWZvbnQtc2l6ZTogMTZyZW0gIWRlZmF1bHQ7XG5cbi8vLyBXaWR0aCBmb3IgZHJvcGRvd24gcGFuZXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZHJvcGRvd24td2lkdGg6IDMwMHB4ICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIHJhZGl1cyBkcm9wZG93biBwYW5lcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkcm9wZG93bi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gU2l6ZXMgZm9yIGRyb3Bkb3duIHBhbmVzLiBFYWNoIHNpemUgaXMgYSBDU1MgY2xhc3MgeW91IGNhbiBhcHBseS5cbi8vLyBAdHlwZSBNYXBcbiRkcm9wZG93bi1zaXplczogKFxuICB0aW55OiAxMDBweCxcbiAgc21hbGw6IDIwMHB4LFxuICBsYXJnZTogNDAwcHgsXG4pICFkZWZhdWx0O1xuXG4vLy8gQXBwbGllcyBzdHlsZXMgZm9yIGEgYmFzaWMgZHJvcGRvd24uXG5AbWl4aW4gZHJvcGRvd24tY29udGFpbmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJvZHktYmFja2dyb3VuZDtcbiAgYm9yZGVyOiAkZHJvcGRvd24tYm9yZGVyO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogJGRyb3Bkb3duLXBhZGRpbmc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB3aWR0aDogMzAwcHg7XG4gIHotaW5kZXg6IDEwO1xuICBib3JkZXItcmFkaXVzOiAkZHJvcGRvd24tcmFkaXVzO1xuXG4gICYuaXMtb3BlbiB7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1kcm9wZG93biB7XG4gIC5kcm9wZG93bi1wYW5lIHtcbiAgICBAaW5jbHVkZSBkcm9wZG93bi1jb250YWluZXI7XG4gIH1cblxuICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJGRyb3Bkb3duLXNpemVzIHtcbiAgICAuZHJvcGRvd24tcGFuZS4jeyRuYW1lfSB7XG4gICAgICB3aWR0aDogJHNpemU7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBkcm9wZG93bi1tZW51XG4vLy8vXG5cbi8vLyBFbmFibGVzIGFycm93cyBmb3IgaXRlbXMgd2l0aCBkcm9wZG93biBtZW51cy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kZHJvcGRvd25tZW51LWFycm93czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIE1pbmltdW0gd2lkdGggb2YgZHJvcGRvd24gc3ViLW1lbnVzLlxuLy8vIEB0eXBlIExlbmd0aFxuJGRyb3Bkb3dubWVudS1taW4td2lkdGg6IDIwMHB4ICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgZHJvcGRvd25zLlxuLy8vIEB0eXBlIENvbG9yXG4kZHJvcGRvd25tZW51LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBmb3IgZHJvcGRvd24gcGFuZXMuXG4vLy8gQHR5cGUgTGlzdFxuJGRyb3Bkb3dubWVudS1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWRyb3Bkb3duLW1lbnUge1xuICAuZHJvcGRvd24ubWVudSB7XG4gICAgYSB7XG4gICAgICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gICAgfVxuICAgIC5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgIGE6OmFmdGVyIHtcbiAgICAgICAgZmxvYXQ6ICRnbG9iYWwtcmlnaHQ7XG4gICAgICAgIG1hcmdpbi10b3A6IDNweDtcbiAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogMTBweDtcbiAgICAgIH1cblxuICAgICAgQGlmICRkcm9wZG93bm1lbnUtYXJyb3dzIHtcbiAgICAgICAgJi5pcy1kb3duLWFycm93IGEge1xuICAgICAgICAgIHBhZGRpbmctI3skZ2xvYmFsLXJpZ2h0fTogMS41cmVtO1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgfVxuICAgICAgICAmLmlzLWRvd24tYXJyb3cgPiBhOjphZnRlciB7XG4gICAgICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKDVweCwgJGFuY2hvci1jb2xvciwgZG93bik7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIHRvcDogcmVtLWNhbGMoMnB4KSArIHJlbS1jYWxjKGdldC1zaWRlKCRtZW51LWl0ZW0tcGFkZGluZywgdG9wKSk7XG4gICAgICAgICAgI3skZ2xvYmFsLXJpZ2h0fTogNXB4O1xuICAgICAgICB9XG4gICAgICAgICYuaXMtbGVmdC1hcnJvdyA+IGE6OmFmdGVyIHtcbiAgICAgICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoNXB4LCAkYW5jaG9yLWNvbG9yLCAkZ2xvYmFsLWxlZnQpO1xuICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgICAgfVxuICAgICAgICAmLmlzLXJpZ2h0LWFycm93ID4gYTo6YWZ0ZXIge1xuICAgICAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSg1cHgsICRhbmNob3ItY29sb3IsICRnbG9iYWwtcmlnaHQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuaXMtbGVmdC1hcnJvdy5vcGVucy1pbm5lciAuc3VibWVudXtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICB9XG4gICAgICAmLmlzLXJpZ2h0LWFycm93Lm9wZW5zLWlubmVyIC5zdWJtZW51e1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogYXV0bztcbiAgICAgIH1cbiAgICAgICYub3BlbnMtaW5uZXIgLnN1Ym1lbnUge1xuICAgICAgICB0b3A6IDEwMCU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm5vLWpzICYgdWwge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAuc3VibWVudSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogMTAwJTtcbiAgICAgIG1pbi13aWR0aDogJGRyb3Bkb3dubWVudS1taW4td2lkdGg7XG4gICAgICB6LWluZGV4OiAxO1xuICAgICAgYmFja2dyb3VuZDogJGRyb3Bkb3dubWVudS1iYWNrZ3JvdW5kO1xuICAgICAgYm9yZGVyOiAkZHJvcGRvd25tZW51LWJvcmRlcjtcblxuICAgICAgPiBsaSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICAmLmZpcnN0LXN1YiB7XG4gICAgICAgIHRvcDogMTAwJTtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICB9XG5cbiAgICAgICY6bm90KC5qcy1kcm9wZG93bi1ub2hvdmVyKSA+IC5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudDpob3ZlciA+ICYsXG4gICAgICAmLmpzLWRyb3Bkb3duLWFjdGl2ZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudC5vcGVucy1sZWZ0IC5zdWJtZW51IHtcbiAgICAgIGxlZnQ6IGF1dG87XG4gICAgICByaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICAmLmFsaWduLXJpZ2h0IHtcbiAgICAgIC5zdWJtZW51LmZpcnN0LXN1YiB7XG4gICAgICAgIHRvcDogMTAwJTtcbiAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmlzLWRyb3Bkb3duLW1lbnUudmVydGljYWwge1xuICAgIHdpZHRoOiAxMDBweDtcblxuICAgICYuYWxpZ24tcmlnaHQge1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgIH1cblxuICAgID4gbGkgLnN1Ym1lbnUge1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogMTAwJTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIG1lbnVcbi8vLy9cblxuLy8vIE1hcmdpbiBvZiBhIG1lbnUuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbWVudS1tYXJnaW46IDAgIWRlZmF1bHQ7XG5cbi8vLyBMZWZ0LWhhbmQgbWFyZ2luIG9mIGEgbmVzdGVkIG1lbnUuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbWVudS1tYXJnaW4tbmVzdGVkOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBmb3IgaXRlbXMgaW4gYSBtZW51LlxuLy8vIEB0eXBlIE51bWJlclxuJG1lbnUtaXRlbS1wYWRkaW5nOiAwLjdyZW0gMXJlbSAhZGVmYXVsdDtcblxuLy8vIFNwYWNpbmcgYmV0d2VlbiBhbiBpY29uIGFuZCB0ZXh0IGluIGEgbWVudSBpdGVtLlxuLy8vIEB0eXBlIE51bWJlclxuJG1lbnUtaWNvbi1zcGFjaW5nOiAwLjI1cmVtICFkZWZhdWx0O1xuXG4vLy8gTWF4aW11bSBudW1iZXIgb2YgYGV4cGFuZC1uYCBjbGFzc2VzIHRvIGluY2x1ZGUgaW4gdGhlIENTUy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZW51LWV4cGFuZC1tYXg6IDYgIWRlZmF1bHQ7XG5cbi8vLyBDcmVhdGVzIHRoZSBiYXNlIHN0eWxlcyBmb3IgYSBNZW51LlxuQG1peGluIG1lbnUtYmFzZSB7XG4gIG1hcmdpbjogJG1lbnUtbWFyZ2luO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cbiAgLy8gTGlzdCBpdGVtcyBhcmUgdGFibGUgY2VsbCB0byBhbGxvdyBmb3IgdmVydGljYWwgYWxpZ25tZW50XG4gID4gbGkge1xuICAgIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIH1cblxuICAvLyBSZXNldCBsaW5lIGhlaWdodCB0byBtYWtlIHRoZSBoZWlnaHQgb2YgdGhlIG92ZXJhbGwgaXRlbSBlYXNpZXIgdG8gY2FsY3VsYXRlXG4gID4gbGk6bm90KC5tZW51LXRleHQpID4gYSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogJG1lbnUtaXRlbS1wYWRkaW5nO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICB9XG5cbiAgLy8gUmVzZXQgc3R5bGVzIG9mIGlubmVyIGVsZW1lbnRzXG4gIGlucHV0LFxuICBhLFxuICBidXR0b24ge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuLy8vIEV4cGFuZHMgdGhlIGl0ZW1zIG9mIGEgTWVudSwgc28gZWFjaCBpdGVtIGlzIHRoZSBzYW1lIHdpZHRoLlxuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRjb3VudCBbYXV0b10gLSBOdW1iZXIgb2YgaXRlbXMgaW4gdGhlIE1lbnUuIFlvdSBjYW4gaGFyZGNvZGUgYSBudW1iZXIsIG9yIHVzZSBgYXV0b2AgdG8gZ2VuZXJhdGUgQ1NTIHRoYXQgd2lsbCBhZGFwdCB0byB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluc2lkZSB0aGUgbWVudS5cbkBtaXhpbiBtZW51LWV4cGFuZCgkY291bnQ6IGF1dG8pIHtcbiAgZGlzcGxheTogdGFibGU7XG4gIHdpZHRoOiAxMDAlO1xuXG4gID4gbGkge1xuICAgIEBpZiAkY291bnQgPT0gYXV0byB7XG4gICAgICBAaW5jbHVkZSBhdXRvLXdpZHRoKCRtZW51LWV4cGFuZC1tYXgpO1xuICAgIH1cbiAgICBAZWxzZSBpZiB0eXBlLW9mKCRjb3VudCkgPT0gJ251bWJlcicge1xuICAgICAgd2lkdGg6IHBlcmNlbnRhZ2UoMSAvICRjb3VudCk7XG4gICAgfVxuICB9XG59XG5cbi8vLyBTZXRzIHRoZSBkaXJlY3Rpb24gb2YgYSBNZW51LlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGRpciBbaG9yaXpvbnRhbF0gLSBEaXJlY3Rpb24gb2YgdGhlIE1lbnUuIENhbiBiZSBgaG9yaXpvbnRhbGAgb3IgYHZlcnRpY2FsYC5cbkBtaXhpbiBtZW51LWRpcmVjdGlvbigkZGlyOiBob3Jpem9udGFsKSB7XG4gIEBpZiAkZGlyID09IGhvcml6b250YWwge1xuICAgID4gbGkge1xuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGRpciA9PSB2ZXJ0aWNhbCB7XG4gICAgPiBsaSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuICdUaGUgZGlyZWN0aW9uIHVzZWQgZm9yIG1lbnUtZGlyZWN0aW9uKCkgbXVzdCBiZSBob3Jpem9udGFsIG9yIHZlcnRpY2FsLic7XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBzaW1wbGUgTWVudSwgd2hpY2ggaGFzIG5vIHBhZGRpbmcgb3IgaG92ZXIgc3RhdGUuXG5AbWl4aW4gbWVudS1zaW1wbGUge1xuICBhIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiBnZXQtc2lkZSgkbWVudS1pdGVtLXBhZGRpbmcsICRnbG9iYWwtcmlnaHQpO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBuZXN0ZWQgTWVudSwgYnkgYWRkaW5nIGBtYXJnaW4tbGVmdGAgdG8gdGhlIG1lbnUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHBhZGRpbmcgW2F1dG9dIC0gTGVuZ3RoIG9mIHRoZSBtYXJnaW4uXG5AbWl4aW4gbWVudS1uZXN0ZWQoJG1hcmdpbjogJG1lbnUtbWFyZ2luLW5lc3RlZCkge1xuICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkbWFyZ2luO1xufVxuXG4vLy8gQWRkcyBzdXBwb3J0IGZvciBpY29ucyB0byBNZW51IGl0ZW1zLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHBvc2l0aW9uIFtzaWRlXSAtIFBvc2l0aW9uaW5nIGZvciBpY29ucy4gQ2FuIGJlIGBzaWRlYCAobGVmdCwgb3IgcmlnaHQgb24gUlRMKSBvciBgdG9wYC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRiYXNlIFt0cnVlXSAtIFNldCB0byBgZmFsc2VgIHRvIHByZXZlbnQgdGhlIHNoYXJlZCBDU1MgYmV0d2VlbiBzaWRlLSBhbmQgdG9wLWFsaWduZWQgaWNvbnMgZnJvbSBiZWluZyBwcmludGVkLiBTZXQgdGhpcyB0byBgZmFsc2VgIGlmIHlvdSdyZSBjYWxsaW5nIHRoZSBtaXhpbiBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBlbGVtZW50LlxuQG1peGluIG1lbnUtaWNvbnMoJHBvc2l0aW9uOiBzaWRlLCAkYmFzZTogdHJ1ZSkge1xuICBAaWYgJGJhc2Uge1xuICAgID4gbGkgPiBhIHtcbiAgICAgID4gaW1nLFxuICAgICAgPiBpIHtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIH1cblxuICAgICAgPiBzcGFuIHtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJHBvc2l0aW9uID09IHNpZGUge1xuICAgID4gbGkgPiBhIHtcbiAgICAgID4gaW1nLFxuICAgICAgPiBpIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJG1lbnUtaWNvbi1zcGFjaW5nO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gdG9wIHtcbiAgICA+IGxpID4gYSB7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAgID4gaW1nLFxuICAgICAgPiBpIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvICRtZW51LWljb24tc3BhY2luZztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1lbnUtdGV4dCB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBjb2xvcjogaW5oZXJpdDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHBhZGRpbmctdG9wOiAwO1xuICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgcGFkZGluZzogJG1lbnUtaXRlbS1wYWRkaW5nO1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1tZW51IHtcbiAgLm1lbnUge1xuICAgIEBpbmNsdWRlIG1lbnUtYmFzZTtcbiAgICBAaW5jbHVkZSBtZW51LWljb25zO1xuXG4gICAgLy8gT3JpZW50YXRpb25cbiAgICBAaW5jbHVkZSBtZW51LWRpcmVjdGlvbihob3Jpem9udGFsKTtcblxuICAgICYudmVydGljYWwge1xuICAgICAgQGluY2x1ZGUgbWVudS1kaXJlY3Rpb24odmVydGljYWwpO1xuICAgIH1cblxuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGlmICRzaXplICE9IHNtYWxsIHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICAgICYuI3skc2l6ZX0taG9yaXpvbnRhbCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBtZW51LWRpcmVjdGlvbihob3Jpem9udGFsKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmLiN7JHNpemV9LXZlcnRpY2FsIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1lbnUtZGlyZWN0aW9uKHZlcnRpY2FsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTaW1wbGVcbiAgICAmLnNpbXBsZSB7XG4gICAgICBAaW5jbHVkZSBtZW51LXNpbXBsZTtcbiAgICB9XG5cbiAgICAvLyBBbGlnbiByaWdodFxuICAgICYuYWxpZ24tI3skZ2xvYmFsLXJpZ2h0fSB7XG4gICAgICA+IGxpIHtcbiAgICAgICAgZmxvYXQ6ICRnbG9iYWwtcmlnaHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRXZlbi13aWR0aFxuICAgICYuZXhwYW5kZWQge1xuICAgICAgQGluY2x1ZGUgbWVudS1leHBhbmQ7XG5cbiAgICAgID4gbGk6Zmlyc3QtY2hpbGQ6bGFzdC1jaGlsZCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFZlcnRpY2FsIGljb25zXG4gICAgJi5pY29uLXRvcCB7XG4gICAgICBAaW5jbHVkZSBtZW51LWljb25zKHRvcCwgJGJhc2U6IGZhbHNlKTtcbiAgICB9XG5cbiAgICAvLyBOZXN0aW5nXG4gICAgJi5uZXN0ZWQge1xuICAgICAgQGluY2x1ZGUgbWVudS1uZXN0ZWQ7XG4gICAgfVxuICB9XG5cbiAgLm1lbnUtdGV4dCB7XG4gICAgQGluY2x1ZGUgbWVudS10ZXh0O1xuICB9XG5cbiAgLy8gUHJldmVudCBGT1VDIHdoZW4gdXNpbmcgdGhlIFJlc3BvbnNpdmUgTWVudSBwbHVnaW5cbiAgLm5vLWpzIFtkYXRhLXJlc3BvbnNpdmUtbWVudV0gdWwge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG5AbWl4aW4gZm91bmRhdGlvbi1zdGlja3kge1xuICAuc3RpY2t5LWNvbnRhaW5lciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG5cbiAgLnN0aWNreSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLDAsMCk7XG4gIH1cblxuICAuc3RpY2t5LmlzLXN0dWNrIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgei1pbmRleDogNTtcblxuICAgICYuaXMtYXQtdG9wIHtcbiAgICAgIHRvcDogMDtcbiAgICB9XG5cbiAgICAmLmlzLWF0LWJvdHRvbSB7XG4gICAgICBib3R0b206IDA7XG4gICAgfVxuICB9XG5cbiAgLnN0aWNreS5pcy1hbmNob3JlZCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG5cbiAgICAmLmlzLWF0LWJvdHRvbSB7XG4gICAgICBib3R0b206IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8gc2Nzcy1saW50OmRpc2FibGUgTWVyZ2VhYmxlU2VsZWN0b3IsIFF1YWxpZnlpbmdFbGVtZW50XG5cbi8vLy9cbi8vLyBAZ3JvdXAgdGFibGVcbi8vLy9cblxuLy8vIERlZnVhbHQgY29sb3IgZm9yIHRhYmxlIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1iYWNrZ3JvdW5kOiAkd2hpdGUgICFkZWZhdWx0O1xuXG4vLy8gRGVmdWFsdCBzY2FsZSBmb3IgZGFya2VuaW5nIHRoZSBzdHJpcGVkIHRhYmxlIHJvd3MgYW5kIHRoZSB0YWJsZSBib3JkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFibGUtY29sb3Itc2NhbGU6IDUlICFkZWZhdWx0O1xuXG4vLy8gRGVmdWFsdCBzdHlsZSBmb3IgdGFibGUgYm9yZGVyLlxuLy8vIEB0eXBlIExpc3RcbiR0YWJsZS1ib3JkZXI6IDFweCBzb2xpZCBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlKSAhZGVmYXVsdDtcblxuLy8vIERlZnVhbHQgcGFkZGluZyBmb3IgdGFibGUuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFibGUtcGFkZGluZzogcmVtLWNhbGMoOCAxMCAxMCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZ1YWx0IHNjYWxlIGZvciBkYXJrZW5pbmcgdGhlIHRhYmxlIHJvd3Mgb24gaG92ZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFibGUtaG92ZXItc2NhbGU6IDIlICFkZWZhdWx0O1xuXG4vLy8gRGVmdWFsdCBjb2xvciBvZiBzdGFuZGFyZCByb3dzIG9uIGhvdmVyLlxuLy8vIEB0eXBlIExpc3RcbiR0YWJsZS1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWhvdmVyLXNjYWxlKSAhZGVmYXVsdDtcblxuLy8vIERlZnVhbHQgY29sb3Igb2Ygc3RyaXBlZCByb3dzIG9uIGhvdmVyLlxuLy8vIEB0eXBlIExpc3RcbiR0YWJsZS1yb3ctc3RyaXBlLWhvdmVyOiBkYXJrZW4oJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSArICR0YWJsZS1ob3Zlci1zY2FsZSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZ1YWx0IGJhY2tncm91bmQgY29sb3IgZm9yIHN0cmlwZWQgcm93cy5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYmxlLXN0cmlwZWQtYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZ1YWx0IHZhbHVlIGZvciBzaG93aW5nIHRoZSBzdHJpcGUgb24gcm93cyBvZiB0aGUgdGFibGVzLCBleGNsdWRpbmcgdGhlIGhlYWRlciBhbmQgZm9vdGVyIElmIGV2ZW4sIHRoZSBldmVuIHJvd3Mgd2lsbCBoYXZlIGEgYmFja2dyb3VuZCBjb2xvci4gSWYgb2RkLCB0aGUgb2RkIHJvd3Mgd2lsbCBoYXZlIGEgYmFja2dyb3VuZCBjb2xvci4gSWYgZW1wdHksIG9yIGFueW90aGVyIHZhbHVlLCB0aGUgdGFibGUgcm93cyB3aWxsIGhhdmUgbm8gc3RyaXBpbmcuXG4vLy8gQHR5cGUgS2V5b3dvcmRcbiR0YWJsZS1zdHJpcGU6IGV2ZW4gIWRlZmF1bHQ7XG5cbi8vLyBEZWZ1YWx0IGNvbG9yIGZvciBoZWFkZXIgYmFja2dyb3VuZC5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYmxlLWhlYWQtYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSAvIDIpICFkZWZhdWx0O1xuXG4vLy8gRGVmdWFsdCBjb2xvciBmb3IgZm9vdGVyIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1mb290LWJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUpICFkZWZhdWx0O1xuXG4vLy8gRGVmdWFsdCBmb250IGNvbG9yIGZvciBoZWFkZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1oZWFkLWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZ1YWx0IHZhbHVlIGZvciBzaG93aW5nIHRoZSBoZWFkZXIgd2hlbiB1c2luZyBzdGFja2VkIHRhYmxlcy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kc2hvdy1oZWFkZXItZm9yLXN0YWNrZWQ6IGZhbHNlICFkZWZhdWx0O1xuXG4vLy8gQWRkcyB0aGUgZ2VuZXJhbCBzdHlsZXMgZm9yIHRhYmxlcy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzdHJpcGUgWyR0YWJsZS1zdHJpcGVdIC0gVXNlcyBrZXdvcmRzIGV2ZW4sIG9kZCwgb3Igbm9uZSB0byBkYXJrZW4gcm93cyBvZiB0aGUgdGFibGUuIFRoZSBkZWZ1YWx0IHZhbHVlIGlzIGV2ZW4uXG5AbWl4aW4gdGFibGUoJHN0cmlwZTogJHRhYmxlLXN0cmlwZSkge1xuICBtYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcbiAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG5cbiAgQGF0LXJvb3Qge1xuICAgIHRoZWFkLFxuICAgIHRib2R5LFxuICAgIHRmb290IHtcbiAgICAgIGJvcmRlcjogJHRhYmxlLWJvcmRlcjtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgIC8vIENhcHRpb25cbiAgICBjYXB0aW9uIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xuICAgICAgcGFkZGluZzogJHRhYmxlLXBhZGRpbmc7XG4gICAgfVxuXG4gICAgLy8gVGFibGUgaGVhZCBhbmQgZm9vdFxuICAgIHRoZWFkLFxuICAgIHRmb290IHtcbiAgICAgIGJhY2tncm91bmQ6ICR0YWJsZS1oZWFkLWJhY2tncm91bmQ7XG4gICAgICBjb2xvcjogJHRhYmxlLWhlYWQtZm9udC1jb2xvcjtcblxuICAgICAgLy8gUm93cyB3aXRoaW4gaGVhZCBhbmQgZm9vdFxuICAgICAgdHIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cblxuICAgICAgLy8gQ2VsbHMgd2l0aGluIGhlYWQgYW5kIGZvb3RcbiAgICAgIHRoLFxuICAgICAgdGQge1xuICAgICAgICBwYWRkaW5nOiAkdGFibGUtcGFkZGluZztcbiAgICAgICAgZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XG4gICAgICAgIHRleHQtYWxpZ246ICN7JGdsb2JhbC1sZWZ0fTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUYWJsZSByb3dzXG4gICAgdGJvZHkge1xuICAgICAgdHIge1xuICAgICAgICAvLyBJZiBzdHJpcGUgaXMgc2V0IHRvIGV2ZW4sIGRhcmtlbiB0aGUgZXZlbiByb3dzLlxuICAgICAgICBAaWYgJHN0cmlwZSA9PSBldmVuIHtcbiAgICAgICAgICAmOm50aC1jaGlsZChldmVuKSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtc3RyaXBlZC1iYWNrZ3JvdW5kO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHN0cmlwZSBpcyBzZXQgdG8gb2RkLCBkYXJrZW4gdGhlIG9kZCByb3dzLlxuICAgICAgICBAZWxzZSBpZiAkc3RyaXBlID09IG9kZCB7XG4gICAgICAgICAgJjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtc3RyaXBlZC1iYWNrZ3JvdW5kO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aCxcbiAgICAgIHRkIHtcbiAgICAgICAgcGFkZGluZzogJHRhYmxlLXBhZGRpbmc7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHRoZSBhYmlsaXR5IHRvIGhvcml6b250YWxseSBzY3JvbGwgdGhlIHRhYmxlIHdoZW4gdGhlIGNvbnRlbnQgb3ZlcmZsb3dzIGhvcml6b250YWxseS5cbkBtaXhpbiB0YWJsZS1zY3JvbGwge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbn1cblxuLy8vIFNsaWdodGx5IGRhcmtlbnMgdGhlIHRhYmxlIHJvd3Mgb24gaG92ZXIuXG5AbWl4aW4gdGFibGUtaG92ZXIge1xuICB0ciB7XG4gICAgLy9EYXJrZW5zIHRoZSBub24tc3RyaXBlZCB0YWJsZSByb3dzIG9uIGhvdmVyLlxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLXJvdy1ob3ZlcjtcbiAgICB9XG5cbiAgICAvL0RhcmtlbnMgdGhlIGV2ZW4gc3RyaXBlZCB0YWJsZSByb3dzLlxuICAgIEBpZigkdGFibGUtc3RyaXBlID09IGV2ZW4pIHtcbiAgICAgICY6bnRoLW9mLXR5cGUoZXZlbik6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtcm93LXN0cmlwZS1ob3ZlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvL0RhcmtlbnMgdGhlIG9kZCBzdHJpcGVkIHRhYmxlIHJvd3MuXG4gICAgQGVsc2VpZigkdGFibGUtc3RyaXBlID09IG9kZCkge1xuICAgICAgJjpudGgtb2YtdHlwZShvZGQpOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLXJvdy1zdHJpcGUtaG92ZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBzdGFja2VkIHRhYmxlLiBVc2VmdWwgZm9yIHNtYWxsLXNjcmVlbiBsYXlvdXRzLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGhlYWRlciBbJHNob3ctaGVhZGVyLWZvci1zdGFja2VkXSAtIFNob3cgdGhlIGZpcnN0IHRoIG9mIGhlYWRlciB3aGVuIHN0YWNrZWQuXG5AbWl4aW4gdGFibGUtc3RhY2soJGhlYWRlcjogJHNob3ctaGVhZGVyLWZvci1zdGFja2VkKSB7XG4gIEBpZiAkaGVhZGVyIHtcbiAgICB0aGVhZCB7XG4gICAgICB0aDpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuXG4gICAgICB0aCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICB0aGVhZCB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIHRmb290IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgdHIsXG4gIHRoLFxuICB0ZCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICB0ZCB7XG4gICAgYm9yZGVyLXRvcDogMDtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi10YWJsZSB7XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSB0YWJsZTtcbiAgfVxuXG4gIHRhYmxlLnN0YWNrIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSBkb3duKSB7XG4gICAgICBAaW5jbHVkZSB0YWJsZS1zdGFjaztcbiAgICB9XG4gIH1cblxuICB0YWJsZS5zY3JvbGwge1xuICAgIEBpbmNsdWRlIHRhYmxlLXNjcm9sbDtcbiAgfVxuXG4gIHRhYmxlLmhvdmVyIHtcbiAgICBAaW5jbHVkZSB0YWJsZS1ob3ZlcjtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdGl0bGUtYmFyXG4vLy8vXG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGEgdGl0bGUgYmFyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGl0bGViYXItYmFja2dyb3VuZDogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgdGV4dCBpbnNpZGUgYSB0aXRsZSBiYXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0aXRsZWJhci1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBpbnNpZGUgYSB0aXRsZSBiYXIuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kdGl0bGViYXItcGFkZGluZzogMC41cmVtICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3ZWlnaHQgb2YgdGV4dCBpbnNpZGUgYSB0aXRsZSBiYXIuXG4vLy8gQHR5cGUgV2VpZ2h0XG4kdGl0bGViYXItdGV4dC1mb250LXdlaWdodDogYm9sZCAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIG1lbnUgaWNvbnMgaW5zaWRlIGEgdGl0bGUgYmFyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGl0bGViYXItaWNvbi1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgbWVudSBpY29ucyBpbnNpZGUgYSB0aXRsZSBiYXIgb24gaG92ZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0aXRsZWJhci1pY29uLWNvbG9yLWhvdmVyOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBTcGFjaW5nIGJldHdlZW4gdGhlIG1lbnUgaWNvbiBhbmQgdGV4dCBpbnNpZGUgYSB0aXRsZSBiYXIuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kdGl0bGViYXItaWNvbi1zcGFjaW5nOiAwLjI1cmVtICFkZWZhdWx0O1xuXG5AbWl4aW4gZm91bmRhdGlvbi10aXRsZS1iYXIge1xuICAudGl0bGUtYmFyIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICBiYWNrZ3JvdW5kOiAkdGl0bGViYXItYmFja2dyb3VuZDtcbiAgICBjb2xvcjogJHRpdGxlYmFyLWNvbG9yO1xuICAgIHBhZGRpbmc6ICR0aXRsZWJhci1wYWRkaW5nO1xuXG4gICAgLm1lbnUtaWNvbiB7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkdGl0bGViYXItaWNvbi1zcGFjaW5nO1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICR0aXRsZWJhci1wYWRkaW5nO1xuICAgIH1cbiAgfVxuXG4gIC50aXRsZS1iYXItbGVmdCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gIH1cblxuICAudGl0bGUtYmFyLXJpZ2h0IHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIH1cblxuICAudGl0bGUtYmFyLXRpdGxlIHtcbiAgICBmb250LXdlaWdodDogJHRpdGxlYmFyLXRleHQtZm9udC13ZWlnaHQ7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cblxuICAubWVudS1pY29uIHtcbiAgICBAaW5jbHVkZSBoYW1idXJnZXIoJGNvbG9yOiAkdGl0bGViYXItaWNvbi1jb2xvciwgJGNvbG9yLWhvdmVyOiAkdGl0bGViYXItaWNvbi1jb2xvci1ob3Zlcik7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHRvcC1iYXJcbi8vLy9cblxuLy8vIFBhZGRpbmcgZm9yIHRoZSB0b3AgYmFyLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvcGJhci1wYWRkaW5nOiAwLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgdG9wIGJhci4gVGhpcyBjb2xvciBhbHNvIGNhc2NhZGVzIHRvIG1lbnVzIHdpdGhpbiB0aGUgdG9wIGJhci5cbi8vLyBAdHlwZSBDb2xvclxuJHRvcGJhci1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIGZvciBsaW5rcyBpbnNpZGUgYSB0b3AgYmFyIG1lbnUuXG4vLy8gQHR5cGUgQ29sb3JcbiR0b3BiYXItbGluay1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBXaWR0aCBvZiBgPGlucHV0PmAgZWxlbWVudHMgaW5zaWRlIHRoZSB0b3AgYmFyLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvcGJhci1pbnB1dC13aWR0aDogMjAwcHggIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSB0b3AgYmFyIGNvbnRhaW5lci5cbkBtaXhpbiB0b3AtYmFyLWNvbnRhaW5lciB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xuICBwYWRkaW5nOiAkdG9wYmFyLXBhZGRpbmc7XG5cbiAgJixcbiAgdWwge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR0b3BiYXItYmFja2dyb3VuZDtcbiAgfVxuXG4gIGEge1xuICAgIGNvbG9yOiAkdG9wYmFyLWxpbmstY29sb3I7XG4gIH1cblxuICBpbnB1dCB7XG4gICAgd2lkdGg6ICR0b3BiYXItaW5wdXQtd2lkdGg7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDFyZW07XG4gIH1cblxuICBpbnB1dC5idXR0b24ge1xuICAgIHdpZHRoOmF1dG87XG4gIH1cbn1cblxuLy8vIG1ha2VzIHNlY3Rpb25zIHN0YWNrZWRcbkBtaXhpbiB0b3AtYmFyLXN0YWNrZWQoKSB7XG4gIC8vIFN1Yi1zZWN0aW9uc1xuICAudG9wLWJhci1yaWdodCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbiAgLnRvcC1iYXItbGVmdCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tdG9wLWJhciB7XG4gIC8vIFRvcCBiYXIgY29udGFpbmVyXG4gIC50b3AtYmFyIHtcbiAgICBAaW5jbHVkZSB0b3AtYmFyLWNvbnRhaW5lcjtcbiAgfVxuICAvLyBnZW5lcmF0ZSBjbGFzc2VzIGZvciBzdGFja2luZyBvbiBlYWNoIHNjcmVlbiBzaXplIChkZWZpbmVkIGluICRicmVha3BvaW50LWNsYXNzZXMpXG4gIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgIC5zdGFja2VkLWZvci0jeyRzaXplfSB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplIGRvd24pIHtcbiAgICAgICAgQGluY2x1ZGUgdG9wLWJhci1zdGFja2VkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyBzdGFjayBvbiBzbWFsbCBzY3JlZW5zIGFzIGRlZmF1bHRcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBkb3duKSB7XG4gICAgQGluY2x1ZGUgdG9wLWJhci1zdGFja2VkO1xuICB9XG5cbiAgLy8gU3ViLXNlY3Rpb25zXG4gIC50b3AtYmFyLWxlZnQge1xuICAgIGZsb2F0OiBsZWZ0O1xuICB9XG4gIC50b3AtYmFyLXJpZ2h0IHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gIH1cbn1cbiIsIi50b3AtYmFyIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiBtYXBfZ2V0KCR6LWluZGV4LCB0b3BiYXIpO1xuICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1yb3coY29sbGFwc2UpO1xuXG4gICAgLnJpZ2h0LFxuICAgIC5sZWZ0IHtcbiAgICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLWNvbHVtbigxMik7XG4gICAgfVxuXG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpIHtcbiAgICAgICAgLmxlZnQge1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgdWwge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICB9XG5cbiAgICAmLmV4cGFuZGVkIHtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgIH1cblxuICAgICYuZXhwYW5kZWQgdWwge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkdG9wYmFyLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgJl9faWNvbiB7XG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiBjYWxjKCRoZXJvLW1heC1oZWlnaHQgLSA0MHB4KTtcbiAgICAgICAgICAgIG1heC13aWR0aDogMjUwcHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsaSA+IGEge1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogJHRvcGJhci1saW5rLXN0eWxlO1xuICAgICAgICBmb250LXdlaWdodDogJHRvcGJhci1saW5rLXdlaWdodDtcblxuICAgICAgICB0cmFuc2l0aW9uOiAuMnMgYWxsO1xuXG4gICAgICAgICYuYnV0dG9uIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJHRvcGJhci1saW5rLWNvbG9yO1xuICAgICAgICAgICAgY29sb3I6ICR0b3BiYXItbGluay1jb2xvcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxpLmFjdGl2ZSBhLFxuICAgIGE6aG92ZXIge1xuICAgICAgICBjb2xvcjogJHRvcGJhci1saW5rLWNvbG9yLWhvdmVyO1xuXG4gICAgICAgICYuYnV0dG9uIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJHRvcGJhci1saW5rLWNvbG9yLWhvdmVyO1xuICAgICAgICAgICAgY29sb3I6ICR0b3BiYXItbGluay1jb2xvci1ob3ZlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYuZXhwYW5kZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkdG9wYmFyLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgJl9fbG9jYWxlLXBpY2tlciB7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSB1cCkge1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAkdG9wYmFyLWxpbmstY29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgd2lkdGg6IDIxcHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSBkb3duKSB7XG4gICAgICAgIC5tZW51LXRleHQge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBwYWRkaW5nOiAuNXJlbTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgJl9faWNvbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDNyZW07XG4gICAgICAgIH1cblxuICAgICAgICAmX190b2dnbGUge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICAucmlnaHQge1xuXG4gICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuYnV0dG9uIHtcbiAgICAgICAgICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSB1cCkge1xuICAgICAgICAucmlnaHQge1xuICAgICAgICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLWNvbHVtbihzaHJpbmspO1xuICAgICAgICB9XG4gICAgICAgIC5sZWZ0IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1jb2x1bW4oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5yaWdodCB7XG4gICAgICAgICAgICBwYWRkaW5nOiAkdG9wYmFyLXBhZGRpbmcgMDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAuZHJvcGRvd24ubWVudSAuaXMtZHJvcGRvd24tc3VibWVudS1wYXJlbnQuaXMtcmlnaHQtYXJyb3cgPiBhOjphZnRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLmRyb3Bkb3duLm1lbnUgLnN1Ym1lbnUuZmlyc3Qtc3ViIHtcbiAgICAgICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgICAgICByaWdodDogMCAhaW1wb3J0YW50O1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAkdG9wYmFyLWxpbmstY29sb3I7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgICAgICAgICAgIG1pbi13aWR0aDogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uaGVybyB7XG4gICAgYmFja2dyb3VuZDogdXJsKCcuLi9pbWcvYmFja2dyb3VuZC1zLnBuZycpIGNlbnRlciBjZW50ZXIgLyBjb3ZlcjtcbiAgICBoZWlnaHQ6ICRoZXJvLW1heC1oZWlnaHQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy4uL2ltZy9iYWNrZ3JvdW5kLW0ucG5nJyk7XG4gICAgfVxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcuLi9pbWcvYmFja2dyb3VuZC1sLnBuZycpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHhsYXJnZSkge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy4uL2ltZy9iYWNrZ3JvdW5kLXhsLnBuZycpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHh4bGFyZ2UpIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcuLi9pbWcvYmFja2dyb3VuZC14eGwucG5nJyk7XG4gICAgfVxufVxuXG4uaGVyby0tZnVsbCB7XG4gICAgbWluLWhlaWdodDogJGhlcm8taG9tZXBhZ2UtbWF4LWhlaWdodDtcbn1cblxuLmhlcm8tLWVycm9yIHtcbiAgICBtaW4taGVpZ2h0OiAxMDB2aDtcbn1cblxuLmZ1bGxzY3JlZW4tYmcge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB6LWluZGV4OiAtMTAwO1xuICAgIGJhY2tncm91bmQ6IHJlZDtcbn1cblxuLmZ1bGxzY3JlZW4tYmdfX3ZpZGVvIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogNTAlO1xuICAgIG1pbi13aWR0aDogMTAwJTtcbiAgICBtaW4taGVpZ2h0OiAkaGVyby1tYXgtaGVpZ2h0O1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGhlaWdodDogYXV0bztcbiAgICB6LWluZGV4OiBtYXBfZ2V0KCR6LWluZGV4LCBmdWxsU2NyZWVuVmlkZW8pO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKC01MCUpO1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG5cbiAgICBAaW5jbHVkZSBoaWRlLWZvcihzbWFsbCBvbmx5KTtcbn1cblxuLmhlcm8tLWZ1bGwgLmZ1bGxzY3JlZW4tYmdfX3ZpZGVvIHtcbiAgICBtaW4taGVpZ2h0OiAxMDB2aDtcbn1cblxuQGlmICR0b3BiYXItYmFja2dyb3VuZC1jb2xvciAhPSAndHJhbnNwYXJlbnQnIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAudG9wLWJhci13cmFwcGVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR0b3BiYXItYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBzbWFydC1zY2FsZSgkdG9wYmFyLWJhY2tncm91bmQtY29sb3IpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5cblxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZmxleC1ncmlkXG4vLy8vXG5cbi8vLyBDcmVhdGVzIGEgY29udGFpbmVyIGZvciBhIGZsZXggZ3JpZCByb3cuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TGlzdH0gJGJlaGF2aW9yIFtudWxsXVxuLy8vICAgTW9kaWZpY2F0aW9ucyB0byB0aGUgZGVmYXVsdCBncmlkIHN0eWxlcy4gYG5lc3RgIGluZGljYXRlcyB0aGUgcm93IHdpbGwgYmUgcGxhY2VkIGluc2lkZSBhbm90aGVyIHJvdy4gYGNvbGxhcHNlYCBpbmRpY2F0ZXMgdGhhdCB0aGUgY29sdW1ucyBpbnNpZGUgdGhpcyByb3cgd2lsbCBub3QgaGF2ZSBwYWRkaW5nLiBgbmVzdCBjb2xsYXBzZWAgY29tYmluZXMgYm90aCBiZWhhdmlvcnMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCBbJGdyaWQtcm93LXdpZHRoXSAtIE1heGltdW0gd2lkdGggb2YgdGhlIHJvdy5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGNvbHVtbnMgW251bGxdIC0gTnVtYmVyIG9mIGNvbHVtbnMgdG8gdXNlIGZvciB0aGlzIHJvdy4gSWYgc2V0IHRvIGBudWxsYCAodGhlIGRlZmF1bHQpLCB0aGUgZ2xvYmFsIGNvbHVtbiBjb3VudCB3aWxsIGJlIHVzZWQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkYmFzZSBbdHJ1ZV0gLSBTZXQgdG8gYGZhbHNlYCB0byBwcmV2ZW50IGJhc2ljIHN0eWxlcyBmcm9tIGJlaW5nIG91dHB1dC4gVXNlZnVsIGlmIHlvdSdyZSBjYWxsaW5nIHRoaXMgbWl4aW4gb24gdGhlIHNhbWUgZWxlbWVudCB0d2ljZSwgYXMgaXQgcHJldmVudHMgZHVwbGljYXRlIENTUyBvdXRwdXQuXG5AbWl4aW4gZmxleC1ncmlkLXJvdyhcbiAgJGJlaGF2aW9yOiBudWxsLFxuICAkd2lkdGg6ICRncmlkLXJvdy13aWR0aCxcbiAgJGNvbHVtbnM6IG51bGwsXG4gICRiYXNlOiB0cnVlXG4pIHtcbiAgJGJlaGF2aW9yOiAtemYtZ2V0LW9wdGlvbnMoJGJlaGF2aW9yLCBuZXN0IGNvbGxhcHNlKTtcbiAgJG1hcmdpbjogYXV0bztcblxuICBAaWYgbWFwLWdldCgkYmVoYXZpb3IsIG5lc3QpIHtcbiAgICAkbWFyZ2luOiByZW0tY2FsYygkZ3JpZC1jb2x1bW4tZ3V0dGVyKSAvIDIgKiAtMTtcbiAgfVxuICBAZWxzZSB7XG4gICAgbWF4LXdpZHRoOiAkd2lkdGg7XG4gIH1cblxuICBAaWYgJGJhc2Uge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgfVxuXG4gIG1hcmdpbi1sZWZ0OiAkbWFyZ2luO1xuICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW47XG5cbiAgQGlmICRjb2x1bW5zICE9IG51bGwge1xuICAgIEBpbmNsdWRlIGdyaWQtY29udGV4dCgkY29sdW1ucywgJGJhc2UpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQ2FsY3VsYXRlcyB0aGUgYGZsZXhgIHByb3BlcnR5IGZvciBhIGZsZXggZ3JpZCBjb2x1bW4uIEl0IGFjY2VwdHMgYWxsIG9mIHRoZSBzYW1lIHZhbHVlcyBhcyB0aGUgYmFzaWMgYGdyaWQtY29sdW1uKClgIGZ1bmN0aW9uLCBhbG9uZyB3aXRoIHR3byBleHRyYXM6XG4vLy8gICAtIGBudWxsYCAodGhlIGRlZmF1bHQpIHdpbGwgbWFrZSB0aGUgY29sdW1uIGV4cGFuZCB0byBmaWxsIHNwYWNlLlxuLy8vICAgLSBgc2hyaW5rYCB3aWxsIG1ha2UgdGhlIGNvbHVtbiBjb250cmFjdCwgc28gaXQgb25seSB0YWtlcyB1cCB0aGUgaG9yaXpvbnRhbCBzcGFjZSBpdCBuZWVkcy5cbi8vL1xuLy8vIEBwYXJhbSB7TWl4ZWR9ICRjb2x1bW5zIFtudWxsXSAtIFdpZHRoIG9mIHRoZSBjb2x1bW4uXG5AZnVuY3Rpb24gZmxleC1ncmlkLWNvbHVtbigkY29sdW1uczogbnVsbCkge1xuICAkZmxleDogMSAxIDBweDtcblxuICBAaWYgJGNvbHVtbnMgPT0gc2hyaW5rIHtcbiAgICAkZmxleDogMCAwIGF1dG87XG4gIH1cbiAgQGVsc2UgaWYgJGNvbHVtbnMgIT0gbnVsbCB7XG4gICAgJGZsZXg6IDAgMCBncmlkLWNvbHVtbigkY29sdW1ucyk7XG4gIH1cblxuICBAcmV0dXJuICRmbGV4O1xufVxuXG4vLy8gQ3JlYXRlcyBhIGNvbHVtbiBmb3IgYSBmbGV4IGdyaWQuIEJ5IGRlZmF1bHQsIHRoZSBjb2x1bW4gd2lsbCBzdHJldGNoIHRvIHRoZSBmdWxsIHdpZHRoIG9mIGl0cyBjb250YWluZXIsIGJ1dCB0aGlzIGNhbiBiZSBvdmVycmlkZGVuIHdpdGggc2l6aW5nIGNsYXNzZXMsIG9yIGJ5IHVzaW5nIHRoZSBgdW5zdGFja2AgY2xhc3Mgb24gdGhlIHBhcmVudCBmbGV4IHJvdy5cbi8vL1xuLy8vIEBwYXJhbSB7TWl4ZWR9ICRjb2x1bW5zIFtudWxsXSAtIFdpZHRoIG9mIHRoZSBjb2x1bW4uIFJlZmVyIHRvIHRoZSBgZmxleC1ncmlkLWNvbHVtbigpYCBmdW5jdGlvbiB0byBzZWUgcG9zc2libGUgdmFsdWVzLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZ3V0dGVyIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIFNwYWNlIGJldHdlZW4gY29sdW1ucywgYWRkZWQgYXMgYSBsZWZ0IGFuZCByaWdodCBwYWRkaW5nLlxuQG1peGluIGZsZXgtZ3JpZC1jb2x1bW4oXG4gICRjb2x1bW5zOiBudWxsLFxuICAkZ3V0dGVyOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgJGd1dHRlcjogcmVtLWNhbGMoJGd1dHRlcikgLyAyO1xuXG4gIGZsZXg6IGZsZXgtZ3JpZC1jb2x1bW4oJGNvbHVtbnMpO1xuICBwYWRkaW5nLWxlZnQ6ICRndXR0ZXI7XG4gIHBhZGRpbmctcmlnaHQ6ICRndXR0ZXI7XG5cbiAgLy8gbWF4LXdpZHRoIGZpeGVzIElFIDEwLzExIG5vdCByZXNwZWN0aW5nIHRoZSBmbGV4LWJhc2lzIHByb3BlcnR5XG4gIEBpZiAkY29sdW1ucyAhPSBudWxsIGFuZCAkY29sdW1ucyAhPSBzaHJpbmsge1xuICAgIG1heC13aWR0aDogZ3JpZC1jb2x1bW4oJGNvbHVtbnMpO1xuICB9XG59XG5cbi8vLyBDaGFuZ2VzIHRoZSBzb3VyY2Ugb3JkZXIgb2YgYSBmbGV4IGdyaWQgY29sdW1uLiBDb2x1bW5zIHdpdGggbG93ZXIgbnVtYmVycyBhcHBlYXIgZmlyc3QgaW4gdGhlIGxheW91dC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG9yZGVyIFswXSAtIE9yZGVyIG51bWJlciB0byBhcHBseS5cbkBtaXhpbiBmbGV4LWdyaWQtb3JkZXIoJG9yZGVyOiAwKSB7XG4gIG9yZGVyOiAkb3JkZXI7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZsZXgtZ3JpZCB7XG4gIC8vIFJvd1xuICAucm93IHtcbiAgICBAaW5jbHVkZSBmbGV4LWdyaWQtcm93O1xuXG4gICAgLy8gTmVzdGluZyBiZWhhdmlvclxuICAgICYgJixcbiAgICAuY29sdW1uLXJvdyAmIHtcbiAgICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1yb3cobmVzdCwgJGJhc2U6IGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvLyBDb2x1bW5cbiAgJWZsZXgtY29sdW1uIHtcbiAgICBAaW5jbHVkZSBmbGV4LWdyaWQtY29sdW1uO1xuICB9XG5cbiAgLmNvbHVtbixcbiAgLmNvbHVtbnMge1xuICAgIEBleHRlbmQgJWZsZXgtY29sdW1uO1xuICB9XG5cbiAgLy8gU2l6aW5nIChwZXJjZW50YWdlKVxuICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbi1jb3VudCB7XG4gICAgICAgIC4jeyRzaXplfS0jeyRpfSB7XG4gICAgICAgICAgZmxleDogZmxleC1ncmlkLWNvbHVtbigkaSk7XG4gICAgICAgICAgbWF4LXdpZHRoOiBncmlkLWNvbHVtbigkaSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTaXppbmcgKGV4cGFuZClcbiAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgQGlmICRzaXplICE9IHNtYWxsIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgLiN7JHNpemV9LWV4cGFuZCB7XG4gICAgICAgICAgZmxleDogZmxleC1ncmlkLWNvbHVtbigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU2l6aW5nIChzaHJpbmspXG4gIC5zaHJpbmsge1xuICAgIGZsZXg6IGZsZXgtZ3JpZC1jb2x1bW4oc2hyaW5rKTtcbiAgfVxuXG4gIC8vIEF1dG8tc3RhY2tpbmcvdW5zdGFja2luZ1xuICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICBAaWYgJHNpemUgIT0gc21hbGwge1xuICAgICAgLnJvdy4jeyRzaXplfS11bnN0YWNrIHtcbiAgICAgICAgLmNvbHVtbiB7XG4gICAgICAgICAgZmxleDogZmxleC1ncmlkLWNvbHVtbigxMDAlKTtcblxuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgICAgIGZsZXg6IGZsZXgtZ3JpZC1jb2x1bW4oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTb3VyY2Ugb3JkZXJpbmdcbiAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCA2IHtcbiAgICAgICAgLiN7JHNpemV9LW9yZGVyLSN7JGl9IHtcbiAgICAgICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtb3JkZXIoJGkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSG9yaXpvbnRhbCBhbGlnbm1lbnQgdXNpbmcganVzdGlmeS1jb250ZW50XG4gIEBlYWNoICRoZGlyLCAkcHJvcCBpbiAoXG4gICAgJ3JpZ2h0JzogZmxleC1lbmQsXG4gICAgJ2NlbnRlcic6IGNlbnRlcixcbiAgICAnanVzdGlmeSc6IHNwYWNlLWJldHdlZW4sXG4gICAgJ3NwYWNlZCc6IHNwYWNlLWFyb3VuZCxcbiAgKSB7XG4gICAgLnJvdy5hbGlnbi0jeyRoZGlyfSB7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6ICRwcm9wO1xuICAgIH1cbiAgfVxuXG4gIC8vIFZlcnRpY2FsIGFsaWdubWVudCB1c2luZyBhbGlnbi1pdGVtcyBhbmQgYWxpZ24tc2VsZlxuICBAZWFjaCAkdmRpciwgJHByb3AgaW4gKFxuICAgICd0b3AnOiBmbGV4LXN0YXJ0LFxuICAgICdib3R0b20nOiBmbGV4LWVuZCxcbiAgICAnbWlkZGxlJzogY2VudGVyLFxuICAgICdzdHJldGNoJzogc3RyZXRjaCxcbiAgKSB7XG4gICAgLnJvdy5hbGlnbi0jeyR2ZGlyfSB7XG4gICAgICBhbGlnbi1pdGVtczogJHByb3A7XG4gICAgfVxuXG4gICAgLmNvbHVtbi5hbGlnbi0jeyR2ZGlyfSB7XG4gICAgICBhbGlnbi1zZWxmOiAkcHJvcDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIENhbGN1bGF0ZXMgdGhlIHdpZHRoIG9mIGEgY29sdW1uIGJhc2VkIG9uIGEgbnVtYmVyIG9mIGZhY3RvcnMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkY29sdW1uc1xuLy8vICAgV2lkdGggb2YgdGhlIGNvbHVtbi4gQWNjZXB0cyBtdWx0aXBsZSB2YWx1ZXM6XG4vLy8gICAtIEEgcGVyY2VudGFnZSB2YWx1ZSB3aWxsIG1ha2UgdGhlIGNvbHVtbiB0aGF0IGV4YWN0IHNpemUuXG4vLy8gICAtIEEgc2luZ2xlIGRpZ2l0IHdpbGwgbWFrZSB0aGUgY29sdW1uIHNwYW4gdGhhdCBudW1iZXIgb2YgY29sdW1ucyB3aWRlLCB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBjb2x1bW4gY291bnQgb2YgdGhlIHBhcmVudCByb3cuXG4vLy8gICAtIEEgc3RyaW5nIG9mIHRoZSBmb3JtYXQgXCJ4IG9mIHlcIiB3aWxsIG1ha2UgYSBjb2x1bW4gdGhhdCBpcyAqeCogY29sdW1ucyB3aWRlLCBhc3N1bWluZyAqeSogdG90YWwgY29sdW1ucyBmb3IgdGhlIHBhcmVudC5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IEEgY2FsY3VsYXRlZCBwZXJjZW50YWdlIHZhbHVlLlxuQGZ1bmN0aW9uIGdyaWQtY29sdW1uKCRjb2x1bW5zKSB7XG4gICR3aWR0aDogMCU7XG5cbiAgLy8gUGFyc2luZyBwZXJjZW50cywgZGVjaW1hbHMsIGFuZCBjb2x1bW4gY291bnRzXG4gIEBpZiB0eXBlLW9mKCRjb2x1bW5zKSA9PSAnbnVtYmVyJyB7XG4gICAgQGlmIHVuaXQoJGNvbHVtbnMpID09ICclJyB7XG4gICAgICAkd2lkdGg6ICRjb2x1bW5zO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkY29sdW1ucyA8IDEge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRjb2x1bW5zKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRjb2x1bW5zIC8gJGdyaWQtY29sdW1uLWNvdW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBQYXJzaW5nIFwibiBvZiBuXCIgZXhwcmVzc2lvbnNcbiAgQGVsc2UgaWYgdHlwZS1vZigkY29sdW1ucykgPT0gJ2xpc3QnIHtcbiAgICBAaWYgbGVuZ3RoKCRjb2x1bW5zKSAhPSAzIHtcbiAgICAgIEBlcnJvciAnV3Jvbmcgc3ludGF4IGZvciBncmlkLWNvbHVtbigpLiBVc2UgdGhlIGZvcm1hdCBcIm4gb2YgblwiLic7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICR3aWR0aDogcGVyY2VudGFnZShudGgoJGNvbHVtbnMsIDEpIC8gbnRoKCRjb2x1bW5zLCAzKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQW55dGhpbmcgZWxzZSBpcyBpbmNvcnJlY3RcbiAgQGVsc2Uge1xuICAgIEBlcnJvciAnV3Jvbmcgc3ludGF4IGZvciBncmlkLWNvbHVtbigpLiBVc2UgYSBudW1iZXIsIGRlY2ltYWwsIHBlcmNlbnRhZ2UsIG9yIFwibiBvZiBuXCIuJztcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoO1xufVxuXG4vLy8gQ3JlYXRlcyBhIGdyaWQgY29sdW1uLlxuLy8vXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGNvbHVtbnMgWyRncmlkLWNvbHVtbi1jb3VudF0gLSBXaWR0aCBvZiB0aGUgY29sdW1uLiBSZWZlciB0byB0aGUgYGdyaWQtY29sdW1uKClgIGZ1bmN0aW9uIHRvIHNlZSBwb3NzaWJsZSB2YWx1ZXMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRndXR0ZXIgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gU3BhY2luZyBiZXR3ZWVuIGNvbHVtbnMuXG5AbWl4aW4gZ3JpZC1jb2x1bW4oXG4gICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW4tY291bnQsXG4gICRndXR0ZXI6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICAkZ3V0dGVyOiByZW0tY2FsYygkZ3V0dGVyKSAvIDI7XG5cbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tc2l6ZSgkY29sdW1ucyk7XG4gIGZsb2F0OiAkZ2xvYmFsLWxlZnQ7XG4gIHBhZGRpbmctbGVmdDogJGd1dHRlcjtcbiAgcGFkZGluZy1yaWdodDogJGd1dHRlcjtcblxuICBAaWYgJGdyaWQtY29sdW1uLWFsaWduLWVkZ2Uge1xuICAgICY6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgICBmbG9hdDogJGdsb2JhbC1yaWdodDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBncmlkIGNvbHVtbiByb3cuIFRoaXMgaXMgdGhlIGVxdWl2YWxlbnQgb2YgYWRkaW5nIGAucm93YCBhbmQgYC5jb2x1bW5gIHRvIHRoZSBzYW1lIGVsZW1lbnQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJGd1dHRlciBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBXaWR0aCBvZiB0aGUgZ3V0dGVycyBvbiBlaXRoZXIgc2lkZSBvZiB0aGUgY29sdW1uIHJvdy5cbkBtaXhpbiBncmlkLWNvbHVtbi1yb3coXG4gICRndXR0ZXI6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICBAaW5jbHVkZSBncmlkLXJvdztcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4oJGd1dHRlcjogJGd1dHRlcik7XG4gIFxuICAmLFxuICAmOmxhc3QtY2hpbGQge1xuICAgIGZsb2F0OiBub25lO1xuICB9XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbigpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW5cbkBmdW5jdGlvbiBncmlkLWNvbChcbiAgJGNvbHVtbnM6ICRncmlkLWNvbHVtbi1jb3VudFxuKSB7XG4gIEByZXR1cm4gZ3JpZC1jb2x1bW4oJGNvbHVtbnMpO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4oKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uXG5AbWl4aW4gZ3JpZC1jb2woXG4gICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW4tY291bnQsXG4gICRndXR0ZXI6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbigkY29sdW1ucywgJGd1dHRlcik7XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi1yb3coKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLXJvd1xuQG1peGluIGdyaWQtY29sLXJvdyhcbiAgJGd1dHRlcjogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLXJvdygkZ3V0dGVyKTtcbn1cbiIsIi5wcmltYXJ5LWZvb3RlciB7XG5cbiAgICBiYWNrZ3JvdW5kOiAkZm9vdGVyLWJhY2tncm91bmQtY29sb3I7XG4gICAgY29sb3I6ICRmb290ZXItY29sb3I7XG4gICAgcGFkZGluZzogI3skZ2xvYmFsLW1hcmdpbiAqIDJ9IDA7XG5cbiAgICB1bCB7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgfVxuXG4gICAgJl9fY29tcGFueSB7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1yb3coKTtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxNCk7XG5cbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICAgICA+IGRpdiB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtY29sdW1uKDEyKTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLWNvbHVtbig0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2FkZHJlc3Mge1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuXG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IC41cmVtO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogMjVweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDI1cHg7XG4gICAgICAgICAgICB9XG5cblxuXG4gICAgICAgICAgICBzdHJvbmcge1xuICAgICAgICAgICAgICAgIGNvbG9yOiBkYXJrZW4oJGZvb3Rlci1jb2xvciwgMTAlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICBmaWxsOiBkYXJrZW4oJGZvb3Rlci1jb2xvciwgMTAlKTs7XG4gICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICB3aWR0aDogMjBweDtcblxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KSB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlcigpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fY29weXJpZ2h0IHtcblxuICAgICAgICBtYXJnaW46IDA7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIGhlaWdodDogcmVtLWNhbGMoMTQpO1xuICAgICAgICAgICAgd2lkdGg6IHJlbS1jYWxjKDE0KTtcblxuICAgICAgICAgICAgLy9maWxsOiBzbWFydC1zY2FsZSgkZm9vdGVyLWNvbG9yKTtcbiAgICAgICAgICAgIGZpbGw6IGZvcmVncm91bmQoJGZvb3Rlci1iYWNrZ3JvdW5kLWNvbG9yLCAjMDAwLCAjZmZmKSAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAuNXJlbTtcblxuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRmb290ZXItY29sb3I7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6bm90KDpsYXN0LWNoaWxkKTo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcvJztcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAuNXJlbTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IC41cmVtO1xuICAgICAgICAgICAgICAgIGNvbG9yOiBkYXJrZW4oJGZvb3Rlci1jb2xvciwgMTAlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2xpbmtzIHtcblxuICAgICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtcm93KCk7XG5cbiAgICAgICAgPiBkaXYge1xuICAgICAgICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLWNvbHVtbigxMik7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcblxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtY29sdW1uKDYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRmb290ZXItY29sb3I7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW47XG5cblxuICAgICAgICBhIHtcbiAgICAgICAgICAgIGNvbG9yOiAkZm9vdGVyLWNvbG9yO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogLjVzIGFsbDtcblxuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICBmaWxsOiBkYXJrZW4oJGZvb3Rlci1jb2xvciwgMTAlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgID4gZGl2IHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiBpbmhlcml0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA+IGRpdjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPiBkaXY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgICZfX3NvY2lhbGUge1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuXG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIG1hcmdpbjogMCAkZ2xvYmFsLW1hcmdpbjtcbiAgICAgICAgICAgICY6aG92ZXIgc3ZnIHtcbiAgICAgICAgICAgICAgICBmaWxsOiBzbWFydC1zY2FsZSgkZm9vdGVyLWNvbG9yLCA0MCUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogLjVzIGFsbDtcbiAgICAgICAgICAgIGZpbGw6IGRhcmtlbigkZm9vdGVyLWNvbG9yLCAxMCUpO1xuICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIuYWJvdXQtdXMge1xuICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1yb3coKTtcblxuICAgICZfX2FuY2hvciB7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1jb2x1bW4oMTIpO1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtY29sdW1uKDQpO1xuICAgICAgICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLW9yZGVyKDIpXG4gICAgICAgIH1cblxuICAgICAgICA+IGRpdiB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIHVsIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cblxuICAgICAgICBhIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICBhLmFjdGl2ZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcbiAgICAgICAgICAgIGNvbG9yOiAkc2Vjb25kYXJ5LWNvbG9yO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICAmX19pdGVtcyB7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1jb2x1bW4oMTIpO1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtY29sdW1uKDgpO1xuICAgICAgICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLW9yZGVyKDEpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19pdGVtIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1wYWRkaW5nICogMjtcbiAgICB9XG5cbiAgICAmX19jb250ZW50IHtcbiAgICAgICAgcGFkZGluZzogJGdsb2JhbC1wYWRkaW5nICogNDtcbiAgICB9XG59XG5cbi8vLmFib3V0LXVzIHtcbi8vICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1yb3coKTtcbi8vXG4vLyAgICA+IGgyIHtcbi8vICAgICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtY29sdW1uKDEyKTtcbi8vICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4vLyAgICB9XG4vL1xuLy8gICAgJl9fbWV0YSB7XG4vLyAgICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLWNvbHVtbig2KTtcbi8vXG4vLyAgICAgICAgcGFkZGluZzogJGdsb2JhbC1tYXJnaW4gKiAyO1xuLy9cbi8vICAgICAgICBoMSB7XG4vLyAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4vLyAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTgpO1xuLy8gICAgICAgIH1cbi8vICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbi8vICAgIH1cbi8vXG4vLyAgICAmX19waWN0dXJlIHtcbi8vICAgICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtY29sdW1uKDYpO1xuLy8gICAgICAgIHBhZGRpbmc6IDA7XG4vL1xuLy8gICAgfVxuLy9cbi8vfVxuIiwiLmNvbnRhY3Qge1xuICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1yb3coKTtcblxuXG4gICAgJl9fYWRkcmVzcyB7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1jb2x1bW4oMTIpO1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIHVwKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtY29sdW1uKDQpO1xuICAgICAgICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLW9yZGVyKDIpO1xuICAgICAgICB9XG5cblxuICAgICAgICAmLmNvbnRlbnQge1xuICAgICAgICAgICAgcGFkZGluZzogNHJlbSAxcmVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9faW5xdWlyZSB7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1jb2x1bW4oMTIpO1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIHVwKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtY29sdW1uKDgpO1xuICAgICAgICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLW9yZGVyKDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fY2FsbG91dCB7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1yb3coKTtcblxuICAgICAgICAuY2FsbG91dCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtY29sdW1uKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIubmV3cyB7XG4gICAgQGluY2x1ZGUgZmxleC1ncmlkLXJvdygpO1xuICAgIHBhZGRpbmc6ICN7JGdsb2JhbC1wYWRkaW5nICogNH0gJGdsb2JhbC1wYWRkaW5nO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAvL21hcmdpbi1ib3R0b206IDFweDtcblxuICAgICZfX2NvbnRlbnQge1xuICAgICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtb3JkZXIoMik7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0gdXApIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1jb2x1bW4oNywgMTByZW0pO1xuICAgICAgICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLW9yZGVyKDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fY29udGVudC0td2lkZSB7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtY29sdW1uKDEyLCAkZ2xvYmFsLXBhZGRpbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLW9yZGVyKDEpO1xuICAgICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtY29sdW1uKDEyLCAxMHJlbSk7XG4gICAgfVxuXG4gICAgJl9fcGljdHVyZSB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLWNvbHVtbigpO1xuICAgICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtb3JkZXIoMSk7XG5cblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpIHtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAkZ2xvYmFsLW1hcmdpbiAqIDI7XG4gICAgICAgIH1cblxuXG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiAuMnMgbGluZWFyIGFsbDtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAkZ2xvYmFsLW1hcmdpbiAqIDI7XG4gICAgICAgIH1cblxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIHVwKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtY29sdW1uKDUsIDEwcmVtKTtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1vcmRlcigyKTtcblxuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX190aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjgpO1xuXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xuXG4gICAgICAgID4gc21hbGwge1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxOCk7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogJGdsb2JhbC1tYXJnaW47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19zaG9ydC1kZXNjcmlwdGlvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbiAqIDI7XG4gICAgfVxuXG4gICAgLmJ1dHRvbiB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSkge1xuICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWV4cGFuZCgpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLnRleHQtcmlnaHQgLmJ1dHRvbiB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICB9XG5cblxuICAgICY6aG92ZXIgJl9fcGljdHVyZSBpbWcge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpIHtcbiAgICAubmV3cy50ZXh0LXJpZ2h0IHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICAgIGgyIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6ICRnbG9iYWwtbWFyZ2luO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5cbi5wb3N0IHtcbiAgICBAaWYgKGxpZ2h0bmVzcygkYm9keS1iYWNrZ3JvdW5kKSA+IDYwJSkge1xuICAgICAgICAkYmFja2dyb3VuZC1jb2xvcjogbGlnaHRlbigkYm9keS1iYWNrZ3JvdW5kLCAyJSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAgICRiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oJGJvZHktYmFja2dyb3VuZCwgMiUpO1xuICAgIH1cblxuICAgID4gKiB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuXG4gICAgQGluY2x1ZGUgZmxleC1ncmlkLXJvdygpO1xuXG4gICAgJl9faGVhZGVyIHtcbiAgICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLXJvdygpO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAmX19waWN0dXJlIHtcbiAgICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLWNvbHVtbigxMik7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIFxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIHVwKSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLWNvbHVtbig2KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX21ldGFzIHtcblxuICAgICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtY29sdW1uKDEyKTtcblxuICAgICAgICBwYWRkaW5nOiAkZ2xvYmFsLW1hcmdpbiAqIDMgIWltcG9ydGFudDtcblxuICAgICAgICBoMSAge1xuICAgICAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29sb3I7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDMyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRpbWUge1xuICAgICAgICAgICAgY29sb3I6ICRzZWNvbmRhcnktY29sb3I7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpO1xuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHJlbS1jYWxjKDE0KTtcbiAgICAgICAgICAgICAgICB3aWR0aDogcmVtLWNhbGMoMTQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICBmaWxsOiAkc2Vjb25kYXJ5LWNvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJ1dHRvbnMge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogJGdsb2JhbC1tYXJnaW4gKiA0O1xuICAgICAgICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLXJvdygpO1xuXG4gICAgICAgICAgICA+IGRpdiB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLWNvbHVtbigxMik7XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5idXR0b24ge1xuICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWhvbGxvdy1zdHlsZSgkc2Vjb25kYXJ5LWNvbG9yKTtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3coKTtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1leHBhbmQoKTtcblxuXG4gICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgIGZpbGw6ICRzZWNvbmRhcnktY29sb3I7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxcmVtO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxcmVtO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmhvdmVyIHN2ZyB7XG4gICAgICAgICAgICAgICAgZmlsbDogc2NhbGUtY29sb3IoJHNlY29uZGFyeS1jb2xvciwgJGxpZ2h0bmVzczogLTUwJSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIHVwKSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgQGluY2x1ZGUgZmxleC1ncmlkLWNvbHVtbig2KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2NvbnRlbnQge1xuICAgICAgICBwYWRkaW5nOiAkZ2xvYmFsLXBhZGRpbmcgKiA0O1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICB9XG5cbiAgICAmX19mb290ZXIge1xuICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeCgpO1xuICAgICAgICBAaW5jbHVkZSBzaG93LWZvcihsYXJnZSk7XG5cblxuICAgICAgICAuYnV0dG9uIHtcblxuICAgICAgICAgICAgJGJ1dHRvbi1jb2xvcjogc21hcnQtc2NhbGUoJGJhY2tncm91bmQtY29sb3IsIDQwJSk7XG4gICAgICAgICAgICAkYnV0dG9uLWhvdmVyOiBzY2FsZS1jb2xvcigkYnV0dG9uLWNvbG9yLCAkbGlnaHRuZXNzOiAtNTAlKTtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3coKTtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3ctc3R5bGUoJGJ1dHRvbi1jb2xvcik7XG5cbiAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMHB4O1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMHB4O1xuICAgICAgICAgICAgICAgIGZpbGw6ICRidXR0b24tY29sb3I7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6aG92ZXIgc3Zne1xuICAgICAgICAgICAgICAgIGZpbGw6ICRidXR0b24taG92ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAucmlnaHQge1xuICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgLmxlZnQge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBidXR0b25cbi8vLy9cblxuLy8vIFBhZGRpbmcgaW5zaWRlIGJ1dHRvbnMuXG4vLy8gQHR5cGUgTGlzdFxuJGJ1dHRvbi1wYWRkaW5nOiAwLjg1ZW0gMWVtICFkZWZhdWx0O1xuXG4vLy8gTWFyZ2luIGFyb3VuZCBidXR0b25zLlxuLy8vIEB0eXBlIExpc3RcbiRidXR0b24tbWFyZ2luOiAwIDAgJGdsb2JhbC1tYXJnaW4gMCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZmlsbCBmb3IgYnV0dG9ucy4gQ2FuIGVpdGhlciBiZSBgc29saWRgIG9yIGBob2xsb3dgLlxuLy8vIEB0eXBlIEtleXdvcmRcbiRidXR0b24tZmlsbDogc29saWQgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIGJ1dHRvbnMuXG4vLy8gQHR5cGUgQ29sb3JcbiRidXR0b24tYmFja2dyb3VuZDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9uIGhvdmVyIGZvciBidXR0b25zLlxuLy8vIEB0eXBlIENvbG9yXG4kYnV0dG9uLWJhY2tncm91bmQtaG92ZXI6IHNjYWxlLWNvbG9yKCRidXR0b24tYmFja2dyb3VuZCwgJGxpZ2h0bmVzczogLTE1JSkgIWRlZmF1bHQ7XG5cbi8vLyBGb250IGNvbG9yIGZvciBidXR0b25zLlxuLy8vIEB0eXBlIExpc3RcbiRidXR0b24tY29sb3I6ICNmZmYgIWRlZmF1bHQ7XG5cbi8vLyBGb250IGNvbG9yIGZvciBidXR0b25zLCBpZiB0aGUgYmFja2dyb3VuZCBpcyBsaWdodC5cbi8vLyBAdHlwZSBMaXN0XG4kYnV0dG9uLWNvbG9yLWFsdDogIzAwMCAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciByYWRpdXMgZm9yIGJ1dHRvbnMsIGRlZmF1bHRlZCB0byBnbG9iYWwtcmFkaXVzLlxuLy8vIEB0eXBlIE51bWJlclxuJGJ1dHRvbi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gU2l6ZXMgZm9yIGJ1dHRvbnMuXG4vLy8gQHR5cGUgTWFwXG4kYnV0dG9uLXNpemVzOiAoXG4gIHRpbnk6IDAuNnJlbSxcbiAgc21hbGw6IDAuNzVyZW0sXG4gIGRlZmF1bHQ6IDAuOXJlbSxcbiAgbGFyZ2U6IDEuMjVyZW0sXG4pICFkZWZhdWx0O1xuXG4vLy8gb3BhY2l0eSBmb3IgYSBkaXNhYmxlZCBidXR0b24uXG4vLy8gQHR5cGUgTGlzdFxuJGJ1dHRvbi1vcGFjaXR5LWRpc2FibGVkOiAwLjI1ICFkZWZhdWx0O1xuXG4vLyBJbnRlcm5hbDogZmxpcCBmcm9tIG1hcmdpbi1yaWdodCB0byBtYXJnaW4tbGVmdCBmb3IgZGVmYXVsdHNcbkBpZiAkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09ICdydGwnIHtcbiAgJGJ1dHRvbi1tYXJnaW46IDAgMCAkZ2xvYmFsLW1hcmdpbiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcbn1cblxuLy8gVE9ETzogRG9jdW1lbnQgYnV0dG9uLWJhc2UoKSBtaXhpblxuQG1peGluIGJ1dHRvbi1iYXNlIHtcbiAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4yNXMgZWFzZS1vdXQ7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiAkYnV0dG9uLXJhZGl1cztcbiAgcGFkZGluZzogJGJ1dHRvbi1wYWRkaW5nO1xuICBtYXJnaW46ICRidXR0b24tbWFyZ2luO1xuICBmb250LXNpemU6IG1hcC1nZXQoJGJ1dHRvbi1zaXplcywgZGVmYXVsdCk7XG59XG5cbi8vLyBFeHBhbmRzIGEgYnV0dG9uIHRvIG1ha2UgaXQgZnVsbC13aWR0aC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRleHBhbmQgW3RydWVdIC0gU2V0IHRvIGB0cnVlYCB0byBlbmFibGUgdGhlIGV4cGFuZCBiZWhhdmlvci4gU2V0IHRvIGBmYWxzZWAgdG8gcmV2ZXJzZSB0aGlzIGJlaGF2aW9yLlxuQG1peGluIGJ1dHRvbi1leHBhbmQoJGV4cGFuZDogdHJ1ZSkge1xuICBAaWYgJGV4cGFuZCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICB9XG4gIEBlbHNlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgbWFyZ2luOiAkYnV0dG9uLW1hcmdpbjtcbiAgfVxufVxuXG4vLy8gU2V0cyB0aGUgdmlzdWFsIHN0eWxlIG9mIGEgYnV0dG9uLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kIFskYnV0dG9uLWJhY2tncm91bmRdIC0gQmFja2dyb3VuZCBjb2xvciBvZiB0aGUgYnV0dG9uLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kLWhvdmVyIFskYnV0dG9uLWJhY2tncm91bmQtaG92ZXJdIC0gQmFja2dyb3VuZCBjb2xvciBvZiB0aGUgYnV0dG9uIG9uIGhvdmVyLiBTZXQgdG8gYGF1dG9gIHRvIGhhdmUgdGhlIG1peGluIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBob3ZlciBjb2xvci5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRidXR0b24tY29sb3JdIC0gVGV4dCBjb2xvciBvZiB0aGUgYnV0dG9uLiBTZXQgdG8gYGF1dG9gIHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBjb2xvciBiYXNlZCBvbiB0aGUgYmFja2dyb3VuZCBjb2xvci5cbkBtaXhpbiBidXR0b24tc3R5bGUoXG4gICRiYWNrZ3JvdW5kOiAkYnV0dG9uLWJhY2tncm91bmQsXG4gICRiYWNrZ3JvdW5kLWhvdmVyOiAkYnV0dG9uLWJhY2tncm91bmQtaG92ZXIsXG4gICRjb2xvcjogJGJ1dHRvbi1jb2xvclxuKSB7XG4gIEBpZiAkY29sb3IgPT0gYXV0byB7XG4gICAgJGNvbG9yOiBpc2l0bGlnaHQoJGJhY2tncm91bmQpO1xuICB9XG5cbiAgQGlmICRiYWNrZ3JvdW5kLWhvdmVyID09IGF1dG8ge1xuICAgICRiYWNrZ3JvdW5kLWhvdmVyOiBzY2FsZS1jb2xvcigkYmFja2dyb3VuZCwgJGxpZ2h0bmVzczogLTIwJSk7XG4gIH1cblxuICBAaWYgbGlnaHRuZXNzKCRiYWNrZ3JvdW5kKSA+PSA3MCUge1xuICAgICRjb2xvcjogJGJ1dHRvbi1jb2xvci1hbHQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRjb2xvcjogJGJ1dHRvbi1jb2xvcjtcbiAgfVxuXG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICBjb2xvcjogJGNvbG9yO1xuXG4gICY6aG92ZXIsICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kLWhvdmVyO1xuICAgIGNvbG9yOiAkY29sb3I7XG4gIH1cbn1cblxuLy8vIFJlbW92ZXMgYmFja2dyb3VuZCBmaWxsIG9uIGhvdmVyIGFuZCBmb2N1cyBmb3IgaG9sbG93IGJ1dHRvbnMuXG5AbWl4aW4gYnV0dG9uLWhvbGxvdyB7XG4gICYsXG4gICY6aG92ZXIsICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICB9XG59XG5cbkBtaXhpbiBidXR0b24taG9sbG93LXN0eWxlKCRjb2xvcjogJHByaW1hcnktY29sb3IpIHtcbiAgJGNvbG9yLWhvdmVyOiBzY2FsZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6IC01MCUpO1xuXG4gIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvcjtcbiAgY29sb3I6ICRjb2xvcjtcblxuICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6ICRjb2xvci1ob3ZlcjtcbiAgICBjb2xvcjogJGNvbG9yLWhvdmVyO1xuICB9XG59XG5cbi8vLyBBZGRzIGRpc2FibGVkIHN0eWxlcyB0byBhIGJ1dHRvbiBieSBmYWRpbmcgdGhlIGVsZW1lbnQsIHJlc2V0aW5nIHRoZSBjdXJzb3IsIGFuZCBkaXNhYmxpbmcgcG9pbnRlciBldmVudHMuXG5AbWl4aW4gYnV0dG9uLWRpc2FibGVkIHtcbiAgb3BhY2l0eTogJGJ1dHRvbi1vcGFjaXR5LWRpc2FibGVkO1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLy8vIEFkZHMgYSBkcm9wZG93biBhcnJvdyB0byBhIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNpemUgWzAuNGVtXSAtIFNpemUgb2YgdGhlIGFycm93LiBXZSByZWNvbW1lbmQgdXNpbmcgYW4gYGVtYCB2YWx1ZSBzbyB0aGUgdHJpYW5nbGUgc2NhbGVzIHdoZW4gdXNlZCBpbnNpZGUgZGlmZmVyZW50IHNpemVzIG9mIGJ1dHRvbnMuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFt3aGl0ZV0gLSBDb2xvciBvZiB0aGUgYXJyb3cuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRvZmZzZXQgWyRidXR0b24tcGFkZGluZ10gLSBEaXN0YW5jZSBiZXR3ZWVuIHRoZSBhcnJvdyBhbmQgdGhlIHRleHQgb2YgdGhlIGJ1dHRvbi4gRGVmYXVsdHMgdG8gd2hhdGV2ZXIgdGhlIHJpZ2h0IHBhZGRpbmcgb2YgYSBidXR0b24gaXMuXG5AbWl4aW4gYnV0dG9uLWRyb3Bkb3duKFxuICAkc2l6ZTogMC40ZW0sXG4gICRjb2xvcjogJHdoaXRlLFxuICAkb2Zmc2V0OiBnZXQtc2lkZSgkYnV0dG9uLXBhZGRpbmcsIHJpZ2h0KVxuKSB7XG4gICY6OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJHNpemUsICRjb2xvciwgZG93bik7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRvcDogMC40ZW07IC8vIEFsaWducyB0aGUgYXJyb3cgd2l0aCB0aGUgdGV4dCBvZiB0aGUgYnV0dG9uXG4gICAgZmxvYXQ6ICN7JGdsb2JhbC1yaWdodH07XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogZ2V0LXNpZGUoJGJ1dHRvbi1wYWRkaW5nLCByaWdodCk7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG59XG5cbi8vLyBBZGRzIGFsbCBzdHlsZXMgZm9yIGEgYnV0dG9uLiBGb3IgbW9yZSBncmFudWxhciBjb250cm9sIG92ZXIgc3R5bGVzLCB1c2UgdGhlIGluZGl2aWR1YWwgYnV0dG9uIG1peGlucy5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRleHBhbmQgW2ZhbHNlXSAtIFNldCB0byBgdHJ1ZWAgdG8gbWFrZSB0aGUgYnV0dG9uIGZ1bGwtd2lkdGguXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgWyRidXR0b24tYmFja2dyb3VuZF0gLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBidXR0b24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQtaG92ZXIgWyRidXR0b24tYmFja2dyb3VuZC1ob3Zlcl0gLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBidXR0b24gb24gaG92ZXIuIFNldCB0byBgYXV0b2AgdG8gaGF2ZSB0aGUgbWl4aW4gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBhIGhvdmVyIGNvbG9yLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGJ1dHRvbi1jb2xvcl0gLSBUZXh0IGNvbG9yIG9mIHRoZSBidXR0b24uIFNldCB0byBgYXV0b2AgdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBhIGNvbG9yIGJhc2VkIG9uIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHN0eWxlIFtzb2xpZF0gLSBTZXQgdG8gYGhvbGxvd2AgdG8gY3JlYXRlIGEgaG9sbG93IGJ1dHRvbi4gVGhlIGNvbG9yIGRlZmluZWQgaW4gYCRiYWNrZ3JvdW5kYCB3aWxsIGJlIHVzZWQgYXMgdGhlIHByaW1hcnkgY29sb3Igb2YgdGhlIGJ1dHRvbi5cbkBtaXhpbiBidXR0b24oXG4gICRleHBhbmQ6IGZhbHNlLFxuICAkYmFja2dyb3VuZDogJGJ1dHRvbi1iYWNrZ3JvdW5kLFxuICAkYmFja2dyb3VuZC1ob3ZlcjogJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyLFxuICAkY29sb3I6ICRidXR0b24tY29sb3IsXG4gICRzdHlsZTogJGJ1dHRvbi1maWxsXG4pIHtcbiAgQGluY2x1ZGUgYnV0dG9uLWJhc2U7XG5cbiAgQGlmICRzdHlsZSA9PSBzb2xpZCB7XG4gICAgQGluY2x1ZGUgYnV0dG9uLXN0eWxlKCRiYWNrZ3JvdW5kLCAkYmFja2dyb3VuZC1ob3ZlciwgJGNvbG9yKTtcbiAgfVxuICBAZWxzZSBpZiAkc3R5bGUgPT0gaG9sbG93IHtcbiAgICBAaW5jbHVkZSBidXR0b24taG9sbG93O1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3ctc3R5bGUoJGJhY2tncm91bmQpO1xuICB9XG5cbiAgQGlmICRleHBhbmQge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1leHBhbmQ7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tYnV0dG9uIHtcbiAgLmJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgYnV0dG9uO1xuXG4gICAgLy8gU2l6ZXNcbiAgICAmLnRpbnkgICAgIHsgZm9udC1zaXplOiBtYXAtZ2V0KCRidXR0b24tc2l6ZXMsIHRpbnkpOyB9XG4gICAgJi5zbWFsbCAgICB7IGZvbnQtc2l6ZTogbWFwLWdldCgkYnV0dG9uLXNpemVzLCBzbWFsbCk7IH1cbiAgICAmLmxhcmdlICAgIHsgZm9udC1zaXplOiBtYXAtZ2V0KCRidXR0b24tc2l6ZXMsIGxhcmdlKTsgfVxuICAgICYuZXhwYW5kZWQgeyBAaW5jbHVkZSBidXR0b24tZXhwYW5kOyB9XG5cbiAgICAvLyBDb2xvcnNcbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRmb3VuZGF0aW9uLWNvbG9ycyB7XG4gICAgICBAaWYgJGJ1dHRvbi1maWxsICE9IGhvbGxvdyB7XG4gICAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1zdHlsZSgkY29sb3IsIGF1dG8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3ctc3R5bGUoJGNvbG9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuI3skbmFtZX0uZHJvcGRvd246OmFmdGVyIHtcbiAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIb2xsb3cgc3R5bGVcbiAgICBAaWYgJGJ1dHRvbi1maWxsICE9IGhvbGxvdyB7XG4gICAgICAmLmhvbGxvdyB7XG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3c7XG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3ctc3R5bGU7XG5cbiAgICAgICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkZm91bmRhdGlvbi1jb2xvcnMge1xuICAgICAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWhvbGxvdy1zdHlsZSgkY29sb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIERpc2FibGVkIHN0eWxlXG4gICAgJi5kaXNhYmxlZCxcbiAgICAmW2Rpc2FibGVkXSB7XG4gICAgICBAaW5jbHVkZSBidXR0b24tZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgLy8gRHJvcGRvd24gYXJyb3dcbiAgICAmLmRyb3Bkb3duIHtcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbi1kcm9wZG93bjtcblxuICAgICAgQGlmICRidXR0b24tZmlsbCA9PSBob2xsb3cge1xuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGJ1dHRvbi1iYWNrZ3JvdW5kO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQnV0dG9uIHdpdGggZHJvcGRvd24gYXJyb3cgb25seVxuICAgICYuYXJyb3ctb25seTo6YWZ0ZXIge1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogMDtcbiAgICAgIGZsb2F0OiBub25lO1xuICAgICAgdG9wOiAwLjJlbTtcbiAgICB9XG4gIH1cbn1cbiIsIi5zdHJpcCB7XG4gICAgQGluY2x1ZGUgZmxleC1ncmlkLXJvdygpO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW4gKiAyO1xufVxuXG4uc3RyaXBfX3RpdGxlIHtcbiAgICBwYWRkaW5nOiAkZ2xvYmFsLXBhZGRpbmc7XG4gICAgQGluY2x1ZGUgZmxleC1ncmlkLWNvbHVtbigpO1xuICAgIGNvbG9yOiAkbGVhZC10aXRsZS1jb2xvcjtcbiAgICB0ZXh0LXRyYW5zZm9ybTogJGxlYWQtdGl0bGUtc3R5bGU7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygzMik7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbn1cblxuLnN0cmlwX19icmVhZGNydW1icyB7XG4gICAgQGluY2x1ZGUgZmxleC1ncmlkLWNvbHVtbihzaHJpbmspO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG5cbi5zdHJpcCB7XG4gICAgJi0tc2Vjb25kYXJ5IHtcbiAgICAgICAgYmFja2dyb3VuZDogJGxlYWQtY29sb3I7XG4gICAgfVxuXG4gICAgJi0tbm8tbWFyZ2luLFxuICAgICYtLW5vLW1hcmdpbiAuc3RyaXBcbiAgICB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG4uc3RyaXAtLWNhbGxvdXQge1xuICAgIHBhZGRpbmc6IDEwcmVtIDA7XG4gICAgYmFja2dyb3VuZDogdXJsKCcuLi9pbWcvYWNjZXNzb3J5LXMucG5nJykgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXIgZml4ZWQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy4uL2ltZy9hY2Nlc3NvcnktbS5wbmcnKTtcbiAgICB9XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy4uL2ltZy9hY2Nlc3NvcnktbC5wbmcnKTtcbiAgICB9XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCh4bGFyZ2UpIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcuLi9pbWcvYWNjZXNzb3J5LXhsLnBuZycpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHh4bGFyZ2UpIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcuLi9pbWcvYWNjZXNzb3J5LXh4bC5wbmcnKTtcbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICB9XG5cbiAgICAmOjphZnRlcjpub3QoLnN0cmlwLS1jYWxsb3V0LW5ld3NsZXR0ZXIpIHtcbiAgICAgICAgQGV4dGVuZCAlZmlsdGVyLWFjY2Vzc29yeTtcbiAgICB9XG5cbiAgICA+IGRpdiB7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1yb3coKTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgIGNvbG9yOiAkaGVyby1jb2xvcjtcbiAgICAgICAgei1pbmRleDogOTk5OTtcblxuICAgICAgICA+IGRpdiB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmbGV4LWdyaWQtY29sdW1uKCk7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5zdHJpcC0tY2FsbG91dC1uZXdzbGV0dGVyIHtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoJy4uL2ltZy9uZXdzbGV0dGVyLW0ucG5nJykgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXIgZml4ZWQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vaW1nL25ld3NsZXR0ZXItbS5wbmcnKTtcbiAgICB9XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy4uL2ltZy9uZXdzbGV0dGVyLWwucG5nJyk7XG4gICAgfVxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoeGxhcmdlKSB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vaW1nL25ld3NsZXR0ZXIteGwucG5nJyk7XG4gICAgfVxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoeHhsYXJnZSkge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy4uL2ltZy9uZXdzbGV0dGVyLXh4bC5wbmcnKTtcbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICAgIEBleHRlbmQgJWZpbHRlci1lbWFpbGluZztcbiAgICB9XG59XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0= */

/*!
 * Justified Gallery - v3.6.0
 * http://miromannino.github.io/Justified-Gallery/
 * Copyright (c) 2015 Miro Mannino
 * Licensed under the MIT license.
 */
@-webkit-keyframes justified-gallery-show-caption-animation{from{opacity:0}to{opacity:.7}}@-moz-keyframes justified-gallery-show-caption-animation{from{opacity:0}to{opacity:.7}}@-o-keyframes justified-gallery-show-caption-animation{from{opacity:0}to{opacity:.7}}@keyframes justified-gallery-show-caption-animation{from{opacity:0}to{opacity:.7}}@-webkit-keyframes justified-gallery-show-entry-animation{from{opacity:0}to{opacity:1}}@-moz-keyframes justified-gallery-show-entry-animation{from{opacity:0}to{opacity:1}}@-o-keyframes justified-gallery-show-entry-animation{from{opacity:0}to{opacity:1}}@keyframes justified-gallery-show-entry-animation{from{opacity:0}to{opacity:1}}.justified-gallery{width:100%;position:relative;overflow:hidden}.justified-gallery>a,.justified-gallery>div{position:absolute;display:inline-block;overflow:hidden;opacity:0;filter:alpha(opacity=0)}.justified-gallery>a>img,.justified-gallery>div>img,.justified-gallery>a>a>img,.justified-gallery>div>a>img{position:absolute;top:50%;left:50%;margin:0;padding:0;border:0}.justified-gallery>a>.caption,.justified-gallery>div>.caption{display:none;position:absolute;bottom:0;padding:5px;background-color:#000;left:0;right:0;margin:0;color:#fff;font-size:12px;font-weight:300;font-family:sans-serif}.justified-gallery>a>.caption.caption-visible,.justified-gallery>div>.caption.caption-visible{display:initial;opacity:.7;filter:"alpha(opacity=70)";-webkit-animation:justified-gallery-show-caption-animation 500ms 0 ease;-moz-animation:justified-gallery-show-caption-animation 500ms 0 ease;-ms-animation:justified-gallery-show-caption-animation 500ms 0 ease}.justified-gallery>.entry-visible{opacity:1;filter:alpha(opacity=100);-webkit-animation:justified-gallery-show-entry-animation 500ms 0 ease;-moz-animation:justified-gallery-show-entry-animation 500ms 0 ease;-ms-animation:justified-gallery-show-entry-animation 500ms 0 ease}.justified-gallery>.jg-filtered{display:none}.justified-gallery>.spinner{position:absolute;bottom:0;margin-left:-24px;padding:10px 0;left:50%;opacity:initial;filter:initial;overflow:initial}.justified-gallery>.spinner>span{display:inline-block;opacity:0;filter:alpha(opacity=0);width:8px;height:8px;margin:0 4px;background-color:#000;border-top-left-radius:6px;border-top-right-radius:6px;border-bottom-right-radius:6px;border-bottom-left-radius:6px}
.lg-actions .lg-next,.lg-actions .lg-prev,.lg-sub-html,.lg-toolbar{background-color:rgba(0,0,0,.45);z-index:1080}#lg-counter,.lg-outer .lg-video-cont{vertical-align:middle;display:inline-block}@font-face{font-family:lg;src:url(../fonts/lg.eot?n1z373);src:url(../fonts/lg.eot?#iefixn1z373) format("embedded-opentype"),url(../fonts/lg.woff?n1z373) format("woff"),url(../fonts/lg.ttf?n1z373) format("truetype"),url(../fonts/lg.svg?n1z373#lg) format("svg");font-weight:400;font-style:normal}.lg-icon{font-family:lg;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.lg-actions .lg-next,.lg-actions .lg-prev{border-radius:2px;color:#999;cursor:pointer;display:block;font-size:22px;margin-top:-10px;padding:8px 10px 9px;position:absolute;top:50%}.lg-actions .lg-next.disabled,.lg-actions .lg-prev.disabled{pointer-events:none;opacity:.5}.lg-actions .lg-next:hover,.lg-actions .lg-prev:hover{color:#FFF}.lg-actions .lg-next{right:20px}.lg-actions .lg-next:before{content:"\e095"}.lg-actions .lg-prev{left:20px}.lg-actions .lg-prev:after{content:"\e094"}@-webkit-keyframes lg-right-end{0%,100%{left:0}50%{left:-30px}}@-moz-keyframes lg-right-end{0%,100%{left:0}50%{left:-30px}}@-ms-keyframes lg-right-end{0%,100%{left:0}50%{left:-30px}}@keyframes lg-right-end{0%,100%{left:0}50%{left:-30px}}@-webkit-keyframes lg-left-end{0%,100%{left:0}50%{left:30px}}@-moz-keyframes lg-left-end{0%,100%{left:0}50%{left:30px}}@-ms-keyframes lg-left-end{0%,100%{left:0}50%{left:30px}}@keyframes lg-left-end{0%,100%{left:0}50%{left:30px}}.lg-outer.lg-right-end .lg-object{-webkit-animation:lg-right-end .3s;-o-animation:lg-right-end .3s;animation:lg-right-end .3s;position:relative}.lg-outer.lg-left-end .lg-object{-webkit-animation:lg-left-end .3s;-o-animation:lg-left-end .3s;animation:lg-left-end .3s;position:relative}.lg-toolbar{left:0;position:absolute;top:0;width:100%}.lg-toolbar .lg-icon{color:#999;cursor:pointer;float:right;font-size:24px;height:47px;line-height:27px;padding:10px 0;text-align:center;width:50px;text-decoration:none!important;outline:0}.lg-toolbar .lg-icon:hover{color:#FFF}.lg-toolbar .lg-close:after{content:"\e070"}.lg-toolbar .lg-download:after{content:"\e0f2"}.lg-sub-html{bottom:0;color:#EEE;font-size:16px;left:0;padding:10px 40px;position:fixed;right:0;text-align:center}.lg-sub-html h4{margin:0;font-size:13px;font-weight:700}.lg-sub-html p{font-size:12px;margin:5px 0 0}#lg-counter{color:#999;font-size:16px;padding-left:20px;padding-top:12px}.lg-next,.lg-prev,.lg-toolbar{opacity:1;-webkit-transition:-webkit-transform .35s cubic-bezier(0,0,.25,1) 0s,opacity .35s cubic-bezier(0,0,.25,1) 0s;-moz-transition:-moz-transform .35s cubic-bezier(0,0,.25,1) 0s,opacity .35s cubic-bezier(0,0,.25,1) 0s;-o-transition:-o-transform .35s cubic-bezier(0,0,.25,1) 0s,opacity .35s cubic-bezier(0,0,.25,1) 0s;transition:transform .35s cubic-bezier(0,0,.25,1) 0s,opacity .35s cubic-bezier(0,0,.25,1) 0s}.lg-hide-items .lg-prev{opacity:0;-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}.lg-hide-items .lg-next{opacity:0;-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}.lg-hide-items .lg-toolbar{opacity:0;-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-object{-webkit-transform:scale3d(.5,.5,.5);transform:scale3d(.5,.5,.5);opacity:0;-webkit-transition:-webkit-transform 250ms ease 0s,opacity 250ms!important;-moz-transition:-moz-transform 250ms ease 0s,opacity 250ms!important;-o-transition:-o-transform 250ms ease 0s,opacity 250ms!important;transition:transform 250ms ease 0s,opacity 250ms!important;-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%}body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item.lg-complete .lg-object{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);opacity:1}.lg-outer .lg-thumb-outer{background-color:#0D0A0A;bottom:0;position:absolute;width:100%;z-index:1080;max-height:350px;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1) 0s;-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1) 0s;-o-transition:-o-transform .25s cubic-bezier(0,0,.25,1) 0s;transition:transform .25s cubic-bezier(0,0,.25,1) 0s}.lg-outer .lg-thumb-outer.lg-grab .lg-thumb-item{cursor:-webkit-grab;cursor:-moz-grab;cursor:-o-grab;cursor:-ms-grab;cursor:grab}.lg-outer .lg-thumb-outer.lg-grabbing .lg-thumb-item{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:-o-grabbing;cursor:-ms-grabbing;cursor:grabbing}.lg-outer .lg-thumb-outer.lg-dragging .lg-thumb{-webkit-transition-duration:0s!important;transition-duration:0s!important}.lg-outer.lg-thumb-open .lg-thumb-outer{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.lg-outer .lg-thumb{padding:10px 0;height:100%;margin-bottom:-5px}.lg-outer .lg-thumb-item{cursor:pointer;float:left;overflow:hidden;height:100%;border:2px solid #FFF;border-radius:4px;margin-bottom:5px}@media (min-width:1025px){.lg-outer .lg-thumb-item{-webkit-transition:border-color .25s ease;-o-transition:border-color .25s ease;transition:border-color .25s ease}}.lg-outer .lg-thumb-item.active,.lg-outer .lg-thumb-item:hover{border-color:#a90707}.lg-outer .lg-thumb-item img{width:100%;height:100%}.lg-outer.lg-has-thumb .lg-item{padding-bottom:120px}.lg-outer.lg-can-toggle .lg-item{padding-bottom:0}.lg-outer.lg-pull-caption-up .lg-sub-html{-webkit-transition:bottom .25s ease;-o-transition:bottom .25s ease;transition:bottom .25s ease}.lg-outer.lg-pull-caption-up.lg-thumb-open .lg-sub-html{bottom:100px}.lg-outer .lg-toogle-thumb{background-color:#0D0A0A;border-radius:2px 2px 0 0;color:#999;cursor:pointer;font-size:24px;height:39px;line-height:27px;padding:5px 0;position:absolute;right:20px;text-align:center;top:-39px;width:50px}.lg-outer .lg-toogle-thumb:after{content:"\e1ff"}.lg-outer .lg-toogle-thumb:hover{color:#FFF}.lg-outer .lg-video-cont{max-width:1140px;max-height:100%;width:100%;padding:0 5px}.lg-outer .lg-video{width:100%;height:0;padding-bottom:56.25%;overflow:hidden;position:relative}.lg-outer .lg-video .lg-object{display:inline-block;position:absolute;top:0;left:0;width:100%!important;height:100%!important}.lg-outer .lg-video .lg-video-play{width:84px;height:59px;position:absolute;left:50%;top:50%;margin-left:-42px;margin-top:-30px;z-index:1080;cursor:pointer}.lg-outer .lg-has-vimeo .lg-video-play{background:url(../img/vimeo-play.png) no-repeat}.lg-outer .lg-has-vimeo:hover .lg-video-play{background:url(../img/vimeo-play.png) 0 -58px no-repeat}.lg-outer .lg-has-html5 .lg-video-play{background:url(../img/video-play.png) no-repeat;height:64px;margin-left:-32px;margin-top:-32px;width:64px;opacity:.8}.lg-outer .lg-has-html5:hover .lg-video-play{opacity:1}.lg-outer .lg-has-youtube .lg-video-play{background:url(../img/youtube-play.png) no-repeat}.lg-outer .lg-has-youtube:hover .lg-video-play{background:url(../img/youtube-play.png) 0 -60px no-repeat}.lg-outer .lg-video-object{width:100%!important;height:100%!important;position:absolute;top:0;left:0}.lg-outer .lg-has-video .lg-video-object{visibility:hidden}.lg-outer .lg-has-video.lg-video-palying .lg-object,.lg-outer .lg-has-video.lg-video-palying .lg-video-play{display:none}.lg-outer .lg-has-video.lg-video-palying .lg-video-object{visibility:visible}.lg-progress-bar{background-color:#333;height:5px;left:0;position:absolute;top:0;width:100%;z-index:1080;opacity:0;-webkit-transition:opacity 80ms ease 0s;-moz-transition:opacity 80ms ease 0s;-o-transition:opacity 80ms ease 0s;transition:opacity 80ms ease 0s}.lg-progress-bar .lg-progress{background-color:#a90707;height:5px;width:0}.lg-progress-bar.lg-start .lg-progress{width:100%}.lg-show-autoplay .lg-progress-bar{opacity:1}.lg-autoplay-button:after{content:"\e01d"}.lg-show-autoplay .lg-autoplay-button:after{content:"\e01a"}.lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-image,.lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-img-wrap{-webkit-transition-duration:0s;transition-duration:0s}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-img-wrap{-webkit-transition:-webkit-transform .3s ease 0s;-moz-transition:-moz-transform .3s ease 0s;-o-transition:-o-transform .3s ease 0s;transition:transform .3s ease 0s;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);-webkit-transition:-webkit-transform .3s ease 0s,opacity .15s!important;-moz-transition:-moz-transform .3s ease 0s,opacity .15s!important;-o-transition:-o-transform .3s ease 0s,opacity .15s!important;transition:transform .3s ease 0s,opacity .15s!important;-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}#lg-zoom-in:after{content:"\e311"}#lg-zoom-out{opacity:.5;pointer-events:none}#lg-zoom-out:after{content:"\e312"}.lg-zoomed #lg-zoom-out{opacity:1;pointer-events:auto}.lg-outer .lg-pager-outer{bottom:60px;left:0;position:absolute;right:0;text-align:center;z-index:1080;height:10px}.lg-outer .lg-pager-outer.lg-pager-hover .lg-pager-cont{overflow:visible}.lg-outer .lg-pager-cont{cursor:pointer;display:inline-block;overflow:hidden;position:relative;vertical-align:top;margin:0 5px}.lg-outer .lg-pager-cont:hover .lg-pager-thumb-cont{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.lg-outer .lg-pager-cont.lg-pager-active .lg-pager{box-shadow:0 0 0 2px #fff inset}.lg-outer .lg-pager-thumb-cont{background-color:#fff;color:#FFF;bottom:100%;height:83px;left:0;margin-bottom:20px;margin-left:-60px;opacity:0;padding:5px;position:absolute;width:120px;border-radius:3px;-webkit-transition:opacity .15s ease 0s,-webkit-transform .15s ease 0s;-moz-transition:opacity .15s ease 0s,-moz-transform .15s ease 0s;-o-transition:opacity .15s ease 0s,-o-transform .15s ease 0s;transition:opacity .15s ease 0s,transform .15s ease 0s;-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}.lg-outer .lg-pager-thumb-cont img{width:100%;height:100%}.lg-outer .lg-pager{background-color:rgba(255,255,255,.5);border-radius:50%;box-shadow:0 0 0 8px rgba(255,255,255,.7) inset;display:block;height:12px;-webkit-transition:box-shadow .3s ease 0s;-o-transition:box-shadow .3s ease 0s;transition:box-shadow .3s ease 0s;width:12px}.lg-outer .lg-pager:focus,.lg-outer .lg-pager:hover{box-shadow:0 0 0 8px #fff inset}.lg-outer .lg-caret{border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px dashed;bottom:-10px;display:inline-block;height:0;left:50%;margin-left:-5px;position:absolute;vertical-align:middle;width:0}.lg-outer,.lg-outer .lg,.lg-outer .lg-inner{width:100%;height:100%}.lg-fullscreen:after{content:"\e20c"}.lg-fullscreen-on .lg-fullscreen:after{content:"\e20d"}.group:after,.group:before{display:table;content:"";line-height:0}.group:after{clear:both}.lg-outer{position:fixed;top:0;left:0;z-index:1050;opacity:0;-webkit-transition:opacity .15s ease 0s;-o-transition:opacity .15s ease 0s;transition:opacity .15s ease 0s}.lg-outer *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.lg-outer.lg-visible{opacity:1}.lg-outer.lg-css3 .lg-item.lg-current,.lg-outer.lg-css3 .lg-item.lg-next-slide,.lg-outer.lg-css3 .lg-item.lg-prev-slide{-webkit-transition-duration:inherit!important;transition-duration:inherit!important;-webkit-transition-timing-function:inherit!important;transition-timing-function:inherit!important}.lg-outer.lg-css3.lg-dragging .lg-item.lg-current,.lg-outer.lg-css3.lg-dragging .lg-item.lg-next-slide,.lg-outer.lg-css3.lg-dragging .lg-item.lg-prev-slide{-webkit-transition-duration:0s!important;transition-duration:0s!important;opacity:1}.lg-outer.lg-grab img.lg-object{cursor:-webkit-grab;cursor:-moz-grab;cursor:-o-grab;cursor:-ms-grab;cursor:grab}.lg-outer.lg-grabbing img.lg-object{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:-o-grabbing;cursor:-ms-grabbing;cursor:grabbing}.lg-outer .lg{position:relative;overflow:hidden;margin-left:auto;margin-right:auto;max-width:100%;max-height:100%}.lg-outer .lg-inner{position:absolute;left:0;top:0;white-space:nowrap}.lg-outer .lg-item{background:url(../img/loading.gif) center center no-repeat;display:none!important}.lg-outer.lg-css .lg-current,.lg-outer.lg-css3 .lg-current,.lg-outer.lg-css3 .lg-next-slide,.lg-outer.lg-css3 .lg-prev-slide{display:inline-block!important}.lg-outer .lg-img-wrap,.lg-outer .lg-item{display:inline-block;text-align:center;position:absolute;width:100%;height:100%}.lg-outer .lg-img-wrap:before,.lg-outer .lg-item:before{content:"";display:inline-block;height:50%;width:1px;margin-right:-1px}.lg-outer .lg-img-wrap{top:0;bottom:0;left:0;right:0;padding:0 5px}.lg-outer .lg-item.lg-complete{background-image:none}.lg-outer .lg-item.lg-current{z-index:1060}.lg-outer .lg-image{display:inline-block;vertical-align:middle;max-width:100%;max-height:100%;width:auto!important;height:auto!important}.lg-outer.lg-show-after-load .lg-item .lg-object,.lg-outer.lg-show-after-load .lg-item .lg-video-play{opacity:0;-webkit-transition:opacity .15s ease 0s;-o-transition:opacity .15s ease 0s;transition:opacity .15s ease 0s}.lg-outer.lg-show-after-load .lg-item.lg-complete .lg-object,.lg-outer.lg-show-after-load .lg-item.lg-complete .lg-video-play{opacity:1}.lg-outer .lg-empty-html{display:none}.lg-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1040;background-color:#000;opacity:0;-webkit-transition:opacity .15s ease 0s;-o-transition:opacity .15s ease 0s;transition:opacity .15s ease 0s}.lg-backdrop.in{opacity:1}.lg-css3.lg-no-trans .lg-current,.lg-css3.lg-no-trans .lg-next-slide,.lg-css3.lg-no-trans .lg-prev-slide{-webkit-transition:none 0s ease 0s!important;-moz-transition:none 0s ease 0s!important;-o-transition:none 0s ease 0s!important;transition:none 0s ease 0s!important}.lg-css3.lg-use-css3 .lg-item,.lg-css3.lg-use-left .lg-item{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.lg-css3.lg-fade .lg-item{opacity:0}.lg-css3.lg-fade .lg-item.lg-current{opacity:1}.lg-css3.lg-fade .lg-item.lg-current,.lg-css3.lg-fade .lg-item.lg-next-slide,.lg-css3.lg-fade .lg-item.lg-prev-slide{-webkit-transition:opacity .1s ease 0s;-moz-transition:opacity .1s ease 0s;-o-transition:opacity .1s ease 0s;transition:opacity .1s ease 0s}.lg-css3.lg-slide.lg-use-css3 .lg-item{opacity:0}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current,.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide,.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-css3.lg-slide.lg-use-left .lg-item{opacity:0;position:absolute;left:0}.lg-css3.lg-slide.lg-use-left .lg-item.lg-prev-slide{left:-100%}.lg-css3.lg-slide.lg-use-left .lg-item.lg-next-slide{left:100%}.lg-css3.lg-slide.lg-use-left .lg-item.lg-current{left:0;opacity:1}.lg-css3.lg-slide.lg-use-left .lg-item.lg-current,.lg-css3.lg-slide.lg-use-left .lg-item.lg-next-slide,.lg-css3.lg-slide.lg-use-left .lg-item.lg-prev-slide{-webkit-transition:left 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:left 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:left 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:left 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}