/**
 * Foundation for Sites by ZURB
 * Version 6.2.3
 * foundation.zurb.com
 * Licensed under MIT Open Source
 */
/**
 * Foundation for Sites by ZURB
 * Version 6.2.3
 * foundation.zurb.com
 * Licensed under MIT Open Source
 */
/*! 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: not-allowed; }

/**
   * 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.
   * [NOTE] We don't enable this ruleset in Foundation, because we want the <fieldset> element to have plain styling.
   */
/* 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=52em&large=72em"; }

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

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

body {
  padding: 0;
  margin: 0;
  font-family: "Segoe UI", Segoe, "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif;
  font-weight: normal;
  line-height: 1.5;
  color: #0a0a0a;
  background: #fefefe;
  -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; }
  [data-whatinput='mouse'] button {
    outline: 0; }

.is-visible {
  display: block !important; }

.is-hidden {
  display: none !important; }

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: "Segoe UI", Segoe, "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif;
  font-weight: normal;
  font-style: normal;
  color: inherit;
  text-rendering: optimizeLegibility;
  margin-top: 0;
  margin-bottom: 1rem;
  line-height: 1.4; }
  h1 small,
  h2 small,
  h3 small,
  h4 small,
  h5 small,
  h6 small {
    color: #cacaca;
    line-height: 0; }

h1 {
  font-size: 2.5rem; }

h2 {
  font-size: 1.9375rem; }

h3 {
  font-size: 1.5rem; }

h4 {
  font-size: 1.125rem; }

h5 {
  font-size: 1rem; }

h6 {
  font-size: 0.875rem; }

@media screen and (min-width: 52em) {
  h1 {
    font-size: 3rem; }
  h2 {
    font-size: 2.5rem; }
  h3 {
    font-size: 1.5rem; }
  h4 {
    font-size: 1.125rem; }
  h5 {
    font-size: 1rem; }
  h6 {
    font-size: 0.875rem; } }

a {
  color: #2199e8;
  text-decoration: underline;
  line-height: inherit;
  cursor: pointer; }
  a:hover, a:focus {
    color: #1585cf; }
  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; }

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: #0a0a0a;
  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: 52em) {
  .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: 72em) {
  .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 #8a8a8a;
    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; } }

.hide {
  display: none !important; }

.invisible {
  visibility: hidden; }

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

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

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

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

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

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

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

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

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

@media screen and (max-width: 71.9375em) {
  .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; } }

/**
 * Foundation for Sites by ZURB
 * Version 6.2.3
 * foundation.zurb.com
 * Licensed under MIT Open Source
 */
@keyframes fadeIn {
  0% {
    opacity: 0; }
  100% {
    opacity: 1; } }

@keyframes zoomIn {
  0% {
    opacity: 0;
    transform: scale(0); }
  100% {
    opacity: 1;
    transform: scale(1); } }

@keyframes shiftZoom {
  0% {
    opacity: 0;
    transform: scale(0.9); }
  100% {
    opacity: 1;
    transform: scale(1); } }

@keyframes shiftUp {
  0% {
    opacity: 0;
    transform: translateY(25%); }
  100% {
    opacity: 1;
    transform: translateY(0); } }

@keyframes shiftDown {
  0% {
    opacity: 0;
    transform: translateY(-25%); }
  100% {
    opacity: 1;
    transform: translateY(0); } }

@keyframes shiftLeft {
  0% {
    opacity: 0;
    transform: translateX(25%); }
  100% {
    opacity: 1;
    transform: translateX(0); } }

@keyframes slideRight {
  0% {
    opacity: 0;
    transform: translateX(-100%); }
  100% {
    opacity: 1;
    transform: translateX(0); } }

@keyframes hinge {
  0% {
    opacity: 0;
    transform: perspective(2000px) rotateX(-90deg);
    transform-origin: top; }
  100% {
    opacity: 1;
    transform: perspective(2000px) rotate(0deg); } }

#banner .banner-bkg {
  animation-name: shiftZoom;
  animation-duration: 0.5s;
  animation-delay: 0.25s;
  animation-fill-mode: both;
  animation-play-state: paused; }
  .animate-start #banner .banner-bkg {
    animation-play-state: running; }
  .no-js #banner .banner-bkg {
    animation-fill-mode: none; }

#banner .gnl-logo img {
  animation-name: shiftUp;
  animation-duration: 1s;
  animation-delay: 0.5s;
  animation-fill-mode: both;
  animation-play-state: paused; }
  .animate-start #banner .gnl-logo img {
    animation-play-state: running; }
  .no-js #banner .gnl-logo img {
    animation-fill-mode: none; }

#banner .title {
  animation-name: fadeIn;
  animation-duration: 1s;
  animation-delay: 0.75s;
  animation-fill-mode: both;
  animation-play-state: paused; }
  .animate-start #banner .title {
    animation-play-state: running; }
  .no-js #banner .title {
    animation-fill-mode: none; }

#banner .title img {
  animation-name: shiftUp;
  animation-duration: 1s;
  animation-delay: 1s;
  animation-fill-mode: both;
  animation-play-state: paused; }
  .animate-start #banner .title img {
    animation-play-state: running; }
  .no-js #banner .title img {
    animation-fill-mode: none; }

#banner .title span {
  animation-name: shiftUp;
  animation-duration: 1s;
  animation-delay: 1.25s;
  animation-fill-mode: both;
  animation-play-state: paused; }
  .animate-start #banner .title span {
    animation-play-state: running; }
  .no-js #banner .title span {
    animation-fill-mode: none; }

@media screen and (max-width: 51.9375em) {
  #mainmenu .menu {
    animation-name: slideRight;
    animation-duration: 0.5s;
    animation-delay: 0;
    animation-fill-mode: both;
    animation-play-state: paused; }
    .animate-start #mainmenu .menu {
      animation-play-state: running; }
    .no-js #mainmenu .menu {
      animation-fill-mode: none; } }

@media screen and (min-width: 52em) {
  #mainmenu .menu {
    animation-name: slideRight;
    animation-duration: 1s;
    animation-delay: 1.25s;
    animation-fill-mode: both;
    animation-play-state: paused; }
    .animate-start #mainmenu .menu {
      animation-play-state: running; }
    .no-js #mainmenu .menu {
      animation-fill-mode: none; }
  #mainmenu .menu li:nth-child(1) > a {
    animation-name: shiftUp;
    animation-duration: 1s;
    animation-delay: 1.95s;
    animation-fill-mode: both;
    animation-play-state: paused; }
    .animate-start #mainmenu .menu li:nth-child(1) > a {
      animation-play-state: running; }
    .no-js #mainmenu .menu li:nth-child(1) > a {
      animation-fill-mode: none; }
  #mainmenu .menu li:nth-child(2) > a {
    animation-name: shiftUp;
    animation-duration: 1s;
    animation-delay: 2.15s;
    animation-fill-mode: both;
    animation-play-state: paused; }
    .animate-start #mainmenu .menu li:nth-child(2) > a {
      animation-play-state: running; }
    .no-js #mainmenu .menu li:nth-child(2) > a {
      animation-fill-mode: none; }
  #mainmenu .menu li:nth-child(3) > a {
    animation-name: shiftUp;
    animation-duration: 1s;
    animation-delay: 2.35s;
    animation-fill-mode: both;
    animation-play-state: paused; }
    .animate-start #mainmenu .menu li:nth-child(3) > a {
      animation-play-state: running; }
    .no-js #mainmenu .menu li:nth-child(3) > a {
      animation-fill-mode: none; }
  #mainmenu .menu li:nth-child(4) > a {
    animation-name: shiftUp;
    animation-duration: 1s;
    animation-delay: 2.55s;
    animation-fill-mode: both;
    animation-play-state: paused; }
    .animate-start #mainmenu .menu li:nth-child(4) > a {
      animation-play-state: running; }
    .no-js #mainmenu .menu li:nth-child(4) > a {
      animation-fill-mode: none; }
  #mainmenu .menu li:nth-child(5) > a {
    animation-name: shiftUp;
    animation-duration: 1s;
    animation-delay: 2.75s;
    animation-fill-mode: both;
    animation-play-state: paused; }
    .animate-start #mainmenu .menu li:nth-child(5) > a {
      animation-play-state: running; }
    .no-js #mainmenu .menu li:nth-child(5) > a {
      animation-fill-mode: none; }
  #mainmenu .menu li:nth-child(6) > a {
    animation-name: shiftUp;
    animation-duration: 1s;
    animation-delay: 2.95s;
    animation-fill-mode: both;
    animation-play-state: paused; }
    .animate-start #mainmenu .menu li:nth-child(6) > a {
      animation-play-state: running; }
    .no-js #mainmenu .menu li:nth-child(6) > a {
      animation-fill-mode: none; }
  #mainmenu .menu li:nth-child(7) > a {
    animation-name: shiftUp;
    animation-duration: 1s;
    animation-delay: 3.15s;
    animation-fill-mode: both;
    animation-play-state: paused; }
    .animate-start #mainmenu .menu li:nth-child(7) > a {
      animation-play-state: running; }
    .no-js #mainmenu .menu li:nth-child(7) > a {
      animation-fill-mode: none; }
  #mainmenu .menu li:nth-child(8) > a {
    animation-name: shiftUp;
    animation-duration: 1s;
    animation-delay: 3.35s;
    animation-fill-mode: both;
    animation-play-state: paused; }
    .animate-start #mainmenu .menu li:nth-child(8) > a {
      animation-play-state: running; }
    .no-js #mainmenu .menu li:nth-child(8) > a {
      animation-fill-mode: none; } }

#minister img {
  animation-name: shiftLeft;
  animation-duration: 1s;
  animation-delay: 0;
  animation-fill-mode: both;
  animation-play-state: paused; }
  .animate-start #minister img {
    animation-play-state: running; }
  .no-js #minister img {
    animation-fill-mode: none; }

#minister h2 {
  animation-name: hinge;
  animation-duration: 0.75s;
  animation-delay: 0.5s;
  animation-fill-mode: both;
  animation-play-state: paused; }
  .animate-start #minister h2 {
    animation-play-state: running; }
  .no-js #minister h2 {
    animation-fill-mode: none; }

#minister p {
  animation-name: shiftDown;
  animation-duration: 0.75s;
  animation-delay: 1s;
  animation-fill-mode: both;
  animation-play-state: paused; }
  .animate-start #minister p {
    animation-play-state: running; }
  .no-js #minister p {
    animation-fill-mode: none; }

/*
#committee h2           { @include animate(hinge, 0.75s, 0) }
#committee p            { @include animate(shiftDown, 0.75s, 0.5s) }


#framework h2           { @include animate(hinge, 0.75s, 0) }
#framework p            { @include animate(shiftDown, 0.75s, 0.5s) }
#framework .button      { @include animate(zoomIn, 1s, 0.75s) }
*/
@font-face {
  font-family: 'app-ui-icons';
  src: url("../fonts/app-ui-icons.ttf?h8h131") format("truetype"), url("../fonts/app-ui-icons.woff?h8h131") format("woff"), url("../fonts/app-ui-icons.svg?h8h131#app-ui-icons") format("svg");
  font-weight: normal;
  font-style: normal; }

[class^="icon-"], [class*=" icon-"] {
  /* use !important to prevent issues with browser extensions that change fonts */
  font-family: 'app-ui-icons' !important;
  speak: none;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  line-height: 1;
  /* Better Font Rendering =========== */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale; }

.icon-files:before {
  content: "\e900"; }

/**
 * Foundation for Sites by ZURB
 * Version 6.2.3
 * foundation.zurb.com
 * Licensed under MIT Open Source
 */
.section {
  max-width: 75rem;
  margin-left: auto;
  margin-right: auto;
  width: 100%;
  float: left;
  max-width: none; }
  .section::before, .section::after {
    content: ' ';
    display: table; }
  .section::after {
    clear: both; }
  .section:last-child:not(:first-child) {
    float: right; }
  .section, .section:last-child {
    float: none; }
  .section.light-gray {
    background-color: #f0f0f0;
    color: #0a0a0a; }
    .section.light-gray a {
      color: #2199e8; }
  .section.dark-gray {
    background-color: #555555;
    color: #fefefe; }
    .section.dark-gray a {
      color: #fefefe; }
  .section.colorA {
    background-color: #374254;
    color: #fefefe; }
    .section.colorA a {
      color: #fefefe; }

.content {
  max-width: 75rem;
  margin-left: auto;
  margin-right: auto;
  width: 100%;
  float: left;
  max-width: none;
  padding: 4rem 3rem; }
  .content::before, .content::after {
    content: ' ';
    display: table; }
  .content::after {
    clear: both; }
  .content:last-child:not(:first-child) {
    float: right; }
  .content, .content:last-child {
    float: none; }
  @media screen and (min-width: 52em) {
    .content {
      padding: 5rem 5.5rem 5rem 19rem; } }
  .content .title {
    margin-bottom: 2rem; }
  .content h4, .content h5, .content h6 {
    margin-bottom: 0.25rem; }
  .content .layout {
    max-width: 75rem;
    margin-left: auto;
    margin-right: auto; }
    .content .layout::before, .content .layout::after {
      content: ' ';
      display: table; }
    .content .layout::after {
      clear: both; }
    .content .layout .photo-left {
      width: 100%;
      float: left; }
      .content .layout .photo-left:last-child:not(:first-child) {
        float: right; }
      @media screen and (min-width: 72em) {
        .content .layout .photo-left {
          width: 25%;
          position: relative;
          left: -75%;
          padding-right: 2rem; } }
    .content .layout .body {
      width: 100%;
      float: left; }
      .content .layout .body:last-child:not(:first-child) {
        float: right; }
      @media screen and (min-width: 72em) {
        .content .layout .body {
          width: 75%;
          position: relative;
          left: 25%; } }
  .content ul.committee-members {
    list-style: none;
    margin: 0;
    margin-left: 0.75rem;
    line-height: 1.25; }
    .content ul.committee-members::before, .content ul.committee-members::after {
      content: ' ';
      display: table; }
    .content ul.committee-members::after {
      clear: both; }
    @media screen and (min-width: 72em) {
      .content ul.committee-members > li {
        width: 50%;
        float: left; }
        .content ul.committee-members > li:nth-of-type(1n) {
          clear: none; }
        .content ul.committee-members > li:nth-of-type(2n+1) {
          clear: both; }
        .content ul.committee-members > li:last-child {
          float: left; } }
    .content ul.committee-members > li {
      padding: 0 2rem 0.125rem 2rem;
      border-left: 48px solid rgba(255, 255, 255, 0.15);
      margin-bottom: 2rem; }
      .content ul.committee-members > li .photo {
        display: block;
        float: left;
        margin-right: 1rem;
        margin-bottom: 1rem; }
      .content ul.committee-members > li .name {
        display: block;
        font-size: 1.375rem; }
      .content ul.committee-members > li .title {
        display: block;
        font-size: 1.125rem;
        font-style: italic;
        margin-bottom: 0.75rem; }
      .content ul.committee-members > li .company {
        display: block;
        font-size: 1.125rem; }
  .content .article {
    margin: 2rem 0;
    border-bottom: 1px solid #ddd;
    padding-bottom: 2rem; }
    .content .article:first-child {
      border-top: 1px solid #ddd;
      padding-top: 2rem; }
    .content .article h3 .date {
      display: block;
      font-size: 1rem;
      font-style: italic; }
    .content .article h3 .title {
      display: block;
      font-size: 1.375rem; }
    .content .article p {
      margin-bottom: 0; }
  .content .center {
    text-align: center; }
  .content .button {
    display: inline-block;
    color: #fefefe;
    border: 2px solid #fefefe;
    padding: 1rem;
    padding-right: 2rem;
    transition: background-color 0.25s ease-out, color 0.25s ease-out;
    text-align: center;
    margin: 1rem auto;
    background-color: rgba(0, 0, 0, 0.1);
    text-decoration: none; }
    .content .button::before, .content .button::after {
      content: ' ';
      display: table; }
    .content .button::after {
      clear: both; }
    .content .button:hover {
      background-color: rgba(255, 255, 255, 0.05); }
    .content .button span {
      display: block; }
      .content .button span[class^="icon-"], .content .button span[class*=" icon-"] {
        font-size: 5rem; }
        @media screen and (min-width: 72em) {
          .content .button span[class^="icon-"], .content .button span[class*=" icon-"] {
            float: left; } }
      .content .button span.text {
        font-size: 1.125rem;
        padding-top: 0.5rem; }
        @media screen and (min-width: 72em) {
          .content .button span.text {
            margin-left: 6rem;
            font-size: 1.375rem; } }
      @media screen and (min-width: 72em) {
        .content .button span.subtext {
          margin-left: 6rem; } }
  .content table {
    width: 100%;
    margin-bottom: 1rem; }
    .content table th {
      text-align: left;
      font-weight: normal;
      font-size: 1.25rem;
      border-bottom: 2px solid #fefefe;
      padding: 0 0.5rem; }
    .content table td {
      padding: 0.5rem; }
  .content ul {
    margin-left: 2rem; }

.dark-gray a {
  color: #fefefe; }

/**
 * Foundation for Sites by ZURB
 * Version 6.2.3
 * foundation.zurb.com
 * Licensed under MIT Open Source
 */
#mainmenu {
  position: fixed;
  z-index: 1000;
  top: 0;
  left: 0; }
  @media screen and (min-width: 52em) {
    #mainmenu {
      top: 50%;
      -ms-transform: translateY(-50%);
          transform: translateY(-50%); } }
  #mainmenu .menu-button {
    background: #ddd;
    padding: 0.75rem 1rem;
    font-size: 0.9375rem;
    font-weight: bold; }
    #mainmenu .menu-button .menu-icon {
      position: relative;
      display: inline-block;
      vertical-align: middle;
      cursor: pointer;
      width: 14px;
      height: 12px;
      margin-right: 0.5rem;
      margin-top: -2px; }
      #mainmenu .menu-button .menu-icon::after {
        content: '';
        position: absolute;
        display: block;
        width: 100%;
        height: 2px;
        background: #0a0a0a;
        top: 0;
        left: 0;
        box-shadow: 0 5px 0 #0a0a0a, 0 10px 0 #0a0a0a; }
      #mainmenu .menu-button .menu-icon:hover::after {
        background: #0a0a0a;
        box-shadow: 0 5px 0 #0a0a0a, 0 10px 0 #0a0a0a; }
    @media screen and (min-width: 52em) {
      #mainmenu .menu-button {
        display: none; } }
  #mainmenu .close-button {
    float: right;
    padding: 0.25rem 1rem;
    font-size: 1.25rem; }
    @media screen and (min-width: 52em) {
      #mainmenu .close-button {
        display: none; } }
  #mainmenu .menu {
    display: none;
    position: absolute;
    top: 0;
    left: 0;
    background: #ddd; }
    #mainmenu .menu.open {
      display: block; }
    @media screen and (min-width: 52em) {
      #mainmenu .menu {
        display: block;
        position: static;
        width: auto;
        text-align: right; } }
    #mainmenu .menu ul {
      width: 15rem;
      margin: 0;
      list-style-type: none;
      text-align: left;
      padding: 2rem 0;
      font-size: 0.9375rem; }
      #mainmenu .menu ul > li {
        display: table-cell;
        vertical-align: middle; }
        [data-whatinput='mouse'] #mainmenu .menu ul > li {
          outline: 0; }
      #mainmenu .menu ul > li > a {
        display: block;
        padding: 0.7rem 1rem;
        line-height: 1; }
      #mainmenu .menu ul input,
      #mainmenu .menu ul a,
      #mainmenu .menu ul button {
        margin-bottom: 0; }
      #mainmenu .menu ul > li {
        display: block; }
      #mainmenu .menu ul > li > a {
        color: #0a0a0a;
        font-weight: bold;
        background-size: 200% 100%;
        background-image: linear-gradient(to right, #ddd 50%, #f7f7f7 50%);
        transition: background-position 0.5s;
        text-decoration: none; }
        #mainmenu .menu ul > li > a:hover {
          background-position: -100% 0; }
        @media screen and (min-width: 52em) {
          #mainmenu .menu ul > li > a.active {
            background-position: -100% 0; } }

/**
 * Foundation for Sites by ZURB
 * Version 6.2.3
 * foundation.zurb.com
 * Licensed under MIT Open Source
 */
#banner {
  max-width: 75rem;
  margin-left: auto;
  margin-right: auto;
  width: 100%;
  float: left;
  max-width: none;
  position: relative;
  background-color: #254a74;
  padding-bottom: 1rem;
  border-bottom: 8px solid #19314d; }
  #banner::before, #banner::after {
    content: ' ';
    display: table; }
  #banner::after {
    clear: both; }
  #banner:last-child:not(:first-child) {
    float: right; }
  #banner, #banner:last-child {
    float: none; }
  @media screen and (min-width: 52em) {
    #banner {
      background-color: #0a023b;
      padding-bottom: 0;
      border: none; } }
  @media screen and (min-width: 52em) {
    #banner {
      padding-top: 71.06741%; } }
  #banner .banner-bkg {
    display: none; }
    @media screen and (min-width: 52em) {
      #banner .banner-bkg {
        display: block;
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        z-index: 1; } }
  #banner .gnl-logo {
    text-align: center; }
    @media screen and (min-width: 52em) {
      #banner .gnl-logo {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        z-index: 2; } }
    #banner .gnl-logo img {
      margin: 2rem auto;
      width: 144px; }
      @media screen and (min-width: 52em) {
        #banner .gnl-logo img {
          margin: 1rem auto;
          width: 15%; } }
  #banner .title {
    text-align: center;
    padding: 2rem;
    padding-top: 0.5rem; }
    @media screen and (min-width: 52em) {
      #banner .title {
        padding: 2rem;
        position: absolute;
        top: 49%;
        left: 0;
        z-index: 3;
        width: 100%;
        background-color: rgba(42, 80, 123, 0.9); } }
    @media screen and (min-width: 52em) and (max-width: 71.9375em) {
      #banner .title {
        padding-left: 16rem; } }
    #banner .title h1 {
      font-size: 1.25rem;
      margin: 0;
      padding: 0;
      color: #fefefe;
      line-height: 1; }
      @media screen and (min-width: 52em) {
        #banner .title h1 {
          font-size: 1.5rem; } }
    #banner .title img {
      display: block;
      margin: 0 auto;
      margin-bottom: 0.5rem;
      width: 288px; }
      @media screen and (min-width: 52em) {
        #banner .title img {
          width: auto; } }
    #banner .title span {
      display: block;
      margin: 0 auto;
      width: 256px; }
      @media screen and (min-width: 52em) {
        #banner .title span {
          width: auto; } }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9mb3VuZGF0aW9uLXJlZmVyZW5jZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvX2dsb2JhbC5zY3NzIiwiYXBwLmNzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX3VuaXQuc2NzcyIsIl9zZXR0aW5ncy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fbWl4aW5zLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy90eXBvZ3JhcGh5L19iYXNlLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19icmVha3BvaW50LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy90eXBvZ3JhcGh5L19oZWxwZXJzLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy90eXBvZ3JhcGh5L19hbGlnbm1lbnQuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3R5cG9ncmFwaHkvX3ByaW50LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL192aXNpYmlsaXR5LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL21vdGlvbi11aS9zcmMvdXRpbC9fa2V5ZnJhbWUuc2NzcyIsIl9hcHAtYW5pbWF0ZS5zY3NzIiwiX2FwcC11aS1pY29ucy5zY3NzIiwiX2FwcC1jb250ZW50LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19yb3cuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX3NpemUuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2NvbHVtbi5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fcG9zaXRpb24uc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2xheW91dC5zY3NzIiwiX2FwcC1tYWlubWVudS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fbWVudS5zY3NzIiwiX2FwcC1iYW5uZXIuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUxIOzs7OztHQUtHO0FDK01ELDRFQUE0RTtBQUU1RTs7OztLQUlHO0FBRUg7RUFDRSx3QkFBd0I7RUFBRSxPQUFPO0VBQ2pDLDJCQUEyQjtFQUFFLE9BQU87RUFDcEMsK0JBQStCO0VBQUUsT0FBTyxFQUN6Qzs7QUFFRDs7S0FFRztBQUVIO0VBQ0UsVUFBVSxFQUNYOztBQUVEO2tGQUNnRjtBQUVoRjs7Ozs7S0FLRztBQUVIOzs7Ozs7Ozs7Ozs7O0VBYUUsZUFBZSxFQUNoQjs7QUFFRDs7O0tBR0c7QUFFSDs7OztFQUlFLHNCQUFzQjtFQUFFLE9BQU87RUFDL0IseUJBQXlCO0VBQUUsT0FBTyxFQUNuQzs7QUFFRDs7O0tBR0c7QUFFSDtFQUNFLGNBQWM7RUFDZCxVQUFVLEVBQ1g7O0FBRUQ7OztLQUdHO0FDOU1MOztFRGtOSSxjQUFjLEVBQ2Y7O0FBRUQ7a0ZBQ2dGO0FBRWhGOztLQUVHO0FBRUg7RUFDRSw4QkFBOEIsRUFDL0I7O0FBRUQ7OztLQUdHO0FBRUg7O0VBRUUsV0FBVyxFQUNaOztBQUVEO2tGQUNnRjtBQUVoRjs7S0FFRztBQUVIO0VBQ0UsMEJBQTBCLEVBQzNCOztBQUVEOztLQUVHO0FBRUg7O0VB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ckI7SWhCNkZEO01nQi9JSjtRQWtDWSxtQkFBa0I7UUFDbEIsT0FBTTtRQUFFLFFBQU87UUFDZixZQUFXO1FBQ1gsV0FBVSxFQWFqQixFQUFBO0lBbERMO01BMENZLGtCQUF3QjtNQUN4QixhQUFZLEVBTWY7TWhCOEZMO1FnQi9JSjtVQThDZ0Isa0JBQXdCO1VBQ3hCLFdBQVUsRUFFakIsRUFBQTtFQWpEVDtJQXNEUSxtQkFBa0I7SUFDbEIsY3BCMEJjO0lvQjFCUSxvQnBCMEJSLEVvQmlCakI7SWhCNkNEO01nQi9JSjtRQTBEWSxjcEJ1QlU7UW9CdEJWLG1CQUFrQjtRQUNsQixTQUFRO1FBQUUsUUFBTztRQUNqQixXQUFVO1FBQ1YsWUFBVztRQUNYLHlDQUFzQixFQW1DN0IsRUFBQTtJaEI2Q0Q7TWdCL0lKO1FBa0VZLG9CQUF3QixFQWdDL0IsRUFBQTtJQWxHTDtNQXNFWSxtQnBCV1U7TW9CVlYsVUFBUztNQUFFLFdBQVU7TUFDckIsZXRCMUJHO01zQjJCSCxlQUFjLEVBS2pCO01oQmlFTDtRZ0IvSUo7VUE0RWdCLGtCcEJLTSxFb0JIYixFQUFBO0lBOUVUO01BZ0ZZLGVBQWM7TUFDZCxlQUFjO01BQ2Qsc0JwQkRVO01vQkVWLGFBQVksRUFLZjtNaEJ1REw7UWdCL0lKO1VBc0ZnQixZQUFXLEVBRWxCLEVBQUE7SUF4RlQ7TUEwRlksZUFBYztNQUNkLGVBQWM7TUFDZCxhQUFZLEVBS2Y7TWhCOENMO1FnQi9JSjtVQStGZ0IsWUFBVyxFQUVsQixFQUFBIiwiZmlsZSI6ImFwcC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4gKiBWZXJzaW9uIDYuMi4zXHJcbiAqIGZvdW5kYXRpb24uenVyYi5jb21cclxuICogTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcbiAqL1xyXG5cclxuLy8gU2FzcyB1dGlsaXRpZXNcclxuQGltcG9ydCAnLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC91dGlsJztcclxuXHJcbi8vIEdsb2JhbCB2YXJpYWJsZXMgYW5kIHN0eWxlc1xyXG5AaW1wb3J0ICcuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9nbG9iYWwnO1xyXG5cclxuLy8gQ29tcG9uZW50c1xyXG5AaW1wb3J0ICcuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL2dyaWQnO1xyXG5AaW1wb3J0ICcuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xyXG5AaW1wb3J0ICcuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9mb3Jtcyc7XHJcbkBpbXBvcnQgJy4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvdmlzaWJpbGl0eSc7XHJcbkBpbXBvcnQgJy4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvZmxvYXQnO1xyXG5AaW1wb3J0ICcuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL2J1dHRvbic7XHJcbkBpbXBvcnQgJy4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvYnV0dG9uLWdyb3VwJztcclxuQGltcG9ydCAnLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9hY2NvcmRpb24tbWVudSc7XHJcbkBpbXBvcnQgJy4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvYWNjb3JkaW9uJztcclxuQGltcG9ydCAnLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9iYWRnZSc7XHJcbkBpbXBvcnQgJy4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvYnJlYWRjcnVtYnMnO1xyXG5AaW1wb3J0ICcuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL2NhbGxvdXQnO1xyXG5AaW1wb3J0ICcuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL2Nsb3NlLWJ1dHRvbic7XHJcbkBpbXBvcnQgJy4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvZHJpbGxkb3duJztcclxuQGltcG9ydCAnLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9kcm9wZG93bi1tZW51JztcclxuQGltcG9ydCAnLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9kcm9wZG93bic7XHJcbkBpbXBvcnQgJy4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvZmxleCc7XHJcbkBpbXBvcnQgJy4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvZmxleC12aWRlbyc7XHJcbkBpbXBvcnQgJy4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvbGFiZWwnO1xyXG5AaW1wb3J0ICcuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL21lZGlhLW9iamVjdCc7XHJcbkBpbXBvcnQgJy4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvbWVudSc7XHJcbkBpbXBvcnQgJy4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvbWVudS1pY29uJztcclxuQGltcG9ydCAnLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9vZmYtY2FudmFzJztcclxuQGltcG9ydCAnLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9vcmJpdCc7XHJcbkBpbXBvcnQgJy4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvcGFnaW5hdGlvbic7XHJcbkBpbXBvcnQgJy4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvcHJvZ3Jlc3MtYmFyJztcclxuQGltcG9ydCAnLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9yZXZlYWwnO1xyXG5AaW1wb3J0ICcuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL3NsaWRlcic7XHJcbkBpbXBvcnQgJy4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvc3RpY2t5JztcclxuQGltcG9ydCAnLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9zd2l0Y2gnO1xyXG5AaW1wb3J0ICcuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL3RhYmxlJztcclxuQGltcG9ydCAnLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy90YWJzJztcclxuQGltcG9ydCAnLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy90aXRsZS1iYXInO1xyXG5AaW1wb3J0ICcuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL3RvcC1iYXInO1xyXG5AaW1wb3J0ICcuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL3RodW1ibmFpbCc7XHJcbkBpbXBvcnQgJy4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvdG9vbHRpcCc7IiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8gc2Nzcy1saW50OmRpc2FibGUgQ29sb3JWYXJpYWJsZSwgUXVhbGlmeWluZ0VsZW1lbnQsIFZlbmRvclByZWZpeFxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGdsb2JhbFxyXG4vLy8vXHJcblxyXG4vLy8gRm9udCBzaXplIGF0dHJpYnV0ZSBhcHBsaWVkIHRvIGA8aHRtbD5gIGFuZCBgPGJvZHk+YC4gV2UgdXNlIDEwMCUgYnkgZGVmYXVsdCBzbyB0aGUgdmFsdWUgaXMgaW5oZXJpdGVkIGZyb20gdGhlIHVzZXIncyBicm93c2VyIHNldHRpbmdzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRnbG9iYWwtZm9udC1zaXplOiAxMDAlICFkZWZhdWx0O1xyXG5cclxuLy8vIEdsb2JhbCB3aWR0aCBvZiB5b3VyIHNpdGUuIFVzZWQgYnkgdGhlIGdyaWQgdG8gZGV0ZXJtaW5lIHJvdyB3aWR0aC5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kZ2xvYmFsLXdpZHRoOiByZW0tY2FsYygxMjAwKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGxpbmUgaGVpZ2h0IGZvciBhbGwgdHlwZS4gYCRnbG9iYWwtbGluZWhlaWdodGAgaXMgMjRweCB3aGlsZSBgJGdsb2JhbC1mb250LXNpemVgIGlzIDE2cHhcclxuLy8vIEB0eXBlIE51bWJlclxyXG4kZ2xvYmFsLWxpbmVoZWlnaHQ6IDEuNSAhZGVmYXVsdDtcclxuXHJcbi8vLyBDb2xvcnMgdXNlZCBmb3IgYnV0dG9ucywgY2FsbG91dHMsIGxpbmtzLCBldGMuIFRoZXJlIG11c3QgYWx3YXlzIGJlIGEgY29sb3IgY2FsbGVkIGBwcmltYXJ5YC5cclxuLy8vIEB0eXBlIE1hcFxyXG4kZm91bmRhdGlvbi1wYWxldHRlOiAoXHJcbiAgcHJpbWFyeTogIzIxOTllOCxcclxuICBzZWNvbmRhcnk6ICM3NzcsXHJcbiAgc3VjY2VzczogIzNhZGI3NixcclxuICB3YXJuaW5nOiAjZmZhZTAwLFxyXG4gIGFsZXJ0OiAjZWM1ODQwLFxyXG4pICFkZWZhdWx0O1xyXG5cclxuLy8vIENvbG9yIHVzZWQgZm9yIGxpZ2h0IGdyYXkgVUkgaXRlbXMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kbGlnaHQtZ3JheTogI2U2ZTZlNiAhZGVmYXVsdDtcclxuXHJcbi8vLyBDb2xvciB1c2VkIGZvciBtZWRpdW0gZ3JheSBVSSBpdGVtcy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRtZWRpdW0tZ3JheTogI2NhY2FjYSAhZGVmYXVsdDtcclxuXHJcbi8vLyBDb2xvciB1c2VkIGZvciBkYXJrIGdyYXkgVUkgaXRlbXMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kZGFyay1ncmF5OiAjOGE4YThhICFkZWZhdWx0O1xyXG5cclxuLy8vIENvbG9yIHVzZWQgZm9yIGJsYWNrIHVpIGl0ZW1zLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGJsYWNrOiAjMGEwYTBhICFkZWZhdWx0O1xyXG5cclxuLy8vIENvbG9yIHVzZWQgZm9yIHdoaXRlIHVpIGl0ZW1zLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHdoaXRlOiAjZmVmZWZlICFkZWZhdWx0O1xyXG5cclxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJvZHkuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kYm9keS1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gVGV4dCBjb2xvciBvZiB0aGUgYm9keS5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRib2R5LWZvbnQtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcclxuXHJcbi8vLyBGb250IHN0YWNrIG9mIHRoZSBib2R5LlxyXG4vLy8gQHR5cGUgTGlzdFxyXG4kYm9keS1mb250LWZhbWlseTogJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBSb2JvdG8sIEFyaWFsLCBzYW5zLXNlcmlmICFkZWZhdWx0O1xyXG5cclxuLy8vIFNldCB0byBgdHJ1ZWAgdG8gZW5hYmxlIGFudGlhbGlhc2VkIHR5cGUsIHVzaW5nIHRoZSBgLXdlYmtpdC1mb250LXNtb290aGluZ2AgYW5kIGAtbW96LW9zeC1mb250LXNtb290aGluZ2AgQ1NTIHByb3BlcnRpZXMuXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbiRib2R5LWFudGlhbGlhc2VkOiB0cnVlICFkZWZhdWx0O1xyXG5cclxuLy8vIEdsb2JhbCB2YWx1ZSB1c2VkIGZvciBtYXJnaW4gb24gY29tcG9uZW50cy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kZ2xvYmFsLW1hcmdpbjogMXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgcGFkZGluZyBvbiBjb21wb25lbnRzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRnbG9iYWwtcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBHbG9iYWwgZm9udCB3ZWlnaHQgdXNlZCBmb3Igbm9ybWFsIHR5cGUuXHJcbi8vLyBAdHlwZSBLZXl3b3JkIHwgTnVtYmVyXHJcbiRnbG9iYWwtd2VpZ2h0LW5vcm1hbDogbm9ybWFsICFkZWZhdWx0O1xyXG5cclxuLy8vIEdsb2JhbCBmb250IHdlaWdodCB1c2VkIGZvciBib2xkIHR5cGUuXHJcbi8vLyBAdHlwZSBLZXl3b3JkIHwgTnVtYmVyXHJcbiRnbG9iYWwtd2VpZ2h0LWJvbGQ6IGJvbGQgIWRlZmF1bHQ7XHJcblxyXG4vLy8gR2xvYmFsIHZhbHVlIHVzZWQgZm9yIGFsbCBlbGVtZW50cyB0aGF0IGhhdmUgYSBib3JkZXIgcmFkaXVzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRnbG9iYWwtcmFkaXVzOiAwICFkZWZhdWx0O1xyXG5cclxuLy8vIFNldHMgdGhlIHRleHQgZGlyZWN0aW9uIG9mIHRoZSBDU1MuIENhbiBiZSBlaXRoZXIgYGx0cmAgb3IgYHJ0bGAuXHJcbi8vLyBAdHlwZSBLZXl3b3JkXHJcbiRnbG9iYWwtdGV4dC1kaXJlY3Rpb246IGx0ciAhZGVmYXVsdDtcclxuXHJcbi8vLyBFbmFibGVzIGZsZXhib3ggZm9yIGNvbXBvbmVudHMgdGhhdCBzdXBwb3J0IGl0LlxyXG4vLy8gQHR5cGUgQm9vbGVhblxyXG4kZ2xvYmFsLWZsZXhib3g6IGZhbHNlICFkZWZhdWx0O1xyXG5cclxuQGlmIG5vdCBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCBwcmltYXJ5KSB7XHJcbiAgQGVycm9yICdJbiAkZm91bmRhdGlvbi1wYWxldHRlLCB5b3UgbXVzdCBoYXZlIGEgY29sb3IgbmFtZWQgXCJwcmltYXJ5XCIuJztcclxufVxyXG5cclxuLy8gSW50ZXJuYWwgdmFyaWFibGVzIHVzZWQgZm9yIHRleHQgZGlyZWN0aW9uXHJcbiRnbG9iYWwtbGVmdDogaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBydGwsIHJpZ2h0LCBsZWZ0KTtcclxuJGdsb2JhbC1yaWdodDogaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBydGwsIGxlZnQsIHJpZ2h0KTtcclxuXHJcbi8vIEludGVybmFsIHZhcmlhYmxlcyB1c2VkIGZvciBjb2xvcnNcclxuJHByaW1hcnktY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgcHJpbWFyeSk7XHJcbiRzZWNvbmRhcnktY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgc2Vjb25kYXJ5KTtcclxuJHN1Y2Nlc3MtY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgc3VjY2Vzcyk7XHJcbiR3YXJuaW5nLWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHdhcm5pbmcpO1xyXG4kYWxlcnQtY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgYWxlcnQpO1xyXG5cclxuLy8gUmVtb3ZlIHRoaXMgaW4gNi4zXHJcbiQtemYtbWVudS1pY29uLWltcG9ydGVkOiBmYWxzZTtcclxuJC16Zi1mbGV4LWNsYXNzZXMtaW1wb3J0ZWQ6IGZhbHNlO1xyXG5cclxuQG1peGluIGZvdW5kYXRpb24tZ2xvYmFsLXN0eWxlcyB7XHJcbiAgQGluY2x1ZGUgLXpmLW5vcm1hbGl6ZTtcclxuXHJcbiAgLy8gVGhlc2Ugc3R5bGVzIGFyZSBhcHBsaWVkIHRvIGEgPG1ldGE+IHRhZywgd2hpY2ggaXMgcmVhZCBieSB0aGUgRm91bmRhdGlvbiBKYXZhU2NyaXB0XHJcbiAgLmZvdW5kYXRpb24tbXEge1xyXG4gICAgZm9udC1mYW1pbHk6ICcjey16Zi1icC1zZXJpYWxpemUoJGJyZWFrcG9pbnRzKX0nO1xyXG4gIH1cclxuXHJcbiAgaHRtbCB7XHJcbiAgICBmb250LXNpemU6ICRnbG9iYWwtZm9udC1zaXplO1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICB9XHJcblxyXG4gIC8vIFNldCBib3gtc2l6aW5nIGdsb2JhbGx5IHRvIGhhbmRsZSBwYWRkaW5nIGFuZCBib3JkZXIgd2lkdGhzXHJcbiAgKixcclxuICAqOjpiZWZvcmUsXHJcbiAgKjo6YWZ0ZXIge1xyXG4gICAgYm94LXNpemluZzogaW5oZXJpdDtcclxuICB9XHJcblxyXG4gIC8vIERlZmF1bHQgYm9keSBzdHlsZXNcclxuICBib2R5IHtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBmb250LWZhbWlseTogJGJvZHktZm9udC1mYW1pbHk7XHJcbiAgICBmb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsO1xyXG4gICAgbGluZS1oZWlnaHQ6ICRnbG9iYWwtbGluZWhlaWdodDtcclxuICAgIGNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xyXG4gICAgYmFja2dyb3VuZDogJGJvZHktYmFja2dyb3VuZDtcclxuXHJcbiAgICBAaWYgKCRib2R5LWFudGlhbGlhc2VkKSB7XHJcbiAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xyXG4gICAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW1nIHtcclxuICAgIC8vIEdyaWQgZGVmYXVsdHMgdG8gZ2V0IGltYWdlcyBhbmQgZW1iZWRzIHRvIHdvcmsgcHJvcGVybHlcclxuICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogYXV0bztcclxuICAgIC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IGJpY3ViaWM7XHJcblxyXG4gICAgLy8gR2V0IHJpZCBvZiBnYXAgdW5kZXIgaW1hZ2VzIGJ5IG1ha2luZyB0aGVtIGRpc3BsYXk6IGlubGluZS1ibG9jazsgYnkgZGVmYXVsdFxyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICB9XHJcblxyXG4gIC8vIE1ha2Ugc3VyZSB0ZXh0YXJlYSB0YWtlcyBvbiBoZWlnaHQgYXV0b21hdGljYWxseVxyXG4gIHRleHRhcmVhIHtcclxuICAgIGhlaWdodDogYXV0bztcclxuICAgIG1pbi1oZWlnaHQ6IDUwcHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuICB9XHJcblxyXG4gIC8vIE1ha2Ugc2VsZWN0IGVsZW1lbnRzIGFyZSAxMDAlIHdpZHRoIGJ5IGRlZmF1bHRcclxuICBzZWxlY3Qge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuICB9XHJcblxyXG4gIC8vIFN0eWxlcyBHb29nbGUgTWFwcyBhbmQgTWFwUXVlc3QgZW1iZWRzIHByb3Blcmx5XHJcbiAgLy8gc2Nzcy1saW50OmRpc2FibGUgSWRTZWxlY3RvclxyXG4gICNtYXBfY2FudmFzLFxyXG4gIC5tYXBfY2FudmFzLFxyXG4gIC5tcWEtZGlzcGxheSB7XHJcbiAgICBpbWcsXHJcbiAgICBlbWJlZCxcclxuICAgIG9iamVjdCB7XHJcbiAgICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gUmVzZXQgPGJ1dHRvbj4gc3R5bGVzIGNyZWF0ZWQgYnkgbW9zdCBicm93c2Vyc1xyXG4gIGJ1dHRvbiB7XHJcbiAgICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XHJcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICBib3JkZXI6IDA7XHJcbiAgICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG4gIH1cclxuXHJcbiAgLy8gSW50ZXJuYWwgY2xhc3NlcyB0byBzaG93L2hpZGUgZWxlbWVudHMgaW4gSmF2YVNjcmlwdFxyXG4gIC5pcy12aXNpYmxlIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG5cclxuICAuaXMtaGlkZGVuIHtcclxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBMb2FkcyBub3JtYWxpemUuY3NzLlxyXG4vLy8gQGFjY2VzcyBwcml2YXRlXHJcbkBtaXhpbiAtemYtbm9ybWFsaXplIHtcclxuICAvKiEgbm9ybWFsaXplLmNzcyB2My4wLjMgfCBNSVQgTGljZW5zZSB8IGdpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzICovXHJcblxyXG4gIC8qKlxyXG4gICAqIDEuIFNldCBkZWZhdWx0IGZvbnQgZmFtaWx5IHRvIHNhbnMtc2VyaWYuXHJcbiAgICogMi4gUHJldmVudCBpT1MgYW5kIElFIHRleHQgc2l6ZSBhZGp1c3QgYWZ0ZXIgZGV2aWNlIG9yaWVudGF0aW9uIGNoYW5nZSxcclxuICAgKiAgICB3aXRob3V0IGRpc2FibGluZyB1c2VyIHpvb20uXHJcbiAgICovXHJcblxyXG4gIGh0bWwge1xyXG4gICAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IC8qIDEgKi9cclxuICAgIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXHJcbiAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDIgKi9cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZSBkZWZhdWx0IG1hcmdpbi5cclxuICAgKi9cclxuXHJcbiAgYm9keSB7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgfVxyXG5cclxuICAvKiBIVE1MNSBkaXNwbGF5IGRlZmluaXRpb25zXHJcbiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbiAgLyoqXHJcbiAgICogQ29ycmVjdCBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgZm9yIGFueSBIVE1MNSBlbGVtZW50IGluIElFIDgvOS5cclxuICAgKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYGRldGFpbHNgIG9yIGBzdW1tYXJ5YCBpbiBJRSAxMC8xMVxyXG4gICAqIGFuZCBGaXJlZm94LlxyXG4gICAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBgbWFpbmAgaW4gSUUgMTEuXHJcbiAgICovXHJcblxyXG4gIGFydGljbGUsXHJcbiAgYXNpZGUsXHJcbiAgZGV0YWlscyxcclxuICBmaWdjYXB0aW9uLFxyXG4gIGZpZ3VyZSxcclxuICBmb290ZXIsXHJcbiAgaGVhZGVyLFxyXG4gIGhncm91cCxcclxuICBtYWluLFxyXG4gIG1lbnUsXHJcbiAgbmF2LFxyXG4gIHNlY3Rpb24sXHJcbiAgc3VtbWFyeSB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIDEuIENvcnJlY3QgYGlubGluZS1ibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBpbiBJRSA4LzkuXHJcbiAgICogMi4gTm9ybWFsaXplIHZlcnRpY2FsIGFsaWdubWVudCBvZiBgcHJvZ3Jlc3NgIGluIENocm9tZSwgRmlyZWZveCwgYW5kIE9wZXJhLlxyXG4gICAqL1xyXG5cclxuICBhdWRpbyxcclxuICBjYW52YXMsXHJcbiAgcHJvZ3Jlc3MsXHJcbiAgdmlkZW8ge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrOyAvKiAxICovXHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IC8qIDIgKi9cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByZXZlbnQgbW9kZXJuIGJyb3dzZXJzIGZyb20gZGlzcGxheWluZyBgYXVkaW9gIHdpdGhvdXQgY29udHJvbHMuXHJcbiAgICogUmVtb3ZlIGV4Y2VzcyBoZWlnaHQgaW4gaU9TIDUgZGV2aWNlcy5cclxuICAgKi9cclxuXHJcbiAgYXVkaW86bm90KFtjb250cm9sc10pIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICBoZWlnaHQ6IDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGRyZXNzIGBbaGlkZGVuXWAgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkvMTAuXHJcbiAgICogSGlkZSB0aGUgYHRlbXBsYXRlYCBlbGVtZW50IGluIElFIDgvOS8xMC8xMSwgU2FmYXJpLCBhbmQgRmlyZWZveCA8IDIyLlxyXG4gICAqL1xyXG5cclxuICBbaGlkZGVuXSxcclxuICB0ZW1wbGF0ZSB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxuXHJcbiAgLyogTGlua3NcclxuICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBjb2xvciBmcm9tIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cclxuICAgKi9cclxuXHJcbiAgYSB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEltcHJvdmUgcmVhZGFiaWxpdHkgb2YgZm9jdXNlZCBlbGVtZW50cyB3aGVuIHRoZXkgYXJlIGFsc28gaW4gYW5cclxuICAgKiBhY3RpdmUvaG92ZXIgc3RhdGUuXHJcbiAgICovXHJcblxyXG4gIGE6YWN0aXZlLFxyXG4gIGE6aG92ZXIge1xyXG4gICAgb3V0bGluZTogMDtcclxuICB9XHJcblxyXG4gIC8qIFRleHQtbGV2ZWwgc2VtYW50aWNzXHJcbiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC8xMSwgU2FmYXJpLCBhbmQgQ2hyb21lLlxyXG4gICAqL1xyXG5cclxuICBhYmJyW3RpdGxlXSB7XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcmVzcyBzdHlsZSBzZXQgdG8gYGJvbGRlcmAgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxyXG4gICAqL1xyXG5cclxuICBiLFxyXG4gIHN0cm9uZyB7XHJcbiAgICBmb250LXdlaWdodDogYm9sZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBTYWZhcmkgYW5kIENocm9tZS5cclxuICAgKi9cclxuXHJcbiAgZGZuIHtcclxuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZHJlc3MgdmFyaWFibGUgYGgxYCBmb250LXNpemUgYW5kIG1hcmdpbiB3aXRoaW4gYHNlY3Rpb25gIGFuZCBgYXJ0aWNsZWBcclxuICAgKiBjb250ZXh0cyBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXHJcbiAgICovXHJcblxyXG4gIGgxIHtcclxuICAgIGZvbnQtc2l6ZTogMmVtO1xyXG4gICAgbWFyZ2luOiAwLjY3ZW0gMDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkuXHJcbiAgICovXHJcblxyXG4gIG1hcmsge1xyXG4gICAgYmFja2dyb3VuZDogI2ZmMDtcclxuICAgIGNvbG9yOiAjMDAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcmVzcyBpbmNvbnNpc3RlbnQgYW5kIHZhcmlhYmxlIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXHJcbiAgICovXHJcblxyXG4gIHNtYWxsIHtcclxuICAgIGZvbnQtc2l6ZTogODAlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgYWZmZWN0aW5nIGBsaW5lLWhlaWdodGAgaW4gYWxsIGJyb3dzZXJzLlxyXG4gICAqL1xyXG5cclxuICBzdWIsXHJcbiAgc3VwIHtcclxuICAgIGZvbnQtc2l6ZTogNzUlO1xyXG4gICAgbGluZS1oZWlnaHQ6IDA7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XHJcbiAgfVxyXG5cclxuICBzdXAge1xyXG4gICAgdG9wOiAtMC41ZW07XHJcbiAgfVxyXG5cclxuICBzdWIge1xyXG4gICAgYm90dG9tOiAtMC4yNWVtO1xyXG4gIH1cclxuXHJcbiAgLyogRW1iZWRkZWQgY29udGVudFxyXG4gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZSBib3JkZXIgd2hlbiBpbnNpZGUgYGFgIGVsZW1lbnQgaW4gSUUgOC85LzEwLlxyXG4gICAqL1xyXG5cclxuICBpbWcge1xyXG4gICAgYm9yZGVyOiAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29ycmVjdCBvdmVyZmxvdyBub3QgaGlkZGVuIGluIElFIDkvMTAvMTEuXHJcbiAgICovXHJcblxyXG4gIHN2Zzpub3QoOnJvb3QpIHtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAvKiBHcm91cGluZyBjb250ZW50XHJcbiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcmVzcyBtYXJnaW4gbm90IHByZXNlbnQgaW4gSUUgOC85IGFuZCBTYWZhcmkuXHJcbiAgICovXHJcblxyXG4gIGZpZ3VyZSB7XHJcbiAgICBtYXJnaW46IDFlbSA0MHB4O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcmVzcyBkaWZmZXJlbmNlcyBiZXR3ZWVuIEZpcmVmb3ggYW5kIG90aGVyIGJyb3dzZXJzLlxyXG4gICAqL1xyXG5cclxuICBociB7XHJcbiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcclxuICAgIGhlaWdodDogMDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnRhaW4gb3ZlcmZsb3cgaW4gYWxsIGJyb3dzZXJzLlxyXG4gICAqL1xyXG5cclxuICBwcmUge1xyXG4gICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGRyZXNzIG9kZCBgZW1gLXVuaXQgZm9udCBzaXplIHJlbmRlcmluZyBpbiBhbGwgYnJvd3NlcnMuXHJcbiAgICovXHJcblxyXG4gIGNvZGUsXHJcbiAga2JkLFxyXG4gIHByZSxcclxuICBzYW1wIHtcclxuICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTtcclxuICAgIGZvbnQtc2l6ZTogMWVtO1xyXG4gIH1cclxuXHJcbiAgLyogRm9ybXNcclxuICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuICAvKipcclxuICAgKiBLbm93biBsaW1pdGF0aW9uOiBieSBkZWZhdWx0LCBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYIGFsbG93IHZlcnkgbGltaXRlZFxyXG4gICAqIHN0eWxpbmcgb2YgYHNlbGVjdGAsIHVubGVzcyBhIGBib3JkZXJgIHByb3BlcnR5IGlzIHNldC5cclxuICAgKi9cclxuXHJcbiAgLyoqXHJcbiAgICogMS4gQ29ycmVjdCBjb2xvciBub3QgYmVpbmcgaW5oZXJpdGVkLlxyXG4gICAqICAgIEtub3duIGlzc3VlOiBhZmZlY3RzIGNvbG9yIG9mIGRpc2FibGVkIGVsZW1lbnRzLlxyXG4gICAqIDIuIENvcnJlY3QgZm9udCBwcm9wZXJ0aWVzIG5vdCBiZWluZyBpbmhlcml0ZWQuXHJcbiAgICogMy4gQWRkcmVzcyBtYXJnaW5zIHNldCBkaWZmZXJlbnRseSBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXHJcbiAgICovXHJcblxyXG4gIGJ1dHRvbixcclxuICBpbnB1dCxcclxuICBvcHRncm91cCxcclxuICBzZWxlY3QsXHJcbiAgdGV4dGFyZWEge1xyXG4gICAgY29sb3I6IGluaGVyaXQ7IC8qIDEgKi9cclxuICAgIGZvbnQ6IGluaGVyaXQ7IC8qIDIgKi9cclxuICAgIG1hcmdpbjogMDsgLyogMyAqL1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcmVzcyBgb3ZlcmZsb3dgIHNldCB0byBgaGlkZGVuYCBpbiBJRSA4LzkvMTAvMTEuXHJcbiAgICovXHJcblxyXG4gIGJ1dHRvbiB7XHJcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZHJlc3MgaW5jb25zaXN0ZW50IGB0ZXh0LXRyYW5zZm9ybWAgaW5oZXJpdGFuY2UgZm9yIGBidXR0b25gIGFuZCBgc2VsZWN0YC5cclxuICAgKiBBbGwgb3RoZXIgZm9ybSBjb250cm9sIGVsZW1lbnRzIGRvIG5vdCBpbmhlcml0IGB0ZXh0LXRyYW5zZm9ybWAgdmFsdWVzLlxyXG4gICAqIENvcnJlY3QgYGJ1dHRvbmAgc3R5bGUgaW5oZXJpdGFuY2UgaW4gRmlyZWZveCwgSUUgOC85LzEwLzExLCBhbmQgT3BlcmEuXHJcbiAgICogQ29ycmVjdCBgc2VsZWN0YCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94LlxyXG4gICAqL1xyXG5cclxuICBidXR0b24sXHJcbiAgc2VsZWN0IHtcclxuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogMS4gQXZvaWQgdGhlIFdlYktpdCBidWcgaW4gQW5kcm9pZCA0LjAuKiB3aGVyZSAoMikgZGVzdHJveXMgbmF0aXZlIGBhdWRpb2BcclxuICAgKiAgICBhbmQgYHZpZGVvYCBjb250cm9scy5cclxuICAgKiAyLiBDb3JyZWN0IGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgYGlucHV0YCB0eXBlcyBpbiBpT1MuXHJcbiAgICogMy4gSW1wcm92ZSB1c2FiaWxpdHkgYW5kIGNvbnNpc3RlbmN5IG9mIGN1cnNvciBzdHlsZSBiZXR3ZWVuIGltYWdlLXR5cGVcclxuICAgKiAgICBgaW5wdXRgIGFuZCBvdGhlcnMuXHJcbiAgICovXHJcblxyXG4gIGJ1dHRvbixcclxuICBodG1sIGlucHV0W3R5cGU9XCJidXR0b25cIl0sIC8qIDEgKi9cclxuICBpbnB1dFt0eXBlPVwicmVzZXRcIl0sXHJcbiAgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XHJcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMiAqL1xyXG4gICAgY3Vyc29yOiBwb2ludGVyOyAvKiAzICovXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZS1zZXQgZGVmYXVsdCBjdXJzb3IgZm9yIGRpc2FibGVkIGVsZW1lbnRzLlxyXG4gICAqL1xyXG5cclxuICBidXR0b25bZGlzYWJsZWRdLFxyXG4gIGh0bWwgaW5wdXRbZGlzYWJsZWRdIHtcclxuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgYm9yZGVyIGluIEZpcmVmb3ggNCsuXHJcbiAgICovXHJcblxyXG4gIGJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcclxuICBpbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7XHJcbiAgICBib3JkZXI6IDA7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcmVzcyBGaXJlZm94IDQrIHNldHRpbmcgYGxpbmUtaGVpZ2h0YCBvbiBgaW5wdXRgIHVzaW5nIGAhaW1wb3J0YW50YCBpblxyXG4gICAqIHRoZSBVQSBzdHlsZXNoZWV0LlxyXG4gICAqL1xyXG5cclxuICBpbnB1dCB7XHJcbiAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSXQncyByZWNvbW1lbmRlZCB0aGF0IHlvdSBkb24ndCBhdHRlbXB0IHRvIHN0eWxlIHRoZXNlIGVsZW1lbnRzLlxyXG4gICAqIEZpcmVmb3gncyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IHJlc3BlY3QgYm94LXNpemluZywgcGFkZGluZywgb3Igd2lkdGguXHJcbiAgICpcclxuICAgKiAxLiBBZGRyZXNzIGJveCBzaXppbmcgc2V0IHRvIGBjb250ZW50LWJveGAgaW4gSUUgOC85LzEwLlxyXG4gICAqIDIuIFJlbW92ZSBleGNlc3MgcGFkZGluZyBpbiBJRSA4LzkvMTAuXHJcbiAgICovXHJcblxyXG4gIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSxcclxuICBpbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xyXG4gICAgcGFkZGluZzogMDsgLyogMiAqL1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRml4IHRoZSBjdXJzb3Igc3R5bGUgZm9yIENocm9tZSdzIGluY3JlbWVudC9kZWNyZW1lbnQgYnV0dG9ucy4gRm9yIGNlcnRhaW5cclxuICAgKiBgZm9udC1zaXplYCB2YWx1ZXMgb2YgdGhlIGBpbnB1dGAsIGl0IGNhdXNlcyB0aGUgY3Vyc29yIHN0eWxlIG9mIHRoZVxyXG4gICAqIGRlY3JlbWVudCBidXR0b24gdG8gY2hhbmdlIGZyb20gYGRlZmF1bHRgIHRvIGB0ZXh0YC5cclxuICAgKi9cclxuXHJcbiAgaW5wdXRbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcclxuICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcclxuICAgIGhlaWdodDogYXV0bztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIDEuIEFkZHJlc3MgYGFwcGVhcmFuY2VgIHNldCB0byBgc2VhcmNoZmllbGRgIGluIFNhZmFyaSBhbmQgQ2hyb21lLlxyXG4gICAqIDIuIEFkZHJlc3MgYGJveC1zaXppbmdgIHNldCB0byBgYm9yZGVyLWJveGAgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXHJcbiAgICovXHJcblxyXG4gIGlucHV0W3R5cGU9XCJzZWFyY2hcIl0ge1xyXG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8qIDEgKi9cclxuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvKiAyICovXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgc2VhcmNoIGNhbmNlbCBidXR0b24gaW4gU2FmYXJpIGFuZCBDaHJvbWUgb24gT1MgWC5cclxuICAgKiBTYWZhcmkgKGJ1dCBub3QgQ2hyb21lKSBjbGlwcyB0aGUgY2FuY2VsIGJ1dHRvbiB3aGVuIHRoZSBzZWFyY2ggaW5wdXQgaGFzXHJcbiAgICogcGFkZGluZyAoYW5kIGB0ZXh0ZmllbGRgIGFwcGVhcmFuY2UpLlxyXG4gICAqL1xyXG5cclxuICBpbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxyXG4gIGlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xyXG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5lIGNvbnNpc3RlbnQgYm9yZGVyLCBtYXJnaW4sIGFuZCBwYWRkaW5nLlxyXG4gICAqIFtOT1RFXSBXZSBkb24ndCBlbmFibGUgdGhpcyBydWxlc2V0IGluIEZvdW5kYXRpb24sIGJlY2F1c2Ugd2Ugd2FudCB0aGUgPGZpZWxkc2V0PiBlbGVtZW50IHRvIGhhdmUgcGxhaW4gc3R5bGluZy5cclxuICAgKi9cclxuXHJcbiAgLyogZmllbGRzZXQge1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcclxuICAgIG1hcmdpbjogMCAycHg7XHJcbiAgICBwYWRkaW5nOiAwLjM1ZW0gMC42MjVlbSAwLjc1ZW07XHJcbiAgfSAqL1xyXG5cclxuICAvKipcclxuICAgKiAxLiBDb3JyZWN0IGBjb2xvcmAgbm90IGJlaW5nIGluaGVyaXRlZCBpbiBJRSA4LzkvMTAvMTEuXHJcbiAgICogMi4gUmVtb3ZlIHBhZGRpbmcgc28gcGVvcGxlIGFyZW4ndCBjYXVnaHQgb3V0IGlmIHRoZXkgemVybyBvdXQgZmllbGRzZXRzLlxyXG4gICAqL1xyXG5cclxuICBsZWdlbmQge1xyXG4gICAgYm9yZGVyOiAwOyAvKiAxICovXHJcbiAgICBwYWRkaW5nOiAwOyAvKiAyICovXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgOC85LzEwLzExLlxyXG4gICAqL1xyXG5cclxuICB0ZXh0YXJlYSB7XHJcbiAgICBvdmVyZmxvdzogYXV0bztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERvbid0IGluaGVyaXQgdGhlIGBmb250LXdlaWdodGAgKGFwcGxpZWQgYnkgYSBydWxlIGFib3ZlKS5cclxuICAgKiBOT1RFOiB0aGUgZGVmYXVsdCBjYW5ub3Qgc2FmZWx5IGJlIGNoYW5nZWQgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gT1MgWC5cclxuICAgKi9cclxuXHJcbiAgb3B0Z3JvdXAge1xyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgfVxyXG5cclxuICAvKiBUYWJsZXNcclxuICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmUgbW9zdCBzcGFjaW5nIGJldHdlZW4gdGFibGUgY2VsbHMuXHJcbiAgICovXHJcblxyXG4gIHRhYmxlIHtcclxuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XHJcbiAgICBib3JkZXItc3BhY2luZzogMDtcclxuICB9XHJcblxyXG4gIHRkLFxyXG4gIHRoIHtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgfVxyXG59XHJcbiIsIi8qKlxyXG4gKiBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbiAqIFZlcnNpb24gNi4yLjNcclxuICogZm91bmRhdGlvbi56dXJiLmNvbVxyXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuICovXG4vKipcclxuICogRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4gKiBWZXJzaW9uIDYuMi4zXHJcbiAqIGZvdW5kYXRpb24uenVyYi5jb21cclxuICogTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcbiAqL1xuLyohIG5vcm1hbGl6ZS5jc3MgdjMuMC4zIHwgTUlUIExpY2Vuc2UgfCBnaXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcyAqL1xuLyoqXHJcbiAgICogMS4gU2V0IGRlZmF1bHQgZm9udCBmYW1pbHkgdG8gc2Fucy1zZXJpZi5cclxuICAgKiAyLiBQcmV2ZW50IGlPUyBhbmQgSUUgdGV4dCBzaXplIGFkanVzdCBhZnRlciBkZXZpY2Ugb3JpZW50YXRpb24gY2hhbmdlLFxyXG4gICAqICAgIHdpdGhvdXQgZGlzYWJsaW5nIHVzZXIgem9vbS5cclxuICAgKi9cbmh0bWwge1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcbiAgLyogMSAqL1xuICAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTtcbiAgLyogMiAqL1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XG4gIC8qIDIgKi8gfVxuXG4vKipcclxuICAgKiBSZW1vdmUgZGVmYXVsdCBtYXJnaW4uXHJcbiAgICovXG5ib2R5IHtcbiAgbWFyZ2luOiAwOyB9XG5cbi8qIEhUTUw1IGRpc3BsYXkgZGVmaW5pdGlvbnNcclxuICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXHJcbiAgICogQ29ycmVjdCBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgZm9yIGFueSBIVE1MNSBlbGVtZW50IGluIElFIDgvOS5cclxuICAgKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYGRldGFpbHNgIG9yIGBzdW1tYXJ5YCBpbiBJRSAxMC8xMVxyXG4gICAqIGFuZCBGaXJlZm94LlxyXG4gICAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBgbWFpbmAgaW4gSUUgMTEuXHJcbiAgICovXG5hcnRpY2xlLFxuYXNpZGUsXG5kZXRhaWxzLFxuZmlnY2FwdGlvbixcbmZpZ3VyZSxcbmZvb3RlcixcbmhlYWRlcixcbmhncm91cCxcbm1haW4sXG5tZW51LFxubmF2LFxuc2VjdGlvbixcbnN1bW1hcnkge1xuICBkaXNwbGF5OiBibG9jazsgfVxuXG4vKipcclxuICAgKiAxLiBDb3JyZWN0IGBpbmxpbmUtYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgaW4gSUUgOC85LlxyXG4gICAqIDIuIE5vcm1hbGl6ZSB2ZXJ0aWNhbCBhbGlnbm1lbnQgb2YgYHByb2dyZXNzYCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cclxuICAgKi9cbmF1ZGlvLFxuY2FudmFzLFxucHJvZ3Jlc3MsXG52aWRlbyB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgLyogMSAqL1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG4gIC8qIDIgKi8gfVxuXG4vKipcclxuICAgKiBQcmV2ZW50IG1vZGVybiBicm93c2VycyBmcm9tIGRpc3BsYXlpbmcgYGF1ZGlvYCB3aXRob3V0IGNvbnRyb2xzLlxyXG4gICAqIFJlbW92ZSBleGNlc3MgaGVpZ2h0IGluIGlPUyA1IGRldmljZXMuXHJcbiAgICovXG5hdWRpbzpub3QoW2NvbnRyb2xzXSkge1xuICBkaXNwbGF5OiBub25lO1xuICBoZWlnaHQ6IDA7IH1cblxuLyoqXHJcbiAgICogQWRkcmVzcyBgW2hpZGRlbl1gIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LzEwLlxyXG4gICAqIEhpZGUgdGhlIGB0ZW1wbGF0ZWAgZWxlbWVudCBpbiBJRSA4LzkvMTAvMTEsIFNhZmFyaSwgYW5kIEZpcmVmb3ggPCAyMi5cclxuICAgKi9cbltoaWRkZW5dLFxudGVtcGxhdGUge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbi8qIExpbmtzXHJcbiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gICAqIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIGNvbG9yIGZyb20gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxyXG4gICAqL1xuYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG5cbi8qKlxyXG4gICAqIEltcHJvdmUgcmVhZGFiaWxpdHkgb2YgZm9jdXNlZCBlbGVtZW50cyB3aGVuIHRoZXkgYXJlIGFsc28gaW4gYW5cclxuICAgKiBhY3RpdmUvaG92ZXIgc3RhdGUuXHJcbiAgICovXG5hOmFjdGl2ZSxcbmE6aG92ZXIge1xuICBvdXRsaW5lOiAwOyB9XG5cbi8qIFRleHQtbGV2ZWwgc2VtYW50aWNzXHJcbiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gICAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkvMTAvMTEsIFNhZmFyaSwgYW5kIENocm9tZS5cclxuICAgKi9cbmFiYnJbdGl0bGVdIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZDsgfVxuXG4vKipcclxuICAgKiBBZGRyZXNzIHN0eWxlIHNldCB0byBgYm9sZGVyYCBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXHJcbiAgICovXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7IH1cblxuLyoqXHJcbiAgICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIFNhZmFyaSBhbmQgQ2hyb21lLlxyXG4gICAqL1xuZGZuIHtcbiAgZm9udC1zdHlsZTogaXRhbGljOyB9XG5cbi8qKlxyXG4gICAqIEFkZHJlc3MgdmFyaWFibGUgYGgxYCBmb250LXNpemUgYW5kIG1hcmdpbiB3aXRoaW4gYHNlY3Rpb25gIGFuZCBgYXJ0aWNsZWBcclxuICAgKiBjb250ZXh0cyBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXHJcbiAgICovXG5oMSB7XG4gIGZvbnQtc2l6ZTogMmVtO1xuICBtYXJnaW46IDAuNjdlbSAwOyB9XG5cbi8qKlxyXG4gICAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkuXHJcbiAgICovXG5tYXJrIHtcbiAgYmFja2dyb3VuZDogI2ZmMDtcbiAgY29sb3I6ICMwMDA7IH1cblxuLyoqXHJcbiAgICogQWRkcmVzcyBpbmNvbnNpc3RlbnQgYW5kIHZhcmlhYmxlIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXHJcbiAgICovXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlOyB9XG5cbi8qKlxyXG4gICAqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGFmZmVjdGluZyBgbGluZS1oZWlnaHRgIGluIGFsbCBicm93c2Vycy5cclxuICAgKi9cbnN1YixcbnN1cCB7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuc3VwIHtcbiAgdG9wOiAtMC41ZW07IH1cblxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtOyB9XG5cbi8qIEVtYmVkZGVkIGNvbnRlbnRcclxuICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXHJcbiAgICogUmVtb3ZlIGJvcmRlciB3aGVuIGluc2lkZSBgYWAgZWxlbWVudCBpbiBJRSA4LzkvMTAuXHJcbiAgICovXG5pbWcge1xuICBib3JkZXI6IDA7IH1cblxuLyoqXHJcbiAgICogQ29ycmVjdCBvdmVyZmxvdyBub3QgaGlkZGVuIGluIElFIDkvMTAvMTEuXHJcbiAgICovXG5zdmc6bm90KDpyb290KSB7XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cblxuLyogR3JvdXBpbmcgY29udGVudFxyXG4gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcclxuICAgKiBBZGRyZXNzIG1hcmdpbiBub3QgcHJlc2VudCBpbiBJRSA4LzkgYW5kIFNhZmFyaS5cclxuICAgKi9cbmZpZ3VyZSB7XG4gIG1hcmdpbjogMWVtIDQwcHg7IH1cblxuLyoqXHJcbiAgICogQWRkcmVzcyBkaWZmZXJlbmNlcyBiZXR3ZWVuIEZpcmVmb3ggYW5kIG90aGVyIGJyb3dzZXJzLlxyXG4gICAqL1xuaHIge1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgaGVpZ2h0OiAwOyB9XG5cbi8qKlxyXG4gICAqIENvbnRhaW4gb3ZlcmZsb3cgaW4gYWxsIGJyb3dzZXJzLlxyXG4gICAqL1xucHJlIHtcbiAgb3ZlcmZsb3c6IGF1dG87IH1cblxuLyoqXHJcbiAgICogQWRkcmVzcyBvZGQgYGVtYC11bml0IGZvbnQgc2l6ZSByZW5kZXJpbmcgaW4gYWxsIGJyb3dzZXJzLlxyXG4gICAqL1xuY29kZSxcbmtiZCxcbnByZSxcbnNhbXAge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7XG4gIGZvbnQtc2l6ZTogMWVtOyB9XG5cbi8qIEZvcm1zXHJcbiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gICAqIEtub3duIGxpbWl0YXRpb246IGJ5IGRlZmF1bHQsIENocm9tZSBhbmQgU2FmYXJpIG9uIE9TIFggYWxsb3cgdmVyeSBsaW1pdGVkXHJcbiAgICogc3R5bGluZyBvZiBgc2VsZWN0YCwgdW5sZXNzIGEgYGJvcmRlcmAgcHJvcGVydHkgaXMgc2V0LlxyXG4gICAqL1xuLyoqXHJcbiAgICogMS4gQ29ycmVjdCBjb2xvciBub3QgYmVpbmcgaW5oZXJpdGVkLlxyXG4gICAqICAgIEtub3duIGlzc3VlOiBhZmZlY3RzIGNvbG9yIG9mIGRpc2FibGVkIGVsZW1lbnRzLlxyXG4gICAqIDIuIENvcnJlY3QgZm9udCBwcm9wZXJ0aWVzIG5vdCBiZWluZyBpbmhlcml0ZWQuXHJcbiAgICogMy4gQWRkcmVzcyBtYXJnaW5zIHNldCBkaWZmZXJlbnRseSBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXHJcbiAgICovXG5idXR0b24sXG5pbnB1dCxcbm9wdGdyb3VwLFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgLyogMSAqL1xuICBmb250OiBpbmhlcml0O1xuICAvKiAyICovXG4gIG1hcmdpbjogMDtcbiAgLyogMyAqLyB9XG5cbi8qKlxyXG4gICAqIEFkZHJlc3MgYG92ZXJmbG93YCBzZXQgdG8gYGhpZGRlbmAgaW4gSUUgOC85LzEwLzExLlxyXG4gICAqL1xuYnV0dG9uIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7IH1cblxuLyoqXHJcbiAgICogQWRkcmVzcyBpbmNvbnNpc3RlbnQgYHRleHQtdHJhbnNmb3JtYCBpbmhlcml0YW5jZSBmb3IgYGJ1dHRvbmAgYW5kIGBzZWxlY3RgLlxyXG4gICAqIEFsbCBvdGhlciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgZG8gbm90IGluaGVyaXQgYHRleHQtdHJhbnNmb3JtYCB2YWx1ZXMuXHJcbiAgICogQ29ycmVjdCBgYnV0dG9uYCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94LCBJRSA4LzkvMTAvMTEsIGFuZCBPcGVyYS5cclxuICAgKiBDb3JyZWN0IGBzZWxlY3RgIHN0eWxlIGluaGVyaXRhbmNlIGluIEZpcmVmb3guXHJcbiAgICovXG5idXR0b24sXG5zZWxlY3Qge1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgfVxuXG4vKipcclxuICAgKiAxLiBBdm9pZCB0aGUgV2ViS2l0IGJ1ZyBpbiBBbmRyb2lkIDQuMC4qIHdoZXJlICgyKSBkZXN0cm95cyBuYXRpdmUgYGF1ZGlvYFxyXG4gICAqICAgIGFuZCBgdmlkZW9gIGNvbnRyb2xzLlxyXG4gICAqIDIuIENvcnJlY3QgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSBgaW5wdXRgIHR5cGVzIGluIGlPUy5cclxuICAgKiAzLiBJbXByb3ZlIHVzYWJpbGl0eSBhbmQgY29uc2lzdGVuY3kgb2YgY3Vyc29yIHN0eWxlIGJldHdlZW4gaW1hZ2UtdHlwZVxyXG4gICAqICAgIGBpbnB1dGAgYW5kIG90aGVycy5cclxuICAgKi9cbmJ1dHRvbixcbmh0bWwgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSxcbmlucHV0W3R5cGU9XCJyZXNldFwiXSxcbmlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbiAgLyogMiAqL1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIC8qIDMgKi8gfVxuXG4vKipcclxuICAgKiBSZS1zZXQgZGVmYXVsdCBjdXJzb3IgZm9yIGRpc2FibGVkIGVsZW1lbnRzLlxyXG4gICAqL1xuYnV0dG9uW2Rpc2FibGVkXSxcbmh0bWwgaW5wdXRbZGlzYWJsZWRdIHtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDsgfVxuXG4vKipcclxuICAgKiBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgYm9yZGVyIGluIEZpcmVmb3ggNCsuXHJcbiAgICovXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5pbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlcjogMDtcbiAgcGFkZGluZzogMDsgfVxuXG4vKipcclxuICAgKiBBZGRyZXNzIEZpcmVmb3ggNCsgc2V0dGluZyBgbGluZS1oZWlnaHRgIG9uIGBpbnB1dGAgdXNpbmcgYCFpbXBvcnRhbnRgIGluXHJcbiAgICogdGhlIFVBIHN0eWxlc2hlZXQuXHJcbiAgICovXG5pbnB1dCB7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7IH1cblxuLyoqXHJcbiAgICogSXQncyByZWNvbW1lbmRlZCB0aGF0IHlvdSBkb24ndCBhdHRlbXB0IHRvIHN0eWxlIHRoZXNlIGVsZW1lbnRzLlxyXG4gICAqIEZpcmVmb3gncyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IHJlc3BlY3QgYm94LXNpemluZywgcGFkZGluZywgb3Igd2lkdGguXHJcbiAgICpcclxuICAgKiAxLiBBZGRyZXNzIGJveCBzaXppbmcgc2V0IHRvIGBjb250ZW50LWJveGAgaW4gSUUgOC85LzEwLlxyXG4gICAqIDIuIFJlbW92ZSBleGNlc3MgcGFkZGluZyBpbiBJRSA4LzkvMTAuXHJcbiAgICovXG5pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0sXG5pbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAvKiAxICovXG4gIHBhZGRpbmc6IDA7XG4gIC8qIDIgKi8gfVxuXG4vKipcclxuICAgKiBGaXggdGhlIGN1cnNvciBzdHlsZSBmb3IgQ2hyb21lJ3MgaW5jcmVtZW50L2RlY3JlbWVudCBidXR0b25zLiBGb3IgY2VydGFpblxyXG4gICAqIGBmb250LXNpemVgIHZhbHVlcyBvZiB0aGUgYGlucHV0YCwgaXQgY2F1c2VzIHRoZSBjdXJzb3Igc3R5bGUgb2YgdGhlXHJcbiAgICogZGVjcmVtZW50IGJ1dHRvbiB0byBjaGFuZ2UgZnJvbSBgZGVmYXVsdGAgdG8gYHRleHRgLlxyXG4gICAqL1xuaW5wdXRbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbmlucHV0W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87IH1cblxuLyoqXHJcbiAgICogMS4gQWRkcmVzcyBgYXBwZWFyYW5jZWAgc2V0IHRvIGBzZWFyY2hmaWVsZGAgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXHJcbiAgICogMi4gQWRkcmVzcyBgYm94LXNpemluZ2Agc2V0IHRvIGBib3JkZXItYm94YCBpbiBTYWZhcmkgYW5kIENocm9tZS5cclxuICAgKi9cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDtcbiAgLyogMSAqL1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgLyogMiAqLyB9XG5cbi8qKlxyXG4gICAqIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBzZWFyY2ggY2FuY2VsIGJ1dHRvbiBpbiBTYWZhcmkgYW5kIENocm9tZSBvbiBPUyBYLlxyXG4gICAqIFNhZmFyaSAoYnV0IG5vdCBDaHJvbWUpIGNsaXBzIHRoZSBjYW5jZWwgYnV0dG9uIHdoZW4gdGhlIHNlYXJjaCBpbnB1dCBoYXNcclxuICAgKiBwYWRkaW5nIChhbmQgYHRleHRmaWVsZGAgYXBwZWFyYW5jZSkuXHJcbiAgICovXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgfVxuXG4vKipcclxuICAgKiBEZWZpbmUgY29uc2lzdGVudCBib3JkZXIsIG1hcmdpbiwgYW5kIHBhZGRpbmcuXHJcbiAgICogW05PVEVdIFdlIGRvbid0IGVuYWJsZSB0aGlzIHJ1bGVzZXQgaW4gRm91bmRhdGlvbiwgYmVjYXVzZSB3ZSB3YW50IHRoZSA8ZmllbGRzZXQ+IGVsZW1lbnQgdG8gaGF2ZSBwbGFpbiBzdHlsaW5nLlxyXG4gICAqL1xuLyogZmllbGRzZXQge1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcclxuICAgIG1hcmdpbjogMCAycHg7XHJcbiAgICBwYWRkaW5nOiAwLjM1ZW0gMC42MjVlbSAwLjc1ZW07XHJcbiAgfSAqL1xuLyoqXHJcbiAgICogMS4gQ29ycmVjdCBgY29sb3JgIG5vdCBiZWluZyBpbmhlcml0ZWQgaW4gSUUgOC85LzEwLzExLlxyXG4gICAqIDIuIFJlbW92ZSBwYWRkaW5nIHNvIHBlb3BsZSBhcmVuJ3QgY2F1Z2h0IG91dCBpZiB0aGV5IHplcm8gb3V0IGZpZWxkc2V0cy5cclxuICAgKi9cbmxlZ2VuZCB7XG4gIGJvcmRlcjogMDtcbiAgLyogMSAqL1xuICBwYWRkaW5nOiAwO1xuICAvKiAyICovIH1cblxuLyoqXHJcbiAgICogUmVtb3ZlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFIDgvOS8xMC8xMS5cclxuICAgKi9cbnRleHRhcmVhIHtcbiAgb3ZlcmZsb3c6IGF1dG87IH1cblxuLyoqXHJcbiAgICogRG9uJ3QgaW5oZXJpdCB0aGUgYGZvbnQtd2VpZ2h0YCAoYXBwbGllZCBieSBhIHJ1bGUgYWJvdmUpLlxyXG4gICAqIE5PVEU6IHRoZSBkZWZhdWx0IGNhbm5vdCBzYWZlbHkgYmUgY2hhbmdlZCBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYLlxyXG4gICAqL1xub3B0Z3JvdXAge1xuICBmb250LXdlaWdodDogYm9sZDsgfVxuXG4vKiBUYWJsZXNcclxuICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXHJcbiAgICogUmVtb3ZlIG1vc3Qgc3BhY2luZyBiZXR3ZWVuIHRhYmxlIGNlbGxzLlxyXG4gICAqL1xudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDsgfVxuXG50ZCxcbnRoIHtcbiAgcGFkZGluZzogMDsgfVxuXG4uZm91bmRhdGlvbi1tcSB7XG4gIGZvbnQtZmFtaWx5OiBcInNtYWxsPTBlbSZtZWRpdW09NTJlbSZsYXJnZT03MmVtXCI7IH1cblxuaHRtbCB7XG4gIGZvbnQtc2l6ZTogMTAwJTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuXG4qLFxuKjo6YmVmb3JlLFxuKjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBpbmhlcml0OyB9XG5cbmJvZHkge1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGZvbnQtZmFtaWx5OiBcIlNlZ29lIFVJXCIsIFNlZ29lLCBcIkhlbHZldGljYSBOZXVlXCIsIEhlbHZldGljYSwgUm9ib3RvLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgY29sb3I6ICMwYTBhMGE7XG4gIGJhY2tncm91bmQ6ICNmZWZlZmU7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOyB9XG5cbmltZyB7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xuICAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxudGV4dGFyZWEge1xuICBoZWlnaHQ6IGF1dG87XG4gIG1pbi1oZWlnaHQ6IDUwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDA7IH1cblxuc2VsZWN0IHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDA7IH1cblxuI21hcF9jYW52YXMgaW1nLFxuI21hcF9jYW52YXMgZW1iZWQsXG4jbWFwX2NhbnZhcyBvYmplY3QsXG4ubWFwX2NhbnZhcyBpbWcsXG4ubWFwX2NhbnZhcyBlbWJlZCxcbi5tYXBfY2FudmFzIG9iamVjdCxcbi5tcWEtZGlzcGxheSBpbWcsXG4ubXFhLWRpc3BsYXkgZW1iZWQsXG4ubXFhLWRpc3BsYXkgb2JqZWN0IHtcbiAgbWF4LXdpZHRoOiBub25lICFpbXBvcnRhbnQ7IH1cblxuYnV0dG9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIGxpbmUtaGVpZ2h0OiAxOyB9XG4gIFtkYXRhLXdoYXRpbnB1dD0nbW91c2UnXSBidXR0b24ge1xuICAgIG91dGxpbmU6IDA7IH1cblxuLmlzLXZpc2libGUge1xuICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9XG5cbi5pcy1oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cblxuZGl2LFxuZGwsXG5kdCxcbmRkLFxudWwsXG5vbCxcbmxpLFxuaDEsXG5oMixcbmgzLFxuaDQsXG5oNSxcbmg2LFxucHJlLFxuZm9ybSxcbnAsXG5ibG9ja3F1b3RlLFxudGgsXG50ZCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDsgfVxuXG5wIHtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBsaW5lLWhlaWdodDogMS42O1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OyB9XG5cbmVtLFxuaSB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IH1cblxuc3Ryb25nLFxuYiB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDsgfVxuXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlO1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDsgfVxuXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYge1xuICBmb250LWZhbWlseTogXCJTZWdvZSBVSVwiLCBTZWdvZSwgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBIZWx2ZXRpY2EsIFJvYm90bywgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjQ7IH1cbiAgaDEgc21hbGwsXG4gIGgyIHNtYWxsLFxuICBoMyBzbWFsbCxcbiAgaDQgc21hbGwsXG4gIGg1IHNtYWxsLFxuICBoNiBzbWFsbCB7XG4gICAgY29sb3I6ICNjYWNhY2E7XG4gICAgbGluZS1oZWlnaHQ6IDA7IH1cblxuaDEge1xuICBmb250LXNpemU6IDIuNXJlbTsgfVxuXG5oMiB7XG4gIGZvbnQtc2l6ZTogMS45Mzc1cmVtOyB9XG5cbmgzIHtcbiAgZm9udC1zaXplOiAxLjVyZW07IH1cblxuaDQge1xuICBmb250LXNpemU6IDEuMTI1cmVtOyB9XG5cbmg1IHtcbiAgZm9udC1zaXplOiAxcmVtOyB9XG5cbmg2IHtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTsgfVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1MmVtKSB7XG4gIGgxIHtcbiAgICBmb250LXNpemU6IDNyZW07IH1cbiAgaDIge1xuICAgIGZvbnQtc2l6ZTogMi41cmVtOyB9XG4gIGgzIHtcbiAgICBmb250LXNpemU6IDEuNXJlbTsgfVxuICBoNCB7XG4gICAgZm9udC1zaXplOiAxLjEyNXJlbTsgfVxuICBoNSB7XG4gICAgZm9udC1zaXplOiAxcmVtOyB9XG4gIGg2IHtcbiAgICBmb250LXNpemU6IDAuODc1cmVtOyB9IH1cblxuYSB7XG4gIGNvbG9yOiAjMjE5OWU4O1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gIGN1cnNvcjogcG9pbnRlcjsgfVxuICBhOmhvdmVyLCBhOmZvY3VzIHtcbiAgICBjb2xvcjogIzE1ODVjZjsgfVxuICBhIGltZyB7XG4gICAgYm9yZGVyOiAwOyB9XG5cbmhyIHtcbiAgbWF4LXdpZHRoOiA3NXJlbTtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXItcmlnaHQ6IDA7XG4gIGJvcmRlci10b3A6IDA7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjY2FjYWNhO1xuICBib3JkZXItbGVmdDogMDtcbiAgbWFyZ2luOiAxLjI1cmVtIGF1dG87XG4gIGNsZWFyOiBib3RoOyB9XG5cbnVsLFxub2wsXG5kbCB7XG4gIGxpbmUtaGVpZ2h0OiAxLjY7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIGxpc3Qtc3R5bGUtcG9zaXRpb246IG91dHNpZGU7IH1cblxubGkge1xuICBmb250LXNpemU6IGluaGVyaXQ7IH1cblxudWwge1xuICBsaXN0LXN0eWxlLXR5cGU6IGRpc2M7XG4gIG1hcmdpbi1sZWZ0OiAxLjI1cmVtOyB9XG5cbm9sIHtcbiAgbWFyZ2luLWxlZnQ6IDEuMjVyZW07IH1cblxudWwgdWwsIG9sIHVsLCB1bCBvbCwgb2wgb2wge1xuICBtYXJnaW4tbGVmdDogMS4yNXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMDsgfVxuXG5kbCB7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07IH1cbiAgZGwgZHQge1xuICAgIG1hcmdpbi1ib3R0b206IDAuM3JlbTtcbiAgICBmb250LXdlaWdodDogYm9sZDsgfVxuXG5ibG9ja3F1b3RlIHtcbiAgbWFyZ2luOiAwIDAgMXJlbTtcbiAgcGFkZGluZzogMC41NjI1cmVtIDEuMjVyZW0gMCAxLjE4NzVyZW07XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2NhY2FjYTsgfVxuICBibG9ja3F1b3RlLCBibG9ja3F1b3RlIHAge1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG4gICAgY29sb3I6ICM4YThhOGE7IH1cblxuY2l0ZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgY29sb3I6ICM4YThhOGE7IH1cbiAgY2l0ZTpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICdcXDIwMTQgXFwwMDIwJzsgfVxuXG5hYmJyIHtcbiAgY29sb3I6ICMwYTBhMGE7XG4gIGN1cnNvcjogaGVscDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZCAjMGEwYTBhOyB9XG5cbmNvZGUge1xuICBmb250LWZhbWlseTogQ29uc29sYXMsIFwiTGliZXJhdGlvbiBNb25vXCIsIENvdXJpZXIsIG1vbm9zcGFjZTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgY29sb3I6ICMwYTBhMGE7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjYWNhY2E7XG4gIHBhZGRpbmc6IDAuMTI1cmVtIDAuMzEyNXJlbSAwLjA2MjVyZW07IH1cblxua2JkIHtcbiAgcGFkZGluZzogMC4xMjVyZW0gMC4yNXJlbSAwO1xuICBtYXJnaW46IDA7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7XG4gIGNvbG9yOiAjMGEwYTBhO1xuICBmb250LWZhbWlseTogQ29uc29sYXMsIFwiTGliZXJhdGlvbiBNb25vXCIsIENvdXJpZXIsIG1vbm9zcGFjZTsgfVxuXG4uc3ViaGVhZGVyIHtcbiAgbWFyZ2luLXRvcDogMC4ycmVtO1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gIGNvbG9yOiAjOGE4YThhOyB9XG5cbi5sZWFkIHtcbiAgZm9udC1zaXplOiAxMjUlO1xuICBsaW5lLWhlaWdodDogMS42OyB9XG5cbi5zdGF0IHtcbiAgZm9udC1zaXplOiAyLjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxOyB9XG4gIHAgKyAuc3RhdCB7XG4gICAgbWFyZ2luLXRvcDogLTFyZW07IH1cblxuLm5vLWJ1bGxldCB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBsaXN0LXN0eWxlOiBub25lOyB9XG5cbi50ZXh0LWxlZnQge1xuICB0ZXh0LWFsaWduOiBsZWZ0OyB9XG5cbi50ZXh0LXJpZ2h0IHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7IH1cblxuLnRleHQtY2VudGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG5cbi50ZXh0LWp1c3RpZnkge1xuICB0ZXh0LWFsaWduOiBqdXN0aWZ5OyB9XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUyZW0pIHtcbiAgLm1lZGl1bS10ZXh0LWxlZnQge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7IH1cbiAgLm1lZGl1bS10ZXh0LXJpZ2h0IHtcbiAgICB0ZXh0LWFsaWduOiByaWdodDsgfVxuICAubWVkaXVtLXRleHQtY2VudGVyIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbiAgLm1lZGl1bS10ZXh0LWp1c3RpZnkge1xuICAgIHRleHQtYWxpZ246IGp1c3RpZnk7IH0gfVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3MmVtKSB7XG4gIC5sYXJnZS10ZXh0LWxlZnQge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7IH1cbiAgLmxhcmdlLXRleHQtcmlnaHQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0OyB9XG4gIC5sYXJnZS10ZXh0LWNlbnRlciB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG4gIC5sYXJnZS10ZXh0LWp1c3RpZnkge1xuICAgIHRleHQtYWxpZ246IGp1c3RpZnk7IH0gfVxuXG4uc2hvdy1mb3ItcHJpbnQge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cblxuQG1lZGlhIHByaW50IHtcbiAgKiB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsgfVxuICAuc2hvdy1mb3ItcHJpbnQge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgLmhpZGUtZm9yLXByaW50IHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cbiAgdGFibGUuc2hvdy1mb3ItcHJpbnQge1xuICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7IH1cbiAgdGhlYWQuc2hvdy1mb3ItcHJpbnQge1xuICAgIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cCAhaW1wb3J0YW50OyB9XG4gIHRib2R5LnNob3ctZm9yLXByaW50IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3ctZ3JvdXAgIWltcG9ydGFudDsgfVxuICB0ci5zaG93LWZvci1wcmludCB7XG4gICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7IH1cbiAgdGQuc2hvdy1mb3ItcHJpbnQge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsgfVxuICB0aC5zaG93LWZvci1wcmludCB7XG4gICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OyB9XG4gIGEsXG4gIGE6dmlzaXRlZCB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH1cbiAgYVtocmVmXTphZnRlciB7XG4gICAgY29udGVudDogXCIgKFwiIGF0dHIoaHJlZikgXCIpXCI7IH1cbiAgLmlyIGE6YWZ0ZXIsXG4gIGFbaHJlZl49J2phdmFzY3JpcHQ6J106YWZ0ZXIsXG4gIGFbaHJlZl49JyMnXTphZnRlciB7XG4gICAgY29udGVudDogJyc7IH1cbiAgYWJiclt0aXRsZV06YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiIChcIiBhdHRyKHRpdGxlKSBcIilcIjsgfVxuICBwcmUsXG4gIGJsb2NrcXVvdGUge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICM4YThhOGE7XG4gICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOyB9XG4gIHRoZWFkIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7IH1cbiAgdHIsXG4gIGltZyB7XG4gICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOyB9XG4gIGltZyB7XG4gICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH1cbiAgQHBhZ2Uge1xuICAgIG1hcmdpbjogMC41Y207IH1cbiAgcCxcbiAgaDIsXG4gIGgzIHtcbiAgICBvcnBoYW5zOiAzO1xuICAgIHdpZG93czogMzsgfVxuICBoMixcbiAgaDMge1xuICAgIHBhZ2UtYnJlYWstYWZ0ZXI6IGF2b2lkOyB9IH1cblxuLmhpZGUge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cblxuLmludmlzaWJsZSB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjsgfVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1MS45Mzc1ZW0pIHtcbiAgLmhpZGUtZm9yLXNtYWxsLW9ubHkge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDBlbSksIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTJlbSkge1xuICAuc2hvdy1mb3Itc21hbGwtb25seSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9IH1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTJlbSkge1xuICAuaGlkZS1mb3ItbWVkaXVtIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0gfVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1MS45Mzc1ZW0pIHtcbiAgLnNob3ctZm9yLW1lZGl1bSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9IH1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTJlbSkgYW5kIChtYXgtd2lkdGg6IDcxLjkzNzVlbSkge1xuICAuaGlkZS1mb3ItbWVkaXVtLW9ubHkge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDUxLjkzNzVlbSksIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzJlbSkge1xuICAuc2hvdy1mb3ItbWVkaXVtLW9ubHkge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDcyZW0pIHtcbiAgLmhpZGUtZm9yLWxhcmdlIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0gfVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3MS45Mzc1ZW0pIHtcbiAgLnNob3ctZm9yLWxhcmdlIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0gfVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3MmVtKSB7XG4gIC5oaWRlLWZvci1sYXJnZS1vbmx5IHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0gfVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3MS45Mzc1ZW0pIHtcbiAgLnNob3ctZm9yLWxhcmdlLW9ubHkge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfSB9XG5cbi5zaG93LWZvci1zcixcbi5zaG93LW9uLWZvY3VzIHtcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gIHdpZHRoOiAxcHg7XG4gIGhlaWdodDogMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOyB9XG5cbi5zaG93LW9uLWZvY3VzOmFjdGl2ZSwgLnNob3ctb24tZm9jdXM6Zm9jdXMge1xuICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogYXV0bztcbiAgd2lkdGg6IGF1dG87XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICBjbGlwOiBhdXRvOyB9XG5cbi5zaG93LWZvci1sYW5kc2NhcGUsXG4uaGlkZS1mb3ItcG9ydHJhaXQge1xuICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSB7XG4gICAgLnNob3ctZm9yLWxhbmRzY2FwZSxcbiAgICAuaGlkZS1mb3ItcG9ydHJhaXQge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfSB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpIHtcbiAgICAuc2hvdy1mb3ItbGFuZHNjYXBlLFxuICAgIC5oaWRlLWZvci1wb3J0cmFpdCB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0gfVxuXG4uaGlkZS1mb3ItbGFuZHNjYXBlLFxuLnNob3ctZm9yLXBvcnRyYWl0IHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSB7XG4gICAgLmhpZGUtZm9yLWxhbmRzY2FwZSxcbiAgICAuc2hvdy1mb3ItcG9ydHJhaXQge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCkge1xuICAgIC5oaWRlLWZvci1sYW5kc2NhcGUsXG4gICAgLnNob3ctZm9yLXBvcnRyYWl0IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH0gfVxuXG4vKipcclxuICogRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4gKiBWZXJzaW9uIDYuMi4zXHJcbiAqIGZvdW5kYXRpb24uenVyYi5jb21cclxuICogTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcbiAqL1xuQGtleWZyYW1lcyBmYWRlSW4ge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMDsgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAxOyB9IH1cblxuQGtleWZyYW1lcyB6b29tSW4ge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDApOyB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfSB9XG5cbkBrZXlmcmFtZXMgc2hpZnRab29tIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjkpOyB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfSB9XG5cbkBrZXlmcmFtZXMgc2hpZnRVcCB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyNSUpOyB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9IH1cblxuQGtleWZyYW1lcyBzaGlmdERvd24ge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTI1JSk7IH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH0gfVxuXG5Aa2V5ZnJhbWVzIHNoaWZ0TGVmdCB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgyNSUpOyB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOyB9IH1cblxuQGtleWZyYW1lcyBzbGlkZVJpZ2h0IHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsgfSB9XG5cbkBrZXlmcmFtZXMgaGluZ2Uge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDIwMDBweCkgcm90YXRlWCgtOTBkZWcpO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IHRvcDsgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMjAwMHB4KSByb3RhdGUoMGRlZyk7IH0gfVxuXG4jYmFubmVyIC5iYW5uZXItYmtnIHtcbiAgYW5pbWF0aW9uLW5hbWU6IHNoaWZ0Wm9vbTtcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjVzO1xuICBhbmltYXRpb24tZGVsYXk6IDAuMjVzO1xuICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuICBhbmltYXRpb24tcGxheS1zdGF0ZTogcGF1c2VkOyB9XG4gIC5hbmltYXRlLXN0YXJ0ICNiYW5uZXIgLmJhbm5lci1ia2cge1xuICAgIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nOyB9XG4gIC5uby1qcyAjYmFubmVyIC5iYW5uZXItYmtnIHtcbiAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBub25lOyB9XG5cbiNiYW5uZXIgLmdubC1sb2dvIGltZyB7XG4gIGFuaW1hdGlvbi1uYW1lOiBzaGlmdFVwO1xuICBhbmltYXRpb24tZHVyYXRpb246IDFzO1xuICBhbmltYXRpb24tZGVsYXk6IDAuNXM7XG4gIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG4gIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBwYXVzZWQ7IH1cbiAgLmFuaW1hdGUtc3RhcnQgI2Jhbm5lciAuZ25sLWxvZ28gaW1nIHtcbiAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZzsgfVxuICAubm8tanMgI2Jhbm5lciAuZ25sLWxvZ28gaW1nIHtcbiAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBub25lOyB9XG5cbiNiYW5uZXIgLnRpdGxlIHtcbiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJbjtcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxcztcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjc1cztcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcbiAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHBhdXNlZDsgfVxuICAuYW5pbWF0ZS1zdGFydCAjYmFubmVyIC50aXRsZSB7XG4gICAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7IH1cbiAgLm5vLWpzICNiYW5uZXIgLnRpdGxlIHtcbiAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBub25lOyB9XG5cbiNiYW5uZXIgLnRpdGxlIGltZyB7XG4gIGFuaW1hdGlvbi1uYW1lOiBzaGlmdFVwO1xuICBhbmltYXRpb24tZHVyYXRpb246IDFzO1xuICBhbmltYXRpb24tZGVsYXk6IDFzO1xuICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuICBhbmltYXRpb24tcGxheS1zdGF0ZTogcGF1c2VkOyB9XG4gIC5hbmltYXRlLXN0YXJ0ICNiYW5uZXIgLnRpdGxlIGltZyB7XG4gICAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7IH1cbiAgLm5vLWpzICNiYW5uZXIgLnRpdGxlIGltZyB7XG4gICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogbm9uZTsgfVxuXG4jYmFubmVyIC50aXRsZSBzcGFuIHtcbiAgYW5pbWF0aW9uLW5hbWU6IHNoaWZ0VXA7XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMXM7XG4gIGFuaW1hdGlvbi1kZWxheTogMS4yNXM7XG4gIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG4gIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBwYXVzZWQ7IH1cbiAgLmFuaW1hdGUtc3RhcnQgI2Jhbm5lciAudGl0bGUgc3BhbiB7XG4gICAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7IH1cbiAgLm5vLWpzICNiYW5uZXIgLnRpdGxlIHNwYW4ge1xuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IG5vbmU7IH1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTEuOTM3NWVtKSB7XG4gICNtYWlubWVudSAubWVudSB7XG4gICAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlUmlnaHQ7XG4gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjVzO1xuICAgIGFuaW1hdGlvbi1kZWxheTogMDtcbiAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuICAgIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBwYXVzZWQ7IH1cbiAgICAuYW5pbWF0ZS1zdGFydCAjbWFpbm1lbnUgLm1lbnUge1xuICAgICAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7IH1cbiAgICAubm8tanMgI21haW5tZW51IC5tZW51IHtcbiAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IG5vbmU7IH0gfVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1MmVtKSB7XG4gICNtYWlubWVudSAubWVudSB7XG4gICAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlUmlnaHQ7XG4gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxcztcbiAgICBhbmltYXRpb24tZGVsYXk6IDEuMjVzO1xuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG4gICAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHBhdXNlZDsgfVxuICAgIC5hbmltYXRlLXN0YXJ0ICNtYWlubWVudSAubWVudSB7XG4gICAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZzsgfVxuICAgIC5uby1qcyAjbWFpbm1lbnUgLm1lbnUge1xuICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogbm9uZTsgfVxuICAjbWFpbm1lbnUgLm1lbnUgbGk6bnRoLWNoaWxkKDEpID4gYSB7XG4gICAgYW5pbWF0aW9uLW5hbWU6IHNoaWZ0VXA7XG4gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxcztcbiAgICBhbmltYXRpb24tZGVsYXk6IDEuOTVzO1xuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG4gICAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHBhdXNlZDsgfVxuICAgIC5hbmltYXRlLXN0YXJ0ICNtYWlubWVudSAubWVudSBsaTpudGgtY2hpbGQoMSkgPiBhIHtcbiAgICAgIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nOyB9XG4gICAgLm5vLWpzICNtYWlubWVudSAubWVudSBsaTpudGgtY2hpbGQoMSkgPiBhIHtcbiAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IG5vbmU7IH1cbiAgI21haW5tZW51IC5tZW51IGxpOm50aC1jaGlsZCgyKSA+IGEge1xuICAgIGFuaW1hdGlvbi1uYW1lOiBzaGlmdFVwO1xuICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMXM7XG4gICAgYW5pbWF0aW9uLWRlbGF5OiAyLjE1cztcbiAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuICAgIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBwYXVzZWQ7IH1cbiAgICAuYW5pbWF0ZS1zdGFydCAjbWFpbm1lbnUgLm1lbnUgbGk6bnRoLWNoaWxkKDIpID4gYSB7XG4gICAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZzsgfVxuICAgIC5uby1qcyAjbWFpbm1lbnUgLm1lbnUgbGk6bnRoLWNoaWxkKDIpID4gYSB7XG4gICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBub25lOyB9XG4gICNtYWlubWVudSAubWVudSBsaTpudGgtY2hpbGQoMykgPiBhIHtcbiAgICBhbmltYXRpb24tbmFtZTogc2hpZnRVcDtcbiAgICBhbmltYXRpb24tZHVyYXRpb246IDFzO1xuICAgIGFuaW1hdGlvbi1kZWxheTogMi4zNXM7XG4gICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcbiAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogcGF1c2VkOyB9XG4gICAgLmFuaW1hdGUtc3RhcnQgI21haW5tZW51IC5tZW51IGxpOm50aC1jaGlsZCgzKSA+IGEge1xuICAgICAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7IH1cbiAgICAubm8tanMgI21haW5tZW51IC5tZW51IGxpOm50aC1jaGlsZCgzKSA+IGEge1xuICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogbm9uZTsgfVxuICAjbWFpbm1lbnUgLm1lbnUgbGk6bnRoLWNoaWxkKDQpID4gYSB7XG4gICAgYW5pbWF0aW9uLW5hbWU6IHNoaWZ0VXA7XG4gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxcztcbiAgICBhbmltYXRpb24tZGVsYXk6IDIuNTVzO1xuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG4gICAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHBhdXNlZDsgfVxuICAgIC5hbmltYXRlLXN0YXJ0ICNtYWlubWVudSAubWVudSBsaTpudGgtY2hpbGQoNCkgPiBhIHtcbiAgICAgIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nOyB9XG4gICAgLm5vLWpzICNtYWlubWVudSAubWVudSBsaTpudGgtY2hpbGQoNCkgPiBhIHtcbiAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IG5vbmU7IH1cbiAgI21haW5tZW51IC5tZW51IGxpOm50aC1jaGlsZCg1KSA+IGEge1xuICAgIGFuaW1hdGlvbi1uYW1lOiBzaGlmdFVwO1xuICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMXM7XG4gICAgYW5pbWF0aW9uLWRlbGF5OiAyLjc1cztcbiAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuICAgIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBwYXVzZWQ7IH1cbiAgICAuYW5pbWF0ZS1zdGFydCAjbWFpbm1lbnUgLm1lbnUgbGk6bnRoLWNoaWxkKDUpID4gYSB7XG4gICAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZzsgfVxuICAgIC5uby1qcyAjbWFpbm1lbnUgLm1lbnUgbGk6bnRoLWNoaWxkKDUpID4gYSB7XG4gICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBub25lOyB9XG4gICNtYWlubWVudSAubWVudSBsaTpudGgtY2hpbGQoNikgPiBhIHtcbiAgICBhbmltYXRpb24tbmFtZTogc2hpZnRVcDtcbiAgICBhbmltYXRpb24tZHVyYXRpb246IDFzO1xuICAgIGFuaW1hdGlvbi1kZWxheTogMi45NXM7XG4gICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcbiAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogcGF1c2VkOyB9XG4gICAgLmFuaW1hdGUtc3RhcnQgI21haW5tZW51IC5tZW51IGxpOm50aC1jaGlsZCg2KSA+IGEge1xuICAgICAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7IH1cbiAgICAubm8tanMgI21haW5tZW51IC5tZW51IGxpOm50aC1jaGlsZCg2KSA+IGEge1xuICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogbm9uZTsgfVxuICAjbWFpbm1lbnUgLm1lbnUgbGk6bnRoLWNoaWxkKDcpID4gYSB7XG4gICAgYW5pbWF0aW9uLW5hbWU6IHNoaWZ0VXA7XG4gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxcztcbiAgICBhbmltYXRpb24tZGVsYXk6IDMuMTVzO1xuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG4gICAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHBhdXNlZDsgfVxuICAgIC5hbmltYXRlLXN0YXJ0ICNtYWlubWVudSAubWVudSBsaTpudGgtY2hpbGQoNykgPiBhIHtcbiAgICAgIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nOyB9XG4gICAgLm5vLWpzICNtYWlubWVudSAubWVudSBsaTpudGgtY2hpbGQoNykgPiBhIHtcbiAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IG5vbmU7IH1cbiAgI21haW5tZW51IC5tZW51IGxpOm50aC1jaGlsZCg4KSA+IGEge1xuICAgIGFuaW1hdGlvbi1uYW1lOiBzaGlmdFVwO1xuICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMXM7XG4gICAgYW5pbWF0aW9uLWRlbGF5OiAzLjM1cztcbiAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuICAgIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBwYXVzZWQ7IH1cbiAgICAuYW5pbWF0ZS1zdGFydCAjbWFpbm1lbnUgLm1lbnUgbGk6bnRoLWNoaWxkKDgpID4gYSB7XG4gICAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZzsgfVxuICAgIC5uby1qcyAjbWFpbm1lbnUgLm1lbnUgbGk6bnRoLWNoaWxkKDgpID4gYSB7XG4gICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBub25lOyB9IH1cblxuI21pbmlzdGVyIGltZyB7XG4gIGFuaW1hdGlvbi1uYW1lOiBzaGlmdExlZnQ7XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMXM7XG4gIGFuaW1hdGlvbi1kZWxheTogMDtcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcbiAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHBhdXNlZDsgfVxuICAuYW5pbWF0ZS1zdGFydCAjbWluaXN0ZXIgaW1nIHtcbiAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZzsgfVxuICAubm8tanMgI21pbmlzdGVyIGltZyB7XG4gICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogbm9uZTsgfVxuXG4jbWluaXN0ZXIgaDIge1xuICBhbmltYXRpb24tbmFtZTogaGluZ2U7XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMC43NXM7XG4gIGFuaW1hdGlvbi1kZWxheTogMC41cztcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcbiAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHBhdXNlZDsgfVxuICAuYW5pbWF0ZS1zdGFydCAjbWluaXN0ZXIgaDIge1xuICAgIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nOyB9XG4gIC5uby1qcyAjbWluaXN0ZXIgaDIge1xuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IG5vbmU7IH1cblxuI21pbmlzdGVyIHAge1xuICBhbmltYXRpb24tbmFtZTogc2hpZnREb3duO1xuICBhbmltYXRpb24tZHVyYXRpb246IDAuNzVzO1xuICBhbmltYXRpb24tZGVsYXk6IDFzO1xuICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuICBhbmltYXRpb24tcGxheS1zdGF0ZTogcGF1c2VkOyB9XG4gIC5hbmltYXRlLXN0YXJ0ICNtaW5pc3RlciBwIHtcbiAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZzsgfVxuICAubm8tanMgI21pbmlzdGVyIHAge1xuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IG5vbmU7IH1cblxuLypcclxuI2NvbW1pdHRlZSBoMiAgICAgICAgICAgeyBAaW5jbHVkZSBhbmltYXRlKGhpbmdlLCAwLjc1cywgMCkgfVxyXG4jY29tbWl0dGVlIHAgICAgICAgICAgICB7IEBpbmNsdWRlIGFuaW1hdGUoc2hpZnREb3duLCAwLjc1cywgMC41cykgfVxyXG5cclxuXHJcbiNmcmFtZXdvcmsgaDIgICAgICAgICAgIHsgQGluY2x1ZGUgYW5pbWF0ZShoaW5nZSwgMC43NXMsIDApIH1cclxuI2ZyYW1ld29yayBwICAgICAgICAgICAgeyBAaW5jbHVkZSBhbmltYXRlKHNoaWZ0RG93biwgMC43NXMsIDAuNXMpIH1cclxuI2ZyYW1ld29yayAuYnV0dG9uICAgICAgeyBAaW5jbHVkZSBhbmltYXRlKHpvb21JbiwgMXMsIDAuNzVzKSB9XHJcbiovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdhcHAtdWktaWNvbnMnO1xuICBzcmM6IHVybChcIi4uL2ZvbnRzL2FwcC11aS1pY29ucy50dGY/aDhoMTMxXCIpIGZvcm1hdChcInRydWV0eXBlXCIpLCB1cmwoXCIuLi9mb250cy9hcHAtdWktaWNvbnMud29mZj9oOGgxMzFcIikgZm9ybWF0KFwid29mZlwiKSwgdXJsKFwiLi4vZm9udHMvYXBwLXVpLWljb25zLnN2Zz9oOGgxMzEjYXBwLXVpLWljb25zXCIpIGZvcm1hdChcInN2Z1wiKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsOyB9XG5cbltjbGFzc149XCJpY29uLVwiXSwgW2NsYXNzKj1cIiBpY29uLVwiXSB7XG4gIC8qIHVzZSAhaW1wb3J0YW50IHRvIHByZXZlbnQgaXNzdWVzIHdpdGggYnJvd3NlciBleHRlbnNpb25zIHRoYXQgY2hhbmdlIGZvbnRzICovXG4gIGZvbnQtZmFtaWx5OiAnYXBwLXVpLWljb25zJyAhaW1wb3J0YW50O1xuICBzcGVhazogbm9uZTtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICAvKiBCZXR0ZXIgRm9udCBSZW5kZXJpbmcgPT09PT09PT09PT0gKi9cbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7IH1cblxuLmljb24tZmlsZXM6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGU5MDBcIjsgfVxuXG4vKipcclxuICogRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4gKiBWZXJzaW9uIDYuMi4zXHJcbiAqIGZvdW5kYXRpb24uenVyYi5jb21cclxuICogTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcbiAqL1xuLnNlY3Rpb24ge1xuICBtYXgtd2lkdGg6IDc1cmVtO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICB3aWR0aDogMTAwJTtcbiAgZmxvYXQ6IGxlZnQ7XG4gIG1heC13aWR0aDogbm9uZTsgfVxuICAuc2VjdGlvbjo6YmVmb3JlLCAuc2VjdGlvbjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcgJztcbiAgICBkaXNwbGF5OiB0YWJsZTsgfVxuICAuc2VjdGlvbjo6YWZ0ZXIge1xuICAgIGNsZWFyOiBib3RoOyB9XG4gIC5zZWN0aW9uOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgIGZsb2F0OiByaWdodDsgfVxuICAuc2VjdGlvbiwgLnNlY3Rpb246bGFzdC1jaGlsZCB7XG4gICAgZmxvYXQ6IG5vbmU7IH1cbiAgLnNlY3Rpb24ubGlnaHQtZ3JheSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMDtcbiAgICBjb2xvcjogIzBhMGEwYTsgfVxuICAgIC5zZWN0aW9uLmxpZ2h0LWdyYXkgYSB7XG4gICAgICBjb2xvcjogIzIxOTllODsgfVxuICAuc2VjdGlvbi5kYXJrLWdyYXkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1NTU1NTU7XG4gICAgY29sb3I6ICNmZWZlZmU7IH1cbiAgICAuc2VjdGlvbi5kYXJrLWdyYXkgYSB7XG4gICAgICBjb2xvcjogI2ZlZmVmZTsgfVxuICAuc2VjdGlvbi5jb2xvckEge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMzNzQyNTQ7XG4gICAgY29sb3I6ICNmZWZlZmU7IH1cbiAgICAuc2VjdGlvbi5jb2xvckEgYSB7XG4gICAgICBjb2xvcjogI2ZlZmVmZTsgfVxuXG4uY29udGVudCB7XG4gIG1heC13aWR0aDogNzVyZW07XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIHdpZHRoOiAxMDAlO1xuICBmbG9hdDogbGVmdDtcbiAgbWF4LXdpZHRoOiBub25lO1xuICBwYWRkaW5nOiA0cmVtIDNyZW07IH1cbiAgLmNvbnRlbnQ6OmJlZm9yZSwgLmNvbnRlbnQ6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnICc7XG4gICAgZGlzcGxheTogdGFibGU7IH1cbiAgLmNvbnRlbnQ6OmFmdGVyIHtcbiAgICBjbGVhcjogYm90aDsgfVxuICAuY29udGVudDpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICBmbG9hdDogcmlnaHQ7IH1cbiAgLmNvbnRlbnQsIC5jb250ZW50Omxhc3QtY2hpbGQge1xuICAgIGZsb2F0OiBub25lOyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUyZW0pIHtcbiAgICAuY29udGVudCB7XG4gICAgICBwYWRkaW5nOiA1cmVtIDUuNXJlbSA1cmVtIDE5cmVtOyB9IH1cbiAgLmNvbnRlbnQgLnRpdGxlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAycmVtOyB9XG4gIC5jb250ZW50IGg0LCAuY29udGVudCBoNSwgLmNvbnRlbnQgaDYge1xuICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW07IH1cbiAgLmNvbnRlbnQgLmxheW91dCB7XG4gICAgbWF4LXdpZHRoOiA3NXJlbTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87IH1cbiAgICAuY29udGVudCAubGF5b3V0OjpiZWZvcmUsIC5jb250ZW50IC5sYXlvdXQ6OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcgJztcbiAgICAgIGRpc3BsYXk6IHRhYmxlOyB9XG4gICAgLmNvbnRlbnQgLmxheW91dDo6YWZ0ZXIge1xuICAgICAgY2xlYXI6IGJvdGg7IH1cbiAgICAuY29udGVudCAubGF5b3V0IC5waG90by1sZWZ0IHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgZmxvYXQ6IGxlZnQ7IH1cbiAgICAgIC5jb250ZW50IC5sYXlvdXQgLnBob3RvLWxlZnQ6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgICAgIGZsb2F0OiByaWdodDsgfVxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzJlbSkge1xuICAgICAgICAuY29udGVudCAubGF5b3V0IC5waG90by1sZWZ0IHtcbiAgICAgICAgICB3aWR0aDogMjUlO1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICBsZWZ0OiAtNzUlO1xuICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDJyZW07IH0gfVxuICAgIC5jb250ZW50IC5sYXlvdXQgLmJvZHkge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBmbG9hdDogbGVmdDsgfVxuICAgICAgLmNvbnRlbnQgLmxheW91dCAuYm9keTpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0OyB9XG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3MmVtKSB7XG4gICAgICAgIC5jb250ZW50IC5sYXlvdXQgLmJvZHkge1xuICAgICAgICAgIHdpZHRoOiA3NSU7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgIGxlZnQ6IDI1JTsgfSB9XG4gIC5jb250ZW50IHVsLmNvbW1pdHRlZS1tZW1iZXJzIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIG1hcmdpbjogMDtcbiAgICBtYXJnaW4tbGVmdDogMC43NXJlbTtcbiAgICBsaW5lLWhlaWdodDogMS4yNTsgfVxuICAgIC5jb250ZW50IHVsLmNvbW1pdHRlZS1tZW1iZXJzOjpiZWZvcmUsIC5jb250ZW50IHVsLmNvbW1pdHRlZS1tZW1iZXJzOjphZnRlciB7XG4gICAgICBjb250ZW50OiAnICc7XG4gICAgICBkaXNwbGF5OiB0YWJsZTsgfVxuICAgIC5jb250ZW50IHVsLmNvbW1pdHRlZS1tZW1iZXJzOjphZnRlciB7XG4gICAgICBjbGVhcjogYm90aDsgfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDcyZW0pIHtcbiAgICAgIC5jb250ZW50IHVsLmNvbW1pdHRlZS1tZW1iZXJzID4gbGkge1xuICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICBmbG9hdDogbGVmdDsgfVxuICAgICAgICAuY29udGVudCB1bC5jb21taXR0ZWUtbWVtYmVycyA+IGxpOm50aC1vZi10eXBlKDFuKSB7XG4gICAgICAgICAgY2xlYXI6IG5vbmU7IH1cbiAgICAgICAgLmNvbnRlbnQgdWwuY29tbWl0dGVlLW1lbWJlcnMgPiBsaTpudGgtb2YtdHlwZSgybisxKSB7XG4gICAgICAgICAgY2xlYXI6IGJvdGg7IH1cbiAgICAgICAgLmNvbnRlbnQgdWwuY29tbWl0dGVlLW1lbWJlcnMgPiBsaTpsYXN0LWNoaWxkIHtcbiAgICAgICAgICBmbG9hdDogbGVmdDsgfSB9XG4gICAgLmNvbnRlbnQgdWwuY29tbWl0dGVlLW1lbWJlcnMgPiBsaSB7XG4gICAgICBwYWRkaW5nOiAwIDJyZW0gMC4xMjVyZW0gMnJlbTtcbiAgICAgIGJvcmRlci1sZWZ0OiA0OHB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7XG4gICAgICBtYXJnaW4tYm90dG9tOiAycmVtOyB9XG4gICAgICAuY29udGVudCB1bC5jb21taXR0ZWUtbWVtYmVycyA+IGxpIC5waG90byB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxcmVtOyB9XG4gICAgICAuY29udGVudCB1bC5jb21taXR0ZWUtbWVtYmVycyA+IGxpIC5uYW1lIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4zNzVyZW07IH1cbiAgICAgIC5jb250ZW50IHVsLmNvbW1pdHRlZS1tZW1iZXJzID4gbGkgLnRpdGxlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xMjVyZW07XG4gICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTsgfVxuICAgICAgLmNvbnRlbnQgdWwuY29tbWl0dGVlLW1lbWJlcnMgPiBsaSAuY29tcGFueSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBmb250LXNpemU6IDEuMTI1cmVtOyB9XG4gIC5jb250ZW50IC5hcnRpY2xlIHtcbiAgICBtYXJnaW46IDJyZW0gMDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMnJlbTsgfVxuICAgIC5jb250ZW50IC5hcnRpY2xlOmZpcnN0LWNoaWxkIHtcbiAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkO1xuICAgICAgcGFkZGluZy10b3A6IDJyZW07IH1cbiAgICAuY29udGVudCAuYXJ0aWNsZSBoMyAuZGF0ZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgfVxuICAgIC5jb250ZW50IC5hcnRpY2xlIGgzIC50aXRsZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGZvbnQtc2l6ZTogMS4zNzVyZW07IH1cbiAgICAuY29udGVudCAuYXJ0aWNsZSBwIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7IH1cbiAgLmNvbnRlbnQgLmNlbnRlciB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG4gIC5jb250ZW50IC5idXR0b24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBjb2xvcjogI2ZlZmVmZTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCAjZmVmZWZlO1xuICAgIHBhZGRpbmc6IDFyZW07XG4gICAgcGFkZGluZy1yaWdodDogMnJlbTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMjVzIGVhc2Utb3V0LCBjb2xvciAwLjI1cyBlYXNlLW91dDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luOiAxcmVtIGF1dG87XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuICAgIC5jb250ZW50IC5idXR0b246OmJlZm9yZSwgLmNvbnRlbnQgLmJ1dHRvbjo6YWZ0ZXIge1xuICAgICAgY29udGVudDogJyAnO1xuICAgICAgZGlzcGxheTogdGFibGU7IH1cbiAgICAuY29udGVudCAuYnV0dG9uOjphZnRlciB7XG4gICAgICBjbGVhcjogYm90aDsgfVxuICAgIC5jb250ZW50IC5idXR0b246aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsgfVxuICAgIC5jb250ZW50IC5idXR0b24gc3BhbiB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfVxuICAgICAgLmNvbnRlbnQgLmJ1dHRvbiBzcGFuW2NsYXNzXj1cImljb24tXCJdLCAuY29udGVudCAuYnV0dG9uIHNwYW5bY2xhc3MqPVwiIGljb24tXCJdIHtcbiAgICAgICAgZm9udC1zaXplOiA1cmVtOyB9XG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDcyZW0pIHtcbiAgICAgICAgICAuY29udGVudCAuYnV0dG9uIHNwYW5bY2xhc3NePVwiaWNvbi1cIl0sIC5jb250ZW50IC5idXR0b24gc3BhbltjbGFzcyo9XCIgaWNvbi1cIl0ge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7IH0gfVxuICAgICAgLmNvbnRlbnQgLmJ1dHRvbiBzcGFuLnRleHQge1xuICAgICAgICBmb250LXNpemU6IDEuMTI1cmVtO1xuICAgICAgICBwYWRkaW5nLXRvcDogMC41cmVtOyB9XG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDcyZW0pIHtcbiAgICAgICAgICAuY29udGVudCAuYnV0dG9uIHNwYW4udGV4dCB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogNnJlbTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4zNzVyZW07IH0gfVxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzJlbSkge1xuICAgICAgICAuY29udGVudCAuYnV0dG9uIHNwYW4uc3VidGV4dCB7XG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IDZyZW07IH0gfVxuICAuY29udGVudCB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTsgfVxuICAgIC5jb250ZW50IHRhYmxlIHRoIHtcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNmZWZlZmU7XG4gICAgICBwYWRkaW5nOiAwIDAuNXJlbTsgfVxuICAgIC5jb250ZW50IHRhYmxlIHRkIHtcbiAgICAgIHBhZGRpbmc6IDAuNXJlbTsgfVxuICAuY29udGVudCB1bCB7XG4gICAgbWFyZ2luLWxlZnQ6IDJyZW07IH1cblxuLmRhcmstZ3JheSBhIHtcbiAgY29sb3I6ICNmZWZlZmU7IH1cblxuLyoqXHJcbiAqIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuICogVmVyc2lvbiA2LjIuM1xyXG4gKiBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG4gKi9cbiNtYWlubWVudSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgei1pbmRleDogMTAwMDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwOyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUyZW0pIHtcbiAgICAjbWFpbm1lbnUge1xuICAgICAgdG9wOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7IH0gfVxuICAjbWFpbm1lbnUgLm1lbnUtYnV0dG9uIHtcbiAgICBiYWNrZ3JvdW5kOiAjZGRkO1xuICAgIHBhZGRpbmc6IDAuNzVyZW0gMXJlbTtcbiAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICBmb250LXdlaWdodDogYm9sZDsgfVxuICAgICNtYWlubWVudSAubWVudS1idXR0b24gLm1lbnUtaWNvbiB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgd2lkdGg6IDE0cHg7XG4gICAgICBoZWlnaHQ6IDEycHg7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcbiAgICAgIG1hcmdpbi10b3A6IC0ycHg7IH1cbiAgICAgICNtYWlubWVudSAubWVudS1idXR0b24gLm1lbnUtaWNvbjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiAjMGEwYTBhO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNXB4IDAgIzBhMGEwYSwgMCAxMHB4IDAgIzBhMGEwYTsgfVxuICAgICAgI21haW5tZW51IC5tZW51LWJ1dHRvbiAubWVudS1pY29uOmhvdmVyOjphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICMwYTBhMGE7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNXB4IDAgIzBhMGEwYSwgMCAxMHB4IDAgIzBhMGEwYTsgfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUyZW0pIHtcbiAgICAgICNtYWlubWVudSAubWVudS1idXR0b24ge1xuICAgICAgICBkaXNwbGF5OiBub25lOyB9IH1cbiAgI21haW5tZW51IC5jbG9zZS1idXR0b24ge1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBwYWRkaW5nOiAwLjI1cmVtIDFyZW07XG4gICAgZm9udC1zaXplOiAxLjI1cmVtOyB9XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTJlbSkge1xuICAgICAgI21haW5tZW51IC5jbG9zZS1idXR0b24ge1xuICAgICAgICBkaXNwbGF5OiBub25lOyB9IH1cbiAgI21haW5tZW51IC5tZW51IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICBiYWNrZ3JvdW5kOiAjZGRkOyB9XG4gICAgI21haW5tZW51IC5tZW51Lm9wZW4ge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1MmVtKSB7XG4gICAgICAjbWFpbm1lbnUgLm1lbnUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OyB9IH1cbiAgICAjbWFpbm1lbnUgLm1lbnUgdWwge1xuICAgICAgd2lkdGg6IDE1cmVtO1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIHBhZGRpbmc6IDJyZW0gMDtcbiAgICAgIGZvbnQtc2l6ZTogMC45Mzc1cmVtOyB9XG4gICAgICAjbWFpbm1lbnUgLm1lbnUgdWwgPiBsaSB7XG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cbiAgICAgICAgW2RhdGEtd2hhdGlucHV0PSdtb3VzZSddICNtYWlubWVudSAubWVudSB1bCA+IGxpIHtcbiAgICAgICAgICBvdXRsaW5lOiAwOyB9XG4gICAgICAjbWFpbm1lbnUgLm1lbnUgdWwgPiBsaSA+IGEge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcGFkZGluZzogMC43cmVtIDFyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxOyB9XG4gICAgICAjbWFpbm1lbnUgLm1lbnUgdWwgaW5wdXQsXG4gICAgICAjbWFpbm1lbnUgLm1lbnUgdWwgYSxcbiAgICAgICNtYWlubWVudSAubWVudSB1bCBidXR0b24ge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwOyB9XG4gICAgICAjbWFpbm1lbnUgLm1lbnUgdWwgPiBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrOyB9XG4gICAgICAjbWFpbm1lbnUgLm1lbnUgdWwgPiBsaSA+IGEge1xuICAgICAgICBjb2xvcjogIzBhMGEwYTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogMjAwJSAxMDAlO1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICNkZGQgNTAlLCAjZjdmN2Y3IDUwJSk7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtcG9zaXRpb24gMC41cztcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG4gICAgICAgICNtYWlubWVudSAubWVudSB1bCA+IGxpID4gYTpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEwMCUgMDsgfVxuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1MmVtKSB7XG4gICAgICAgICAgI21haW5tZW51IC5tZW51IHVsID4gbGkgPiBhLmFjdGl2ZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTAwJSAwOyB9IH1cblxuLyoqXHJcbiAqIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuICogVmVyc2lvbiA2LjIuM1xyXG4gKiBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG4gKi9cbiNiYW5uZXIge1xuICBtYXgtd2lkdGg6IDc1cmVtO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICB3aWR0aDogMTAwJTtcbiAgZmxvYXQ6IGxlZnQ7XG4gIG1heC13aWR0aDogbm9uZTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjU0YTc0O1xuICBwYWRkaW5nLWJvdHRvbTogMXJlbTtcbiAgYm9yZGVyLWJvdHRvbTogOHB4IHNvbGlkICMxOTMxNGQ7IH1cbiAgI2Jhbm5lcjo6YmVmb3JlLCAjYmFubmVyOjphZnRlciB7XG4gICAgY29udGVudDogJyAnO1xuICAgIGRpc3BsYXk6IHRhYmxlOyB9XG4gICNiYW5uZXI6OmFmdGVyIHtcbiAgICBjbGVhcjogYm90aDsgfVxuICAjYmFubmVyOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgIGZsb2F0OiByaWdodDsgfVxuICAjYmFubmVyLCAjYmFubmVyOmxhc3QtY2hpbGQge1xuICAgIGZsb2F0OiBub25lOyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUyZW0pIHtcbiAgICAjYmFubmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwYTAyM2I7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgIGJvcmRlcjogbm9uZTsgfSB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUyZW0pIHtcbiAgICAjYmFubmVyIHtcbiAgICAgIHBhZGRpbmctdG9wOiA3MS4wNjc0MSU7IH0gfVxuICAjYmFubmVyIC5iYW5uZXItYmtnIHtcbiAgICBkaXNwbGF5OiBub25lOyB9XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTJlbSkge1xuICAgICAgI2Jhbm5lciAuYmFubmVyLWJrZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHotaW5kZXg6IDE7IH0gfVxuICAjYmFubmVyIC5nbmwtbG9nbyB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTJlbSkge1xuICAgICAgI2Jhbm5lciAuZ25sLWxvZ28ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHotaW5kZXg6IDI7IH0gfVxuICAgICNiYW5uZXIgLmdubC1sb2dvIGltZyB7XG4gICAgICBtYXJnaW46IDJyZW0gYXV0bztcbiAgICAgIHdpZHRoOiAxNDRweDsgfVxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTJlbSkge1xuICAgICAgICAjYmFubmVyIC5nbmwtbG9nbyBpbWcge1xuICAgICAgICAgIG1hcmdpbjogMXJlbSBhdXRvO1xuICAgICAgICAgIHdpZHRoOiAxNSU7IH0gfVxuICAjYmFubmVyIC50aXRsZSB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBhZGRpbmc6IDJyZW07XG4gICAgcGFkZGluZy10b3A6IDAuNXJlbTsgfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUyZW0pIHtcbiAgICAgICNiYW5uZXIgLnRpdGxlIHtcbiAgICAgICAgcGFkZGluZzogMnJlbTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDQ5JTtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgei1pbmRleDogMztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNDIsIDgwLCAxMjMsIDAuOSk7IH0gfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUyZW0pIGFuZCAobWF4LXdpZHRoOiA3MS45Mzc1ZW0pIHtcbiAgICAgICNiYW5uZXIgLnRpdGxlIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxNnJlbTsgfSB9XG4gICAgI2Jhbm5lciAudGl0bGUgaDEge1xuICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGNvbG9yOiAjZmVmZWZlO1xuICAgICAgbGluZS1oZWlnaHQ6IDE7IH1cbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUyZW0pIHtcbiAgICAgICAgI2Jhbm5lciAudGl0bGUgaDEge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtOyB9IH1cbiAgICAjYmFubmVyIC50aXRsZSBpbWcge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgICAgIHdpZHRoOiAyODhweDsgfVxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTJlbSkge1xuICAgICAgICAjYmFubmVyIC50aXRsZSBpbWcge1xuICAgICAgICAgIHdpZHRoOiBhdXRvOyB9IH1cbiAgICAjYmFubmVyIC50aXRsZSBzcGFuIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICB3aWR0aDogMjU2cHg7IH1cbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUyZW0pIHtcbiAgICAgICAgI2Jhbm5lciAudGl0bGUgc3BhbiB7XG4gICAgICAgICAgd2lkdGg6IGF1dG87IH0gfVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xyXG4vLy8vXHJcblxyXG4kZ2xvYmFsLWZvbnQtc2l6ZTogMTAwJSAhZGVmYXVsdDtcclxuXHJcbi8vIHNjc3MtbGludDpkaXNhYmxlIFplcm9Vbml0XHJcblxyXG4vLy8gUmVtb3ZlcyB0aGUgdW5pdCAoZS5nLiBweCwgZW0sIHJlbSkgZnJvbSBhIHZhbHVlLCByZXR1cm5pbmcgdGhlIG51bWJlciBvbmx5LlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtIC0gTnVtYmVyIHRvIHN0cmlwIHVuaXQgZnJvbS5cclxuLy8vXHJcbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgc2FtZSBudW1iZXIsIHNhbnMgdW5pdC5cclxuQGZ1bmN0aW9uIHN0cmlwLXVuaXQoJG51bSkge1xyXG4gIEByZXR1cm4gJG51bSAvICgkbnVtICogMCArIDEpO1xyXG59XHJcblxyXG4vLy8gQ29udmVydHMgb25lIG9yIG1vcmUgcGl4ZWwgdmFsdWVzIGludG8gbWF0Y2hpbmcgcmVtIHZhbHVlcy5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkdmFsdWVzIC0gT25lIG9yIG1vcmUgdmFsdWVzIHRvIGNvbnZlcnQuIEJlIHN1cmUgdG8gc2VwYXJhdGUgdGhlbSB3aXRoIHNwYWNlcyBhbmQgbm90IGNvbW1hcy4gSWYgeW91IG5lZWQgdG8gY29udmVydCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCB3cmFwIHRoZSBsaXN0IGluIHBhcmVudGhlc2VzLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlIFtudWxsXSAtIFRoZSBiYXNlIHZhbHVlIHRvIHVzZSB3aGVuIGNhbGN1bGF0aW5nIHRoZSBgcmVtYC4gSWYgeW91J3JlIHVzaW5nIEZvdW5kYXRpb24gb3V0IG9mIHRoZSBib3gsIHRoaXMgaXMgMTZweC4gSWYgdGhpcyBwYXJhbWV0ZXIgaXMgYG51bGxgLCB0aGUgZnVuY3Rpb24gd2lsbCByZWZlcmVuY2UgdGhlIGAkYmFzZS1mb250LXNpemVgIHZhcmlhYmxlIGFzIHRoZSBiYXNlLlxyXG4vLy9cclxuLy8vIEByZXR1cm5zIHtMaXN0fSBBIGxpc3Qgb2YgY29udmVydGVkIHZhbHVlcy5cclxuQGZ1bmN0aW9uIHJlbS1jYWxjKCR2YWx1ZXMsICRiYXNlOiBudWxsKSB7XHJcbiAgJHJlbS12YWx1ZXM6ICgpO1xyXG4gICRjb3VudDogbGVuZ3RoKCR2YWx1ZXMpO1xyXG5cclxuICAvLyBJZiBubyBiYXNlIGlzIGRlZmluZWQsIGRlZmVyIHRvIHRoZSBnbG9iYWwgZm9udCBzaXplXHJcbiAgQGlmICRiYXNlID09IG51bGwge1xyXG4gICAgJGJhc2U6ICRnbG9iYWwtZm9udC1zaXplO1xyXG4gIH1cclxuXHJcbiAgLy8gSWYgdGhlIGJhc2UgZm9udCBzaXplIGlzIGEgJSwgdGhlbiBtdWx0aXBseSBpdCBieSAxNnB4XHJcbiAgLy8gVGhpcyBpcyBiZWNhdXNlIDEwMCUgZm9udCBzaXplID0gMTZweCBpbiBtb3N0IGFsbCBicm93c2Vyc1xyXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAnJScge1xyXG4gICAgJGJhc2U6ICgkYmFzZSAvIDEwMCUpICogMTZweDtcclxuICB9XHJcbiAgXHJcbiAgLy8gVXNpbmcgcmVtIGFzIGJhc2UgYWxsb3dzIGNvcnJlY3Qgc2NhbGluZ1xyXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAncmVtJyB7XHJcbiAgICAkYmFzZTogc3RyaXAtdW5pdCgkYmFzZSkgKiAxNnB4O1xyXG4gIH1cclxuXHJcbiAgQGlmICRjb3VudCA9PSAxIHtcclxuICAgIEByZXR1cm4gLXpmLXRvLXJlbSgkdmFsdWVzLCAkYmFzZSk7XHJcbiAgfVxyXG5cclxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRjb3VudCB7XHJcbiAgICAkcmVtLXZhbHVlczogYXBwZW5kKCRyZW0tdmFsdWVzLCAtemYtdG8tcmVtKG50aCgkdmFsdWVzLCAkaSksICRiYXNlKSk7XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuICRyZW0tdmFsdWVzO1xyXG59XHJcblxyXG4vLyBDb252ZXJ0cyBhIHVuaXRsZXNzLCBwaXhlbCwgb3IgcmVtIHZhbHVlIHRvIGVtLCBmb3IgdXNlIGluIGJyZWFrcG9pbnRzLlxyXG5AZnVuY3Rpb24gLXpmLWJwLXRvLWVtKCR2YWx1ZSkge1xyXG4gIC8vIFBpeGVsIGFuZCB1bml0bGVzcyB2YWx1ZXMgYXJlIGNvbnZlcnRlZCB0byByZW1zXHJcbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAncHgnIG9yIHVuaXRsZXNzKCR2YWx1ZSkge1xyXG4gICAgJHZhbHVlOiByZW0tY2FsYygkdmFsdWUsICRiYXNlOiAxNnB4KTtcclxuICB9XHJcblxyXG4gIC8vIFRoZW4gdGhlIHZhbHVlIGlzIGNvbnZlcnRlZCB0byBlbXNcclxuICBAcmV0dXJuIHN0cmlwLXVuaXQoJHZhbHVlKSAqIDFlbTtcclxufVxyXG5cclxuLy8vIENvbnZlcnRzIGEgcGl4ZWwgdmFsdWUgdG8gbWF0Y2hpbmcgcmVtIHZhbHVlLiAqQW55KiB2YWx1ZSBwYXNzZWQsIHJlZ2FyZGxlc3Mgb2YgdW5pdCwgaXMgYXNzdW1lZCB0byBiZSBhIHBpeGVsIHZhbHVlLiBCeSBkZWZhdWx0LCB0aGUgYmFzZSBwaXhlbCB2YWx1ZSB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgcmVtIHZhbHVlIGlzIHRha2VuIGZyb20gdGhlIGAkZ2xvYmFsLWZvbnQtc2l6ZWAgdmFyaWFibGUuXHJcbi8vLyBAYWNjZXNzIHByaXZhdGVcclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJHZhbHVlIC0gUGl4ZWwgdmFsdWUgdG8gY29udmVydC5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSBbbnVsbF0gLSBCYXNlIGZvciBwaXhlbCBjb252ZXJzaW9uLlxyXG4vLy9cclxuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IEEgbnVtYmVyIGluIHJlbXMsIGNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIGdpdmVuIHZhbHVlIGFuZCB0aGUgYmFzZSBwaXhlbCB2YWx1ZS4gcmVtIHZhbHVlcyBhcmUgcGFzc2VkIHRocm91Z2ggYXMgaXMuXHJcbkBmdW5jdGlvbiAtemYtdG8tcmVtKCR2YWx1ZSwgJGJhc2U6IG51bGwpIHtcclxuICAvLyBDaGVjayBpZiB0aGUgdmFsdWUgaXMgYSBudW1iZXJcclxuICBAaWYgdHlwZS1vZigkdmFsdWUpICE9ICdudW1iZXInIHtcclxuICAgIEB3YXJuIGluc3BlY3QoJHZhbHVlKSArICcgd2FzIHBhc3NlZCB0byByZW0tY2FsYygpLCB3aGljaCBpcyBub3QgYSBudW1iZXIuJztcclxuICAgIEByZXR1cm4gJHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLy8gQ2FsY3VsYXRlIHJlbSBpZiB1bml0cyBmb3IgJHZhbHVlIGlzIG5vdCByZW1cclxuICBAaWYgdW5pdCgkdmFsdWUpICE9ICdyZW0nIHtcclxuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpIC8gc3RyaXAtdW5pdCgkYmFzZSkgKiAxcmVtO1xyXG4gIH1cclxuXHJcbiAgLy8gVHVybiAwcmVtIGludG8gMFxyXG4gIEBpZiAkdmFsdWUgPT0gMHJlbSB7XHJcbiAgICAkdmFsdWU6IDA7XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuICR2YWx1ZTtcclxufVxyXG4iLCLvu79AaW1wb3J0IFwiZm91bmRhdGlvbi1yZWZlcmVuY2VcIjtcclxuXHJcbiRicmVha3BvaW50czogKFxyXG4gIHNtYWxsOiAwLFxyXG4gIG1lZGl1bTogODMycHgsXHJcbiAgbGFyZ2U6IDExNTJweFxyXG4pO1xyXG5cclxuXHJcbiRtZW51LXdpZHRoOnJlbS1jYWxjKDI0MCk7XHJcblxyXG4kYm9keS1mb250LWZhbWlseTogJ1NlZ29lIFVJJywgU2Vnb2UsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgUm9ib3RvLCBBcmlhbCwgc2Fucy1zZXJpZjtcclxuJGhlYWRlci1mb250LWZhbWlseTogJ1NlZ29lIFVJJywgU2Vnb2UsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgUm9ib3RvLCBBcmlhbCwgc2Fucy1zZXJpZjtcclxuXHJcbiRoZWFkZXItc2l6ZXM6IChcclxuICBzbWFsbDogKFxyXG4gICAgJ2gxJzogNDAsXHJcbiAgICAnaDInOiAzMSxcclxuICAgICdoMyc6IDI0LFxyXG4gICAgJ2g0JzogMTgsXHJcbiAgICAnaDUnOiAxNixcclxuICAgICdoNic6IDE0XHJcbiAgKSxcclxuICBtZWRpdW06IChcclxuICAgICdoMSc6IDQ4LFxyXG4gICAgJ2gyJzogNDAsXHJcbiAgICAnaDMnOiAyNCxcclxuICAgICdoNCc6IDE4LFxyXG4gICAgJ2g1JzogMTYsXHJcbiAgICAnaDYnOiAxNFxyXG4gIClcclxuKTtcclxuJGhlYWRlci1tYXJnaW4tYm90dG9tOnJlbS1jYWxjKDE2KTtcclxuXHJcbiRhbmNob3ItdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtcclxuJGFuY2hvci10ZXh0LWRlY29yYXRpb24taG92ZXI6dW5kZXJsaW5lOyIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBmdW5jdGlvbnNcclxuLy8vL1xyXG5cclxuLy8vIENyZWF0ZXMgYSBDU1MgdHJpYW5nbGUsIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBkcm9wZG93biBhcnJvd3MsIGRyb3Bkb3duIHBpcHMsIGFuZCBtb3JlLiBVc2UgdGhpcyBtaXhpbiBpbnNpZGUgYSBgJjo6YmVmb3JlYCBvciBgJjo6YWZ0ZXJgIHNlbGVjdG9yLCB0byBhdHRhY2ggdGhlIHRyaWFuZ2xlIHRvIGFuIGV4aXN0aW5nIGVsZW1lbnQuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0cmlhbmdsZS1zaXplIC0gV2lkdGggb2YgdGhlIHRyaWFuZ2xlLlxyXG4vLy8gQHBhcmFtIHtDb2xvcn0gJHRyaWFuZ2xlLWNvbG9yIC0gQ29sb3Igb2YgdGhlIHRyaWFuZ2xlLlxyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkdHJpYW5nbGUtZGlyZWN0aW9uIC0gRGlyZWN0aW9uIHRoZSB0cmlhbmdsZSBwb2ludHMuIENhbiBiZSBgdXBgLCBgcmlnaHRgLCBgZG93bmAsIG9yIGBsZWZ0YC5cclxuQG1peGluIGNzcy10cmlhbmdsZShcclxuICAkdHJpYW5nbGUtc2l6ZSxcclxuICAkdHJpYW5nbGUtY29sb3IsXHJcbiAgJHRyaWFuZ2xlLWRpcmVjdGlvblxyXG4pIHtcclxuICBjb250ZW50OiAnJztcclxuICBkaXNwbGF5OiBibG9jaztcclxuICB3aWR0aDogMDtcclxuICBoZWlnaHQ6IDA7XHJcbiAgYm9yZGVyOiBpbnNldCAkdHJpYW5nbGUtc2l6ZTtcclxuXHJcbiAgQGlmICgkdHJpYW5nbGUtZGlyZWN0aW9uID09IGRvd24pIHtcclxuICAgIGJvcmRlci1jb2xvcjogJHRyaWFuZ2xlLWNvbG9yIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xyXG4gICAgYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7XHJcbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xyXG4gIH1cclxuICBAaWYgKCR0cmlhbmdsZS1kaXJlY3Rpb24gPT0gdXApIHtcclxuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgJHRyaWFuZ2xlLWNvbG9yO1xyXG4gICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XHJcbiAgICBib3JkZXItdG9wLXdpZHRoOiAwO1xyXG4gIH1cclxuICBAaWYgKCR0cmlhbmdsZS1kaXJlY3Rpb24gPT0gcmlnaHQpIHtcclxuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgJHRyaWFuZ2xlLWNvbG9yO1xyXG4gICAgYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkO1xyXG4gICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwO1xyXG4gIH1cclxuICBAaWYgKCR0cmlhbmdsZS1kaXJlY3Rpb24gPT0gbGVmdCkge1xyXG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAkdHJpYW5nbGUtY29sb3IgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XHJcbiAgICBib3JkZXItcmlnaHQtc3R5bGU6IHNvbGlkO1xyXG4gICAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQ3JlYXRlcyBhIG1lbnUgaWNvbiB3aXRoIGEgc2V0IHdpZHRoLCBoZWlnaHQsIG51bWJlciBvZiBiYXJzLCBhbmQgY29sb3JzLiBUaGUgbWl4aW4gdXNlcyB0aGUgaGVpZ2h0IG9mIHRoZSBpY29uIGFuZCB0aGUgd2VpZ2h0IG9mIHRoZSBiYXJzIHRvIGRldGVybWluZSBzcGFjaW5nLiA8ZGl2IGNsYXNzPVwiZG9jcy1leGFtcGxlLWJ1cmdlclwiPjwvZGl2PlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGJsYWNrXSAtIENvbG9yIHRvIHVzZSBmb3IgdGhlIGljb24uXHJcbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3ItaG92ZXIgWyRkYXJrLWdyYXldIC0gQ29sb3IgdG8gdXNlIHdoZW4gdGhlIGljb24gaXMgaG92ZXJlZCBvdmVyLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCBbMjBweF0gLSBXaWR0aCBvZiB0aGUgaWNvbi5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkaGVpZ2h0IFsxNnB4XSAtIEhlaWdodCBvZiB0aGUgaWNvbi5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2VpZ2h0IFsycHhdIC0gSGVpZ2h0IG9mIGluZGl2aWR1YWwgYmFycyBpbiB0aGUgaWNvbi5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFycyBbM10gLSBOdW1iZXIgb2YgYmFycyBpbiB0aGUgaWNvbi5cclxuQG1peGluIGhhbWJ1cmdlcihcclxuICAkY29sb3I6ICRibGFjayxcclxuICAkY29sb3ItaG92ZXI6ICRkYXJrLWdyYXksXHJcbiAgJHdpZHRoOiAyMHB4LFxyXG4gICRoZWlnaHQ6IDE2cHgsXHJcbiAgJHdlaWdodDogMnB4LFxyXG4gICRiYXJzOiAzXHJcbikge1xyXG4gIC8vIGJveC1zaGFkb3cgQ1NTIG91dHB1dFxyXG4gICRzaGFkb3c6ICgpO1xyXG4gICRob3Zlci1zaGFkb3c6ICgpO1xyXG5cclxuICAvLyBTcGFjaW5nIGJldHdlZW4gYmFycyBpcyBjYWxjdWxhdGVkIGJhc2VkIG9uIHRoZSB0b3RhbCBoZWlnaHQgb2YgdGhlIGljb24gYW5kIHRoZSB3ZWlnaHQgb2YgZWFjaCBiYXJcclxuICAkc3BhY2luZzogKCRoZWlnaHQgLSAoJHdlaWdodCAqICRiYXJzKSkgLyAoJGJhcnMgLSAxKTtcclxuXHJcbiAgQGlmIHVuaXQoJHNwYWNpbmcpID09ICdweCcge1xyXG4gICAgJHNwYWNpbmc6IGZsb29yKCRzcGFjaW5nKTtcclxuICB9XHJcblxyXG4gIC8vIEljb24gY29udGFpbmVyXHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICB3aWR0aDogJHdpZHRoO1xyXG4gIGhlaWdodDogJGhlaWdodDtcclxuXHJcbiAgLy8gSWNvbiBiYXJzXHJcbiAgJjo6YWZ0ZXIge1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAkd2VpZ2h0O1xyXG4gICAgYmFja2dyb3VuZDogJGNvbG9yO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuXHJcbiAgICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRiYXJzIHtcclxuICAgICAgJG9mZnNldDogKCR3ZWlnaHQgKyAkc3BhY2luZykgKiAoJGkgLSAxKTtcclxuICAgICAgJHNoYWRvdzogYXBwZW5kKCRzaGFkb3csIDAgJG9mZnNldCAwICRjb2xvciwgY29tbWEpO1xyXG4gICAgfVxyXG5cclxuICAgIGJveC1zaGFkb3c6ICRzaGFkb3c7XHJcbiAgfVxyXG5cclxuICAvLyBIb3ZlciBzdGF0ZVxyXG4gIEBpZiAkY29sb3ItaG92ZXIge1xyXG4gICAgLy8gR2VuZXJhdGUgQ1NTXHJcbiAgICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRiYXJzIHtcclxuICAgICAgJG9mZnNldDogKCR3ZWlnaHQgKyAkc3BhY2luZykgKiAoJGkgLSAxKTtcclxuICAgICAgJGhvdmVyLXNoYWRvdzogYXBwZW5kKCRob3Zlci1zaGFkb3csIDAgJG9mZnNldCAwICRjb2xvci1ob3ZlciwgY29tbWEpO1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXI6OmFmdGVyIHtcclxuICAgICAgYmFja2dyb3VuZDogJGNvbG9yLWhvdmVyO1xyXG4gICAgICBib3gtc2hhZG93OiAkaG92ZXItc2hhZG93O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8vIEFkZHMgYSBkb3dud2FyZC1mYWNpbmcgdHJpYW5nbGUgYXMgYSBiYWNrZ3JvdW5kIGltYWdlIHRvIGFuIGVsZW1lbnQuIFRoZSBpbWFnZSBpcyBmb3JtYXR0ZWQgYXMgYW4gU1ZHLCBtYWtpbmcgaXQgZWFzeSB0byBjaGFuZ2UgdGhlIGNvbG9yLiBCZWNhdXNlIEludGVybmV0IEV4cGxvcmVyIGRvZXNuJ3Qgc3VwcG9ydCBlbmNvZGVkIFNWR3MgYXMgYmFja2dyb3VuZCBpbWFnZXMsIGEgUE5HIGZhbGxiYWNrIGlzIGFsc28gaW5jbHVkZWQuXHJcbi8vLyBUaGVyZSBhcmUgdHdvIFBORyBmYWxsYmFja3M6IGEgYmxhY2sgdHJpYW5nbGUgYW5kIGEgd2hpdGUgdHJpYW5nbGUuIFRoZSBvbmUgdXNlZCBkZXBlbmRzIG9uIHRoZSBsaWdodG5lc3Mgb2YgdGhlIGlucHV0IGNvbG9yLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGJsYWNrXSAtIENvbG9yIHRvIHVzZSBmb3IgdGhlIHRyaWFuZ2xlLlxyXG5AbWl4aW4gYmFja2dyb3VuZC10cmlhbmdsZSgkY29sb3I6ICRibGFjaykge1xyXG4gICRyZ2I6ICdyZ2IlMjgje3JvdW5kKHJlZCgkY29sb3IpKX0sICN7cm91bmQoZ3JlZW4oJGNvbG9yKSl9LCAje3JvdW5kKGJsdWUoJGNvbG9yKSl9JTI5JztcclxuXHJcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZlcnNpb249JzEuMScgd2lkdGg9JzMyJyBoZWlnaHQ9JzI0JyB2aWV3Qm94PScwIDAgMzIgMjQnPjxwb2x5Z29uIHBvaW50cz0nMCwwIDMyLDAgMTYsMjQnIHN0eWxlPSdmaWxsOiAjeyRyZ2J9Jz48L3BvbHlnb24+PC9zdmc+XCIpO1xyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjBcXDApIHtcclxuICAgIEBpZiBsaWdodG5lc3MoJGNvbG9yKSA8IDYwJSB7XHJcbiAgICAgIC8vIFdoaXRlIHRyaWFuZ2xlXHJcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFZQ0FZQUFBQ2JVLzgwQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFJcEpSRUZVZU5yRWtja05nREFNQkJmUmtFdDBPYlJCQmRzR1hVRGdtUWZLNFhoSDJtOGN6UUFBeTI3UjN0c3c0UWZlMng4dU9PNm9ZTGI2R2xPb3IzR0Yrc3dVUkFPbVVKK1J3dEVKczlXdlRHRVl4QlhxSTFNUUFaaENmVVFLUnpETVZqK1R3ckFJVjZqdlNVRWtZQXIxTFNrY3lUQmIvVitLWWZYN3hBZXVzcTNzTER0R0gza0VHQUNQV0lmbE5aZmhSUUFBQUFCSlJVNUVya0pnZ2c9PScpO1xyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICAvLyBCbGFjayB0cmlhbmdsZVxyXG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBWUNBWUFBQUNiVS84MEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBTUJKUkVGVWVOckVsbHNPaENBTVJWc3pDOUlselU3S0NtVkhUSnNvTVdZTVV0cHl2OUJnYnVYUUI1WlNkZ0JZWVk0eWNnQml2azhLWUZzUU1mTWlUVEJQNG8zblV6Q0t6T2FiTEpiTHkyL2czMWV2R2tBZ2luUjQvWmVnS0g1cVgzYkpDc2NBM3QweDNrZ081dFFGeWhoRmY1MHhScUZMYnlNVU5KUXpneWpHUy93Z0Nwdktxa1JCcHVXckU0VjlkKzFFNGRQVVhxSWcxMDdTUU9FLzJEUlF4TXdURHlnSUluVkRFVDlUM2xDb2ovNmovVkNtR2paT2wybEtwWjhBQXdEUVA3eklpbURHRlFBQUFBQkpSVTVFcmtKZ2dnPT0nKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vLyBBcHBsaWVzIHRoZSBtaWNybyBjbGVhcmZpeCBoYWNrIHBvcHVsYXJpemVkIGJ5IE5pY29sYXMgR2FsbGFnaGVyLiBJbmNsdWRlIHRoaXMgbWl4aW4gb24gYSBjb250YWluZXIgaWYgaXRzIGNoaWxkcmVuIGFyZSBhbGwgZmxvYXRlZCwgdG8gZ2l2ZSB0aGUgY29udGFpbmVyIGEgcHJvcGVyIGhlaWdodC5cclxuLy8vIFRoZSBjbGVhcmZpeCBpcyBhdWdtZW50ZWQgd2l0aCBzcGVjaWZpYyBzdHlsZXMgdG8gcHJldmVudCBib3JkZXJzIGluIGZsZXhib3ggZW52aXJvbm1lbnRzXHJcbi8vLyBAbGluayBodHRwOi8vbmljb2xhc2dhbGxhZ2hlci5jb20vbWljcm8tY2xlYXJmaXgtaGFjay8gTWljcm8gQ2xlYXJmaXggSGFja1xyXG4vLy8gQGxpbmsgaHR0cDovL2RhbmlzYWRlc2lnbmVyLmNvbS9ibG9nL2ZsZXhib3gtY2xlYXItZml4LXBzZXVkby1lbGVtZW50cy8gRmxleGJveCBmaXhcclxuQG1peGluIGNsZWFyZml4IHtcclxuICAmOjpiZWZvcmUsXHJcbiAgJjo6YWZ0ZXIge1xyXG4gICAgY29udGVudDogJyAnO1xyXG4gICAgZGlzcGxheTogdGFibGU7XHJcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgICAgZmxleC1iYXNpczogMDtcclxuICAgICAgb3JkZXI6IDE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmOjphZnRlciB7XHJcbiAgICBjbGVhcjogYm90aDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBBZGRzIENTUyBmb3IgYSBcInF1YW50aXR5IHF1ZXJ5XCIgc2VsZWN0b3IgdGhhdCBhdXRvbWF0aWNhbGx5IHNpemVzIGVsZW1lbnRzIGJhc2VkIG9uIGhvdyBtYW55IHRoZXJlIGFyZSBpbnNpZGUgYSBjb250YWluZXIuXHJcbi8vLyBAbGluayBodHRwOi8vYWxpc3RhcGFydC5jb20vYXJ0aWNsZS9xdWFudGl0eS1xdWVyaWVzLWZvci1jc3MgUXVhbnRpdHkgUXVlcmllcyBmb3IgQ1NTXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtYXggLSBNYXhpbXVtIG51bWJlciBvZiBpdGVtcyB0byBkZXRlY3QuIFRoZSBoaWdoZXIgdGhpcyBudW1iZXIgaXMsIHRoZSBtb3JlIENTUyB0aGF0J3MgcmVxdWlyZWQgdG8gY292ZXIgZWFjaCBudW1iZXIgb2YgaXRlbXMuXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRlbGVtIFtsaV0gLSBUYWcgdG8gdXNlIGZvciBzaWJsaW5nIHNlbGVjdG9ycy5cclxuQG1peGluIGF1dG8td2lkdGgoJG1heCwgJGVsZW06IGxpKSB7XHJcbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkbWF4IHtcclxuICAgICY6bnRoLWxhc3QtY2hpbGQoI3skaX0pOmZpcnN0LWNoaWxkLFxyXG4gICAgJjpudGgtbGFzdC1jaGlsZCgjeyRpfSk6Zmlyc3QtY2hpbGQgfiAjeyRlbGVtfSB7XHJcbiAgICAgIHdpZHRoOiBwZXJjZW50YWdlKDEgLyAkaSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gUmVtb3ZlcyB0aGUgZm9jdXMgcmluZyBhcm91bmQgYW4gZWxlbWVudCB3aGVuIGEgbW91c2UgaW5wdXQgaXMgZGV0ZWN0ZWQuXHJcbkBtaXhpbiBkaXNhYmxlLW1vdXNlLW91dGxpbmUge1xyXG4gIFtkYXRhLXdoYXRpbnB1dD0nbW91c2UnXSAmIHtcclxuICAgIG91dGxpbmU6IDA7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gTWFrZXMgYW4gZWxlbWVudCB2aXN1YWxseSBoaWRkZW4sIGJ1dCBzdGlsbCBhY2Nlc3NpYmxlIHRvIGtleWJvYXJkcyBhbmQgYXNzaXN0aXZlIGRldmljZXMuXHJcbi8vLyBAbGluayBodHRwOi8vc25vb2suY2EvYXJjaGl2ZXMvaHRtbF9hbmRfY3NzL2hpZGluZy1jb250ZW50LWZvci1hY2Nlc3NpYmlsaXR5IEhpZGluZyBDb250ZW50IGZvciBBY2Nlc3NpYmlsaXR5XHJcbkBtaXhpbiBlbGVtZW50LWludmlzaWJsZSB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XHJcbiAgd2lkdGg6IDFweDtcclxuICBoZWlnaHQ6IDFweDtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7XHJcbn1cclxuXHJcbi8vLyBSZXZlcnNlcyB0aGUgQ1NTIG91dHB1dCBjcmVhdGVkIGJ5IHRoZSBgZWxlbWVudC1pbnZpc2libGUoKWAgbWl4aW4uXHJcbkBtaXhpbiBlbGVtZW50LWludmlzaWJsZS1vZmYge1xyXG4gIHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDtcclxuICBoZWlnaHQ6IGF1dG87XHJcbiAgd2lkdGg6IGF1dG87XHJcbiAgb3ZlcmZsb3c6IHZpc2libGU7XHJcbiAgY2xpcDogYXV0bztcclxufVxyXG5cclxuLy8vIFZlcnRpY2FsbHkgY2VudGVycyB0aGUgZWxlbWVudCBpbnNpZGUgb2YgaXRzIGZpcnN0IG5vbi1zdGF0aWMgcGFyZW50LFxyXG4vLy8gQGxpbmsgaHR0cDovL3d3dy5zaXRlcG9pbnQuY29tL2NlbnRlcmluZy13aXRoLXNhc3MvIENlbnRlcmluZyBXaXRoIFNhc3NcclxuQG1peGluIHZlcnRpY2FsLWNlbnRlciB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogNTAlO1xyXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxufVxyXG5cclxuLy8vIEhvcml6b250YWxseSBjZW50ZXJzIHRoZSBlbGVtZW50IGluc2lkZSBvZiBpdHMgZmlyc3Qgbm9uLXN0YXRpYyBwYXJlbnQsXHJcbi8vLyBAbGluayBodHRwOi8vd3d3LnNpdGVwb2ludC5jb20vY2VudGVyaW5nLXdpdGgtc2Fzcy8gQ2VudGVyaW5nIFdpdGggU2Fzc1xyXG5AbWl4aW4gaG9yaXpvbnRhbC1jZW50ZXIge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBsZWZ0OiA1MCU7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xyXG59XHJcblxyXG4vLy8gQWJzb2x1dGVseSBjZW50ZXJzIHRoZSBlbGVtZW50IGluc2lkZSBvZiBpdHMgZmlyc3Qgbm9uLXN0YXRpYyBwYXJlbnQsXHJcbi8vLyBAbGluayBodHRwOi8vd3d3LnNpdGVwb2ludC5jb20vY2VudGVyaW5nLXdpdGgtc2Fzcy8gQ2VudGVyaW5nIFdpdGggU2Fzc1xyXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiA1MCU7XHJcbiAgbGVmdDogNTAlO1xyXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xyXG59XHJcblxyXG4vLy8gSXRlcmF0ZXMgdGhyb3VnaCBicmVha3BvaW50cyBkZWZpbmVkIGluIGAkYnJlYWtwb2ludC1jbGFzc2VzYCBhbmQgcHJpbnRzIHRoZSBDU1MgaW5zaWRlIHRoZSBtaXhpbiBhdCBlYWNoIGJyZWFrcG9pbnQncyBtZWRpYSBxdWVyeS4gVXNlIHRoaXMgd2l0aCB0aGUgZ3JpZCwgb3IgYW55IG90aGVyIGNvbXBvbmVudCB0aGF0IGhhcyByZXNwb25zaXZlIGNsYXNzZXMuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkc21hbGwgW3RydWVdIC0gSWYgYGZhbHNlYCwgdGhlIG1peGluIHdpbGwgc2tpcCB0aGUgYHNtYWxsYCBicmVha3BvaW50LiBVc2UgdGhpcyB3aXRoIGNvbXBvbmVudHMgdGhhdCBkb24ndCBwcmVmaXggY2xhc3NlcyB3aXRoIGBzbWFsbC1gLCBvbmx5IGBtZWRpdW0tYCBhbmQgdXAuXHJcbkBtaXhpbiAtemYtZWFjaC1icmVha3BvaW50KCRzbWFsbDogdHJ1ZSkge1xyXG4gICRtYXA6ICRicmVha3BvaW50LWNsYXNzZXM7XHJcblxyXG4gIEBpZiBub3QgJHNtYWxsIHtcclxuICAgICRtYXA6IG1hcC1yZW1vdmUoJG1hcCwgJC16Zi16ZXJvLWJyZWFrcG9pbnQpO1xyXG4gIH1cclxuXHJcbiAgQGVhY2ggJHNpemUgaW4gJG1hcCB7XHJcbiAgICAkLXpmLXNpemU6ICRzaXplICFnbG9iYWw7XHJcblxyXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHR5cG9ncmFwaHktYmFzZVxyXG4vLy8vXHJcblxyXG4vLyBCYXNlIFR5cG9ncmFwaHlcclxuLy8gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC1cclxuLy8gVGhlc2UgYXJlIHN0eWxlcyBhcHBsaWVkIHRvIGJhc2ljIEhUTUwgdGFncywgaW5jbHVkaW5nOlxyXG4vLyAgIC0gUGFyYWdyYXBocyA8cD5cclxuLy8gICAtIEJvbGQvaXRhbGljcyA8Yj4gPHN0cm9uZz4gPGk+IDxlbT5cclxuLy8gICAtIFNtYWxsIHRleHQgPHNtYWxsPlxyXG4vLyAgIC0gSGVhZGluZ3MgPGgxPuKAlDxoNj5cclxuLy8gICAtIEFuY2hvcnMgPGE+XHJcbi8vICAgLSBEaXZpZGVycyA8aHI+XHJcbi8vICAgLSBMaXN0cyA8dWw+IDxvbD4gPGRsPlxyXG4vLyAgIC0gQmxvY2txdW90ZXMgPGJsb2NrcXVvdGU+XHJcbi8vICAgLSBDb2RlIGJsb2NrcyA8Y29kZT5cclxuLy8gICAtIEFiYnJldmlhdGlvbnMgPGFiYnI+XHJcbi8vICAgLSBDaXRhdGlvbnMgPGNpdGU+XHJcbi8vICAgLSBLZXlzdHJva2VzIDxrYmQ+XHJcblxyXG4vLy8gRm9udCBmYW1pbHkgZm9yIGhlYWRlciBlbGVtZW50cy5cclxuLy8vIEB0eXBlIFN0cmluZyB8IExpc3RcclxuJGhlYWRlci1mb250LWZhbWlseTogJGJvZHktZm9udC1mYW1pbHkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRm9udCB3ZWlnaHQgb2YgaGVhZGVycy5cclxuLy8vIEB0eXBlIFN0cmluZ1xyXG4kaGVhZGVyLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRm9udCBzdHlsZSAoZS5nLiBpdGFsaWNpemVkKSBvZiBoZWFkZXJzLlxyXG4vLy8gQHR5cGUgU3RyaW5nXHJcbiRoZWFkZXItZm9udC1zdHlsZTogbm9ybWFsICFkZWZhdWx0O1xyXG5cclxuLy8vIEZvbnQgc3RhY2sgdXNlZCBmb3IgZWxlbWVudHMgdGhhdCB1c2UgbW9ub3NwYWNlZCB0eXBlLCBzdWNoIGFzIGNvZGUgc2FtcGxlc1xyXG4vLy8gQHR5cGUgU3RyaW5nIHwgTGlzdFxyXG4kZm9udC1mYW1pbHktbW9ub3NwYWNlOiBDb25zb2xhcywgJ0xpYmVyYXRpb24gTW9ubycsIENvdXJpZXIsIG1vbm9zcGFjZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBTaXplcyBvZiBoZWFkaW5ncyBhdCB2YXJpb3VzIHNjcmVlbiBzaXplcy4gRWFjaCBrZXkgaXMgYSBicmVha3BvaW50LCBhbmQgZWFjaCB2YWx1ZSBpcyBhIG1hcCBvZiBoZWFkaW5nIHNpemVzLlxyXG4vLy8gQHR5cGUgTWFwXHJcbiRoZWFkZXItc2l6ZXM6IChcclxuICBzbWFsbDogKFxyXG4gICAgJ2gxJzogMjQsXHJcbiAgICAnaDInOiAyMCxcclxuICAgICdoMyc6IDE5LFxyXG4gICAgJ2g0JzogMTgsXHJcbiAgICAnaDUnOiAxNyxcclxuICAgICdoNic6IDE2LFxyXG4gICksXHJcbiAgbWVkaXVtOiAoXHJcbiAgICAnaDEnOiA0OCxcclxuICAgICdoMic6IDQwLFxyXG4gICAgJ2gzJzogMzEsXHJcbiAgICAnaDQnOiAyNSxcclxuICAgICdoNSc6IDIwLFxyXG4gICAgJ2g2JzogMTYsXHJcbiAgKSxcclxuKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBDb2xvciBvZiBoZWFkZXJzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGhlYWRlci1jb2xvcjogaW5oZXJpdCAhZGVmYXVsdDtcclxuXHJcbi8vLyBMaW5lIGhlaWdodCBvZiBoZWFkZXJzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRoZWFkZXItbGluZWhlaWdodDogMS40ICFkZWZhdWx0O1xyXG5cclxuLy8vIEJvdHRvbSBtYXJnaW4gb2YgaGVhZGVycy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kaGVhZGVyLW1hcmdpbi1ib3R0b206IDAuNXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBUZXh0IHJlbmRlcmluZyBtZXRob2Qgb2YgaGVhZGVycy5cclxuLy8vIEB0eXBlIFN0cmluZ1xyXG4kaGVhZGVyLXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRm9udCBzaXplIG9mIGA8c21hbGw+YCBlbGVtZW50cy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kc21hbGwtZm9udC1zaXplOiA4MCUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQ29sb3Igb2YgYDxzbWFsbD5gIGVsZW1lbnRzIHdoZW4gcGxhY2VkIGluc2lkZSBoZWFkZXJzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGhlYWRlci1zbWFsbC1mb250LWNvbG9yOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gTGluZSBoZWlnaHQgb2YgdGV4dCBpbnNpZGUgYDxwPmAgZWxlbWVudHMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHBhcmFncmFwaC1saW5laGVpZ2h0OiAxLjYgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQm90dG9tIG1hcmdpbiBvZiBwYXJhZ3JhcGhzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTogMXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBUZXh0IHJlbmRlcmluZyBtZXRob2QgZm9yIHBhcmFncmFwaCB0ZXh0LlxyXG4vLy8gQHR5cGUgU3RyaW5nXHJcbiRwYXJhZ3JhcGgtdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eSAhZGVmYXVsdDtcclxuXHJcbi8vLyBUZXh0IGNvbG9yIG9mIGNvZGUgc2FtcGxlcy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRjb2RlLWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRm9udCBmYW1pbHkgb2YgY29kZSBzYW1wbGVzLlxyXG4vLy8gQHR5cGUgU3RyaW5nIHwgTGlzdFxyXG4kY29kZS1mb250LWZhbWlseTogJGZvbnQtZmFtaWx5LW1vbm9zcGFjZSAhZGVmYXVsdDtcclxuXHJcbi8vLyBGb250IHdlaWdodCBvZiB0ZXh0IGluIGNvZGUgc2FtcGxlcy5cclxuLy8vIEB0eXBlIFN0cmluZ1xyXG4kY29kZS1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xyXG5cclxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgY29kZSBzYW1wbGVzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGNvZGUtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQm9yZGVyIGFyb3VuZCBjb2RlIHNhbXBsZXMuXHJcbi8vLyBAdHlwZSBMaXN0XHJcbiRjb2RlLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBQYWRkaW5nIGFyb3VuZCB0ZXh0IG9mIGNvZGUgc2FtcGxlcy5cclxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcclxuJGNvZGUtcGFkZGluZzogcmVtLWNhbGMoMiA1IDEpICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgY29sb3IgZm9yIGxpbmtzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGFuY2hvci1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgbGlua3Mgb24gaG92ZXIuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kYW5jaG9yLWNvbG9yLWhvdmVyOiBzY2FsZS1jb2xvcigkYW5jaG9yLWNvbG9yLCAkbGlnaHRuZXNzOiAtMTQlKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHRleHQgZGVvY3JhdGlvbiBmb3IgbGlua3MuXHJcbi8vLyBAdHlwZSBTdHJpbmdcclxuJGFuY2hvci10ZXh0LWRlY29yYXRpb246IG5vbmUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCB0ZXh0IGRlY29yYXRpb24gZm9yIGxpbmtzIG9uIGhvdmVyLlxyXG4vLy8gQHR5cGUgU3RyaW5nXHJcbiRhbmNob3ItdGV4dC1kZWNvcmF0aW9uLWhvdmVyOiBub25lICFkZWZhdWx0O1xyXG5cclxuLy8vIE1heGltdW0gd2lkdGggb2YgYSBkaXZpZGVyLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRoci13aWR0aDogJGdsb2JhbC13aWR0aCAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGJvcmRlciBmb3IgYSBkaXZpZGVyLlxyXG4vLy8gQHR5cGUgTGlzdFxyXG4kaHItYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgbWFyZ2luIGZvciBhIGRpdmlkZXIuXHJcbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XHJcbiRoci1tYXJnaW46IHJlbS1jYWxjKDIwKSBhdXRvICFkZWZhdWx0O1xyXG5cclxuLy8vIExpbmUgaGVpZ2h0IGZvciBpdGVtcyBpbiBhIGxpc3QuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGxpc3QtbGluZWhlaWdodDogJHBhcmFncmFwaC1saW5laGVpZ2h0ICFkZWZhdWx0O1xyXG5cclxuLy8vIEJvdHRvbSBtYXJnaW4gZm9yIGl0ZW1zIGluIGEgbGlzdC5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kbGlzdC1tYXJnaW4tYm90dG9tOiAkcGFyYWdyYXBoLW1hcmdpbi1ib3R0b20gIWRlZmF1bHQ7XHJcblxyXG4vLy8gQnVsbGV0IHR5cGUgdG8gdXNlIGZvciB1bm9yZGVyZWQgbGlzdHMgKGUuZy4sIGBzcXVhcmVgLCBgY2lyY2xlYCwgYGRpc2NgKS5cclxuLy8vIEB0eXBlIFN0cmluZ1xyXG4kbGlzdC1zdHlsZS10eXBlOiBkaXNjICFkZWZhdWx0O1xyXG5cclxuLy8vIFBvc2l0aW9uaW5nIGZvciBidWxsZXRzIG9uIHVub3JkZXJlZCBsaXN0IGl0ZW1zLlxyXG4vLy8gQHR5cGUgU3RyaW5nXHJcbiRsaXN0LXN0eWxlLXBvc2l0aW9uOiBvdXRzaWRlICFkZWZhdWx0O1xyXG5cclxuLy8vIExlZnQgKG9yIHJpZ2h0KSBtYXJnaW4gZm9yIGxpc3RzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRsaXN0LXNpZGUtbWFyZ2luOiAxLjI1cmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIExlZnQgKG9yIHJpZ2h0KSBtYXJnaW4gZm9yIGEgbGlzdCBpbnNpZGUgYSBsaXN0LlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRsaXN0LW5lc3RlZC1zaWRlLW1hcmdpbjogMS4yNXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBCb3R0b20gbWFyZ2luIGZvciBgPGRsPmAgZWxlbWVudHMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGRlZm5saXN0LW1hcmdpbi1ib3R0b206IDFyZW0gIWRlZmF1bHQ7XHJcblxyXG4vLy8gRm9udCB3ZWlnaHQgZm9yIGA8ZHQ+YCBlbGVtZW50cy5cclxuLy8vIEB0eXBlIFN0cmluZ1xyXG4kZGVmbmxpc3QtdGVybS13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XHJcblxyXG4vLy8gU3BhY2luZyBiZXR3ZWVuIGA8ZHQ+YCBhbmQgYDxkZD5gIGVsZW1lbnRzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRkZWZubGlzdC10ZXJtLW1hcmdpbi1ib3R0b206IDAuM3JlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBUZXh0IGNvbG9yIG9mIGA8YmxvY2txdW90ZT5gIGVsZW1lbnRzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJGJsb2NrcXVvdGUtY29sb3I6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gUGFkZGluZyBpbnNpZGUgYSBgPGJsb2NrcXVvdGU+YCBlbGVtZW50LlxyXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxyXG4kYmxvY2txdW90ZS1wYWRkaW5nOiByZW0tY2FsYyg5IDIwIDAgMTkpICFkZWZhdWx0O1xyXG5cclxuLy8vIFNpZGUgYm9yZGVyIGZvciBgPGJsb2NrcXVvdGU+YCBlbGVtZW50cy5cclxuLy8vIEB0eXBlIExpc3RcclxuJGJsb2NrcXVvdGUtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xyXG5cclxuLy8vIEZvbnQgc2l6ZSBmb3IgYDxjaXRlPmAgZWxlbWVudHMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJGNpdGUtZm9udC1zaXplOiByZW0tY2FsYygxMykgIWRlZmF1bHQ7XHJcblxyXG4vLy8gVGV4dCBjb2xvciBmb3IgYDxjaXRlPmAgZWxlbWVudHMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kY2l0ZS1jb2xvcjogJGRhcmstZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBGb250IGZhbWlseSBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cclxuLy8vIEB0eXBlIFN0cmluZyB8IExpc3RcclxuJGtleXN0cm9rZS1mb250OiAkZm9udC1mYW1pbHktbW9ub3NwYWNlICFkZWZhdWx0O1xyXG5cclxuLy8vIFRleHQgY29sb3IgZm9yIGA8a2JkPmAgZWxlbWVudHMuXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4ka2V5c3Ryb2tlLWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRrZXlzdHJva2UtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gUGFkZGluZyBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cclxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcclxuJGtleXN0cm9rZS1wYWRkaW5nOiByZW0tY2FsYygyIDQgMCkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQm9yZGVyIHJhZGl1cyBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cclxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcclxuJGtleXN0cm9rZS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xyXG5cclxuLy8vIEJvdHRvbSBib3JkZXIgc3R5bGUgZm9yIGA8YWJicj5gIGVsZW1lbnRzLlxyXG4vLy8gQHR5cGUgTGlzdFxyXG4kYWJici11bmRlcmxpbmU6IDFweCBkb3R0ZWQgJGJsYWNrICFkZWZhdWx0O1xyXG5cclxuQG1peGluIGZvdW5kYXRpb24tdHlwb2dyYXBoeS1iYXNlIHtcclxuICAvLyBUeXBvZ3JhcGh5IHJlc2V0c1xyXG4gIGRpdixcclxuICBkbCxcclxuICBkdCxcclxuICBkZCxcclxuICB1bCxcclxuICBvbCxcclxuICBsaSxcclxuICBoMSxcclxuICBoMixcclxuICBoMyxcclxuICBoNCxcclxuICBoNSxcclxuICBoNixcclxuICBwcmUsXHJcbiAgZm9ybSxcclxuICBwLFxyXG4gIGJsb2NrcXVvdGUsXHJcbiAgdGgsXHJcbiAgdGQge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMDtcclxuICB9XHJcblxyXG4gIC8vIFBhcmFncmFwaHNcclxuICBwIHtcclxuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcclxuICAgIGxpbmUtaGVpZ2h0OiAkcGFyYWdyYXBoLWxpbmVoZWlnaHQ7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAkcGFyYWdyYXBoLW1hcmdpbi1ib3R0b207XHJcbiAgICB0ZXh0LXJlbmRlcmluZzogJHBhcmFncmFwaC10ZXh0LXJlbmRlcmluZztcclxuICB9XHJcblxyXG4gIC8vIEVtcGhhc2l6ZWQgdGV4dFxyXG4gIGVtLFxyXG4gIGkge1xyXG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xyXG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XHJcbiAgfVxyXG5cclxuICAvLyBTdHJvbmcgdGV4dFxyXG4gIHN0cm9uZyxcclxuICBiIHtcclxuICAgIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xyXG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XHJcbiAgfVxyXG5cclxuICAvLyBTbWFsbCB0ZXh0XHJcbiAgc21hbGwge1xyXG4gICAgZm9udC1zaXplOiAkc21hbGwtZm9udC1zaXplO1xyXG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XHJcbiAgfVxyXG5cclxuICAvLyBIZWFkaW5nc1xyXG4gIGgxLFxyXG4gIGgyLFxyXG4gIGgzLFxyXG4gIGg0LFxyXG4gIGg1LFxyXG4gIGg2IHtcclxuICAgIGZvbnQtZmFtaWx5OiAkaGVhZGVyLWZvbnQtZmFtaWx5O1xyXG4gICAgZm9udC13ZWlnaHQ6ICRoZWFkZXItZm9udC13ZWlnaHQ7XHJcbiAgICBmb250LXN0eWxlOiAkaGVhZGVyLWZvbnQtc3R5bGU7XHJcbiAgICBjb2xvcjogJGhlYWRlci1jb2xvcjtcclxuICAgIHRleHQtcmVuZGVyaW5nOiAkaGVhZGVyLXRleHQtcmVuZGVyaW5nO1xyXG4gICAgbWFyZ2luLXRvcDogMDtcclxuICAgIG1hcmdpbi1ib3R0b206ICRoZWFkZXItbWFyZ2luLWJvdHRvbTtcclxuICAgIGxpbmUtaGVpZ2h0OiAkaGVhZGVyLWxpbmVoZWlnaHQ7XHJcblxyXG4gICAgc21hbGwge1xyXG4gICAgICBjb2xvcjogJGhlYWRlci1zbWFsbC1mb250LWNvbG9yO1xyXG4gICAgICBsaW5lLWhlaWdodDogMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEhlYWRpbmcgc2l6ZXNcclxuICBAZWFjaCAkc2l6ZSwgJGhlYWRlcnMgaW4gJGhlYWRlci1zaXplcyB7XHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XHJcbiAgICAgIEBlYWNoICRoZWFkZXIsICRmb250LXNpemUgaW4gJGhlYWRlcnMge1xyXG4gICAgICAgICN7JGhlYWRlcn0ge1xyXG4gICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygkZm9udC1zaXplKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIExpbmtzXHJcbiAgYSB7XHJcbiAgICBjb2xvcjogJGFuY2hvci1jb2xvcjtcclxuICAgIHRleHQtZGVjb3JhdGlvbjogJGFuY2hvci10ZXh0LWRlY29yYXRpb247XHJcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuXHJcbiAgICAmOmhvdmVyLFxyXG4gICAgJjpmb2N1cyB7XHJcbiAgICAgIGNvbG9yOiAkYW5jaG9yLWNvbG9yLWhvdmVyO1xyXG4gICAgICBAaWYgJGFuY2hvci10ZXh0LWRlY29yYXRpb24taG92ZXIgIT0gJGFuY2hvci10ZXh0LWRlY29yYXRpb24ge1xyXG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogJGFuY2hvci10ZXh0LWRlY29yYXRpb24taG92ZXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpbWcge1xyXG4gICAgICBib3JkZXI6IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBIb3Jpem9udGFsIHJ1bGVcclxuICBociB7XHJcbiAgICBtYXgtd2lkdGg6ICRoci13aWR0aDtcclxuICAgIGhlaWdodDogMDtcclxuICAgIGJvcmRlci1yaWdodDogMDtcclxuICAgIGJvcmRlci10b3A6IDA7XHJcbiAgICBib3JkZXItYm90dG9tOiAkaHItYm9yZGVyO1xyXG4gICAgYm9yZGVyLWxlZnQ6IDA7XHJcbiAgICBtYXJnaW46ICRoci1tYXJnaW47XHJcbiAgICBjbGVhcjogYm90aDtcclxuICB9XHJcblxyXG4gIC8vIExpc3RzXHJcbiAgdWwsXHJcbiAgb2wsXHJcbiAgZGwge1xyXG4gICAgbGluZS1oZWlnaHQ6ICRsaXN0LWxpbmVoZWlnaHQ7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAkbGlzdC1tYXJnaW4tYm90dG9tO1xyXG4gICAgbGlzdC1zdHlsZS1wb3NpdGlvbjogJGxpc3Qtc3R5bGUtcG9zaXRpb247XHJcbiAgfVxyXG5cclxuICAvLyBMaXN0IGl0ZW1zXHJcbiAgbGkge1xyXG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xyXG4gIH1cclxuXHJcbiAgLy8gVW5vcmRlcmVkIGxpc3RzXHJcbiAgdWwge1xyXG4gICAgbGlzdC1zdHlsZS10eXBlOiAkbGlzdC1zdHlsZS10eXBlO1xyXG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJGxpc3Qtc2lkZS1tYXJnaW47XHJcbiAgfVxyXG5cclxuICAvLyBPcmRlcmVkIGxpc3RzXHJcbiAgb2wge1xyXG4gICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJGxpc3Qtc2lkZS1tYXJnaW47XHJcbiAgfVxyXG5cclxuICAvLyBOZXN0ZWQgdW5vcmRlcmVkL29yZGVyZWQgbGlzdHNcclxuICB1bCwgb2wge1xyXG4gICAgJiAmIHtcclxuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJGxpc3QtbmVzdGVkLXNpZGUtbWFyZ2luO1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gRGVmaW5pdGlvbiBsaXN0c1xyXG4gIGRsIHtcclxuICAgIG1hcmdpbi1ib3R0b206ICRkZWZubGlzdC1tYXJnaW4tYm90dG9tO1xyXG5cclxuICAgIGR0IHtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogJGRlZm5saXN0LXRlcm0tbWFyZ2luLWJvdHRvbTtcclxuICAgICAgZm9udC13ZWlnaHQ6ICRkZWZubGlzdC10ZXJtLXdlaWdodDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEJsb2NrcXVvdGVzXHJcbiAgYmxvY2txdW90ZSB7XHJcbiAgICBtYXJnaW46IDAgMCAkcGFyYWdyYXBoLW1hcmdpbi1ib3R0b207XHJcbiAgICBwYWRkaW5nOiAkYmxvY2txdW90ZS1wYWRkaW5nO1xyXG4gICAgYm9yZGVyLSN7JGdsb2JhbC1sZWZ0fTogJGJsb2NrcXVvdGUtYm9yZGVyO1xyXG5cclxuICAgICYsIHAge1xyXG4gICAgICBsaW5lLWhlaWdodDogJHBhcmFncmFwaC1saW5laGVpZ2h0O1xyXG4gICAgICBjb2xvcjogJGJsb2NrcXVvdGUtY29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBDaXRhdGlvbnNcclxuICBjaXRlIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgZm9udC1zaXplOiAkY2l0ZS1mb250LXNpemU7XHJcbiAgICBjb2xvcjogJGNpdGUtY29sb3I7XHJcblxyXG4gICAgJjpiZWZvcmUge1xyXG4gICAgICBjb250ZW50OiAnXFwyMDE0IFxcMDAyMCc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBBYmJyZXZpYXRpb25zXHJcbiAgYWJiciB7XHJcbiAgICBjb2xvcjogJGJvZHktZm9udC1jb2xvcjtcclxuICAgIGN1cnNvcjogaGVscDtcclxuICAgIGJvcmRlci1ib3R0b206ICRhYmJyLXVuZGVybGluZTtcclxuICB9XHJcblxyXG4gIC8vIENvZGVcclxuICBjb2RlIHtcclxuICAgIGZvbnQtZmFtaWx5OiAkY29kZS1mb250LWZhbWlseTtcclxuICAgIGZvbnQtd2VpZ2h0OiAkY29kZS1mb250LXdlaWdodDtcclxuICAgIGNvbG9yOiAkY29kZS1jb2xvcjtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2RlLWJhY2tncm91bmQ7XHJcbiAgICBib3JkZXI6ICRjb2RlLWJvcmRlcjtcclxuICAgIHBhZGRpbmc6ICRjb2RlLXBhZGRpbmc7XHJcbiAgfVxyXG5cclxuICAvLyBLZXlzdHJva2VzXHJcbiAga2JkIHtcclxuICAgIHBhZGRpbmc6ICRrZXlzdHJva2UtcGFkZGluZztcclxuICAgIG1hcmdpbjogMDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRrZXlzdHJva2UtYmFja2dyb3VuZDtcclxuICAgIGNvbG9yOiAka2V5c3Ryb2tlLWNvbG9yO1xyXG4gICAgZm9udC1mYW1pbHk6ICRrZXlzdHJva2UtZm9udDtcclxuXHJcbiAgICBAaWYgaGFzLXZhbHVlKCRrZXlzdHJva2UtcmFkaXVzKSB7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6ICRrZXlzdHJva2UtcmFkaXVzO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgYnJlYWtwb2ludHNcclxuLy8vL1xyXG5cclxuLy8gc2Nzcy1saW50OmRpc2FibGUgWmVyb1VuaXRcclxuXHJcbi8vLyBBIGxpc3Qgb2YgbmFtZWQgYnJlYWtwb2ludHMuIFlvdSBjYW4gdXNlIHRoZXNlIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRvIHF1aWNrbHkgY3JlYXRlIG1lZGlhIHF1ZXJpZXMuXHJcbi8vLyBAdHlwZSBNYXBcclxuJGJyZWFrcG9pbnRzOiAoXHJcbiAgc21hbGw6IDAsXHJcbiAgbWVkaXVtOiA2NDBweCxcclxuICBsYXJnZTogMTAyNHB4LFxyXG4gIHhsYXJnZTogMTIwMHB4LFxyXG4gIHh4bGFyZ2U6IDE0NDBweCxcclxuKSAhZGVmYXVsdDtcclxuXHJcbiQtemYtemVyby1icmVha3BvaW50OiBzbWFsbCAhZGVmYXVsdDtcclxuXHJcbkBpZiBudGgobWFwLXZhbHVlcygkYnJlYWtwb2ludHMpLCAxKSAhPSAwIHtcclxuICBAZXJyb3IgJ1lvdXIgc21hbGxlc3QgYnJlYWtwb2ludCAoZGVmaW5lZCBpbiAkYnJlYWtwb2ludHMpIG11c3QgYmUgc2V0IHRvIFwiMFwiLic7XHJcbn1cclxuQGVsc2Uge1xyXG4gICQtemYtemVyby1icmVha3BvaW50OiBudGgobWFwLWtleXMoJGJyZWFrcG9pbnRzKSwgMSk7XHJcbn1cclxuXHJcbi8vLyBBbGwgb2YgdGhlIG5hbWVzIGluIHRoaXMgbGlzdCB3aWxsIGJlIG91dHB1dCBhcyBjbGFzc2VzIGluIHlvdXIgQ1NTLCBsaWtlIGAuc21hbGwtMTJgLCBgLm1lZGl1bS02YCwgYW5kIHNvIG9uLiBFYWNoIHZhbHVlIGluIHRoaXMgbGlzdCBtdXN0IGFsc28gYmUgaW4gdGhlIGAkYnJlYWtwb2ludHNgIG1hcC5cclxuLy8vIEB0eXBlIExpc3RcclxuJGJyZWFrcG9pbnQtY2xhc3NlczogKHNtYWxsIG1lZGl1bSBsYXJnZSkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gR2VuZXJhdGVzIGEgbWVkaWEgcXVlcnkgc3RyaW5nIG1hdGNoaW5nIHRoZSBpbnB1dCB2YWx1ZS4gUmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0byBzZWUgd2hhdCB0aGUgcG9zc2libGUgaW5wdXRzIGFyZS5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkdmFsIFtzbWFsbF0gLSBCcmVha3BvaW50IG5hbWUsIG9yIHB4LCByZW0sIG9yIGVtIHZhbHVlIHRvIHByb2Nlc3MuXHJcbkBmdW5jdGlvbiBicmVha3BvaW50KCR2YWw6ICQtemYtemVyby1icmVha3BvaW50KSB7XHJcbiAgLy8gU2l6ZSBvciBrZXl3b3JkXHJcbiAgJGJwOiBudGgoJHZhbCwgMSk7XHJcbiAgLy8gVmFsdWUgZm9yIG1heC13aWR0aCBtZWRpYSBxdWVyaWVzXHJcbiAgJGJwLW1heDogMDtcclxuICAvLyBEaXJlY3Rpb24gb2YgbWVkaWEgcXVlcnkgKHVwLCBkb3duLCBvciBvbmx5KVxyXG4gICRkaXI6IGlmKGxlbmd0aCgkdmFsKSA+IDEsIG50aCgkdmFsLCAyKSwgdXApO1xyXG4gIC8vIEV2ZW50dWFsIG91dHB1dFxyXG4gICRzdHI6ICcnO1xyXG4gIC8vIElzIGl0IGEgbmFtZWQgbWVkaWEgcXVlcnk/XHJcbiAgJG5hbWVkOiBmYWxzZTtcclxuXHJcbiAgLy8gT3JpZW50YXRpb24gbWVkaWEgcXVlcmllcyBoYXZlIGEgdW5pcXVlIHN5bnRheFxyXG4gIEBpZiAkYnAgPT0gJ2xhbmRzY2FwZScgb3IgJGJwID09ICdwb3J0cmFpdCcge1xyXG4gICAgQHJldHVybiAnKG9yaWVudGF0aW9uOiAjeyRicH0pJztcclxuICB9XHJcbiAgQGVsc2UgaWYgJGJwID09ICdyZXRpbmEnIHtcclxuICAgIEByZXR1cm4gJygtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLCAobWluLXJlc29sdXRpb246IDE5MmRwaSknO1xyXG4gIH1cclxuXHJcbiAgLy8gVHJ5IHRvIHB1bGwgYSBuYW1lZCBicmVha3BvaW50IG91dCBvZiB0aGUgJGJyZWFrcG9pbnRzIG1hcFxyXG4gIEBpZiB0eXBlLW9mKCRicCkgPT0gJ3N0cmluZycge1xyXG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJGJwKSB7XHJcbiAgICAgIEBpZiAkZGlyID09ICdvbmx5JyBvciAkZGlyID09ICdkb3duJyB7XHJcbiAgICAgICAgJGJwLW1heDogLXpmLW1hcC1uZXh0KCRicmVha3BvaW50cywgJGJwKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJGJwOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJGJwKTtcclxuICAgICAgJG5hbWVkOiB0cnVlO1xyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICAkYnA6IDA7XHJcbiAgICAgIEB3YXJuICdicmVha3BvaW50KCk6IFwiI3skdmFsfVwiIGlzIG5vdCBkZWZpbmVkIGluIHlvdXIgJGJyZWFrcG9pbnRzIHNldHRpbmcuJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIENvbnZlcnQgYW55IHBpeGVsLCByZW0sIG9yIHVuaXRsZXNzIHZhbHVlIHRvIGVtXHJcbiAgJGJwOiAtemYtYnAtdG8tZW0oJGJwKTtcclxuICBAaWYgJGJwLW1heCB7XHJcbiAgICAkYnAtbWF4OiAtemYtYnAtdG8tZW0oJGJwLW1heCkgLSAoMS8xNik7XHJcbiAgfVxyXG5cclxuICAvLyBDb25kaXRpb25zIHRvIHNraXAgbWVkaWEgcXVlcnkgY3JlYXRpb25cclxuICAvLyAtIEl0J3MgYSBuYW1lZCBicmVha3BvaW50IHRoYXQgcmVzb2x2ZWQgdG8gXCIwIGRvd25cIiBvciBcIjAgdXBcIlxyXG4gIC8vIC0gSXQncyBhIG51bWVyaWMgYnJlYWtwb2ludCB0aGF0IHJlc29sdmVkIHRvIFwiMCBcIiArIGFueXRoaW5nXHJcbiAgQGlmICRicCA+IDBlbSBvciAkZGlyID09ICdvbmx5JyBvciAkZGlyID09ICdkb3duJyB7XHJcbiAgICAvLyBgb25seWAgcmFuZ2VzIHVzZSB0aGUgZm9ybWF0IGAobWluLXdpZHRoOiBuKSBhbmQgKG1heC13aWR0aDogbilgXHJcbiAgICBAaWYgJGRpciA9PSAnb25seScge1xyXG4gICAgICAvLyBPbmx5IG5hbWVkIG1lZGlhIHF1ZXJpZXMgY2FuIGhhdmUgYW4gXCJvbmx5XCIgcmFuZ2VcclxuICAgICAgQGlmICRuYW1lZCA9PSB0cnVlIHtcclxuICAgICAgICAvLyBPbmx5IHVzZSBcIm1pbi13aWR0aFwiIGlmIHRoZSBmbG9vciBpcyBncmVhdGVyIHRoYW4gMFxyXG4gICAgICAgIEBpZiAkYnAgPiAwZW0ge1xyXG4gICAgICAgICAgJHN0cjogJHN0ciArICcobWluLXdpZHRoOiAjeyRicH0pJztcclxuXHJcbiAgICAgICAgICAvLyBPbmx5IGFkZCBcImFuZFwiIHRvIHRoZSBtZWRpYSBxdWVyeSBpZiB0aGVyZSdzIGEgY2VpbGluZ1xyXG4gICAgICAgICAgQGlmICRicC1tYXggIT0gbnVsbCB7XHJcbiAgICAgICAgICAgICRzdHI6ICRzdHIgKyAnIGFuZCAnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gT25seSB1c2UgXCJtYXgtd2lkdGhcIiBpZiB0aGVyZSdzIGEgY2VpbGluZ1xyXG4gICAgICAgIEBpZiAkYnAtbWF4ICE9IG51bGwge1xyXG4gICAgICAgICAgJHN0cjogJHN0ciArICcobWF4LXdpZHRoOiAjeyRicC1tYXh9KSc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIEBlbHNlIHtcclxuICAgICAgICBAd2FybiAnYnJlYWtwb2ludCgpOiBPbmx5IG5hbWVkIG1lZGlhIHF1ZXJpZXMgY2FuIGhhdmUgYW4gYG9ubHlgIHJhbmdlLic7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBgZG93bmAgcmFuZ2VzIHVzZSB0aGUgZm9ybWF0IGAobWF4LXdpZHRoOiBuKWBcclxuICAgIEBlbHNlIGlmICRkaXIgPT0gJ2Rvd24nIHtcclxuICAgICAgJG1heDogaWYoJG5hbWVkLCAkYnAtbWF4LCAkYnApO1xyXG5cclxuICAgICAgLy8gU2tpcCBtZWRpYSBxdWVyeSBjcmVhdGlvbiBpZiBpbnB1dCB2YWx1ZSBpcyBleGFjdGx5IFwiMCBkb3duXCIsXHJcbiAgICAgIC8vIHVubGVzcyB0aGUgZnVuY3Rpb24gd2FzIGNhbGxlZCBhcyBcInNtYWxsIGRvd25cIiwgaW4gd2hpY2ggY2FzZSBpdCdzIGp1c3QgXCJzbWFsbCBvbmx5XCJcclxuICAgICAgQGlmICRuYW1lZCBvciAkYnAgPiAwZW0ge1xyXG4gICAgICAgIEBpZiAkbWF4ICE9IG51bGwge1xyXG4gICAgICAgICAgJHN0cjogJHN0ciArICcobWF4LXdpZHRoOiAjeyRtYXh9KSc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYHVwYCByYW5nZXMgdXNlIHRoZSBmb3JtYXQgYChtaW4td2lkdGg6IG4pYFxyXG4gICAgQGVsc2UgaWYgJGJwID4gMGVtIHtcclxuICAgICAgJHN0cjogJHN0ciArICcobWluLXdpZHRoOiAjeyRicH0pJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEByZXR1cm4gJHN0cjtcclxufVxyXG5cclxuLy8vIFdyYXBzIGEgbWVkaWEgcXVlcnkgYXJvdW5kIHRoZSBjb250ZW50IHlvdSBwdXQgaW5zaWRlIHRoZSBtaXhpbi4gVGhpcyBtaXhpbiBhY2NlcHRzIGEgbnVtYmVyIG9mIHZhbHVlczpcclxuLy8vICAtIElmIGEgc3RyaW5nIGlzIHBhc3NlZCwgdGhlIG1peGluIHdpbGwgbG9vayBmb3IgaXQgaW4gdGhlIGAkYnJlYWtwb2ludHNgIG1hcCwgYW5kIHVzZSBhIG1lZGlhIHF1ZXJ5IHRoZXJlLlxyXG4vLy8gIC0gSWYgYSBwaXhlbCB2YWx1ZSBpcyBwYXNzZWQsIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIGFuIGVtIHZhbHVlIHVzaW5nIGAkZ2xvYmFsLWZvbnQtc2l6ZWAgYXMgdGhlIGJhc2UuXHJcbi8vLyAgLSBJZiBhIHJlbSB2YWx1ZSBpcyBwYXNzZWQsIHRoZSB1bml0IHdpbGwgYmUgY2hhbmdlZCB0byBlbS5cclxuLy8vICAtIElmIGFuIGVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHZhbHVlIHdpbGwgYmUgdXNlZCBhcy1pcy5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkdmFsdWUgLSBCcmVha3BvaW50IG5hbWUsIG9yIHB4LCByZW0sIG9yIGVtIHZhbHVlIHRvIHByb2Nlc3MuXHJcbi8vL1xyXG4vLy8gQG91dHB1dCBJZiB0aGUgYnJlYWtwb2ludCBpcyBcIjBweCBhbmQgbGFyZ2VyXCIsIG91dHB1dHMgdGhlIGNvbnRlbnQgYXMtaXMuIE90aGVyd2lzZSwgb3V0cHV0cyB0aGUgY29udGVudCB3cmFwcGVkIGluIGEgbWVkaWEgcXVlcnkuXHJcbkBtaXhpbiBicmVha3BvaW50KCR2YWx1ZSkge1xyXG4gICRzdHI6IGJyZWFrcG9pbnQoJHZhbHVlKTtcclxuXHJcbiAgLy8gSWYgJHN0ciBpcyBzdGlsbCBhbiBlbXB0eSBzdHJpbmcsIG5vIG1lZGlhIHF1ZXJ5IGlzIG5lZWRlZFxyXG4gIEBpZiAkc3RyID09ICcnIHtcclxuICAgIEBjb250ZW50O1xyXG4gIH1cclxuXHJcbiAgLy8gT3RoZXJ3aXNlLCB3cmFwIHRoZSBjb250ZW50IGluIGEgbWVkaWEgcXVlcnlcclxuICBAZWxzZSB7XHJcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAjeyRzdHJ9IHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQ29udmVycyB0aGUgYnJlYWtwb2ludHMgbWFwIHRvIGEgVVJMLWVuY29kZWQgc3RyaW5nLCBsaWtlIHRoaXM6IGBrZXkxPXZhbHVlMSZrZXkyPXZhbHVlMmAuIFRoZSB2YWx1ZSBpcyB0aGVuIGRyb3BwZWQgaW50byB0aGUgQ1NTIGZvciBhIHNwZWNpYWwgYDxtZXRhPmAgdGFnLCB3aGljaCBpcyByZWFkIGJ5IHRoZSBGb3VuZGF0aW9uIEphdmFTY3JpcHQuIFRoaXMgaXMgaG93IHdlIHRyYW5zZmVyIHZhbHVlcyBmcm9tIFNhc3MgdG8gSmF2YVNjcmlwdCwgc28gdGhleSBjYW4gYmUgZGVmaW5lZCBpbiBvbmUgcGxhY2UuXHJcbi8vLyBAYWNjZXNzIHByaXZhdGVcclxuLy8vXHJcbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byBjb252ZXJ0LlxyXG4vLy9cclxuLy8vIEByZXR1cm5zIHtTdHJpbmd9IEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG1hcCdzIGNvbnRlbnRzLlxyXG5AZnVuY3Rpb24gLXpmLWJwLXNlcmlhbGl6ZSgkbWFwKSB7XHJcbiAgJHN0cjogJyc7XHJcbiAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRtYXAge1xyXG4gICAgJHN0cjogJHN0ciArICRrZXkgKyAnPScgKyAtemYtYnAtdG8tZW0oJHZhbHVlKSArICcmJztcclxuICB9XHJcbiAgJHN0cjogc3RyLXNsaWNlKCRzdHIsIDEsIC0yKTtcclxuXHJcbiAgQHJldHVybiAkc3RyO1xyXG59XHJcblxyXG4vLy8gRmluZCB0aGUgbmV4dCBrZXkgaW4gYSBtYXAuXHJcbi8vLyBAYWNjZXNzIHByaXZhdGVcclxuLy8vXHJcbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byB0cmF2ZXJzZS5cclxuLy8vIEBwYXJhbSB7TWl4ZWR9ICRrZXkgLSBLZXkgdG8gdXNlIGFzIGEgc3RhcnRpbmcgcG9pbnQuXHJcbi8vL1xyXG4vLy8gQHJldHVybnMge01peGVkfSBUaGUgdmFsdWUgZm9yIHRoZSBrZXkgYWZ0ZXIgYCRrZXlgLCBpZiBgJGtleWAgd2FzIGZvdW5kLiBJZiBgJGtleWAgd2FzIG5vdCBmb3VuZCwgb3IgYCRrZXlgIHdhcyB0aGUgbGFzdCB2YWx1ZSBpbiB0aGUgbWFwLCByZXR1cm5zIGBudWxsYC5cclxuQGZ1bmN0aW9uIC16Zi1tYXAtbmV4dCgkbWFwLCAka2V5KSB7XHJcblxyXG4gIC8vIFN0b3JlIHRoZSBrZXlzIG9mIHRoZSBtYXAgYXMgYSBsaXN0XHJcbiAgJHZhbHVlczogbWFwLWtleXMoJG1hcCk7XHJcblxyXG4gICRpOiAwO1xyXG5cclxuICAvLyBJZiB0aGUgS2V5IEV4aXN0cywgR2V0IHRoZSBpbmRleCBvZiB0aGUga2V5IHdpdGhpbiB0aGUgbWFwIGFuZCBhZGQgMSB0byBpdCBmb3IgdGhlIG5leHQgYnJlYWtwb2ludCBpbiB0aGUgbWFwXHJcbiAgQGlmIChtYXAtaGFzLWtleSgkbWFwLCAka2V5KSkge1xyXG4gICAgJGk6IGluZGV4KCR2YWx1ZXMsICRrZXkpICsgMTtcclxuICB9XHJcblxyXG4gIC8vIElmIHRoZSBrZXkgZG9lc24ndCBleGlzdCwgb3IgaXQncyB0aGUgbGFzdCBrZXkgaW4gdGhlIG1hcCwgcmV0dXJuIG51bGxcclxuICBAaWYgKCRpID4gbGVuZ3RoKCRtYXApIG9yICRpID09IDApIHtcclxuICAgIEByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gdGhlIHZhbHVlXHJcbiAgQGVsc2Uge1xyXG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsIG50aCgkdmFsdWVzLCAkaSkpO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbi8vLyBHZXQgYSB2YWx1ZSBmb3IgYSBicmVha3BvaW50IGZyb20gYSByZXNwb25zaXZlIGNvbmZpZyBtYXAuIElmIHRoZSBjb25maWcgbWFwIGhhcyB0aGUga2V5IGAkdmFsdWVgLCB0aGUgZXhhY3QgYnJlYWtwb2ludCB2YWx1ZSBpcyByZXR1cm5lZC4gSWYgdGhlIGNvbmZpZyBtYXAgZG9lcyAqbm90KiBoYXZlIHRoZSBicmVha3BvaW50LCB0aGUgdmFsdWUgbWF0Y2hpbmcgdGhlIG5leHQgbG93ZXN0IGJyZWFrcG9pbnQgaW4gdGhlIGNvbmZpZyBtYXAgaXMgcmV0dXJuZWQuXHJcbi8vLyBAYWNjZXNzIHByaXZhdGVcclxuLy8vXHJcbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIElucHV0IGNvbmZpZyBtYXAuXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR2YWx1ZSAtIEJyZWFrcG9pbnQgbmFtZSB0byB1c2UuXHJcbi8vL1xyXG4vLy8gQHJldHVybiB7TWl4ZWR9IFRoZSBjb3JyZXNwb25kaW5nIGJyZWFrcG9pbnQgdmFsdWUuXHJcbkBmdW5jdGlvbiAtemYtZ2V0LWJwLXZhbCgkbWFwLCAkdmFsdWUpIHtcclxuICAvLyBDaGVjayBpZiB0aGUgYnJlYWtwb2ludCBuYW1lIGV4aXN0cyBnbG9iYWxseVxyXG4gIEBpZiBub3QgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkdmFsdWUpIHtcclxuICAgIEByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgLy8gQ2hlY2sgaWYgdGhlIGJyZWFrcG9pbnQgbmFtZSBleGlzdHMgaW4gdGhlIGxvY2FsIGNvbmZpZyBtYXBcclxuICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkbWFwLCAkdmFsdWUpIHtcclxuICAgIC8vIElmIGl0IGRvZXMsIGp1c3QgcmV0dXJuIHRoZSB2YWx1ZVxyXG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsICR2YWx1ZSk7XHJcbiAgfVxyXG4gIC8vIE90aGVyd2lzZSwgZmluZCB0aGUgbmV4dCBsb3dlc3QgYnJlYWtwb2ludCBhbmQgcmV0dXJuIHRoYXQgdmFsdWVcclxuICBAZWxzZSB7XHJcbiAgICAkYW5jaG9yOiBudWxsO1xyXG4gICAgJGZvdW5kOiBmYWxzZTtcclxuXHJcbiAgICBAZWFjaCAka2V5LCAkdmFsIGluICRicmVha3BvaW50cyB7XHJcbiAgICAgIEBpZiBub3QgJGZvdW5kIHtcclxuICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJG1hcCwgJGtleSkge1xyXG4gICAgICAgICAgJGFuY2hvcjogJGtleTtcclxuICAgICAgICB9XHJcbiAgICAgICAgQGlmICRrZXkgPT0gJHZhbHVlIHtcclxuICAgICAgICAgICRmb3VuZDogdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgJGFuY2hvcik7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBMZWdhY3kgYnJlYWtwb2ludCB2YXJpYWJsZXNcclxuLy8gVGhlc2Ugd2lsbCBiZSByZW1vdmVkIGluIDYuM1xyXG4kc21hbGwtdXA6IG51bGw7XHJcbiRzbWFsbC1vbmx5OiBudWxsO1xyXG4kbWVkaXVtLXVwOiBudWxsO1xyXG4kbWVkaXVtLW9ubHk6IG51bGw7XHJcbiRsYXJnZS11cDogbnVsbDtcclxuJGxhcmdlLW9ubHk6IG51bGw7XHJcbiR4bGFyZ2UtdXA6IG51bGw7XHJcbiR4bGFyZ2Utb25seTogbnVsbDtcclxuJHh4bGFyZ2UtdXA6IG51bGw7XHJcbiR4eGxhcmdlLW9ubHk6IG51bGw7XHJcblxyXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBzbWFsbCkge1xyXG4gICRzbWFsbC11cDogc2NyZWVuO1xyXG4gICRzbWFsbC1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChzbWFsbCBvbmx5KX0nKTtcclxufVxyXG5cclxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgbWVkaXVtKSB7XHJcbiAgJG1lZGl1bS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobWVkaXVtKX0nKTtcclxuICAkbWVkaXVtLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KG1lZGl1bSBvbmx5KX0nKTtcclxufVxyXG5cclxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgbGFyZ2UpIHtcclxuICAkbGFyZ2UtdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KGxhcmdlKX0nKTtcclxuICAkbGFyZ2Utb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobGFyZ2Ugb25seSl9Jyk7XHJcbn1cclxuXHJcbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIHhsYXJnZSkge1xyXG4gICR4bGFyZ2UtdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHhsYXJnZSl9Jyk7XHJcbiAgJHhsYXJnZS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludCh4bGFyZ2Ugb25seSl9Jyk7XHJcbn1cclxuXHJcbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIHh4bGFyZ2UpIHtcclxuICAkeHhsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeHhsYXJnZSl9Jyk7XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuLy8vL1xyXG4vLy8gQGdyb3VwIHR5cG9ncmFwaHktaGVscGVyc1xyXG4vLy8vXHJcblxyXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIGxlYWQgcGFyYWdyYXBocy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kbGVhZC1mb250LXNpemU6ICRnbG9iYWwtZm9udC1zaXplICogMS4yNSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGxpbmUgaGVpZ2h0IGZvciBsZWFkIHBhcmFncmFwaHMuXHJcbi8vLyBAdHlwZSBTdHJpbmdcclxuJGxlYWQtbGluZWhlaWdodDogMS42ICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgbGluZSBoZWlnaHQgZm9yIHN1YmhlYWRlcnMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHN1YmhlYWRlci1saW5laGVpZ2h0OiAxLjQgIWRlZmF1bHQ7XHJcblxyXG4vLy8gRGVmYXVsdCBmb250IGNvbG9yIGZvciBzdWJoZWFkZXJzLlxyXG4vLy8gQHR5cGUgQ29sb3JcclxuJHN1YmhlYWRlci1jb2xvcjogJGRhcmstZ3JheSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGZvbnQgd2VpZ2h0IGZvciBzdWJoZWFkZXJzLlxyXG4vLy8gQHR5cGUgU3RyaW5nXHJcbiRzdWJoZWFkZXItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbCAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IHRvcCBtYXJnaW4gZm9yIHN1YmhoZWFkZXJzLlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRzdWJoZWFkZXItbWFyZ2luLXRvcDogMC4ycmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIERlZmF1bHQgYm90dG9tIG1hcmdpbiBmb3Igc3ViaGVhZGVycy5cclxuLy8vIEB0eXBlIE51bWJlclxyXG4kc3ViaGVhZGVyLW1hcmdpbi1ib3R0b206IDAuNXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBmb3Igc3RhdGlzdGljIG51bWJlcnMuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJHN0YXQtZm9udC1zaXplOiAyLjVyZW0gIWRlZmF1bHQ7XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi10eXBvZ3JhcGh5LWhlbHBlcnMge1xyXG4gIC8vIFVzZSB0byBjcmVhdGUgYSBzdWJoZWFkaW5nIHVuZGVyIGEgbWFpbiBoZWFkZXJcclxuICAvLyBNYWtlIHN1cmUgeW91IHBhaXIgdGhlIHR3byBlbGVtZW50cyBpbiBhIDxoZWFkZXI+IGVsZW1lbnQsIGxpa2UgdGhpczpcclxuICAvLyA8aGVhZGVyPlxyXG4gIC8vICAgPGgxPkhlYWRpbmc8L2gxPlxyXG4gIC8vICAgPGgyPlN1YmhlYWRpbmc8L2gyPlxyXG4gIC8vIDwvaGVhZGVyPlxyXG4gIC5zdWJoZWFkZXIge1xyXG4gICAgbWFyZ2luLXRvcDogJHN1YmhlYWRlci1tYXJnaW4tdG9wO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogJHN1YmhlYWRlci1tYXJnaW4tYm90dG9tO1xyXG4gICAgZm9udC13ZWlnaHQ6ICRzdWJoZWFkZXItZm9udC13ZWlnaHQ7XHJcbiAgICBsaW5lLWhlaWdodDogJHN1YmhlYWRlci1saW5laGVpZ2h0O1xyXG4gICAgY29sb3I6ICRzdWJoZWFkZXItY29sb3I7XHJcbiAgfVxyXG5cclxuICAvLyBVc2UgdG8gc3R5bGUgYW4gaW50cm9kdWN0b3J5IGxlYWQsIGRlY2ssIGJsdXJiLCBldGMuXHJcbiAgLmxlYWQge1xyXG4gICAgZm9udC1zaXplOiAkbGVhZC1mb250LXNpemU7XHJcbiAgICBsaW5lLWhlaWdodDogJGxlYWQtbGluZWhlaWdodDtcclxuICB9XHJcblxyXG4gIC8vIFVzZSB0byBzdHlsZSBhIGxhcmdlIG51bWJlciB0byBkaXNwbGF5IGEgc3RhdGlzdGljXHJcbiAgLnN0YXQge1xyXG4gICAgZm9udC1zaXplOiAkc3RhdC1mb250LXNpemU7XHJcbiAgICBsaW5lLWhlaWdodDogMTtcclxuXHJcbiAgICBwICsgJiB7XHJcbiAgICAgIG1hcmdpbi10b3A6IC0xcmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gVXNlIHRvIHJlbW92ZSB0aGUgYnVsbGV0cyBmcm9tIGFuIHVub3JkZXJlZCBsaXN0XHJcbiAgLm5vLWJ1bGxldCB7XHJcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwO1xyXG4gICAgbGlzdC1zdHlsZTogbm9uZTtcclxuICB9XHJcbn1cclxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxyXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXHJcbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tdGV4dC1hbGlnbm1lbnQge1xyXG4gIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xyXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xyXG4gICAgICBAZWFjaCAkYWxpZ24gaW4gKGxlZnQsIHJpZ2h0LCBjZW50ZXIsIGp1c3RpZnkpIHtcclxuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xyXG4gICAgICAgICAgLiN7JHNpemV9LXRleHQtI3skYWxpZ259IHtcclxuICAgICAgICAgICAgdGV4dC1hbGlnbjogJGFsaWduO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBAZWxzZSB7XHJcbiAgICAgICAgICAudGV4dC0jeyRhbGlnbn0ge1xyXG4gICAgICAgICAgICB0ZXh0LWFsaWduOiAkYWxpZ247XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLyBJZiBgdHJ1ZWAsIGFsbCBlbGVtZW50cyB3aWxsIGhhdmUgdHJhbnNwYXJlbnQgYmFja2dyb3VuZHMgd2hlbiBwcmludGVkLCB0byBzYXZlIG9uIGluay5cclxuLy8vIEB0eXBlIEJvb2xlYW5cclxuLy8vIEBncm91cCBnbG9iYWxcclxuJHByaW50LXRyYW5zcGFyZW50LWJhY2tncm91bmRzOiB0cnVlICFkZWZhdWx0O1xyXG5cclxuLy8gc2Nzcy1saW50OmRpc2FibGUgYWxsXHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi1wcmludC1zdHlsZXMge1xyXG4gIC5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxyXG5cclxuICBAbWVkaWEgcHJpbnQge1xyXG4gICAgKiB7XHJcbiAgICAgIEBpZiAkcHJpbnQtdHJhbnNwYXJlbnQtYmFja2dyb3VuZHMge1xyXG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbG9yOiBibGFjayAhaW1wb3J0YW50OyAvLyBCbGFjayBwcmludHMgZmFzdGVyOiBoNWJwLmNvbS9zXHJcbiAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcclxuICAgICAgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICAuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9XHJcbiAgICAuaGlkZS1mb3ItcHJpbnQgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cclxuXHJcbiAgICB0YWJsZS5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7IH1cclxuICAgIHRoZWFkLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwICFpbXBvcnRhbnQ7IH1cclxuICAgIHRib2R5LnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUtcm93LWdyb3VwICFpbXBvcnRhbnQ7IH1cclxuICAgIHRyLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7IH1cclxuICAgIHRkLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OyB9XHJcbiAgICB0aC5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsgfVxyXG5cclxuICAgIC8vIERpc3BsYXkgdGhlIFVSTCBvZiBhIGxpbmsgYWZ0ZXIgdGhlIHRleHRcclxuICAgIGEsXHJcbiAgICBhOnZpc2l0ZWQgeyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTt9XHJcbiAgICBhW2hyZWZdOmFmdGVyIHsgY29udGVudDogJyAoJyBhdHRyKGhyZWYpICcpJzsgfVxyXG5cclxuICAgIC8vIERvbid0IGRpc3BsYXkgdGhlIFVSTCBmb3IgaW1hZ2VzIG9yIEphdmFTY3JpcHQvaW50ZXJuYWwgbGlua3NcclxuICAgIC5pciBhOmFmdGVyLFxyXG4gICAgYVtocmVmXj0namF2YXNjcmlwdDonXTphZnRlcixcclxuICAgIGFbaHJlZl49JyMnXTphZnRlciB7IGNvbnRlbnQ6ICcnOyB9XHJcblxyXG4gICAgLy8gRGlzcGxheSB3aGF0IGFuIGFiYnJldmlhdGlvbiBzdGFuZHMgZm9yIGFmdGVyIHRoZSB0ZXh0XHJcbiAgICBhYmJyW3RpdGxlXTphZnRlciB7IGNvbnRlbnQ6ICcgKCcgYXR0cih0aXRsZSkgJyknOyB9XHJcblxyXG4gICAgLy8gUHJldmVudCBwYWdlIGJyZWFrcyBpbiB0aGUgbWlkZGxlIG9mIGEgYmxvY2txdW90ZSBvciBwcmVmb3JtYXR0ZWQgdGV4dCBibG9ja1xyXG4gICAgcHJlLFxyXG4gICAgYmxvY2txdW90ZSB7XHJcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRkYXJrLWdyYXk7XHJcbiAgICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBoNWJwLmNvbS90XHJcbiAgICB0aGVhZCB7IGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDsgfVxyXG5cclxuICAgIHRyLFxyXG4gICAgaW1nIHsgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOyB9XHJcblxyXG4gICAgaW1nIHsgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH1cclxuXHJcbiAgICBAcGFnZSB7IG1hcmdpbjogMC41Y207IH1cclxuXHJcbiAgICBwLFxyXG4gICAgaDIsXHJcbiAgICBoMyB7XHJcbiAgICAgIG9ycGhhbnM6IDM7XHJcbiAgICAgIHdpZG93czogMztcclxuICAgIH1cclxuXHJcbiAgICAvLyBBdm9pZCBwYWdlIGJyZWFrcyBhZnRlciBhIGhlYWRpbmdcclxuICAgIGgyLFxyXG4gICAgaDMgeyBwYWdlLWJyZWFrLWFmdGVyOiBhdm9pZDsgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8gSGlkZSBhbiBlbGVtZW50IGJ5IGRlZmF1bHQsIG9ubHkgZGlzcGxheWluZyBpdCBhYm92ZSBhIGNlcnRhaW4gc2NyZWVuIHNpemUuXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gQnJlYWtwb2ludCB0byB1c2UuICoqTXVzdCBiZSBhIGJyZWFrcG9pbnQgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnRzYC4qKlxyXG5AbWl4aW4gc2hvdy1mb3IoJHNpemUpIHtcclxuICAkc2l6ZTogbWFwLWdldCgkYnJlYWtwb2ludHMsICRzaXplKTtcclxuICAkc2l6ZTogLXpmLWJwLXRvLWVtKCRzaXplKSAtICgxIC8gMTYpO1xyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplIGRvd24pIHtcclxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBIaWRlIGFuIGVsZW1lbnQgYnkgZGVmYXVsdCwgb25seSBkaXNwbGF5aW5nIGl0IHdpdGhpbiBhIGNlcnRhaW4gYnJlYWtwb2ludC5cclxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgLSBCcmVha3BvaW50IHRvIHVzZS4gKipNdXN0IGJlIGEgYnJlYWtwb2ludCBkZWZpbmVkIGluIGAkYnJlYWtwb2ludHNgLioqXHJcbkBtaXhpbiBzaG93LWZvci1vbmx5KCRzaXplKSB7XHJcbiAgJGxvd2VyLWJvdW5kLXNpemU6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkc2l6ZSk7XHJcbiAgJHVwcGVyLWJvdW5kLXNpemU6IC16Zi1tYXAtbmV4dCgkYnJlYWtwb2ludHMsICRzaXplKTtcclxuXHJcbiAgLy8gbW9yZSBvZnRlbiB0aGFuIG5vdCB0aGlzIHdpbGwgYmUgY29ycmVjdCwganVzdCBvbmUgdGltZSByb3VuZCB0aGUgbG9vcCBpdCB3b24ndCBzbyBzZXQgaW4gc2NvcGUgaGVyZVxyXG4gICRsb3dlci1ib3VuZDogLXpmLWJwLXRvLWVtKCRsb3dlci1ib3VuZC1zaXplKSAtICgxIC8gMTYpO1xyXG4gIC8vIHRlc3QgYWN0dWFsIGxvd2VyLWJvdW5kLXNpemUsIGlmIDAgc2V0IGl0IHRvIDBlbVxyXG4gIEBpZiBzdHJpcC11bml0KCRsb3dlci1ib3VuZC1zaXplKSA9PSAwIHtcclxuICAgICRsb3dlci1ib3VuZDogLXpmLWJwLXRvLWVtKCRsb3dlci1ib3VuZC1zaXplKTtcclxuICB9XHJcblxyXG4gIEBpZiAkdXBwZXItYm91bmQtc2l6ZSA9PSBudWxsIHtcclxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRsb3dlci1ib3VuZCkge1xyXG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIHtcclxuICAgICR1cHBlci1ib3VuZDogLXpmLWJwLXRvLWVtKCR1cHBlci1ib3VuZC1zaXplKTtcclxuXHJcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbG93ZXItYm91bmQpLCBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICR1cHBlci1ib3VuZCkge1xyXG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLy8vIFNob3cgYW4gZWxlbWVudCBieSBkZWZhdWx0LCBhbmQgaGlkZSBpdCBhYm92ZSBhIGNlcnRhaW4gc2NyZWVuIHNpemUuXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gQnJlYWtwb2ludCB0byB1c2UuICoqTXVzdCBiZSBhIGJyZWFrcG9pbnQgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnRzYC4qKlxyXG5AbWl4aW4gaGlkZS1mb3IoJHNpemUpIHtcclxuICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XHJcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gU2hvdyBhbiBlbGVtZW50IGJ5IGRlZmF1bHQsIGFuZCBoaWRlIGl0IGFib3ZlIGEgY2VydGFpbiBzY3JlZW4gc2l6ZS5cclxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgLSBCcmVha3BvaW50IHRvIHVzZS4gKipNdXN0IGJlIGEgYnJlYWtwb2ludCBkZWZpbmVkIGluIGAkYnJlYWtwb2ludHNgLioqXHJcbkBtaXhpbiBoaWRlLWZvci1vbmx5KCRzaXplKSB7XHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSBvbmx5KSB7XHJcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gZm91bmRhdGlvbi12aXNpYmlsaXR5LWNsYXNzZXMge1xyXG4gIC8vIEJhc2ljIGhpZGluZyBjbGFzc2VzXHJcbiAgLmhpZGUge1xyXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgLmludmlzaWJsZSB7XHJcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgfVxyXG5cclxuICAvLyBSZXNwb25zaXZlIHZpc2liaWxpdHkgY2xhc3Nlc1xyXG4gIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xyXG4gICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcclxuICAgICAgLmhpZGUtZm9yLSN7JHNpemV9IHtcclxuICAgICAgICBAaW5jbHVkZSBoaWRlLWZvcigkc2l6ZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5zaG93LWZvci0jeyRzaXplfSB7XHJcbiAgICAgICAgQGluY2x1ZGUgc2hvdy1mb3IoJHNpemUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmhpZGUtZm9yLSN7JHNpemV9LW9ubHkge1xyXG4gICAgICBAaW5jbHVkZSBoaWRlLWZvci1vbmx5KCRzaXplKTtcclxuICAgIH1cclxuXHJcbiAgICAuc2hvdy1mb3ItI3skc2l6ZX0tb25seSB7XHJcbiAgICAgIEBpbmNsdWRlIHNob3ctZm9yLW9ubHkoJHNpemUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gU2NyZWVuIHJlYWRlciB2aXNpYmlsaXR5IGNsYXNzZXNcclxuICAvLyBOZWVkIGEgXCJoaWRlLWZvci1zclwiIGNsYXNzPyBBZGQgYXJpYS1oaWRkZW49J3RydWUnIHRvIHRoZSBlbGVtZW50XHJcbiAgLnNob3ctZm9yLXNyLFxyXG4gIC5zaG93LW9uLWZvY3VzIHtcclxuICAgIEBpbmNsdWRlIGVsZW1lbnQtaW52aXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgLy8gT25seSBkaXNwbGF5IHRoZSBlbGVtZW50IHdoZW4gaXQncyBmb2N1c2VkXHJcbiAgLnNob3ctb24tZm9jdXMge1xyXG4gICAgJjphY3RpdmUsXHJcbiAgICAmOmZvY3VzIHtcclxuICAgICAgQGluY2x1ZGUgZWxlbWVudC1pbnZpc2libGUtb2ZmO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTGFuZHNjYXBlIGFuZCBwb3J0cmFpdCB2aXNpYmlsaXR5XHJcbiAgLnNob3ctZm9yLWxhbmRzY2FwZSxcclxuICAuaGlkZS1mb3ItcG9ydHJhaXQge1xyXG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcclxuXHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhbmRzY2FwZSkge1xyXG4gICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQocG9ydHJhaXQpIHtcclxuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmhpZGUtZm9yLWxhbmRzY2FwZSxcclxuICAuc2hvdy1mb3ItcG9ydHJhaXQge1xyXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG5cclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFuZHNjYXBlKSB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHBvcnRyYWl0KSB7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8vIEludGVybmFsIGNvdW50ZXIgZm9yIGNyZWF0aW5nIHVuaXF1ZSBrZXlmcmFtZSBuYW1lc1xyXG4kLW11aS1jdXN0b206IDA7XHJcblxyXG4vLy8gQ3JlYXRlcyBhIGtleWZyYW1lIGZyb20gb25lIG9yIG1vcmUgZWZmZWN0IGZ1bmN0aW9ucy4gVXNlIHRoaXMgZnVuY3Rpb24gaW5zdGVhZCBvZiBgbXVpLWFuaW1hdGlvbmAgaWYgeW91IHdhbnQgdG8gY3JlYXRlIGEga2V5ZnJhbWUgYW5pbWF0aW9uICp3aXRob3V0KiBhdXRvbWF0aWNhbGx5IGFzc2lnbmluZyBpdCB0byB0aGUgZWxlbWVudC5cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbmFtZSAtIE5hbWUgb2YgdGhlIGtleWZyYW1lLlxyXG4vLy8gQHBhcmFtIHtGdW5jdGlvbn0gJGVmZmVjdHMuLi4gLSBPbmUgb3IgbW9yZSBlZmZlY3QgZnVuY3Rpb25zIHRvIGJ1aWxkIHRoZSBrZXlmcmFtZSB3aXRoLlxyXG5AbWl4aW4gbXVpLWtleWZyYW1lcygkbmFtZSwgJGVmZmVjdHMuLi4pIHtcclxuICAkb2JqOiAtbXVpLXByb2Nlc3MtYXJncygkZWZmZWN0cy4uLik7XHJcbiAgJG9iajogbWFwLXJlbW92ZSgkb2JqLCBuYW1lKTtcclxuXHJcbiAgQGtleWZyYW1lcyAjeyRuYW1lfSB7XHJcbiAgICAvLyBOb3cgaXRlcmF0ZSB0aHJvdWdoIGVhY2gga2V5ZnJhbWUgcGVyY2VudGFnZVxyXG4gICAgQGVhY2ggJHBjdCwgJHByb3BzIGluICRvYmoge1xyXG4gICAgICAjey1tdWkta2V5ZnJhbWUtcGN0KCRwY3QpfSB7XHJcbiAgICAgICAgLy8gTGFzdGx5LCBpdGVyYXRlIHRocm91Z2ggZWFjaCBDU1MgcHJvcGVydHkgd2l0aGluIGEgcGVyY2VudGFnZSBhbmQgcHJpbnQgaXQgb3V0XHJcbiAgICAgICAgQGVhY2ggJHByb3AsICR2YWx1ZSBpbiAkcHJvcHMge1xyXG4gICAgICAgICAgI3skcHJvcH06ICN7JHZhbHVlfTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vLyBDcmVhdGVzIGEgc3RyaW5nIGZvciBhIENTUyBrZXlmcmFtZSwgYnkgY29udmVydGluZyBhIGxpc3Qgb2YgbnVtYmVycyB0byBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHBlcmNlbnRhZ2UgdmFsdWVzLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJGlucHV0IC0gTGlzdCBvZiBudW1iZXJzIHRvIHVzZS5cclxuLy8vIEByZXR1cm4ge1N0cmluZ30gQSBzZXQgb2YgY29tbWEtc2VwYXJhdGVkIHBlcmNlbnRhZ2UgdmFsdWVzLlxyXG4vLy8gQGFjY2VzcyBwcml2YXRlXHJcbkBmdW5jdGlvbiAtbXVpLWtleWZyYW1lLXBjdCgkaW5wdXQpIHtcclxuICAkb3V0cHV0OiAoKTtcclxuXHJcbiAgQGlmIHR5cGUtb2YoJGlucHV0KSA9PSAnbnVtYmVyJyB7XHJcbiAgICAkb3V0cHV0OiAoJGlucHV0ICogMSUpO1xyXG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkaW5wdXQpID09ICdsaXN0JyB7XHJcbiAgICBAZWFjaCAkaSBpbiAkaW5wdXQge1xyXG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgKCRpICogMSUpLCBjb21tYSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuICRvdXRwdXQ7XHJcbn1cclxuXHJcbi8vLyBQcmludHMgdGhlIENTUyBwcm9wZXJ0aWVzIGZyb20gYSBzcGVjaWZpYyBrZXkgaW4gYSBrZXlmcmFtZXMgbWFwLiBVc2VkIHRvIGJvcnJvdyBDU1MgZnJvbSBrZXlmcmFtZSBmdW5jdGlvbnMgZm9yIHVzZSBpbiB0cmFuc2l0aW9ucy5cclxuLy8vIEBwYXJhbSB7TWFwfSAka2YgLSBLZXlmcmFtZSBtYXAgdG8gZXh0cmFjdCBmcm9tLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRrZXkgLSBLZXkgaW4gdGhlIG1hcCB0byBwcmludCB0aGUgQ1NTIG9mLlxyXG4vLy8gQGFjY2VzcyBwcml2YXRlXHJcbkBtaXhpbiAtbXVpLWtleWZyYW1lLWdldCgka2YsICRrZXkpIHtcclxuICAkbWFwOiBtYXAtZ2V0KCRrZiwgJGtleSk7XHJcblxyXG4gIEBlYWNoICRwcm9wLCAkdmFsdWUgaW4gJG1hcCBvciAoKSB7XHJcbiAgICAvLyBTb21lIGtleWZyYW1lIG1hcHMgc3RvcmUgdHJhbnNmb3JtcyBhcyBxdW90ZWQgc3RyaW5nc1xyXG4gICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSAnc3RyaW5nJyB7XHJcbiAgICAgICR2YWx1ZTogdW5xdW90ZSgkdmFsdWUpO1xyXG4gICAgfVxyXG4gICAgI3skcHJvcH06ICR2YWx1ZTtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBSZWZvcm1hdHMgYSBtYXAgY29udGFpbmluZyBrZXlzIHdpdGggYSBsaXN0IG9mIHZhbHVlcywgc28gdGhhdCBlYWNoIGtleSBpcyBhIHNpbmdsZSB2YWx1ZS5cclxuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHNwbGl0IHVwLlxyXG4vLy8gQHJldHVybiB7TWFwfSBBIHJlZm9ybWF0dGVkIG1hcC5cclxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxyXG5AZnVuY3Rpb24gLW11aS1rZXlmcmFtZS1zcGxpdCgkbWFwKSB7XHJcbiAgJG5ldy1tYXA6ICgpO1xyXG5cclxuICAvLyBTcGxpdCBrZXlzIHdpdGggbXVsdGlwbGUgdmFsdWVzIGludG8gaW5kaXZpZHVhbCBrZXlzXHJcbiAgQGVhY2ggJGtleSwgJGl0ZW0gaW4gJG1hcCB7XHJcbiAgICAka2V5LXR5cGU6IHR5cGUtb2YoJGtleSk7XHJcblxyXG4gICAgQGlmICRrZXktdHlwZSA9PSAnbnVtYmVyJyB7XHJcbiAgICAgICRuZXctbWFwOiBtYXAtbWVyZ2UoJG5ldy1tYXAsICgka2V5OiAkaXRlbSkpO1xyXG4gICAgfSBAZWxzZSBpZiAka2V5LXR5cGUgPT0gJ2xpc3QnIHtcclxuICAgICAgQGVhY2ggJGsgaW4gJGtleSB7XHJcbiAgICAgICAgJG5ldy1tYXA6IG1hcC1tZXJnZSgkbmV3LW1hcCwgKCRrOiAkaXRlbSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuICRuZXctbWFwO1xyXG59XHJcblxyXG4vLy8gQ29tYmluZXMgYSBzZXJpZXMgb2Yga2V5ZnJhbWUgb2JqZWN0cyBpbnRvIG9uZS5cclxuLy8vIEBwYXJhbSB7TWFwfSAkbWFwcy4uLiAtIEEgc2VyaWVzIG9mIG1hcHMgdG8gbWVyZ2UsIGFzIGluZGl2aWR1YWwgcGFyYW1ldGVycy5cclxuLy8vIEByZXR1cm4ge01hcH0gQSBjb21iaW5lZCBrZXlmcmFtZSBvYmplY3QuXHJcbi8vLyBAYWNjZXNzIHByaXZhdGVcclxuQGZ1bmN0aW9uIC1tdWkta2V5ZnJhbWUtY29tYmluZSgkbWFwcy4uLikge1xyXG4gICRuZXctbWFwOiAoKTtcclxuXHJcbiAgLy8gSXRlcmF0ZSB0aHJvdWdoIGVhY2ggbWFwIHBhc3NlZCBpblxyXG4gIEBlYWNoICRtYXAgaW4gJG1hcHMge1xyXG4gICAgQGlmIHR5cGUtb2YoJG1hcCkgPT0gJ3N0cmluZycge1xyXG4gICAgICAkbWFwOiBjYWxsKCRtYXApO1xyXG4gICAgfVxyXG5cclxuICAgICRtYXA6IC1tdWkta2V5ZnJhbWUtc3BsaXQoJG1hcCk7XHJcblxyXG4gICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGVhY2gga2V5ZnJhbWUgaW4gdGhlIG1hcFxyXG4gICAgLy8gJGtleSBpcyB0aGUga2V5ZnJhbWUgcGVyY2VudGFnZVxyXG4gICAgLy8gJHZhbHVlIGlzIGEgbWFwIG9mIENTUyBwcm9wZXJ0aWVzXHJcbiAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcCB7XHJcbiAgICAgICRuZXctdmFsdWU6ICgpO1xyXG5cclxuICAgICAgQGlmIG1hcC1oYXMta2V5KCRuZXctbWFwLCAka2V5KSB7XHJcbiAgICAgICAgLy8gSWYgdGhlIG1hcCBhbHJlYWR5IGhhcyB0aGUga2V5ZnJhbWUgJSwgYXBwZW5kIHRoZSBuZXcgcHJvcGVydHlcclxuICAgICAgICAkbmV3LXZhbHVlOiAtbXVpLW1lcmdlLXByb3BlcnRpZXMobWFwLWdldCgkbmV3LW1hcCwgJGtleSksICR2YWx1ZSk7XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIC8vIE90aGVyd2lzZSwgY3JlYXRlIGEgbmV3IG1hcCB3aXRoIHRoZSBuZXcgcHJvcGVydHlcclxuICAgICAgICAkbmV3LXZhbHVlOiAkdmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEZpbmFsbHksIG1lcmdlIHRoZSBtb2RpZmllZCBrZXlmcmFtZSB2YWx1ZSBpbnRvIHRoZSBvdXRwdXQgbWFwXHJcbiAgICAgICRuZXctbWFwOiBtYXAtbWVyZ2UoJG5ldy1tYXAsICgka2V5OiAkbmV3LXZhbHVlKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBNYWtlIGEgbmFtZSBmb3IgdGhlIGtleWZyYW1lc1xyXG4gICQtbXVpLWN1c3RvbTogJC1tdWktY3VzdG9tICsgMSAhZ2xvYmFsO1xyXG4gICRtYXAtbmFtZTogKG5hbWU6ICdjdXN0b20tI3skLW11aS1jdXN0b219Jyk7XHJcbiAgJG5ldy1tYXA6IG1hcC1tZXJnZSgkbmV3LW1hcCwgJG1hcC1uYW1lKTtcclxuXHJcbiAgQHJldHVybiAkbmV3LW1hcDtcclxufVxyXG5cclxuLy8vIENvbWJpbmVzIHR3byBtYXBzIG9mIENTUyBwcm9wZXJ0aWVzIGludG8gb25lIG1hcC4gSWYgYm90aCBtYXBzIGhhdmUgYSB0cmFuc2Zvcm0gcHJvcGVydHksIHRoZSB2YWx1ZXMgZnJvbSBlYWNoIHdpbGwgYmUgY29tYmluZWQgaW50byBvbmUgcHJvcGVydHkuXHJcbi8vLyBAcGFyYW0ge01hcH0gJG9uZSAtIEZpcnN0IG1hcCB0byBtZXJnZS5cclxuLy8vIEBwYXJhbSB7TWFwfSAkdHdvIC0gU2Vjb25kIG1hcCB0byBtZXJnZS5cclxuLy8vIEByZXR1cm4ge01hcH0gQSBjb21iaW5lZCBtYXAuXHJcbi8vLyBAYWNjZXNzIHByaXZhdGVcclxuQGZ1bmN0aW9uIC1tdWktbWVyZ2UtcHJvcGVydGllcygkb25lLCAkdHdvKSB7XHJcbiAgQGlmIG1hcC1oYXMta2V5KCRvbmUsIHRyYW5zZm9ybSkgYW5kIG1hcC1oYXMta2V5KCR0d28sIHRyYW5zZm9ybSkge1xyXG4gICAgJHRyYW5zZm9ybTogam9pbihtYXAtZ2V0KCRvbmUsIHRyYW5zZm9ybSksIG1hcC1nZXQoJHR3bywgdHJhbnNmb3JtKSk7XHJcbiAgICAkb25lOiBtYXAtbWVyZ2UoJG9uZSwgKHRyYW5zZm9ybTogJHRyYW5zZm9ybSkpO1xyXG4gICAgJHR3bzogbWFwLXJlbW92ZSgkdHdvLCB0cmFuc2Zvcm0pO1xyXG4gIH1cclxuXHJcbiAgQHJldHVybiBtYXAtbWVyZ2UoJG9uZSwgJHR3byk7XHJcbn1cclxuIiwi77u/QGltcG9ydCAnZm91bmRhdGlvbi1yZWZlcmVuY2UnO1xyXG5AaW1wb3J0ICdtb3Rpb24tdWknO1xyXG5cclxuQGluY2x1ZGUgbXVpLWtleWZyYW1lcyhmYWRlSW4sIGZhZGUoMCwxKSk7XHJcbkBpbmNsdWRlIG11aS1rZXlmcmFtZXMoem9vbUluLCBmYWRlKDAsMSksIHpvb20oMCwxKSk7XHJcbkBpbmNsdWRlIG11aS1rZXlmcmFtZXMoc2hpZnRab29tLCBmYWRlKDAsMSksIHpvb20oMC45LDEpKTtcclxuQGluY2x1ZGUgbXVpLWtleWZyYW1lcyhzaGlmdFVwLCBmYWRlKDAsMSksIHNsaWRlKGluLCB1cCwgMjUlKSk7XHJcbkBpbmNsdWRlIG11aS1rZXlmcmFtZXMoc2hpZnREb3duLCBmYWRlKDAsMSksIHNsaWRlKGluLCBkb3duLCAyNSUpKTtcclxuQGluY2x1ZGUgbXVpLWtleWZyYW1lcyhzaGlmdExlZnQsIGZhZGUoMCwxKSwgc2xpZGUoaW4sIGxlZnQsIDI1JSkpO1xyXG5AaW5jbHVkZSBtdWkta2V5ZnJhbWVzKHNsaWRlUmlnaHQsIGZhZGUoMCwxKSwgc2xpZGUoaW4sIHJpZ2h0LCAxMDAlKSk7XHJcbkBpbmNsdWRlIG11aS1rZXlmcmFtZXMoaGluZ2UsIGZhZGUoMCwxKSwgaGluZ2UoaW4sIHRvcCkpO1xyXG5cclxuQG1peGluIGFuaW1hdGUoJG5hbWUsICRkdXJhdGlvbiwgJGRlbGF5KSB7XHJcbiAgICBhbmltYXRpb24tbmFtZTokbmFtZTtcclxuICAgIGFuaW1hdGlvbi1kdXJhdGlvbjokZHVyYXRpb247XHJcbiAgICBhbmltYXRpb24tZGVsYXk6JGRlbGF5O1xyXG4gICAgYW5pbWF0aW9uLWZpbGwtbW9kZTpib3RoO1xyXG4gICAgYW5pbWF0aW9uLXBsYXktc3RhdGU6cGF1c2VkO1xyXG4gICAgLmFuaW1hdGUtc3RhcnQgJiB7XHJcbiAgICAgICAgYW5pbWF0aW9uLXBsYXktc3RhdGU6cnVubmluZztcclxuICAgIH1cclxuICAgIC5uby1qcyAmIHtcclxuICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOm5vbmU7XHJcbiAgICB9XHJcbn1cclxuQG1peGluIGFuaW1hdGUtbnRoLWNoaWxkKCRuYW1lLCAkZHVyYXRpb24sICRkZWxheSwgJHNlcmllc0RlbGF5LCAkbiwgJGNoaWxkU2VsZWN0b3IpIHtcclxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJG4ge1xyXG4gICAgICAgICY6bnRoLWNoaWxkKCN7JGl9KSB7XHJcbiAgICAgICAgICAgICYgI3skY2hpbGRTZWxlY3Rvcn0ge1xyXG4gICAgICAgICAgICAgICAgJGRlbGF5OiAkZGVsYXkgKyAkc2VyaWVzRGVsYXk7XHJcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBhbmltYXRlKCRuYW1lLCAkZHVyYXRpb24sICRkZWxheSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbi8vIHNldHRpbmdzXHJcbiRhbmltYXRlLW1lbnUtaXRlbS1udW1iZXI6IDggIWRlZmF1bHQ7XHJcblxyXG5cclxuLy8gYW5pbWF0aW9uIHNlcmllc1xyXG4jYmFubmVyIC5iYW5uZXItYmtnICAgICB7IEBpbmNsdWRlIGFuaW1hdGUoc2hpZnRab29tLCAwLjVzLCAwLjI1cykgfVxyXG4jYmFubmVyIC5nbmwtbG9nbyBpbWcgICB7IEBpbmNsdWRlIGFuaW1hdGUoc2hpZnRVcCwgMXMsIDAuNXMpIH1cclxuI2Jhbm5lciAudGl0bGUgICAgICAgICAgeyBAaW5jbHVkZSBhbmltYXRlKGZhZGVJbiwgMXMsIDAuNzVzKSB9XHJcbiNiYW5uZXIgLnRpdGxlIGltZyAgICAgIHsgQGluY2x1ZGUgYW5pbWF0ZShzaGlmdFVwLCAxcywgMXMpIH1cclxuI2Jhbm5lciAudGl0bGUgc3BhbiAgICAgeyBAaW5jbHVkZSBhbmltYXRlKHNoaWZ0VXAsIDFzLCAxLjI1cykgfVxyXG5cclxuQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KSB7XHJcbiAgICAjbWFpbm1lbnUgLm1lbnUgICAgIHsgQGluY2x1ZGUgYW5pbWF0ZShzbGlkZVJpZ2h0LCAwLjVzLCAwKSB9XHJcbn1cclxuQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcclxuICAgICNtYWlubWVudSAubWVudSAgICAgeyBAaW5jbHVkZSBhbmltYXRlKHNsaWRlUmlnaHQsIDFzLCAxLjI1cykgfVxyXG4gICAgI21haW5tZW51IC5tZW51IGxpICB7IEBpbmNsdWRlIGFuaW1hdGUtbnRoLWNoaWxkKHNoaWZ0VXAsIDFzLCAxLjc1cywgMC4ycywgJGFuaW1hdGUtbWVudS1pdGVtLW51bWJlciwgJz5hJyl9XHJcbn1cclxuXHJcblxyXG4jbWluaXN0ZXIgaW1nICAgICAgICAgICB7IEBpbmNsdWRlIGFuaW1hdGUoc2hpZnRMZWZ0LCAxcywgMCkgfVxyXG4jbWluaXN0ZXIgaDIgICAgICAgICAgICB7IEBpbmNsdWRlIGFuaW1hdGUoaGluZ2UsIDAuNzVzLCAwLjVzKSB9XHJcbiNtaW5pc3RlciBwICAgICAgICAgICAgIHsgQGluY2x1ZGUgYW5pbWF0ZShzaGlmdERvd24sIDAuNzVzLCAxcykgfVxyXG5cclxuLypcclxuI2NvbW1pdHRlZSBoMiAgICAgICAgICAgeyBAaW5jbHVkZSBhbmltYXRlKGhpbmdlLCAwLjc1cywgMCkgfVxyXG4jY29tbWl0dGVlIHAgICAgICAgICAgICB7IEBpbmNsdWRlIGFuaW1hdGUoc2hpZnREb3duLCAwLjc1cywgMC41cykgfVxyXG5cclxuXHJcbiNmcmFtZXdvcmsgaDIgICAgICAgICAgIHsgQGluY2x1ZGUgYW5pbWF0ZShoaW5nZSwgMC43NXMsIDApIH1cclxuI2ZyYW1ld29yayBwICAgICAgICAgICAgeyBAaW5jbHVkZSBhbmltYXRlKHNoaWZ0RG93biwgMC43NXMsIDAuNXMpIH1cclxuI2ZyYW1ld29yayAuYnV0dG9uICAgICAgeyBAaW5jbHVkZSBhbmltYXRlKHpvb21JbiwgMXMsIDAuNzVzKSB9XHJcbiovIiwiQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnYXBwLXVpLWljb25zJztcbiAgc3JjOlxuICAgIHVybCgnLi4vZm9udHMvYXBwLXVpLWljb25zLnR0Zj9oOGgxMzEnKSBmb3JtYXQoJ3RydWV0eXBlJyksXG4gICAgdXJsKCcuLi9mb250cy9hcHAtdWktaWNvbnMud29mZj9oOGgxMzEnKSBmb3JtYXQoJ3dvZmYnKSxcbiAgICB1cmwoJy4uL2ZvbnRzL2FwcC11aS1pY29ucy5zdmc/aDhoMTMxI2FwcC11aS1pY29ucycpIGZvcm1hdCgnc3ZnJyk7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuW2NsYXNzXj1cImljb24tXCJdLCBbY2xhc3MqPVwiIGljb24tXCJdIHtcbiAgLyogdXNlICFpbXBvcnRhbnQgdG8gcHJldmVudCBpc3N1ZXMgd2l0aCBicm93c2VyIGV4dGVuc2lvbnMgdGhhdCBjaGFuZ2UgZm9udHMgKi9cbiAgZm9udC1mYW1pbHk6ICdhcHAtdWktaWNvbnMnICFpbXBvcnRhbnQ7XG4gIHNwZWFrOiBub25lO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgbGluZS1oZWlnaHQ6IDE7XG5cbiAgLyogQmV0dGVyIEZvbnQgUmVuZGVyaW5nID09PT09PT09PT09ICovXG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xufVxuXG4uaWNvbi1maWxlczpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZTkwMFwiO1xufVxuXG4iLCLvu79AaW1wb3J0ICdmb3VuZGF0aW9uLXJlZmVyZW5jZSc7XHJcblxyXG4kbWVudS13aWR0aDogcmVtLWNhbGMoMjIwKSAhZGVmYXVsdDtcclxuXHJcbiRzZWN0aW9uLWJhY2tncm91bmRzOiAoXHJcbiAgICBsaWdodC1ncmF5OiAjZjBmMGYwLFxyXG4gICAgZGFyay1ncmF5OiAjNTU1NTU1LFxyXG4gICAgY29sb3JBOiAjMzc0MjU0XHJcbikgIWRlZmF1bHQ7XHJcblxyXG4uc2VjdGlvbiB7XHJcbiAgICBAaW5jbHVkZSBncmlkLWNvbHVtbi1yb3coMCk7XHJcbiAgICBtYXgtd2lkdGg6bm9uZTtcclxuXHJcbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRzZWN0aW9uLWJhY2tncm91bmRzIHtcclxuICAgICAgICAmLiN7JG5hbWV9IHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjokY29sb3I7XHJcbiAgICAgICAgICAgIGNvbG9yOmZvcmVncm91bmQoJGNvbG9yKTtcclxuXHJcbiAgICAgICAgICAgIGEge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6Zm9yZWdyb3VuZCgkY29sb3IsICRhbmNob3ItY29sb3IsICR3aGl0ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuLmNvbnRlbnQge1xyXG4gICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tcm93KDApO1xyXG4gICAgbWF4LXdpZHRoOm5vbmU7XHJcbiAgICBwYWRkaW5nOnJlbS1jYWxjKDY0KSByZW0tY2FsYyg0OCk7XHJcblxyXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcclxuICAgICAgICBwYWRkaW5nOnJlbS1jYWxjKDgwKSByZW0tY2FsYyg4OCkgcmVtLWNhbGMoODApICRtZW51LXdpZHRoK3JlbS1jYWxjKDY0KTtcclxuICAgIH0gXHJcblxyXG4gICAgLnRpdGxlIHtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOnJlbS1jYWxjKDMyKTtcclxuICAgIH1cclxuXHJcbiAgICBoNCxoNSxoNiB7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTpyZW0tY2FsYyg0KTtcclxuICAgIH1cclxuXHJcbiAgICAubGF5b3V0IHtcclxuICAgICAgICBAaW5jbHVkZSBncmlkLXJvdygxMik7XHJcblxyXG4gICAgICAgIC5waG90by1sZWZ0IHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4oMTIsMCk7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XHJcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBncmlkLWNvbHVtbi1zaXplKDMpO1xyXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tcG9zaXRpb24oLTkpO1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDpyZW0tY2FsYygzMik7XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC5ib2R5IHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4oMTIsIDApO1xyXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XHJcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBncmlkLWNvbHVtbi1zaXplKDkpO1xyXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tcG9zaXRpb24oMyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdWwuY29tbWl0dGVlLW1lbWJlcnMge1xyXG4gICAgICAgIGxpc3Qtc3R5bGU6bm9uZTtcclxuICAgICAgICBtYXJnaW46MDsgbWFyZ2luLWxlZnQ6cmVtLWNhbGMoMTIpO1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OjEuMjU7XHJcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgZ3JpZC1sYXlvdXQoMiwgJ2xpJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmID4gbGkge1xyXG4gICAgICAgICAgICBwYWRkaW5nOjAgcmVtLWNhbGMoMzIpIHJlbS1jYWxjKDIpIHJlbS1jYWxjKDMyKTtcclxuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6NDhweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMTUpO1xyXG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOnJlbS1jYWxjKDMyKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC5waG90byB7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OmJsb2NrO1xyXG4gICAgICAgICAgICAgICAgZmxvYXQ6bGVmdDtcclxuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDpyZW0tY2FsYygxNik7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOnJlbS1jYWxjKDE2KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAubmFtZSB7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OmJsb2NrO1xyXG4gICAgICAgICAgICAgICAgZm9udC1zaXplOnJlbS1jYWxjKDIyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAudGl0bGUge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTpibG9jaztcclxuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTpyZW0tY2FsYygxOCk7XHJcbiAgICAgICAgICAgICAgICBmb250LXN0eWxlOml0YWxpYztcclxuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206cmVtLWNhbGMoMTIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC5jb21wYW55IHtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXk6YmxvY2s7XHJcbiAgICAgICAgICAgICAgICBmb250LXNpemU6cmVtLWNhbGMoMTgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAuYXJ0aWNsZSB7XHJcbiAgICAgICAgbWFyZ2luOnJlbS1jYWxjKDMyKSAwO1xyXG4gICAgICAgIGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZGQ7XHJcbiAgICAgICAgcGFkZGluZy1ib3R0b206cmVtLWNhbGMoMzIpO1xyXG5cclxuICAgICAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgICAgICAgYm9yZGVyLXRvcDoxcHggc29saWQgI2RkZDtcclxuICAgICAgICAgICAgcGFkZGluZy10b3A6cmVtLWNhbGMoMzIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaDMge1xyXG4gICAgICAgICAgICAuZGF0ZSB7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OmJsb2NrO1xyXG4gICAgICAgICAgICAgICAgZm9udC1zaXplOnJlbS1jYWxjKDE2KTtcclxuICAgICAgICAgICAgICAgIGZvbnQtc3R5bGU6aXRhbGljO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC50aXRsZSB7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OmJsb2NrO1xyXG4gICAgICAgICAgICAgICAgZm9udC1zaXplOnJlbS1jYWxjKDIyKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHAge1xyXG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOjA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5jZW50ZXIge1xyXG4gICAgICAgIHRleHQtYWxpZ246Y2VudGVyO1xyXG4gICAgfVxyXG5cclxuICAgIC5idXR0b24ge1xyXG4gICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xyXG4gICAgICAgIGNvbG9yOiR3aGl0ZTtcclxuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAkd2hpdGU7XHJcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XHJcbiAgICAgICAgcGFkZGluZzpyZW0tY2FsYygxNik7IHBhZGRpbmctcmlnaHQ6cmVtLWNhbGMoMzIpO1xyXG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4yNXMgZWFzZS1vdXQsIGNvbG9yIDAuMjVzIGVhc2Utb3V0O1xyXG4gICAgICAgIHRleHQtYWxpZ246Y2VudGVyO1xyXG4gICAgICAgIG1hcmdpbjpyZW0tY2FsYygxNikgYXV0bztcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMC4xKTtcclxuICAgICAgICB0ZXh0LWRlY29yYXRpb246bm9uZTtcclxuXHJcbiAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwwLjA1KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNwYW4ge1xyXG4gICAgICAgICAgICBkaXNwbGF5OmJsb2NrO1xyXG5cclxuICAgICAgICAgICAgJltjbGFzc149XCJpY29uLVwiXSwgJltjbGFzcyo9XCIgaWNvbi1cIl0ge1xyXG4gICAgICAgICAgICAgICAgZm9udC1zaXplOnJlbS1jYWxjKDgwKTtcclxuXHJcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZmxvYXQ6bGVmdDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAmLnRleHQge1xyXG4gICAgICAgICAgICAgICAgZm9udC1zaXplOnJlbS1jYWxjKDE4KTtcclxuICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOnJlbS1jYWxjKDgpO1xyXG5cclxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDpyZW0tY2FsYyg5Nik7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOnJlbS1jYWxjKDIyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAmLnN1YnRleHQge1xyXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OnJlbS1jYWxjKDk2KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0YWJsZSB7XHJcbiAgICAgICAgd2lkdGg6MTAwJTtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOnJlbS1jYWxjKDE2KTtcclxuXHJcbiAgICAgICAgdGgge1xyXG4gICAgICAgICAgICB0ZXh0LWFsaWduOmxlZnQ7XHJcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0Om5vcm1hbDtcclxuICAgICAgICAgICAgZm9udC1zaXplOnJlbS1jYWxjKDIwKTtcclxuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbToycHggc29saWQgJHdoaXRlO1xyXG4gICAgICAgICAgICBwYWRkaW5nOjAgcmVtLWNhbGMoOCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRkIHtcclxuICAgICAgICAgICAgcGFkZGluZzpyZW0tY2FsYyg4KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdWwge1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OnJlbS1jYWxjKDMyKTtcclxuICAgIH1cclxufVxyXG5cclxuICAgIC5kYXJrLWdyYXkgYSB7XHJcbiAgICAgICAgY29sb3I6JHdoaXRlO1xyXG4gICAgfSIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBncmlkXHJcbi8vLy9cclxuXHJcbi8vLyBDaGFuZ2UgdGhlIGJlaGF2aW9yIG9mIGNvbHVtbnMgZGVmaW5lZCBpbnNpZGUgdGhpcyBtaXhpbiB0byB1c2UgYSBkaWZmZXJlbnQgY29sdW1uIGNvdW50LlxyXG4vLy8gQGNvbnRlbnRcclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGNvbHVtbnMgLSBOdW1iZXIgb2YgY29sdW1ucyB0byB1c2UuXHJcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRyb290IFtmYWxzZV1cclxuLy8vICAgSWYgYGZhbHNlYCwgc2VsZWN0b3JzIGluc2lkZSB0aGlzIG1peGluIHdpbGwgbmVzdCBpbnNpZGUgdGhlIHBhcmVudCBzZWxlY3Rvci5cclxuLy8vICAgSWYgYHRydWVgLCBzZWxlY3RvcnMgd2lsbCBub3QgbmVzdC5cclxuQG1peGluIGdyaWQtY29udGV4dChcclxuICAkY29sdW1ucyxcclxuICAkcm9vdDogZmFsc2VcclxuKSB7XHJcbiAgLy8gU3RvcmUgdGhlIGN1cnJlbnQgY29sdW1uIGNvdW50IHNvIGl0IGNhbiBiZSByZS1zZXQgbGF0ZXJcclxuICAkb2xkLWdyaWQtY29sdW1uLWNvdW50OiAkZ3JpZC1jb2x1bW4tY291bnQ7XHJcbiAgJGdyaWQtY29sdW1uLWNvdW50OiAkY29sdW1ucyAhZ2xvYmFsO1xyXG5cclxuICBAaWYgJHJvb3Qge1xyXG4gICAgQGF0LXJvb3QgeyBAY29udGVudDsgfVxyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICBAY29udGVudDtcclxuICB9XHJcblxyXG4gIC8vIFJlc3RvcmUgdGhlIG9sZCBjb2x1bW4gY291bnRcclxuICAkZ3JpZC1jb2x1bW4tY291bnQ6ICRvbGQtZ3JpZC1jb2x1bW4tY291bnQgIWdsb2JhbDtcclxufVxyXG5cclxuLy8vIENyZWF0ZXMgYSBncmlkIHJvdy5cclxuLy8vIEBjb250ZW50XHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRjb2x1bW5zIFtudWxsXSAtIENvbHVtbiBjb3VudCBmb3IgdGhpcyByb3cuIGBudWxsYCB3aWxsIHVzZSB0aGUgZGVmYXVsdCBjb2x1bW4gY291bnQuXHJcbi8vLyBAcGFyYW0ge0tleXdvcmRzfSAkYmVoYXZpb3IgW251bGxdXHJcbi8vLyAgIE1vZGlmaWNhdGlvbnMgdG8gdGhlIGRlZmF1bHQgZ3JpZCBzdHlsZXMuIGBuZXN0YCBpbmRpY2F0ZXMgdGhlIHJvdyB3aWxsIGJlIHBsYWNlZCBpbnNpZGUgYW5vdGhlciByb3cuIGBjb2xsYXBzZWAgaW5kaWNhdGVzIHRoYXQgdGhlIGNvbHVtbnMgaW5zaWRlIHRoaXMgcm93IHdpbGwgbm90IGhhdmUgcGFkZGluZy4gYG5lc3QgY29sbGFwc2VgIGNvbWJpbmVzIGJvdGggYmVoYXZpb3JzLlxyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCBbJGdyaWQtcm93LXdpZHRoXSAtIE1heGltdW0gd2lkdGggb2YgdGhlIHJvdy5cclxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGNmIFt0cnVlXSAtIFdoZXRoZXIgb3Igbm90IHRvIGluY2x1ZGUgYSBjbGVhcmZpeC5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZ3V0dGVyIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIEd1dHRlciB0byB1c2Ugd2hlbiBpbnZlcnRpbmcgbWFyZ2lucywgaW4gY2FzZSB0aGUgcm93IGlzIG5lc3RlZC5cclxuQG1peGluIGdyaWQtcm93KFxyXG4gICRjb2x1bW5zOiBudWxsLFxyXG4gICRiZWhhdmlvcjogbnVsbCxcclxuICAkd2lkdGg6ICRncmlkLXJvdy13aWR0aCxcclxuICAkY2Y6IHRydWUsXHJcbiAgJGd1dHRlcjogJGdyaWQtY29sdW1uLWd1dHRlclxyXG4pIHtcclxuICAkbWFyZ2luOiBhdXRvO1xyXG5cclxuICBAaWYgaW5kZXgoJGJlaGF2aW9yLCBuZXN0KSAhPSBudWxsIHtcclxuICAgIEBpbmNsdWRlIGdyaWQtcm93LW5lc3QoJGd1dHRlcik7XHJcblxyXG4gICAgQGlmIGluZGV4KCRiZWhhdmlvciwgY29sbGFwc2UpICE9IG51bGwge1xyXG4gICAgICBtYXJnaW4tbGVmdDogMDtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG4gICAgfVxyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICBtYXgtd2lkdGg6ICR3aWR0aDtcclxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG4gIH1cclxuXHJcbiAgQGlmICRjZiB7XHJcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcclxuICB9XHJcblxyXG4gIEBpZiAkY29sdW1ucyAhPSBudWxsIHtcclxuICAgIEBpbmNsdWRlIGdyaWQtY29udGV4dCgkY29sdW1ucykge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vLyBJbnZlcnRzIHRoZSBtYXJnaW5zIG9mIGEgcm93IHRvIG5lc3QgaXQgaW5zaWRlIG9mIGEgY29sdW1uLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TWFwfG51bGx9ICRndXR0ZXIgW251bGxdIC0gR3V0dGVyIHZhbHVlIHRvIHVzZSB3aGVuIGludmVydGluZyB0aGUgbWFyZ2lucy4gU2V0IHRvIGBudWxsYCB0byByZWZlciB0byB0aGUgcmVzcG9uc2l2ZSBndXR0ZXIgc2V0dGluZ3MuXHJcbkBtaXhpbiBncmlkLXJvdy1uZXN0KCRndXR0ZXI6ICRncmlkLWNvbHVtbi1ndXR0ZXIpIHtcclxuICBAaWYgdHlwZS1vZigkZ3V0dGVyKSA9PSAnbnVtYmVyJyB7XHJcbiAgICAkZ3V0dGVyOiAoJC16Zi16ZXJvLWJyZWFrcG9pbnQ6ICRndXR0ZXIpO1xyXG4gIH1cclxuXHJcbiAgQGVhY2ggJGJyZWFrcG9pbnQsICR2YWx1ZSBpbiAkZ3V0dGVyIHtcclxuICAgICRtYXJnaW46IHJlbS1jYWxjKCR2YWx1ZSkgLyAyICogLTE7XHJcblxyXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYnJlYWtwb2ludCkge1xyXG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbjtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgZ3JpZFxyXG4vLy8vXHJcblxyXG4vLy8gU2V0IHRoZSB3aWR0aCBvZiBhIGdyaWQgY29sdW1uLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICR3aWR0aCBbJGdyaWQtY29sdW1uLWNvdW50XSAtIFdpZHRoIHRvIG1ha2UgdGhlIGNvbHVtbi4gWW91IGNhbiBwYXNzIGluIGFueSB2YWx1ZSBhY2NlcHRlZCBieSB0aGUgYGdyaWQtY29sdW1uKClgIGZ1bmN0aW9uLCBzdWNoIGFzIGA2YCwgYDUwJWAsIG9yIGAxIG9mIDJgLlxyXG5AbWl4aW4gZ3JpZC1jb2x1bW4tc2l6ZShcclxuICAkY29sdW1uczogJGdyaWQtY29sdW1uLWNvdW50XHJcbikge1xyXG4gIHdpZHRoOiBncmlkLWNvbHVtbigkY29sdW1ucyk7XHJcbn1cclxuXHJcbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi1zaXplKClgLlxyXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLXNpemVcclxuQG1peGluIGdyaWQtY29sLXNpemUoXHJcbiAgJGNvbHVtbnM6ICRncmlkLWNvbHVtbi1jb3VudFxyXG4pIHtcclxuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1zaXplKCRjb2x1bW5zKTtcclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgZ3JpZFxyXG4vLy8vXHJcblxyXG4vLy8gQ2FsY3VsYXRlcyB0aGUgd2lkdGggb2YgYSBjb2x1bW4gYmFzZWQgb24gYSBudW1iZXIgb2YgZmFjdG9ycy5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkY29sdW1uc1xyXG4vLy8gICBXaWR0aCBvZiB0aGUgY29sdW1uLiBBY2NlcHRzIG11bHRpcGxlIHZhbHVlczpcclxuLy8vICAgLSBBIHBlcmNlbnRhZ2UgdmFsdWUgd2lsbCBtYWtlIHRoZSBjb2x1bW4gdGhhdCBleGFjdCBzaXplLlxyXG4vLy8gICAtIEEgc2luZ2xlIGRpZ2l0IHdpbGwgbWFrZSB0aGUgY29sdW1uIHNwYW4gdGhhdCBudW1iZXIgb2YgY29sdW1ucyB3aWRlLCB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBjb2x1bW4gY291bnQgb2YgdGhlIHBhcmVudCByb3cuXHJcbi8vLyAgIC0gQSBzdHJpbmcgb2YgdGhlIGZvcm1hdCBcInggb2YgeVwiIHdpbGwgbWFrZSBhIGNvbHVtbiB0aGF0IGlzICp4KiBjb2x1bW5zIHdpZGUsIGFzc3VtaW5nICp5KiB0b3RhbCBjb2x1bW5zIGZvciB0aGUgcGFyZW50LlxyXG4vLy9cclxuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IEEgY2FsY3VsYXRlZCBwZXJjZW50YWdlIHZhbHVlLlxyXG5AZnVuY3Rpb24gZ3JpZC1jb2x1bW4oJGNvbHVtbnMpIHtcclxuICAkd2lkdGg6IDAlO1xyXG5cclxuICAvLyBQYXJzaW5nIHBlcmNlbnRzLCBkZWNpbWFscywgYW5kIGNvbHVtbiBjb3VudHNcclxuICBAaWYgdHlwZS1vZigkY29sdW1ucykgPT0gJ251bWJlcicge1xyXG4gICAgQGlmIHVuaXQoJGNvbHVtbnMpID09ICclJyB7XHJcbiAgICAgICR3aWR0aDogJGNvbHVtbnM7XHJcbiAgICB9XHJcbiAgICBAZWxzZSBpZiAkY29sdW1ucyA8IDEge1xyXG4gICAgICAkd2lkdGg6IHBlcmNlbnRhZ2UoJGNvbHVtbnMpO1xyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICAkd2lkdGg6IHBlcmNlbnRhZ2UoJGNvbHVtbnMgLyAkZ3JpZC1jb2x1bW4tY291bnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gUGFyc2luZyBcIm4gb2YgblwiIGV4cHJlc3Npb25zXHJcbiAgQGVsc2UgaWYgdHlwZS1vZigkY29sdW1ucykgPT0gJ2xpc3QnIHtcclxuICAgIEBpZiBsZW5ndGgoJGNvbHVtbnMpICE9IDMge1xyXG4gICAgICBAZXJyb3IgJ1dyb25nIHN5bnRheCBmb3IgZ3JpZC1jb2x1bW4oKS4gVXNlIHRoZSBmb3JtYXQgXCJuIG9mIG5cIi4nO1xyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICAkd2lkdGg6IHBlcmNlbnRhZ2UobnRoKCRjb2x1bW5zLCAxKSAvIG50aCgkY29sdW1ucywgMykpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gQW55dGhpbmcgZWxzZSBpcyBpbmNvcnJlY3RcclxuICBAZWxzZSB7XHJcbiAgICBAZXJyb3IgJ1dyb25nIHN5bnRheCBmb3IgZ3JpZC1jb2x1bW4oKS4gVXNlIGEgbnVtYmVyLCBkZWNpbWFsLCBwZXJjZW50YWdlLCBvciBcIm4gb2YgblwiLic7XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuICR3aWR0aDtcclxufVxyXG5cclxuLy8vIENyZWF0ZXMgYSBncmlkIGNvbHVtbi5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge01peGVkfSAkY29sdW1ucyBbJGdyaWQtY29sdW1uLWNvdW50XSAtIFdpZHRoIG9mIHRoZSBjb2x1bW4uIFJlZmVyIHRvIHRoZSBgZ3JpZC1jb2x1bW4oKWAgZnVuY3Rpb24gdG8gc2VlIHBvc3NpYmxlIHZhbHVlcy5cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZ3V0dGVyIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIFNwYWNpbmcgYmV0d2VlbiBjb2x1bW5zLlxyXG5AbWl4aW4gZ3JpZC1jb2x1bW4oXHJcbiAgJGNvbHVtbnM6ICRncmlkLWNvbHVtbi1jb3VudCxcclxuICAkZ3V0dGVyOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXHJcbikge1xyXG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLXNpemUoJGNvbHVtbnMpO1xyXG4gIGZsb2F0OiAkZ2xvYmFsLWxlZnQ7XHJcblxyXG4gIC8vIEd1dHRlcnNcclxuICBAaWYgdHlwZS1vZigkZ3V0dGVyKSA9PSAnbWFwJyB7XHJcbiAgICBAZWFjaCAkYnJlYWtwb2ludCwgJHZhbHVlIGluICRndXR0ZXIge1xyXG4gICAgICAkcGFkZGluZzogcmVtLWNhbGMoJHZhbHVlKSAvIDI7XHJcblxyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicmVha3BvaW50KSB7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcclxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBAZWxzZSBpZiB0eXBlLW9mKCRndXR0ZXIpID09ICdudW1iZXInIGFuZCBzdHJpcC11bml0KCRndXR0ZXIpID4gMCB7XHJcbiAgICAkcGFkZGluZzogcmVtLWNhbGMoJGd1dHRlcikgLyAyO1xyXG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcclxuICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xyXG4gIH1cclxuXHJcbiAgLy8gTGFzdCBjb2x1bW4gYWxpZ25tZW50XHJcbiAgQGlmICRncmlkLWNvbHVtbi1hbGlnbi1lZGdlIHtcclxuICAgICY6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSB7XHJcbiAgICAgIGZsb2F0OiAkZ2xvYmFsLXJpZ2h0O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8vIENyZWF0ZXMgYSBncmlkIGNvbHVtbiByb3cuIFRoaXMgaXMgdGhlIGVxdWl2YWxlbnQgb2YgYWRkaW5nIGAucm93YCBhbmQgYC5jb2x1bW5gIHRvIHRoZSBzYW1lIGVsZW1lbnQuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRndXR0ZXIgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gV2lkdGggb2YgdGhlIGd1dHRlcnMgb24gZWl0aGVyIHNpZGUgb2YgdGhlIGNvbHVtbiByb3cuXHJcbkBtaXhpbiBncmlkLWNvbHVtbi1yb3coXHJcbiAgJGd1dHRlcjogJGdyaWQtY29sdW1uLWd1dHRlclxyXG4pIHtcclxuICBAaW5jbHVkZSBncmlkLXJvdztcclxuICBAaW5jbHVkZSBncmlkLWNvbHVtbigkZ3V0dGVyOiAkZ3V0dGVyKTtcclxuXHJcbiAgJixcclxuICAmOmxhc3QtY2hpbGQge1xyXG4gICAgZmxvYXQ6IG5vbmU7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4oKWAuXHJcbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW5cclxuQGZ1bmN0aW9uIGdyaWQtY29sKFxyXG4gICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW4tY291bnRcclxuKSB7XHJcbiAgQHJldHVybiBncmlkLWNvbHVtbigkY29sdW1ucyk7XHJcbn1cclxuXHJcbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbigpYC5cclxuLy8vIEBhbGlhcyBncmlkLWNvbHVtblxyXG5AbWl4aW4gZ3JpZC1jb2woXHJcbiAgJGNvbHVtbnM6ICRncmlkLWNvbHVtbi1jb3VudCxcclxuICAkZ3V0dGVyOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXHJcbikge1xyXG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uKCRjb2x1bW5zLCAkZ3V0dGVyKTtcclxufVxyXG5cclxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLXJvdygpYC5cclxuLy8vIEBhbGlhcyBncmlkLWNvbHVtbi1yb3dcclxuQG1peGluIGdyaWQtY29sLXJvdyhcclxuICAkZ3V0dGVyOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXHJcbikge1xyXG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLXJvdygkZ3V0dGVyKTtcclxufVxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXHJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cclxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXHJcblxyXG4vLy8vXHJcbi8vLyBAZ3JvdXAgZ3JpZFxyXG4vLy8vXHJcblxyXG4vLy8gUmVwb3NpdGlvbiBhIGNvbHVtbi5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcnxLZXl3b3JkfSAkcG9zaXRpb24gLSBEaXJlY3Rpb24gYW5kIGFtb3VudCB0byBtb3ZlLiBUaGUgY29sdW1uIHdpbGwgbW92ZSBlcXVhbCB0byB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbiBjb3VudCBzcGVjaWZpZWQuIEEgcG9zaXRpdmUgbnVtYmVyIHdpbGwgcHVzaCB0aGUgY29sdW1uIHRvIHRoZSByaWdodCwgd2hpbGUgYSBuZWdhdGl2ZSBudW1iZXIgd2lsbCBwdWxsIGl0IHRvIHRoZSBsZWZ0LiBTZXQgdG8gY2VudGVyIHRvIGNlbnRlciB0aGUgY29sdW1uLlxyXG5AbWl4aW4gZ3JpZC1jb2x1bW4tcG9zaXRpb24oJHBvc2l0aW9uKSB7XHJcbiAgQGlmIHR5cGUtb2YoJHBvc2l0aW9uKSA9PSAnbnVtYmVyJyB7XHJcbiAgICAkb2Zmc2V0OiBwZXJjZW50YWdlKCRwb3NpdGlvbiAvICRncmlkLWNvbHVtbi1jb3VudCk7XHJcblxyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgI3skZ2xvYmFsLWxlZnR9OiAkb2Zmc2V0O1xyXG4gIH1cclxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gY2VudGVyIHtcclxuICAgICYsICY6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSB7XHJcbiAgICAgIGZsb2F0OiBub25lO1xyXG4gICAgICBjbGVhcjogYm90aDtcclxuICAgIH1cclxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICBAd2FybiAnV3Jvbmcgc3ludGF4IGZvciBncmlkLWNvbHVtbi1wb3NpdGlvbigpLiBFbnRlciBhIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIG51bWJlciwgb3IgY2VudGVyLic7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gUmVzZXQgYSBwb3NpdGlvbiBkZWZpbml0aW9uLlxyXG5AbWl4aW4gZ3JpZC1jb2x1bW4tdW5wb3NpdGlvbiB7XHJcbiAgcG9zaXRpb246IHN0YXRpYztcclxuICBtYXJnaW4tbGVmdDogMDtcclxuICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgZmxvYXQ6IGxlZnQ7XHJcbn1cclxuXHJcbi8vLyBPZmZzZXRzIGEgY29sdW1uIHRvIHRoZSByaWdodCBieSBgJG5gIGNvbHVtbnMuXHJcbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkbiAtIFdpZHRoIHRvIG9mZnNldCBieS4gWW91IGNhbiBwYXNzIGluIGFueSB2YWx1ZSBhY2NlcHRlZCBieSB0aGUgYGdyaWQtY29sdW1uKClgIG1peGluLCBzdWNoIGFzIGA2YCwgYDUwJWAsIG9yIGAxIG9mIDJgLlxyXG5AbWl4aW4gZ3JpZC1jb2x1bW4tb2Zmc2V0KCRuKSB7XHJcbiAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogZ3JpZC1jb2x1bW4oJG4pO1xyXG59XHJcblxyXG4vLy8gRGlzYWJsZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGUgbGFzdCBjb2x1bW4gaW4gYSByb3cgYWxpZ25pbmcgdG8gdGhlIG9wcG9zaXRlIGVkZ2UuXHJcbkBtaXhpbiBncmlkLWNvbHVtbi1lbmQge1xyXG4gIC8vIFRoaXMgZXh0cmEgc3BlY2lmaWNpdHkgaXMgcmVxdWlyZWQgZm9yIHRoZSBwcm9wZXJ0eSB0byBiZSBhcHBsaWVkXHJcbiAgJjpsYXN0LWNoaWxkOmxhc3QtY2hpbGQge1xyXG4gICAgZmxvYXQ6ICRnbG9iYWwtbGVmdDtcclxuICB9XHJcbn1cclxuXHJcbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi1wb3NpdGlvbigpYC5cclxuLy8vIEBhbGlhcyBncmlkLWNvbHVtbi1wb3NpdGlvblxyXG5AbWl4aW4gZ3JpZC1jb2wtcG9zKCRwb3NpdGlvbikge1xyXG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLXBvc2l0aW9uKCRwb3NpdGlvbik7XHJcbn1cclxuXHJcbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi11bnBvc2l0aW9uKClgLlxyXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLXVucG9zaXRpb25cclxuQG1peGluIGdyaWQtY29sLXVucG9zIHtcclxuICBAaW5jbHVkZSBncmlkLWNvbHVtbi11bnBvc2l0aW9uO1xyXG59XHJcblxyXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tb2Zmc2V0KClgLlxyXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLW9mZnNldFxyXG5AbWl4aW4gZ3JpZC1jb2wtb2ZmKCRuKSB7XHJcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tb2Zmc2V0KCRuKTtcclxufVxyXG5cclxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLWVuZCgpYC5cclxuLy8vIEBhbGlhcyBncmlkLWNvbHVtbi1lbmRcclxuQG1peGluIGdyaWQtY29sLWVuZCB7XHJcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZW5kO1xyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBncmlkXHJcbi8vLy9cclxuXHJcbi8vLyBTaXplcyBjaGlsZCBlbGVtZW50cyBzbyB0aGF0IGAkbmAgbnVtYmVyIG9mIGl0ZW1zIGFwcGVhciBvbiBlYWNoIHJvdy5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJG4gLSBOdW1iZXIgb2YgZWxlbWVudHMgdG8gZGlzcGxheSBwZXIgcm93LlxyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWxlY3RvciBbJy5jb2x1bW4nXSAtIFNlbGVjdG9yKHMpIHRvIHVzZSBmb3IgY2hpbGQgZWxlbWVudHMuXHJcbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkZ3V0dGVyXHJcbi8vLyAgIFRoZSBndXR0ZXIgdG8gYXBwbHkgdG8gY2hpbGQgZWxlbWVudHMuIEFjY2VwdHMgbXVsdGlwbGUgdmFsdWVzOlxyXG4vLy8gICAtICRncmlkLWNvbHVtbi1ndXR0ZXIgd2lsbCB1c2UgdGhlIHZhbHVlcyBpbiB0aGUgJGdyaWQtY29sdW1uLWd1dHRlciBtYXAsIGluY2x1ZGluZyBicmVha3BvaW50IHNpemVzLlxyXG4vLy8gICAtIEEgZml4ZWQgbnVtZXJpYyB2YWx1ZSB3aWxsIGFwcGx5IHRoaXMgZ3V0dGVyIHRvIGFsbCBicmVha3BvaW50cy5cclxuQG1peGluIGdyaWQtbGF5b3V0KFxyXG4gICRuLFxyXG4gICRzZWxlY3RvcjogJy5jb2x1bW4nLFxyXG4gICRndXR0ZXI6IG51bGxcclxuKSB7XHJcbiAgJiA+ICN7JHNlbGVjdG9yfSB7XHJcbiAgICB3aWR0aDogcGVyY2VudGFnZSgxLyRuKTtcclxuICAgIGZsb2F0OiAkZ2xvYmFsLWxlZnQ7XHJcblxyXG4gICAgLy8gSWYgYSAkZ3V0dGVyIHZhbHVlIGlzIHBhc3NlZFxyXG4gICAgQGlmKCRndXR0ZXIpIHtcclxuICAgICAgLy8gR3V0dGVyc1xyXG4gICAgICBAaWYgdHlwZS1vZigkZ3V0dGVyKSA9PSAnbWFwJyB7XHJcbiAgICAgICAgQGVhY2ggJGJyZWFrcG9pbnQsICR2YWx1ZSBpbiAkZ3V0dGVyIHtcclxuICAgICAgICAgICRwYWRkaW5nOiByZW0tY2FsYygkdmFsdWUpIC8gMjtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicmVha3BvaW50KSB7XHJcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XHJcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBAZWxzZSBpZiB0eXBlLW9mKCRndXR0ZXIpID09ICdudW1iZXInIGFuZCBzdHJpcC11bml0KCRndXR0ZXIpID4gMCB7XHJcbiAgICAgICAgJHBhZGRpbmc6IHJlbS1jYWxjKCRndXR0ZXIpIC8gMjtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJjpudGgtb2YtdHlwZSgxbikge1xyXG4gICAgICBjbGVhcjogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICAmOm50aC1vZi10eXBlKCN7JG59bisxKSB7XHJcbiAgICAgIGNsZWFyOiBib3RoO1xyXG4gICAgfVxyXG5cclxuICAgICY6bGFzdC1jaGlsZCB7XHJcbiAgICAgIGZsb2F0OiAkZ2xvYmFsLWxlZnQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQWRkcyBleHRyYSBDU1MgdG8gYmxvY2sgZ3JpZCBjaGlsZHJlbiBzbyB0aGUgbGFzdCBpdGVtcyBpbiB0aGUgcm93IGNlbnRlciBhdXRvbWF0aWNhbGx5LiBBcHBseSB0aGlzIHRvIHRoZSBjb2x1bW5zLCBub3QgdGhlIHJvdy5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlcn0gJG4gLSBOdW1iZXIgb2YgaXRlbXMgdGhhdCBhcHBlYXIgaW4gZWFjaCByb3cuXHJcbkBtaXhpbiBncmlkLWxheW91dC1jZW50ZXItbGFzdCgkbikge1xyXG4gIEBmb3IgJGkgZnJvbSAxIHRvICRuIHtcclxuICAgIEBpZiAkaSA9PSAxIHtcclxuICAgICAgJjpudGgtY2hpbGQoI3skbn1uKzEpOmxhc3QtY2hpbGQge1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAoMTAwIC0gMTAwLyRuICogJGkpIC8gMiAqIDElO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgICY6bnRoLWNoaWxkKCN7JG59bisxKTpudGgtbGFzdC1jaGlsZCgjeyRpfSkge1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAoMTAwIC0gMTAwLyRuICogJGkpIC8gMiAqIDElO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIu+7v0BpbXBvcnQgJ2ZvdW5kYXRpb24tcmVmZXJlbmNlJztcclxuXHJcbi8vIHNldHRpbmdzXHJcbiRtZW51LWl0ZW0tcGFkZGluZzpyZW0tY2FsYygxMCkgcmVtLWNhbGMoMzIpIHJlbS1jYWxjKDEwKSByZW0tY2FsYygxNikgIWRlZmF1bHQ7XHJcbiRtZW51LXdpZHRoOnJlbS1jYWxjKDIyMCkgIWRlZmF1bHQ7XHJcblxyXG4vLyBzdHlsZXNcclxuI21haW5tZW51IHtcclxuICAgIHBvc2l0aW9uOmZpeGVkO1xyXG4gICAgei1pbmRleDoxMDAwO1xyXG4gICAgdG9wOjA7IGxlZnQ6MDtcclxuXHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xyXG4gICAgICAgIHRvcDo1MCU7XHJcbiAgICAgICAgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICB9XHJcblxyXG4gICAgLm1lbnUtYnV0dG9uIHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiNkZGQ7XHJcbiAgICAgICAgcGFkZGluZzpyZW0tY2FsYygxMikgcmVtLWNhbGMoMTYpO1xyXG4gICAgICAgIGZvbnQtc2l6ZTpyZW0tY2FsYygxNSk7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6Ym9sZDtcclxuXHJcbiAgICAgICAgLm1lbnUtaWNvbiB7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIGhhbWJ1cmdlcigkYmxhY2ssICRibGFjaywgMTRweCwgMTJweCwgMnB4LCAzKTtcclxuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OnJlbS1jYWxjKDgpO1xyXG4gICAgICAgICAgICBtYXJnaW4tdG9wOi0ycHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xyXG4gICAgICAgICAgICBkaXNwbGF5Om5vbmU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLmNsb3NlLWJ1dHRvbiB7XHJcbiAgICAgICAgZmxvYXQ6cmlnaHQ7XHJcbiAgICAgICAgcGFkZGluZzpyZW0tY2FsYyg0KSByZW0tY2FsYygxNik7XHJcbiAgICAgICAgZm9udC1zaXplOnJlbS1jYWxjKDIwKTtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcclxuICAgICAgICAgICAgZGlzcGxheTpub25lO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAubWVudSB7XHJcbiAgICAgICAgZGlzcGxheTpub25lO1xyXG4gICAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xyXG4gICAgICAgIHRvcDowOyBsZWZ0OjA7XHJcbiAgICAgICAgYmFja2dyb3VuZDojZGRkO1xyXG5cclxuICAgICAgICAmLm9wZW4ge1xyXG4gICAgICAgICAgICBkaXNwbGF5OmJsb2NrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcclxuICAgICAgICAgICAgZGlzcGxheTpibG9jaztcclxuICAgICAgICAgICAgcG9zaXRpb246c3RhdGljO1xyXG4gICAgICAgICAgICB3aWR0aDphdXRvO1xyXG4gICAgICAgICAgICB0ZXh0LWFsaWduOnJpZ2h0O1xyXG4gICAgICAgIH1cclxuICAgICAgICB1bCB7XHJcbiAgICAgICAgICAgIHdpZHRoOiRtZW51LXdpZHRoO1xyXG4gICAgICAgICAgICBAaW5jbHVkZSBtZW51LWJhc2U7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIG1lbnUtZGlyZWN0aW9uKHZlcnRpY2FsKTtcclxuICAgICAgICAgICAgdGV4dC1hbGlnbjpsZWZ0O1xyXG4gICAgICAgICAgICBwYWRkaW5nOnJlbS1jYWxjKDMyKSAwO1xyXG4gICAgICAgICAgICBmb250LXNpemU6cmVtLWNhbGMoMTUpO1xyXG5cclxuICAgICAgICAgICAgJiA+IGxpID4gYSB7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjokYmxhY2s7XHJcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDpib2xkO1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAyMDAlIDEwMCU7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICNkZGQgNTAlLCBsaWdodGVuKCNkZGQsIDEwJSkgNTAlKTtcclxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtcG9zaXRpb24gMC41cztcclxuICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjpub25lO1xyXG5cclxuICAgICAgICAgICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0xMDAlIDA7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcclxuICAgICAgICAgICAgICAgICAgICAmLmFjdGl2ZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0xMDAlIDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcclxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxyXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcclxuXHJcbi8vLy9cclxuLy8vIEBncm91cCBtZW51XHJcbi8vLy9cclxuXHJcbi8vLyBNYXJnaW4gb2YgYSBtZW51LlxyXG4vLy8gQHR5cGUgTnVtYmVyXHJcbiRtZW51LW1hcmdpbjogMCAhZGVmYXVsdDtcclxuXHJcbi8vLyBMZWZ0LWhhbmQgbWFyZ2luIG9mIGEgbmVzdGVkIG1lbnUuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJG1lbnUtbWFyZ2luLW5lc3RlZDogMXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBQYWRkaW5nIGZvciBpdGVtcyBpbiBhIG1lbnUuXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJG1lbnUtaXRlbS1wYWRkaW5nOiAwLjdyZW0gMXJlbSAhZGVmYXVsdDtcclxuXHJcbi8vLyBUZXh0IGNvbG9yIG9mIGFuIGFjdGl2ZSBtZW51IGl0ZW0uXHJcbi8vLyBAdHlwZSBDb2xvclxyXG4kbWVudS1pdGVtLWNvbG9yLWFjdGl2ZTogJHdoaXRlICFkZWZhdWx0O1xyXG5cclxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYW4gYWN0aXZlIG1lbnUgaXRlbS5cclxuLy8vIEB0eXBlIENvbG9yXHJcbiRtZW51LWl0ZW0tYmFja2dyb3VuZC1hY3RpdmU6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgcHJpbWFyeSkgIWRlZmF1bHQ7XHJcblxyXG4vLy8gU3BhY2luZyBiZXR3ZWVuIGFuIGljb24gYW5kIHRleHQgaW4gYSBtZW51IGl0ZW0uXHJcbi8vLyBAdHlwZSBOdW1iZXJcclxuJG1lbnUtaWNvbi1zcGFjaW5nOiAwLjI1cmVtICFkZWZhdWx0O1xyXG5cclxuLy8vIENyZWF0ZXMgdGhlIGJhc2Ugc3R5bGVzIGZvciBhIE1lbnUuXHJcbkBtaXhpbiBtZW51LWJhc2Uge1xyXG4gIG1hcmdpbjogJG1lbnUtbWFyZ2luO1xyXG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcclxuXHJcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgfVxyXG5cclxuICAvLyBMaXN0IGl0ZW1zIGFyZSB0YWJsZSBjZWxsIHRvIGFsbG93IGZvciB2ZXJ0aWNhbCBhbGlnbm1lbnRcclxuICA+IGxpIHtcclxuICAgIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcclxuXHJcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgICAgZmxleDogMCAwIGF1dG87XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XHJcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBSZXNldCBsaW5lIGhlaWdodCB0byBtYWtlIHRoZSBoZWlnaHQgb2YgdGhlIG92ZXJhbGwgaXRlbSBlYXNpZXIgdG8gY2FsY3VsYXRlXHJcbiAgPiBsaSA+IGEge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBwYWRkaW5nOiAkbWVudS1pdGVtLXBhZGRpbmc7XHJcbiAgICBsaW5lLWhlaWdodDogMTtcclxuICB9XHJcblxyXG4gIC8vIFJlc2V0IHN0eWxlcyBvZiBpbm5lciBlbGVtZW50c1xyXG4gIGlucHV0LFxyXG4gIGEsXHJcbiAgYnV0dG9uIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gRXhwYW5kcyB0aGUgaXRlbXMgb2YgYSBNZW51LCBzbyBlYWNoIGl0ZW0gaXMgdGhlIHNhbWUgd2lkdGguXHJcbkBtaXhpbiBtZW51LWV4cGFuZCB7XHJcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAvLyBzY3NzLWxpbnQ6ZGlzYWJsZSBaZXJvVW5pdFxyXG4gICAgPiBsaSB7XHJcbiAgICAgIGZsZXg6IDEgMSAwcHg7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgZGlzcGxheTogdGFibGU7XHJcbiAgICB0YWJsZS1sYXlvdXQ6IGZpeGVkO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIFNldHMgdGhlIGRpcmVjdGlvbiBvZiBhIE1lbnUuXHJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXIgW2hvcml6b250YWxdIC0gRGlyZWN0aW9uIG9mIHRoZSBNZW51LiBDYW4gYmUgYGhvcml6b250YWxgIG9yIGB2ZXJ0aWNhbGAuXHJcbkBtaXhpbiBtZW51LWRpcmVjdGlvbigkZGlyOiBob3Jpem9udGFsKSB7XHJcbiAgQGlmICRkaXIgPT0gaG9yaXpvbnRhbCB7XHJcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcclxuICAgICAgZmxleC13cmFwOiBub3dyYXA7XHJcblxyXG4gICAgICA+IGxpIHtcclxuICAgICAgICBmbGV4OiAwIDAgYXV0bztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICA+IGxpIHtcclxuICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBlbHNlIGlmICRkaXIgPT0gdmVydGljYWwge1xyXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcclxuXHJcbiAgICAgID4gbGkge1xyXG4gICAgICAgIGZsZXg6IDAgMCAxMDAlO1xyXG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgfVxyXG5cclxuICAgICAgPiBsaSAgPiBhIHtcclxuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgPiBsaSB7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgQGVsc2Uge1xyXG4gICAgQHdhcm4gJ1RoZSBkaXJlY3Rpb24gdXNlZCBmb3IgbWVudS1kaXJlY3Rpb24oKSBtdXN0IGJlIGhvcml6b250YWwgb3IgdmVydGljYWwuJztcclxuICB9XHJcbn1cclxuXHJcbi8vLyBDcmVhdGVzIGEgc2ltcGxlIE1lbnUsIHdoaWNoIGhhcyBubyBwYWRkaW5nIG9yIGhvdmVyIHN0YXRlLlxyXG5AbWl4aW4gbWVudS1zaW1wbGUge1xyXG4gIGxpIHtcclxuICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IGdldC1zaWRlKCRtZW51LWl0ZW0tcGFkZGluZywgJGdsb2JhbC1yaWdodCk7XHJcbiAgfVxyXG5cclxuICBhIHtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgbmVzdGVkIE1lbnUsIGJ5IGFkZGluZyBgbWFyZ2luLWxlZnRgIHRvIHRoZSBtZW51LlxyXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHBhZGRpbmcgW2F1dG9dIC0gTGVuZ3RoIG9mIHRoZSBtYXJnaW4uXHJcbkBtaXhpbiBtZW51LW5lc3RlZCgkbWFyZ2luOiAkbWVudS1tYXJnaW4tbmVzdGVkKSB7XHJcbiAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogJG1hcmdpbjtcclxufVxyXG5cclxuLy8vIEFkZHMgc3VwcG9ydCBmb3IgaWNvbnMgdG8gTWVudSBpdGVtcy5cclxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHBvc2l0aW9uIFtzaWRlXSAtIFBvc2l0aW9uaW5nIGZvciBpY29ucy4gQ2FuIGJlIGBzaWRlYCAobGVmdCwgb3IgcmlnaHQgb24gUlRMKSBvciBgdG9wYC5cclxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGJhc2UgW3RydWVdIC0gU2V0IHRvIGBmYWxzZWAgdG8gcHJldmVudCB0aGUgc2hhcmVkIENTUyBiZXR3ZWVuIHNpZGUtIGFuZCB0b3AtYWxpZ25lZCBpY29ucyBmcm9tIGJlaW5nIHByaW50ZWQuIFNldCB0aGlzIHRvIGBmYWxzZWAgaWYgeW91J3JlIGNhbGxpbmcgdGhlIG1peGluIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIGVsZW1lbnQuXHJcbkBtaXhpbiBtZW51LWljb25zKCRwb3NpdGlvbjogc2lkZSwgJGJhc2U6IHRydWUpIHtcclxuICBAaWYgJGJhc2Uge1xyXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgID4gbGkgPiBhIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgID4gbGkgPiBhIHtcclxuICAgICAgICBpbWcsXHJcbiAgICAgICAgaSxcclxuICAgICAgICBzdmcge1xyXG4gICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuXHJcbiAgICAgICAgICArIHNwYW4ge1xyXG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGlmICRwb3NpdGlvbiA9PSBzaWRlIHtcclxuICAgID4gbGkgPiBhIHtcclxuICAgICAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgICAgZmxleC1mbG93OiByb3cgbm93cmFwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpbWcsXHJcbiAgICAgIGksXHJcbiAgICAgIHN2ZyB7XHJcbiAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRtZW51LWljb24tc3BhY2luZztcclxuXHJcbiAgICAgICAgQGlmIG5vdCAkZ2xvYmFsLWZsZXhib3gge1xyXG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gdG9wIHtcclxuICAgID4gbGkgPiBhIHtcclxuICAgICAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgICAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xyXG4gICAgICB9XHJcbiAgICAgIEBlbHNlIHtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGltZyxcclxuICAgICAgaSxcclxuICAgICAgc3ZnIHtcclxuICAgICAgICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgIG1hcmdpbjogMCBhdXRvICRtZW51LWljb24tc3BhY2luZztcclxuICAgICAgICB9XHJcbiAgICAgICAgQGVsc2Uge1xyXG4gICAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcclxuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRtZW51LWljb24tc3BhY2luZztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBtZW51LXRleHQge1xyXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gIGNvbG9yOiBpbmhlcml0O1xyXG4gIGxpbmUtaGVpZ2h0OiAxO1xyXG4gIHBhZGRpbmctdG9wOiAwO1xyXG4gIHBhZGRpbmctYm90dG9tOiAwO1xyXG4gIHBhZGRpbmc6ICRtZW51LWl0ZW0tcGFkZGluZztcclxufVxyXG5cclxuQG1peGluIGZvdW5kYXRpb24tbWVudSB7XHJcbiAgLm1lbnUge1xyXG4gICAgQGluY2x1ZGUgbWVudS1iYXNlO1xyXG4gICAgQGluY2x1ZGUgbWVudS1pY29ucztcclxuXHJcbiAgICAvLyBPcmllbnRhdGlvblxyXG4gICAgQGluY2x1ZGUgbWVudS1kaXJlY3Rpb24oaG9yaXpvbnRhbCk7XHJcblxyXG4gICAgJi52ZXJ0aWNhbCB7XHJcbiAgICAgIEBpbmNsdWRlIG1lbnUtZGlyZWN0aW9uKHZlcnRpY2FsKTtcclxuICAgIH1cclxuXHJcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcclxuICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcclxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XHJcbiAgICAgICAgICAmLiN7JHNpemV9LWhvcml6b250YWwge1xyXG4gICAgICAgICAgICBAaW5jbHVkZSBtZW51LWRpcmVjdGlvbihob3Jpem9udGFsKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAmLiN7JHNpemV9LXZlcnRpY2FsIHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgbWVudS1kaXJlY3Rpb24odmVydGljYWwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFNpbXBsZVxyXG4gICAgJi5zaW1wbGUge1xyXG4gICAgICBAaW5jbHVkZSBtZW51LXNpbXBsZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBBbGlnbiByaWdodFxyXG4gICAgJi5hbGlnbi0jeyRnbG9iYWwtcmlnaHR9IHtcclxuICAgICAgQGlmICRnbG9iYWwtZmxleGJveCB7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcclxuICAgICAgfVxyXG4gICAgICBAZWxzZSB7XHJcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XHJcblxyXG4gICAgICAgID4gbGkge1xyXG4gICAgICAgICAgZmxvYXQ6ICRnbG9iYWwtcmlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRXZlbi13aWR0aFxyXG4gICAgJi5leHBhbmRlZCB7XHJcbiAgICAgIEBpbmNsdWRlIG1lbnUtZXhwYW5kO1xyXG5cclxuICAgICAgPiBsaTpmaXJzdC1jaGlsZDpsYXN0LWNoaWxkIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFZlcnRpY2FsIGljb25zXHJcbiAgICAmLmljb24tdG9wIHtcclxuICAgICAgQGluY2x1ZGUgbWVudS1pY29ucyh0b3AsICRiYXNlOiBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTmVzdGluZ1xyXG4gICAgJi5uZXN0ZWQge1xyXG4gICAgICBAaW5jbHVkZSBtZW51LW5lc3RlZDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBBY3RpdmUgc3RhdGVcclxuICAgIC5hY3RpdmUgPiBhIHtcclxuICAgICAgY29sb3I6ICRtZW51LWl0ZW0tY29sb3ItYWN0aXZlO1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkbWVudS1pdGVtLWJhY2tncm91bmQtYWN0aXZlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLm1lbnUtdGV4dCB7XHJcbiAgICBAaW5jbHVkZSBtZW51LXRleHQ7XHJcbiAgfVxyXG5cclxuICAvLyBBbGlnbiBjZW50ZXJcclxuICAubWVudS1jZW50ZXJlZCB7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblxyXG4gICAgPiAubWVudSB7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFByZXZlbnQgRk9VQyB3aGVuIHVzaW5nIHRoZSBSZXNwb25zaXZlIE1lbnUgcGx1Z2luXHJcbiAgLm5vLWpzIFtkYXRhLXJlc3BvbnNpdmUtbWVudV0gdWwge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICB9XHJcbn1cclxuIiwi77u/QGltcG9ydCAnZm91bmRhdGlvbi1yZWZlcmVuY2UnO1xyXG5cclxuJG1lbnUtd2lkdGg6cmVtLWNhbGMoMjIwKSAhZGVmYXVsdDtcclxuXHJcbiNiYW5uZXIge1xyXG4gICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tcm93KDApO1xyXG4gICAgbWF4LXdpZHRoOm5vbmU7XHJcbiAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IzI1NGE3NDtcclxuICAgIHBhZGRpbmctYm90dG9tOnJlbS1jYWxjKDE2KTtcclxuICAgIGJvcmRlci1ib3R0b206OHB4IHNvbGlkIGRhcmtlbigjMjU0YTc0LCAxMCUpO1xyXG5cclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjojMGEwMjNiO1xyXG4gICAgICAgIHBhZGRpbmctYm90dG9tOjA7XHJcbiAgICAgICAgYm9yZGVyOm5vbmU7XHJcbiAgICB9XHJcblxyXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcclxuICAgICAgICBwYWRkaW5nLXRvcDo3MS4wNjc0MSU7XHJcbiAgICB9XHJcblxyXG4gICAgLmJhbm5lci1ia2cge1xyXG4gICAgICAgIGRpc3BsYXk6bm9uZTtcclxuICAgICAgICBcclxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xyXG4gICAgICAgICAgICBkaXNwbGF5OmJsb2NrO1xyXG4gICAgICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcclxuICAgICAgICAgICAgdG9wOjA7IGxlZnQ6MDtcclxuICAgICAgICAgICAgd2lkdGg6MTAwJTtcclxuICAgICAgICAgICAgei1pbmRleDoxO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuZ25sLWxvZ28geyAgICAgICAgXHJcbiAgICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xyXG4gICAgICAgICAgICB0b3A6MDsgbGVmdDowO1xyXG4gICAgICAgICAgICB3aWR0aDoxMDAlO1xyXG4gICAgICAgICAgICB6LWluZGV4OjI7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgaW1nIHtcclxuICAgICAgICAgICAgbWFyZ2luOnJlbS1jYWxjKDMyKSBhdXRvO1xyXG4gICAgICAgICAgICB3aWR0aDoxNDRweDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW46cmVtLWNhbGMoMTYpIGF1dG87XHJcbiAgICAgICAgICAgICAgICB3aWR0aDoxNSU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnRpdGxlIHtcclxuXHJcbiAgICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7XHJcbiAgICAgICAgcGFkZGluZzpyZW0tY2FsYygzMik7IHBhZGRpbmctdG9wOnJlbS1jYWxjKDgpO1xyXG5cclxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xyXG4gICAgICAgICAgICBwYWRkaW5nOnJlbS1jYWxjKDMyKTtcclxuICAgICAgICAgICAgcG9zaXRpb246YWJzb2x1dGU7XHJcbiAgICAgICAgICAgIHRvcDo0OSU7IGxlZnQ6MDtcclxuICAgICAgICAgICAgei1pbmRleDozO1xyXG4gICAgICAgICAgICB3aWR0aDoxMDAlO1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQyLDgwLDEyMywwLjkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSBvbmx5KSB7XHJcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDokbWVudS13aWR0aCtyZW0tY2FsYygxNik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBoMSB7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTpyZW0tY2FsYygyMCk7XHJcbiAgICAgICAgICAgIG1hcmdpbjowOyBwYWRkaW5nOjA7XHJcbiAgICAgICAgICAgIGNvbG9yOiR3aGl0ZTtcclxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6MTtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XHJcbiAgICAgICAgICAgICAgICBmb250LXNpemU6cmVtLWNhbGMoMjQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGltZyB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6YmxvY2s7XHJcbiAgICAgICAgICAgIG1hcmdpbjowIGF1dG87XHJcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206cmVtLWNhbGMoOCk7XHJcbiAgICAgICAgICAgIHdpZHRoOjI4OHB4O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcclxuICAgICAgICAgICAgICAgIHdpZHRoOmF1dG87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgc3BhbiB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6YmxvY2s7XHJcbiAgICAgICAgICAgIG1hcmdpbjowIGF1dG87XHJcbiAgICAgICAgICAgIHdpZHRoOjI1NnB4O1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcclxuICAgICAgICAgICAgICAgIHdpZHRoOmF1dG87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0= */
