/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
/* Document
   ========================================================================== */
/**
 * 1. Correct the line height in all browsers.
 * 2. Prevent adjustments of font size after orientation changes in iOS.
 */
html {
  line-height: 1.15;
  /* 1 */
  -webkit-text-size-adjust: 100%;
  /* 2 */ }

/* Sections
   ========================================================================== */
/**
 * Remove the margin in all browsers.
 */
body {
  margin: 0; }

/**
 * Render the `main` element consistently in IE.
 */
main {
  display: block; }

/**
 * Correct the font size and margin on `h1` elements within `section` and
 * `article` contexts in Chrome, Firefox, and Safari.
 */
h1 {
  font-size: 2em;
  margin: 0.67em 0; }

/* Grouping content
   ========================================================================== */
/**
 * 1. Add the correct box sizing in Firefox.
 * 2. Show the overflow in Edge and IE.
 */
hr {
  box-sizing: content-box;
  /* 1 */
  height: 0;
  /* 1 */
  overflow: visible;
  /* 2 */ }

/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */
pre {
  font-family: monospace, monospace;
  /* 1 */
  font-size: 1em;
  /* 2 */ }

/* Text-level semantics
   ========================================================================== */
/**
 * Remove the gray background on active links in IE 10.
 */
a {
  background-color: transparent; }

/**
 * 1. Remove the bottom border in Chrome 57-
 * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
 */
abbr[title] {
  border-bottom: none;
  /* 1 */
  text-decoration: underline;
  /* 2 */
  -webkit-text-decoration: underline dotted;
          text-decoration: underline dotted;
  /* 2 */ }

/**
 * Add the correct font weight in Chrome, Edge, and Safari.
 */
b,
strong {
  font-weight: bolder; }

/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */
code,
kbd,
samp {
  font-family: monospace, monospace;
  /* 1 */
  font-size: 1em;
  /* 2 */ }

/**
 * Add the correct font size in all browsers.
 */
small {
  font-size: 80%; }

/**
 * Prevent `sub` and `sup` elements from affecting the line height in
 * all browsers.
 */
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline; }

sub {
  bottom: -0.25em; }

sup {
  top: -0.5em; }

/* Embedded content
   ========================================================================== */
/**
 * Remove the border on images inside links in IE 10.
 */
img {
  border-style: none; }

/* Forms
   ========================================================================== */
/**
 * 1. Change the font styles in all browsers.
 * 2. Remove the margin in Firefox and Safari.
 */
button,
input,
optgroup,
select,
textarea {
  font-family: inherit;
  /* 1 */
  font-size: 100%;
  /* 1 */
  line-height: 1.15;
  /* 1 */
  margin: 0;
  /* 2 */ }

/**
 * Show the overflow in IE.
 * 1. Show the overflow in Edge.
 */
button,
input {
  /* 1 */
  overflow: visible; }

/**
 * Remove the inheritance of text transform in Edge, Firefox, and IE.
 * 1. Remove the inheritance of text transform in Firefox.
 */
button,
select {
  /* 1 */
  text-transform: none; }

/**
 * Correct the inability to style clickable types in iOS and Safari.
 */
button,
[type="button"],
[type="reset"],
[type="submit"] {
  -webkit-appearance: button; }

/**
 * Remove the inner border and padding in Firefox.
 */
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
  border-style: none;
  padding: 0; }

/**
 * Restore the focus styles unset by the previous rule.
 */
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
  outline: 1px dotted ButtonText; }

/**
 * Correct the padding in Firefox.
 */
fieldset {
  padding: 0.35em 0.75em 0.625em; }

/**
 * 1. Correct the text wrapping in Edge and IE.
 * 2. Correct the color inheritance from `fieldset` elements in IE.
 * 3. Remove the padding so developers are not caught out when they zero out
 *    `fieldset` elements in all browsers.
 */
legend {
  box-sizing: border-box;
  /* 1 */
  color: inherit;
  /* 2 */
  display: table;
  /* 1 */
  max-width: 100%;
  /* 1 */
  padding: 0;
  /* 3 */
  white-space: normal;
  /* 1 */ }

/**
 * Add the correct vertical alignment in Chrome, Firefox, and Opera.
 */
progress {
  vertical-align: baseline; }

/**
 * Remove the default vertical scrollbar in IE 10+.
 */
textarea {
  overflow: auto; }

/**
 * 1. Add the correct box sizing in IE 10.
 * 2. Remove the padding in IE 10.
 */
[type="checkbox"],
[type="radio"] {
  box-sizing: border-box;
  /* 1 */
  padding: 0;
  /* 2 */ }

/**
 * Correct the cursor style of increment and decrement buttons in Chrome.
 */
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
  height: auto; }

/**
 * 1. Correct the odd appearance in Chrome and Safari.
 * 2. Correct the outline style in Safari.
 */
[type="search"] {
  -webkit-appearance: textfield;
  /* 1 */
  outline-offset: -2px;
  /* 2 */ }

/**
 * Remove the inner padding in Chrome and Safari on macOS.
 */
[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none; }

/**
 * 1. Correct the inability to style clickable types in iOS and Safari.
 * 2. Change font properties to `inherit` in Safari.
 */
::-webkit-file-upload-button {
  -webkit-appearance: button;
  /* 1 */
  font: inherit;
  /* 2 */ }

/* Interactive
   ========================================================================== */
/*
 * Add the correct display in Edge, IE 10+, and Firefox.
 */
details {
  display: block; }

/*
 * Add the correct display in all browsers.
 */
summary {
  display: list-item; }

/* Misc
   ========================================================================== */
/**
 * Add the correct display in IE 10+.
 */
template {
  display: none; }

/**
 * Add the correct display in IE 10.
 */
[hidden] {
  display: none; }

/*
 *  Owl Carousel - Core
 */
.owl-carousel {
  display: none;
  width: 100%;
  -webkit-tap-highlight-color: transparent;
  /* position relative and z-index fix webkit rendering fonts issue */
  position: relative;
  z-index: 1; }
  .owl-carousel .owl-stage {
    position: relative;
    touch-action: manipulation;
    -moz-backface-visibility: hidden;
    /* fix firefox animation glitch */ }
  .owl-carousel .owl-stage:after {
    content: ".";
    display: block;
    clear: both;
    visibility: hidden;
    line-height: 0;
    height: 0; }
  .owl-carousel .owl-stage-outer {
    position: relative;
    overflow: hidden;
    /* fix for flashing background */
    -webkit-transform: translate3d(0px, 0px, 0px); }
  .owl-carousel .owl-wrapper,
  .owl-carousel .owl-item {
    -webkit-backface-visibility: hidden;
    -moz-backface-visibility: hidden;
    -ms-backface-visibility: hidden;
    -webkit-transform: translate3d(0, 0, 0);
    -moz-transform: translate3d(0, 0, 0);
    -ms-transform: translate3d(0, 0, 0); }
  .owl-carousel .owl-item {
    position: relative;
    min-height: 1px;
    float: left;
    -webkit-backface-visibility: hidden;
    -webkit-tap-highlight-color: transparent;
    -webkit-touch-callout: none; }
  .owl-carousel .owl-item img {
    display: block;
    width: 100%; }
  .owl-carousel .owl-nav.disabled,
  .owl-carousel .owl-dots.disabled {
    display: none; }
  .owl-carousel .owl-nav .owl-prev,
  .owl-carousel .owl-nav .owl-next,
  .owl-carousel .owl-dot {
    cursor: pointer;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none; }
  .owl-carousel .owl-nav button.owl-prev,
  .owl-carousel .owl-nav button.owl-next,
  .owl-carousel button.owl-dot {
    background: none;
    color: inherit;
    border: none;
    padding: 0 !important;
    font: inherit; }
  .owl-carousel.owl-loaded {
    display: block; }
  .owl-carousel.owl-loading {
    opacity: 0;
    display: block; }
  .owl-carousel.owl-hidden {
    opacity: 0; }
  .owl-carousel.owl-refresh .owl-item {
    visibility: hidden; }
  .owl-carousel.owl-drag .owl-item {
    touch-action: pan-y;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none; }
  .owl-carousel.owl-grab {
    cursor: move;
    cursor: -webkit-grab;
    cursor: grab; }
  .owl-carousel.owl-rtl {
    direction: rtl; }
  .owl-carousel.owl-rtl .owl-item {
    float: right; }

/* No Js */
.no-js .owl-carousel {
  display: block; }

/*
 *  Owl Carousel - Animate Plugin
 */
.owl-carousel .animated {
  -webkit-animation-duration: 1000ms;
          animation-duration: 1000ms;
  -webkit-animation-fill-mode: both;
          animation-fill-mode: both; }

.owl-carousel .owl-animated-in {
  z-index: 0; }

.owl-carousel .owl-animated-out {
  z-index: 1; }

.owl-carousel .fadeOut {
  -webkit-animation-name: fadeOut;
          animation-name: fadeOut; }

@-webkit-keyframes fadeOut {
  0% {
    opacity: 1; }
  100% {
    opacity: 0; } }

@keyframes fadeOut {
  0% {
    opacity: 1; }
  100% {
    opacity: 0; } }

/*
 * 	Owl Carousel - Auto Height Plugin
 */
.owl-height {
  transition: height 500ms ease-in-out; }

/*
 * 	Owl Carousel - Lazy Load Plugin
 */
.owl-carousel .owl-item {
  /**
			This is introduced due to a bug in IE11 where lazy loading combined with autoheight plugin causes a wrong
			calculation of the height of the owl-item that breaks page layouts
		 */ }
  .owl-carousel .owl-item .owl-lazy {
    opacity: 0;
    transition: opacity 400ms ease; }
  .owl-carousel .owl-item .owl-lazy[src^=""], .owl-carousel .owl-item .owl-lazy:not([src]) {
    max-height: 0; }
  .owl-carousel .owl-item img.owl-lazy {
    -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d; }

/*
 * 	Owl Carousel - Video Plugin
 */
.owl-carousel .owl-video-wrapper {
  position: relative;
  height: 100%;
  background: #000; }

.owl-carousel .owl-video-play-icon {
  position: absolute;
  height: 80px;
  width: 80px;
  left: 50%;
  top: 50%;
  margin-left: -40px;
  margin-top: -40px;
  background: url("owl.video.play.png") no-repeat;
  cursor: pointer;
  z-index: 1;
  -webkit-backface-visibility: hidden;
  transition: -webkit-transform 100ms ease;
  transition: transform 100ms ease;
  transition: transform 100ms ease, -webkit-transform 100ms ease; }

.owl-carousel .owl-video-play-icon:hover {
  -webkit-transform: scale(1.3, 1.3);
          transform: scale(1.3, 1.3); }

.owl-carousel .owl-video-playing .owl-video-tn,
.owl-carousel .owl-video-playing .owl-video-play-icon {
  display: none; }

.owl-carousel .owl-video-tn {
  opacity: 0;
  height: 100%;
  background-position: center center;
  background-repeat: no-repeat;
  background-size: contain;
  transition: opacity 400ms ease; }

.owl-carousel .owl-video-frame {
  position: relative;
  z-index: 1;
  height: 100%;
  width: 100%; }

/* Magnific Popup CSS */
.mfp-bg {
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1042;
  overflow: hidden;
  position: fixed;
  background: #0b0b0b;
  opacity: 0.8; }

.mfp-wrap {
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1043;
  position: fixed;
  outline: none !important;
  -webkit-backface-visibility: hidden; }

.mfp-container {
  text-align: center;
  position: absolute;
  width: 100%;
  height: 100%;
  left: 0;
  top: 0;
  padding: 0 8px;
  box-sizing: border-box; }

.mfp-container:before {
  content: '';
  display: inline-block;
  height: 100%;
  vertical-align: middle; }

.mfp-align-top .mfp-container:before {
  display: none; }

.mfp-content {
  position: relative;
  display: inline-block;
  vertical-align: middle;
  margin: 0 auto;
  text-align: left;
  z-index: 1045; }

.mfp-inline-holder .mfp-content,
.mfp-ajax-holder .mfp-content {
  width: 100%;
  cursor: auto; }

.mfp-ajax-cur {
  cursor: progress; }

.mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close {
  cursor: zoom-out; }

.mfp-zoom {
  cursor: pointer;
  cursor: zoom-in; }

.mfp-auto-cursor .mfp-content {
  cursor: auto; }

.mfp-close,
.mfp-arrow,
.mfp-preloader,
.mfp-counter {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
      user-select: none; }

.mfp-loading.mfp-figure {
  display: none; }

.mfp-hide {
  display: none !important; }

.mfp-preloader {
  color: #CCC;
  position: absolute;
  top: 50%;
  width: auto;
  text-align: center;
  margin-top: -0.8em;
  left: 8px;
  right: 8px;
  z-index: 1044; }

.mfp-preloader a {
  color: #CCC; }

.mfp-preloader a:hover {
  color: #FFF; }

.mfp-s-ready .mfp-preloader {
  display: none; }

.mfp-s-error .mfp-content {
  display: none; }

button.mfp-close,
button.mfp-arrow {
  overflow: visible;
  cursor: pointer;
  background: transparent;
  border: 0;
  -webkit-appearance: none;
  display: block;
  outline: none;
  padding: 0;
  z-index: 1046;
  box-shadow: none;
  touch-action: manipulation; }

button::-moz-focus-inner {
  padding: 0;
  border: 0; }

.mfp-close {
  width: 44px;
  height: 44px;
  line-height: 44px;
  position: absolute;
  right: 0;
  top: 0;
  text-decoration: none;
  text-align: center;
  opacity: 0.65;
  padding: 0 0 18px 10px;
  color: #FFF;
  font-style: normal;
  font-size: 28px;
  font-family: Arial, Baskerville, monospace; }

.mfp-close:hover,
.mfp-close:focus {
  opacity: 1; }

.mfp-close:active {
  top: 1px; }

.mfp-close-btn-in .mfp-close {
  color: #333; }

.mfp-image-holder .mfp-close,
.mfp-iframe-holder .mfp-close {
  color: #FFF;
  right: -6px;
  text-align: right;
  padding-right: 6px;
  width: 100%; }

.mfp-counter {
  position: absolute;
  top: 0;
  right: 0;
  color: #CCC;
  font-size: 12px;
  line-height: 18px;
  white-space: nowrap; }

.mfp-arrow {
  position: absolute;
  opacity: 0.65;
  margin: 0;
  top: 50%;
  margin-top: -55px;
  padding: 0;
  width: 90px;
  height: 110px;
  -webkit-tap-highlight-color: transparent; }

.mfp-arrow:active {
  margin-top: -54px; }

.mfp-arrow:hover,
.mfp-arrow:focus {
  opacity: 1; }

.mfp-arrow:before,
.mfp-arrow:after {
  content: '';
  display: block;
  width: 0;
  height: 0;
  position: absolute;
  left: 0;
  top: 0;
  margin-top: 35px;
  margin-left: 35px;
  border: medium inset transparent; }

.mfp-arrow:after {
  border-top-width: 13px;
  border-bottom-width: 13px;
  top: 8px; }

.mfp-arrow:before {
  border-top-width: 21px;
  border-bottom-width: 21px;
  opacity: 0.7; }

.mfp-arrow-left {
  left: 0; }

.mfp-arrow-left:after {
  border-right: 17px solid #FFF;
  margin-left: 31px; }

.mfp-arrow-left:before {
  margin-left: 25px;
  border-right: 27px solid #3F3F3F; }

.mfp-arrow-right {
  right: 0; }

.mfp-arrow-right:after {
  border-left: 17px solid #FFF;
  margin-left: 39px; }

.mfp-arrow-right:before {
  border-left: 27px solid #3F3F3F; }

.mfp-iframe-holder {
  padding-top: 40px;
  padding-bottom: 40px; }

.mfp-iframe-holder .mfp-content {
  line-height: 0;
  width: 100%;
  max-width: 900px; }

.mfp-iframe-holder .mfp-close {
  top: -40px; }

.mfp-iframe-scaler {
  width: 100%;
  height: 0;
  overflow: hidden;
  padding-top: 56.25%; }

.mfp-iframe-scaler iframe {
  position: absolute;
  display: block;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
  background: #000; }

/* Main image in popup */
img.mfp-img {
  width: auto;
  max-width: 100%;
  height: auto;
  display: block;
  line-height: 0;
  box-sizing: border-box;
  padding: 40px 0 40px;
  margin: 0 auto; }

/* The shadow behind the image */
.mfp-figure {
  line-height: 0; }

.mfp-figure:after {
  content: '';
  position: absolute;
  left: 0;
  top: 40px;
  bottom: 40px;
  display: block;
  right: 0;
  width: auto;
  height: auto;
  z-index: -1;
  box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
  background: #444; }

.mfp-figure small {
  color: #BDBDBD;
  display: block;
  font-size: 12px;
  line-height: 14px; }

.mfp-figure figure {
  margin: 0; }

.mfp-bottom-bar {
  margin-top: -36px;
  position: absolute;
  top: 100%;
  left: 0;
  width: 100%;
  cursor: auto; }

.mfp-title {
  text-align: left;
  line-height: 18px;
  color: #F3F3F3;
  word-wrap: break-word;
  padding-right: 36px; }

.mfp-image-holder .mfp-content {
  max-width: 100%; }

.mfp-gallery .mfp-image-holder .mfp-figure {
  cursor: pointer; }

@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) {
  /**
       * Remove all paddings around the image on small screen
       */
  .mfp-img-mobile .mfp-image-holder {
    padding-left: 0;
    padding-right: 0; }
  .mfp-img-mobile img.mfp-img {
    padding: 0; }
  .mfp-img-mobile .mfp-figure:after {
    top: 0;
    bottom: 0; }
  .mfp-img-mobile .mfp-figure small {
    display: inline;
    margin-left: 5px; }
  .mfp-img-mobile .mfp-bottom-bar {
    background: rgba(0, 0, 0, 0.6);
    bottom: 0;
    margin: 0;
    top: auto;
    padding: 3px 5px;
    position: fixed;
    box-sizing: border-box; }
  .mfp-img-mobile .mfp-bottom-bar:empty {
    padding: 0; }
  .mfp-img-mobile .mfp-counter {
    right: 5px;
    top: 3px; }
  .mfp-img-mobile .mfp-close {
    top: 0;
    right: 0;
    width: 35px;
    height: 35px;
    line-height: 35px;
    background: rgba(0, 0, 0, 0.6);
    position: fixed;
    text-align: center;
    padding: 0; } }

@media all and (max-width: 900px) {
  .mfp-arrow {
    -webkit-transform: scale(0.75);
    transform: scale(0.75); }
  .mfp-arrow-left {
    -webkit-transform-origin: 0;
    transform-origin: 0; }
  .mfp-arrow-right {
    -webkit-transform-origin: 100%;
    transform-origin: 100%; }
  .mfp-container {
    padding-left: 6px;
    padding-right: 6px; } }

/* ==========================================================================
   Base
   ========================================================================== */
/**
 * Remove margin and padding from every selector including their
 * psuedo selectors.
 *
 * 1. More sensible default box sizing.
 *    (css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice).
 */
*,
*::before,
*::after {
  margin: 0;
  padding: 0;
  box-sizing: inherit;
  /* 1 */ }

/**
 * Set height of the document to maxium viewport height.
 *
 * 1. Set root font size to 10.
 */
html {
  height: 100vh;
  font-size: 62.5%;
  /* 1 */
  box-sizing: border-box; }

/**
 * Set minimal height of the body to maximum viewport height to
 * match the document's height.
 *
 * 1. Firefox 25+.
 * 2. Chrome 5+.
 */
body {
  font-size: 16px;
  font-size: 1.6rem;
  line-height: 1.5625em;
  min-height: 100vh;
  background-color: white;
  color: black;
  font-family: "Open Sans";
  text-rendering: optimizeLegibility;
  -moz-osx-font-smoothing: grayscale;
  /* 1 */
  -webkit-font-smoothing: antialiased;
  /* 2 */ }

/* ==========================================================================
   Reset
   ========================================================================== */
/**
 * Custom user agent resets and overrides that are not present in
 * Normalize 8.0.0. This mostly removes some annoying margin and padding
 * defaults, border radius, and outlines.
 */
a {
  color: inherit;
  text-decoration: none; }

/**
 * 1. Remove border radius on Chrome 62.0+ on macOS.
 */
button {
  border: 0;
  border-radius: 0;
  /* 1 */
  outline: none;
  background: none;
  cursor: pointer; }

fieldset {
  margin: 0;
  padding: 0;
  border: 0; }

figure {
  margin: 0; }

h1,
h2,
h3,
h4,
h5,
h6 {
  margin: 0;
  padding: 0;
  font-size: inherit;
  font-weight: inherit; }

hr {
  margin: 0;
  padding: 0; }

/**
 * 1. Remove white space.
 */
img {
  max-width: 100%;
  height: auto;
  vertical-align: middle;
  /* 1 */ }

/**
 * 1. Remove inherited user agent appearance.
 */
input,
select,
textarea {
  max-width: 100%;
  border: 0;
  border-radius: 0;
  outline: none;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  /* 1 */ }

/**
 * 1. Only allow vertical resizing to prevent the textarea
 *    from overflowing the container.
 */
textarea {
  resize: vertical; }

ul,
ol {
  margin: 0;
  padding: 0;
  list-style-type: none; }

p {
  margin: 0; }

/**
 * 1. Collapse borders to prevent double sided borders.
 */
table {
  max-width: 100%;
  border-collapse: collapse;
  /* 1 */ }

strong {
  font-weight: 700; }

/* ==========================================================================
   Buttons
   ========================================================================== */
/**
 * Button base.
 */
.button, input[type='submit'] {
  font-size: 14px;
  font-size: 1.4rem;
  line-height: 1.42857em;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 100%;
  padding: 7px 12px;
  transition: all 250ms ease;
  text-decoration: none;
  cursor: pointer; }
  .button svg, input[type='submit'] svg {
    width: 11px;
    height: 11px; }
  .button.svg-right svg, input.svg-right[type='submit'] svg {
    margin-left: 10px; }
  .button.svg-left svg, input.svg-left[type='submit'] svg {
    margin-right: 10px; }

/**
 * Button primary (green).
 */
.button-primary--green, input[type='submit'] {
  border: 1px solid #c3223d;
  background: #c3223d;
  color: white; }
  @media only screen and (min-width: 1200px) {
    .button-primary--green:hover, input:hover[type='submit'] {
      background: transparent;
      color: #c3223d; } }

/**
 * Button secondary (green).
 */
.button-secondary--green {
  border: 1px solid #c3223d;
  background: transparent;
  color: #c3223d; }
  @media only screen and (min-width: 1200px) {
    .button-secondary--green:hover {
      background: #c3223d;
      color: white; } }

/**
 * Button secondary (white).
 */
.button-secondary--white {
  padding: 10px 15px;
  border: 2px solid white;
  background: rgba(0, 0, 0, 0.25);
  color: white;
  font-weight: 600;
  text-transform: uppercase; }
  @media only screen and (min-width: 1200px) {
    .button-secondary--white:hover {
      background: rgba(195, 34, 61, 0.25); } }

/* ==========================================================================
   Container
   ========================================================================== */
/**
 * The container object centers an element in the document.
 */
.container {
  max-width: calc(1024px + 40px);
  padding: 0 20px;
  width: 100%;
  margin: 0 auto; }

/* ==========================================================================
   Content Constraint
   ========================================================================== */
/**
 * The content constraint is a constraint for all the content within
 * the document. It can be manipulated by CSS or JavaScript without
 * influencing the body.
 */
.content-constraint {
  position: relative;
  min-height: 100vh;
  overflow: hidden; }

/* ==========================================================================
   Flex
   ========================================================================== */
/**
 * Example of a flex based column grid layout in practice:
 *
 * <div class="row">
 *   <div class="col col-xs-6 col-sm-12"></div>
 *   <div class="col col-xs-6 col-sm-12"></div>
 * </div>
 *
 * This example will create a row with two columns each filling half the width
 * of the row on all media, but will convert to a full width column on the
 * small `-sm` breakpoint alias, which is mobile only. Refer to
 * `settings/_definitions.scss` for all breakpoint alias.
 */
/**
 * Flex object.
 *
 * Tip: Use flex on a column to make the box the same height as the column.
 */
.flex {
  display: flex; }

.inline-flex {
  display: inline-flex; }

.flex-wrap {
  display: flex;
  flex-wrap: wrap; }

.inline-flex-wrap {
  display: inline-flex;
  flex-wrap: wrap; }

/**
 * Flex object with a column based layout system.
 */
.row {
  display: flex;
  flex: 0 1 auto;
  flex-flow: row wrap;
  margin: 0 -10px; }

/**
 * Box, the inside of a column.
 */
.box {
  flex: 1; }

/**
       * Column 1 for the `xs` breakpoint.
       */
.col-xs-1 {
  flex: 0 1 auto;
  width: 8.33333%;
  padding: 0 10px; }

/**
         * Offset 1 for the `xs` breakpoint.
         */
.offset-xs-1 {
  margin-left: 8.33333%; }

/**
       * Column 2 for the `xs` breakpoint.
       */
.col-xs-2 {
  flex: 0 1 auto;
  width: 16.66667%;
  padding: 0 10px; }

/**
         * Offset 2 for the `xs` breakpoint.
         */
.offset-xs-2 {
  margin-left: 16.66667%; }

/**
       * Column 3 for the `xs` breakpoint.
       */
.col-xs-3 {
  flex: 0 1 auto;
  width: 25%;
  padding: 0 10px; }

/**
         * Offset 3 for the `xs` breakpoint.
         */
.offset-xs-3 {
  margin-left: 25%; }

/**
       * Column 4 for the `xs` breakpoint.
       */
.col-xs-4 {
  flex: 0 1 auto;
  width: 33.33333%;
  padding: 0 10px; }

/**
         * Offset 4 for the `xs` breakpoint.
         */
.offset-xs-4 {
  margin-left: 33.33333%; }

/**
       * Column 5 for the `xs` breakpoint.
       */
.col-xs-5 {
  flex: 0 1 auto;
  width: 41.66667%;
  padding: 0 10px; }

/**
         * Offset 5 for the `xs` breakpoint.
         */
.offset-xs-5 {
  margin-left: 41.66667%; }

/**
       * Column 6 for the `xs` breakpoint.
       */
.col-xs-6 {
  flex: 0 1 auto;
  width: 50%;
  padding: 0 10px; }

/**
         * Offset 6 for the `xs` breakpoint.
         */
.offset-xs-6 {
  margin-left: 50%; }

/**
       * Column 7 for the `xs` breakpoint.
       */
.col-xs-7 {
  flex: 0 1 auto;
  width: 58.33333%;
  padding: 0 10px; }

/**
         * Offset 7 for the `xs` breakpoint.
         */
.offset-xs-7 {
  margin-left: 58.33333%; }

/**
       * Column 8 for the `xs` breakpoint.
       */
.col-xs-8 {
  flex: 0 1 auto;
  width: 66.66667%;
  padding: 0 10px; }

/**
         * Offset 8 for the `xs` breakpoint.
         */
.offset-xs-8 {
  margin-left: 66.66667%; }

/**
       * Column 9 for the `xs` breakpoint.
       */
.col-xs-9 {
  flex: 0 1 auto;
  width: 75%;
  padding: 0 10px; }

/**
         * Offset 9 for the `xs` breakpoint.
         */
.offset-xs-9 {
  margin-left: 75%; }

/**
       * Column 10 for the `xs` breakpoint.
       */
.col-xs-10 {
  flex: 0 1 auto;
  width: 83.33333%;
  padding: 0 10px; }

/**
         * Offset 10 for the `xs` breakpoint.
         */
.offset-xs-10 {
  margin-left: 83.33333%; }

/**
       * Column 11 for the `xs` breakpoint.
       */
.col-xs-11 {
  flex: 0 1 auto;
  width: 91.66667%;
  padding: 0 10px; }

/**
         * Offset 11 for the `xs` breakpoint.
         */
.offset-xs-11 {
  margin-left: 91.66667%; }

/**
       * Column 12 for the `xs` breakpoint.
       */
.col-xs-12 {
  flex: 0 1 auto;
  width: 100%;
  padding: 0 10px; }

/**
       * Align `stretch` for the xs breakpoint.
       */
.align-xs-stretch {
  align-items: stretch; }

/**
       * Align `center` for the xs breakpoint.
       */
.align-xs-center {
  align-items: center; }

/**
       * Align `flex-start` for the xs breakpoint.
       */
.align-xs-flex-start {
  align-items: flex-start; }

/**
       * Align `flex-end` for the xs breakpoint.
       */
.align-xs-flex-end {
  align-items: flex-end; }

/**
       * Align `baseline` for the xs breakpoint.
       */
.align-xs-baseline {
  align-items: baseline; }

/**
       * Justify `start` for the xs breakpoint.
       */
.justify-xs-start {
  justify-content: start; }

/**
       * Justify `center` for the xs breakpoint.
       */
.justify-xs-center {
  justify-content: center; }

/**
       * Justify `space-between` for the xs breakpoint.
       */
.justify-xs-space-between {
  justify-content: space-between; }

/**
       * Justify `space-around` for the xs breakpoint.
       */
.justify-xs-space-around {
  justify-content: space-around; }

/**
       * Justify `space-evenly` for the xs breakpoint.
       */
.justify-xs-space-evenly {
  justify-content: space-evenly; }

/**
       * Bleed left for the xs breakpoint.
       */
.bleed-xs-left {
  padding-left: 0; }

/**
       * Bleed right for the xs breakpoint.
       */
.bleed-xs-right {
  padding-right: 0; }

/**
     * Order first for the `xs` breakpoint.
     */
.first-xs {
  order: -1; }

/**
     * Order last for the `xs` breakpoint.
     */
.last-xs {
  order: 1; }

/**
     * Reverse order for the `xs` breakpoint.
     */
.reverse-xs {
  flex-direction: row-reverse; }

@media only screen and (max-width: 599px) {
  /**
       * Column 1 for the `sm` breakpoint.
       */
  .col-sm-1 {
    flex: 0 1 auto;
    width: 8.33333%;
    padding: 0 10px; }
  /**
         * Offset 1 for the `sm` breakpoint.
         */
  .offset-sm-1 {
    margin-left: 8.33333%; }
  /**
       * Column 2 for the `sm` breakpoint.
       */
  .col-sm-2 {
    flex: 0 1 auto;
    width: 16.66667%;
    padding: 0 10px; }
  /**
         * Offset 2 for the `sm` breakpoint.
         */
  .offset-sm-2 {
    margin-left: 16.66667%; }
  /**
       * Column 3 for the `sm` breakpoint.
       */
  .col-sm-3 {
    flex: 0 1 auto;
    width: 25%;
    padding: 0 10px; }
  /**
         * Offset 3 for the `sm` breakpoint.
         */
  .offset-sm-3 {
    margin-left: 25%; }
  /**
       * Column 4 for the `sm` breakpoint.
       */
  .col-sm-4 {
    flex: 0 1 auto;
    width: 33.33333%;
    padding: 0 10px; }
  /**
         * Offset 4 for the `sm` breakpoint.
         */
  .offset-sm-4 {
    margin-left: 33.33333%; }
  /**
       * Column 5 for the `sm` breakpoint.
       */
  .col-sm-5 {
    flex: 0 1 auto;
    width: 41.66667%;
    padding: 0 10px; }
  /**
         * Offset 5 for the `sm` breakpoint.
         */
  .offset-sm-5 {
    margin-left: 41.66667%; }
  /**
       * Column 6 for the `sm` breakpoint.
       */
  .col-sm-6 {
    flex: 0 1 auto;
    width: 50%;
    padding: 0 10px; }
  /**
         * Offset 6 for the `sm` breakpoint.
         */
  .offset-sm-6 {
    margin-left: 50%; }
  /**
       * Column 7 for the `sm` breakpoint.
       */
  .col-sm-7 {
    flex: 0 1 auto;
    width: 58.33333%;
    padding: 0 10px; }
  /**
         * Offset 7 for the `sm` breakpoint.
         */
  .offset-sm-7 {
    margin-left: 58.33333%; }
  /**
       * Column 8 for the `sm` breakpoint.
       */
  .col-sm-8 {
    flex: 0 1 auto;
    width: 66.66667%;
    padding: 0 10px; }
  /**
         * Offset 8 for the `sm` breakpoint.
         */
  .offset-sm-8 {
    margin-left: 66.66667%; }
  /**
       * Column 9 for the `sm` breakpoint.
       */
  .col-sm-9 {
    flex: 0 1 auto;
    width: 75%;
    padding: 0 10px; }
  /**
         * Offset 9 for the `sm` breakpoint.
         */
  .offset-sm-9 {
    margin-left: 75%; }
  /**
       * Column 10 for the `sm` breakpoint.
       */
  .col-sm-10 {
    flex: 0 1 auto;
    width: 83.33333%;
    padding: 0 10px; }
  /**
         * Offset 10 for the `sm` breakpoint.
         */
  .offset-sm-10 {
    margin-left: 83.33333%; }
  /**
       * Column 11 for the `sm` breakpoint.
       */
  .col-sm-11 {
    flex: 0 1 auto;
    width: 91.66667%;
    padding: 0 10px; }
  /**
         * Offset 11 for the `sm` breakpoint.
         */
  .offset-sm-11 {
    margin-left: 91.66667%; }
  /**
       * Column 12 for the `sm` breakpoint.
       */
  .col-sm-12 {
    flex: 0 1 auto;
    width: 100%;
    padding: 0 10px; }
  /**
       * Align `stretch` for the sm breakpoint.
       */
  .align-sm-stretch {
    align-items: stretch; }
  /**
       * Align `center` for the sm breakpoint.
       */
  .align-sm-center {
    align-items: center; }
  /**
       * Align `flex-start` for the sm breakpoint.
       */
  .align-sm-flex-start {
    align-items: flex-start; }
  /**
       * Align `flex-end` for the sm breakpoint.
       */
  .align-sm-flex-end {
    align-items: flex-end; }
  /**
       * Align `baseline` for the sm breakpoint.
       */
  .align-sm-baseline {
    align-items: baseline; }
  /**
       * Justify `start` for the sm breakpoint.
       */
  .justify-sm-start {
    justify-content: start; }
  /**
       * Justify `center` for the sm breakpoint.
       */
  .justify-sm-center {
    justify-content: center; }
  /**
       * Justify `space-between` for the sm breakpoint.
       */
  .justify-sm-space-between {
    justify-content: space-between; }
  /**
       * Justify `space-around` for the sm breakpoint.
       */
  .justify-sm-space-around {
    justify-content: space-around; }
  /**
       * Justify `space-evenly` for the sm breakpoint.
       */
  .justify-sm-space-evenly {
    justify-content: space-evenly; }
  /**
       * Bleed left for the sm breakpoint.
       */
  .bleed-sm-left {
    padding-left: 0; }
  /**
       * Bleed right for the sm breakpoint.
       */
  .bleed-sm-right {
    padding-right: 0; }
  /**
     * Order first for the `sm` breakpoint.
     */
  .first-sm {
    order: -1; }
  /**
     * Order last for the `sm` breakpoint.
     */
  .last-sm {
    order: 1; }
  /**
     * Reverse order for the `sm` breakpoint.
     */
  .reverse-sm {
    flex-direction: row-reverse; } }

@media only screen and (min-width: 600px) {
  /**
       * Column 1 for the `md` breakpoint.
       */
  .col-md-1 {
    flex: 0 1 auto;
    width: 8.33333%;
    padding: 0 10px; }
  /**
         * Offset 1 for the `md` breakpoint.
         */
  .offset-md-1 {
    margin-left: 8.33333%; }
  /**
       * Column 2 for the `md` breakpoint.
       */
  .col-md-2 {
    flex: 0 1 auto;
    width: 16.66667%;
    padding: 0 10px; }
  /**
         * Offset 2 for the `md` breakpoint.
         */
  .offset-md-2 {
    margin-left: 16.66667%; }
  /**
       * Column 3 for the `md` breakpoint.
       */
  .col-md-3 {
    flex: 0 1 auto;
    width: 25%;
    padding: 0 10px; }
  /**
         * Offset 3 for the `md` breakpoint.
         */
  .offset-md-3 {
    margin-left: 25%; }
  /**
       * Column 4 for the `md` breakpoint.
       */
  .col-md-4 {
    flex: 0 1 auto;
    width: 33.33333%;
    padding: 0 10px; }
  /**
         * Offset 4 for the `md` breakpoint.
         */
  .offset-md-4 {
    margin-left: 33.33333%; }
  /**
       * Column 5 for the `md` breakpoint.
       */
  .col-md-5 {
    flex: 0 1 auto;
    width: 41.66667%;
    padding: 0 10px; }
  /**
         * Offset 5 for the `md` breakpoint.
         */
  .offset-md-5 {
    margin-left: 41.66667%; }
  /**
       * Column 6 for the `md` breakpoint.
       */
  .col-md-6 {
    flex: 0 1 auto;
    width: 50%;
    padding: 0 10px; }
  /**
         * Offset 6 for the `md` breakpoint.
         */
  .offset-md-6 {
    margin-left: 50%; }
  /**
       * Column 7 for the `md` breakpoint.
       */
  .col-md-7 {
    flex: 0 1 auto;
    width: 58.33333%;
    padding: 0 10px; }
  /**
         * Offset 7 for the `md` breakpoint.
         */
  .offset-md-7 {
    margin-left: 58.33333%; }
  /**
       * Column 8 for the `md` breakpoint.
       */
  .col-md-8 {
    flex: 0 1 auto;
    width: 66.66667%;
    padding: 0 10px; }
  /**
         * Offset 8 for the `md` breakpoint.
         */
  .offset-md-8 {
    margin-left: 66.66667%; }
  /**
       * Column 9 for the `md` breakpoint.
       */
  .col-md-9 {
    flex: 0 1 auto;
    width: 75%;
    padding: 0 10px; }
  /**
         * Offset 9 for the `md` breakpoint.
         */
  .offset-md-9 {
    margin-left: 75%; }
  /**
       * Column 10 for the `md` breakpoint.
       */
  .col-md-10 {
    flex: 0 1 auto;
    width: 83.33333%;
    padding: 0 10px; }
  /**
         * Offset 10 for the `md` breakpoint.
         */
  .offset-md-10 {
    margin-left: 83.33333%; }
  /**
       * Column 11 for the `md` breakpoint.
       */
  .col-md-11 {
    flex: 0 1 auto;
    width: 91.66667%;
    padding: 0 10px; }
  /**
         * Offset 11 for the `md` breakpoint.
         */
  .offset-md-11 {
    margin-left: 91.66667%; }
  /**
       * Column 12 for the `md` breakpoint.
       */
  .col-md-12 {
    flex: 0 1 auto;
    width: 100%;
    padding: 0 10px; }
  /**
       * Align `stretch` for the md breakpoint.
       */
  .align-md-stretch {
    align-items: stretch; }
  /**
       * Align `center` for the md breakpoint.
       */
  .align-md-center {
    align-items: center; }
  /**
       * Align `flex-start` for the md breakpoint.
       */
  .align-md-flex-start {
    align-items: flex-start; }
  /**
       * Align `flex-end` for the md breakpoint.
       */
  .align-md-flex-end {
    align-items: flex-end; }
  /**
       * Align `baseline` for the md breakpoint.
       */
  .align-md-baseline {
    align-items: baseline; }
  /**
       * Justify `start` for the md breakpoint.
       */
  .justify-md-start {
    justify-content: start; }
  /**
       * Justify `center` for the md breakpoint.
       */
  .justify-md-center {
    justify-content: center; }
  /**
       * Justify `space-between` for the md breakpoint.
       */
  .justify-md-space-between {
    justify-content: space-between; }
  /**
       * Justify `space-around` for the md breakpoint.
       */
  .justify-md-space-around {
    justify-content: space-around; }
  /**
       * Justify `space-evenly` for the md breakpoint.
       */
  .justify-md-space-evenly {
    justify-content: space-evenly; }
  /**
       * Bleed left for the md breakpoint.
       */
  .bleed-md-left {
    padding-left: 0; }
  /**
       * Bleed right for the md breakpoint.
       */
  .bleed-md-right {
    padding-right: 0; }
  /**
     * Order first for the `md` breakpoint.
     */
  .first-md {
    order: -1; }
  /**
     * Order last for the `md` breakpoint.
     */
  .last-md {
    order: 1; }
  /**
     * Reverse order for the `md` breakpoint.
     */
  .reverse-md {
    flex-direction: row-reverse; } }

@media only screen and (min-width: 900px) {
  /**
       * Column 1 for the `lg` breakpoint.
       */
  .col-lg-1 {
    flex: 0 1 auto;
    width: 8.33333%;
    padding: 0 10px; }
  /**
         * Offset 1 for the `lg` breakpoint.
         */
  .offset-lg-1 {
    margin-left: 8.33333%; }
  /**
       * Column 2 for the `lg` breakpoint.
       */
  .col-lg-2 {
    flex: 0 1 auto;
    width: 16.66667%;
    padding: 0 10px; }
  /**
         * Offset 2 for the `lg` breakpoint.
         */
  .offset-lg-2 {
    margin-left: 16.66667%; }
  /**
       * Column 3 for the `lg` breakpoint.
       */
  .col-lg-3 {
    flex: 0 1 auto;
    width: 25%;
    padding: 0 10px; }
  /**
         * Offset 3 for the `lg` breakpoint.
         */
  .offset-lg-3 {
    margin-left: 25%; }
  /**
       * Column 4 for the `lg` breakpoint.
       */
  .col-lg-4 {
    flex: 0 1 auto;
    width: 33.33333%;
    padding: 0 10px; }
  /**
         * Offset 4 for the `lg` breakpoint.
         */
  .offset-lg-4 {
    margin-left: 33.33333%; }
  /**
       * Column 5 for the `lg` breakpoint.
       */
  .col-lg-5 {
    flex: 0 1 auto;
    width: 41.66667%;
    padding: 0 10px; }
  /**
         * Offset 5 for the `lg` breakpoint.
         */
  .offset-lg-5 {
    margin-left: 41.66667%; }
  /**
       * Column 6 for the `lg` breakpoint.
       */
  .col-lg-6 {
    flex: 0 1 auto;
    width: 50%;
    padding: 0 10px; }
  /**
         * Offset 6 for the `lg` breakpoint.
         */
  .offset-lg-6 {
    margin-left: 50%; }
  /**
       * Column 7 for the `lg` breakpoint.
       */
  .col-lg-7 {
    flex: 0 1 auto;
    width: 58.33333%;
    padding: 0 10px; }
  /**
         * Offset 7 for the `lg` breakpoint.
         */
  .offset-lg-7 {
    margin-left: 58.33333%; }
  /**
       * Column 8 for the `lg` breakpoint.
       */
  .col-lg-8 {
    flex: 0 1 auto;
    width: 66.66667%;
    padding: 0 10px; }
  /**
         * Offset 8 for the `lg` breakpoint.
         */
  .offset-lg-8 {
    margin-left: 66.66667%; }
  /**
       * Column 9 for the `lg` breakpoint.
       */
  .col-lg-9 {
    flex: 0 1 auto;
    width: 75%;
    padding: 0 10px; }
  /**
         * Offset 9 for the `lg` breakpoint.
         */
  .offset-lg-9 {
    margin-left: 75%; }
  /**
       * Column 10 for the `lg` breakpoint.
       */
  .col-lg-10 {
    flex: 0 1 auto;
    width: 83.33333%;
    padding: 0 10px; }
  /**
         * Offset 10 for the `lg` breakpoint.
         */
  .offset-lg-10 {
    margin-left: 83.33333%; }
  /**
       * Column 11 for the `lg` breakpoint.
       */
  .col-lg-11 {
    flex: 0 1 auto;
    width: 91.66667%;
    padding: 0 10px; }
  /**
         * Offset 11 for the `lg` breakpoint.
         */
  .offset-lg-11 {
    margin-left: 91.66667%; }
  /**
       * Column 12 for the `lg` breakpoint.
       */
  .col-lg-12 {
    flex: 0 1 auto;
    width: 100%;
    padding: 0 10px; }
  /**
       * Align `stretch` for the lg breakpoint.
       */
  .align-lg-stretch {
    align-items: stretch; }
  /**
       * Align `center` for the lg breakpoint.
       */
  .align-lg-center {
    align-items: center; }
  /**
       * Align `flex-start` for the lg breakpoint.
       */
  .align-lg-flex-start {
    align-items: flex-start; }
  /**
       * Align `flex-end` for the lg breakpoint.
       */
  .align-lg-flex-end {
    align-items: flex-end; }
  /**
       * Align `baseline` for the lg breakpoint.
       */
  .align-lg-baseline {
    align-items: baseline; }
  /**
       * Justify `start` for the lg breakpoint.
       */
  .justify-lg-start {
    justify-content: start; }
  /**
       * Justify `center` for the lg breakpoint.
       */
  .justify-lg-center {
    justify-content: center; }
  /**
       * Justify `space-between` for the lg breakpoint.
       */
  .justify-lg-space-between {
    justify-content: space-between; }
  /**
       * Justify `space-around` for the lg breakpoint.
       */
  .justify-lg-space-around {
    justify-content: space-around; }
  /**
       * Justify `space-evenly` for the lg breakpoint.
       */
  .justify-lg-space-evenly {
    justify-content: space-evenly; }
  /**
       * Bleed left for the lg breakpoint.
       */
  .bleed-lg-left {
    padding-left: 0; }
  /**
       * Bleed right for the lg breakpoint.
       */
  .bleed-lg-right {
    padding-right: 0; }
  /**
     * Order first for the `lg` breakpoint.
     */
  .first-lg {
    order: -1; }
  /**
     * Order last for the `lg` breakpoint.
     */
  .last-lg {
    order: 1; }
  /**
     * Reverse order for the `lg` breakpoint.
     */
  .reverse-lg {
    flex-direction: row-reverse; } }

@media only screen and (min-width: 1200px) {
  /**
       * Column 1 for the `xl` breakpoint.
       */
  .col-xl-1 {
    flex: 0 1 auto;
    width: 8.33333%;
    padding: 0 10px; }
  /**
         * Offset 1 for the `xl` breakpoint.
         */
  .offset-xl-1 {
    margin-left: 8.33333%; }
  /**
       * Column 2 for the `xl` breakpoint.
       */
  .col-xl-2 {
    flex: 0 1 auto;
    width: 16.66667%;
    padding: 0 10px; }
  /**
         * Offset 2 for the `xl` breakpoint.
         */
  .offset-xl-2 {
    margin-left: 16.66667%; }
  /**
       * Column 3 for the `xl` breakpoint.
       */
  .col-xl-3 {
    flex: 0 1 auto;
    width: 25%;
    padding: 0 10px; }
  /**
         * Offset 3 for the `xl` breakpoint.
         */
  .offset-xl-3 {
    margin-left: 25%; }
  /**
       * Column 4 for the `xl` breakpoint.
       */
  .col-xl-4 {
    flex: 0 1 auto;
    width: 33.33333%;
    padding: 0 10px; }
  /**
         * Offset 4 for the `xl` breakpoint.
         */
  .offset-xl-4 {
    margin-left: 33.33333%; }
  /**
       * Column 5 for the `xl` breakpoint.
       */
  .col-xl-5 {
    flex: 0 1 auto;
    width: 41.66667%;
    padding: 0 10px; }
  /**
         * Offset 5 for the `xl` breakpoint.
         */
  .offset-xl-5 {
    margin-left: 41.66667%; }
  /**
       * Column 6 for the `xl` breakpoint.
       */
  .col-xl-6 {
    flex: 0 1 auto;
    width: 50%;
    padding: 0 10px; }
  /**
         * Offset 6 for the `xl` breakpoint.
         */
  .offset-xl-6 {
    margin-left: 50%; }
  /**
       * Column 7 for the `xl` breakpoint.
       */
  .col-xl-7 {
    flex: 0 1 auto;
    width: 58.33333%;
    padding: 0 10px; }
  /**
         * Offset 7 for the `xl` breakpoint.
         */
  .offset-xl-7 {
    margin-left: 58.33333%; }
  /**
       * Column 8 for the `xl` breakpoint.
       */
  .col-xl-8 {
    flex: 0 1 auto;
    width: 66.66667%;
    padding: 0 10px; }
  /**
         * Offset 8 for the `xl` breakpoint.
         */
  .offset-xl-8 {
    margin-left: 66.66667%; }
  /**
       * Column 9 for the `xl` breakpoint.
       */
  .col-xl-9 {
    flex: 0 1 auto;
    width: 75%;
    padding: 0 10px; }
  /**
         * Offset 9 for the `xl` breakpoint.
         */
  .offset-xl-9 {
    margin-left: 75%; }
  /**
       * Column 10 for the `xl` breakpoint.
       */
  .col-xl-10 {
    flex: 0 1 auto;
    width: 83.33333%;
    padding: 0 10px; }
  /**
         * Offset 10 for the `xl` breakpoint.
         */
  .offset-xl-10 {
    margin-left: 83.33333%; }
  /**
       * Column 11 for the `xl` breakpoint.
       */
  .col-xl-11 {
    flex: 0 1 auto;
    width: 91.66667%;
    padding: 0 10px; }
  /**
         * Offset 11 for the `xl` breakpoint.
         */
  .offset-xl-11 {
    margin-left: 91.66667%; }
  /**
       * Column 12 for the `xl` breakpoint.
       */
  .col-xl-12 {
    flex: 0 1 auto;
    width: 100%;
    padding: 0 10px; }
  /**
       * Align `stretch` for the xl breakpoint.
       */
  .align-xl-stretch {
    align-items: stretch; }
  /**
       * Align `center` for the xl breakpoint.
       */
  .align-xl-center {
    align-items: center; }
  /**
       * Align `flex-start` for the xl breakpoint.
       */
  .align-xl-flex-start {
    align-items: flex-start; }
  /**
       * Align `flex-end` for the xl breakpoint.
       */
  .align-xl-flex-end {
    align-items: flex-end; }
  /**
       * Align `baseline` for the xl breakpoint.
       */
  .align-xl-baseline {
    align-items: baseline; }
  /**
       * Justify `start` for the xl breakpoint.
       */
  .justify-xl-start {
    justify-content: start; }
  /**
       * Justify `center` for the xl breakpoint.
       */
  .justify-xl-center {
    justify-content: center; }
  /**
       * Justify `space-between` for the xl breakpoint.
       */
  .justify-xl-space-between {
    justify-content: space-between; }
  /**
       * Justify `space-around` for the xl breakpoint.
       */
  .justify-xl-space-around {
    justify-content: space-around; }
  /**
       * Justify `space-evenly` for the xl breakpoint.
       */
  .justify-xl-space-evenly {
    justify-content: space-evenly; }
  /**
       * Bleed left for the xl breakpoint.
       */
  .bleed-xl-left {
    padding-left: 0; }
  /**
       * Bleed right for the xl breakpoint.
       */
  .bleed-xl-right {
    padding-right: 0; }
  /**
     * Order first for the `xl` breakpoint.
     */
  .first-xl {
    order: -1; }
  /**
     * Order last for the `xl` breakpoint.
     */
  .last-xl {
    order: 1; }
  /**
     * Reverse order for the `xl` breakpoint.
     */
  .reverse-xl {
    flex-direction: row-reverse; } }

/* ==========================================================================
   Form
   ========================================================================== */
/**
 * Main.
 */
.form {
  position: relative; }

/**
 * Input container.
 */
.gfield {
  margin-bottom: 20px; }

/**
 * Input label.
 */
.gfield_label {
  display: block;
  margin-bottom: 5px; }

/**
 * Default settings for the inputs.
 */
.form select,
.form input[type='text'],
textarea {
  width: 100%;
  height: 35px;
  padding: 0 10px;
  transition: all 250ms ease;
  border: 1px solid #bdbdbd; }
  .form select:hover,
  .form input[type='text']:hover,
  textarea:hover {
    border: 1px solid #c3223d; }
  .form select:focus,
  .form input[type='text']:focus,
  textarea:focus {
    border: 1px solid rgba(195, 34, 61, 0.7); }

/**
 * Submit button.
 */
@media only screen and (max-width: 899px) {
  input[type='submit'] {
    width: 100%; } }

/**
 * Select input.
 */
.ginput_container_select {
  position: relative; }
  .ginput_container_select svg {
    position: absolute;
    top: 10px;
    right: 15px;
    width: 14px;
    height: 14px;
    color: #c3223d;
    pointer-events: none; }

/**
 * Textarea.
 */
textarea {
  height: 100px; }

/**
 * Error messages.
 */
.gform_validation_container {
  display: none; }

.gfield_error input {
  border: 1px solid #fc4040 !important; }

.validation_error {
  margin-bottom: 20px;
  color: #fc4040;
  font-weight: 700; }

.validation_message {
  margin-top: 10px;
  color: #fc4040; }

/* ==========================================================================
   Heading
   ========================================================================== */
/**
 * Heading base
 */
.heading {
  color: black;
  font-weight: 700;
  text-transform: uppercase; }

/**
 * Heading 1
 */
.heading-1 {
  font-size: 24px;
  font-size: 2.4rem;
  line-height: 1.33333em; }

/**
 * Heading 2
 */
.heading-2 {
  font-size: 20px;
  font-size: 2rem;
  line-height: 1.75em; }

/**
 * Heading 3
 */
.heading-3 {
  font-size: 14px;
  font-size: 1.4rem;
  line-height: 1.71429em; }

/* ==========================================================================
   Links
   ========================================================================== */
/**
 * Link base.
 */
.link {
  font-size: 14px;
  font-size: 1.4rem;
  line-height: 1.42857em;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all 250ms ease;
  text-decoration: none;
  cursor: pointer; }
  .link svg {
    width: 11px;
    height: 11px; }
  .link.svg-right svg {
    margin-left: 10px; }
  .link.svg-left svg {
    margin-right: 10px; }
  .link.underline {
    text-decoration: underline; }

/**
 * Link (green).
 */
.link--green {
  color: #c3223d; }
  @media only screen and (min-width: 1200px) {
    .link--green:hover {
      color: #d02541;
      text-decoration: underline; } }

/**
 * Link (green).
 */
.link--black {
  color: black; }
  @media only screen and (min-width: 1200px) {
    .link--black:hover {
      color: #d02541;
      text-decoration: underline; } }

/* ==========================================================================
   Section
   ========================================================================== */
.m10-top {
  margin-top: 10px; }

.m10-bottom {
  margin-bottom: 10px; }

.m15-top {
  margin-top: 15px; }

.m15-bottom {
  margin-bottom: 15px; }

.m20-top {
  margin-top: 20px; }

.m20-bottom {
  margin-bottom: 20px; }

/* ==========================================================================
   Wrapper
   ========================================================================== */
/**
 * The wrapper object centers an element in the document.
 */
.wrapper {
  max-width: calc(1220px + 40px);
  padding: 0 20px;
  width: 100%;
  margin: 0 auto; }

/* ==========================================================================
   CMS Output
   ========================================================================== */
/**
 * Every conceivable HTML element within a `.cms-output` wrapper.
 *
 * 1. Exclude last childs.
 */
.cms-output h2,
.cms-output h3 {
  color: black;
  font-weight: 700;
  text-transform: uppercase; }

.cms-output h2 {
  font-size: 20px;
  font-size: 2rem;
  line-height: 1.75em; }

.cms-output h3 {
  font-size: 14px;
  font-size: 1.4rem;
  line-height: 1.71429em; }

.cms-output > *:not(:last-child) {
  margin-bottom: 1.5em;
  /* 1 */ }

.cms-output ul {
  list-style-type: disc; }

.cms-output ol {
  list-style-type: decimal; }

.cms-output a {
  text-decoration: underline;
  color: #c3223d;
  transition: all 250ms ease; }
  .cms-output a:hover {
    color: #d0586c; }

.content-columns {
  padding: 40px 0 100px 0; }

.content-columns__column {
  width: 50%;
  padding: 0 0 0 60px; }
  @media only screen and (max-width: 899px) {
    .content-columns__column {
      width: 100%;
      padding: 60px 0 0 0; } }
  .content-columns__column.is-left {
    border-right: 1px solid #bdbdbd;
    padding: 0 60px 0 0; }
    @media only screen and (max-width: 899px) {
      .content-columns__column.is-left {
        border-right: 0;
        border-bottom: 1px solid #bdbdbd;
        padding: 0 0 60px 0; } }

.content-columns__editor ul {
  list-style: none;
  margin-bottom: 15px; }
  .content-columns__editor ul li {
    position: relative;
    margin-bottom: 25px;
    padding-left: 40px; }
    .content-columns__editor ul li svg {
      position: absolute;
      top: 0;
      left: 0;
      display: flex;
      align-items: center;
      justify-content: center;
      width: 25px;
      height: 25px;
      padding: 4px;
      border-radius: 20px;
      background-color: #c3223d;
      color: white; }

.content-columns__title {
  margin-bottom: 20px; }

.content-columns__button {
  height: 50px;
  margin-top: 40px;
  padding-left: 20px;
  padding-right: 20px; }
  .content-columns__button svg {
    position: relative;
    top: 1px;
    width: 8px;
    height: 17px;
    margin-left: 10px; }

/* ==========================================================================
   Content introduction
   ========================================================================== */
/**
 * Main.
 */
.content-introduction {
  margin: 20px 0 60px; }
  @media only screen and (max-width: 1199px) {
    .content-introduction {
      margin: 0 0 20px; } }

/**
 * Intro.
 */
.content-introduction__intro {
  position: relative; }
  @media only screen and (max-width: 899px) {
    .content-introduction__intro {
      margin-bottom: 20px;
      padding-bottom: 25px; } }
  .content-introduction__intro::after {
    display: block;
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
    width: calc(100% + 40px);
    height: 1px;
    margin-left: -20px;
    background: rgba(195, 34, 61, 0.6);
    content: ''; }
    @media only screen and (min-width: 900px) {
      .content-introduction__intro::after {
        display: none; } }

/**
 * Button.
 */
.content-introduction__button {
  margin-top: 20px; }

/**
 * Services.
 */
.content-introduction__services {
  position: relative; }
  @media only screen and (max-width: 899px) {
    .content-introduction__services {
      margin-bottom: 20px;
      padding-bottom: 25px; } }
  .content-introduction__services ul {
    display: flex;
    flex-wrap: wrap;
    margin: -5px 0;
    list-style: none; }
  .content-introduction__services li {
    display: flex;
    align-items: center;
    width: 50%;
    margin: 5px 0; }
    .content-introduction__services li svg {
      width: 14px;
      height: 14px;
      margin-right: 10px;
      color: #c3223d; }
  .content-introduction__services::after {
    display: block;
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
    width: calc(100% + 40px);
    height: 1px;
    margin-left: -20px;
    background: rgba(195, 34, 61, 0.6);
    content: ''; }
    @media only screen and (min-width: 900px) {
      .content-introduction__services::after {
        display: none; } }

/* ==========================================================================
   Footer.
   ========================================================================== */
/**
 * Upper part of footer.
 */
.footer-upper {
  padding: 40px 0 60px;
  background: rgba(195, 34, 61, 0.25); }
  @media only screen and (max-width: 1199px) {
    .footer-upper {
      padding: 20px 0; } }

/**
 * Footer column.
 */
.footer-column.first-column ul {
  display: flex;
  flex-wrap: wrap;
  list-style: none; }

.footer-column.first-column li {
  width: 50%; }

/**
 * Footer column title..
 */
@media only screen and (max-width: 899px) {
  .footer-column__title {
    margin-bottom: 10px;
    cursor: pointer; } }

@media only screen and (min-width: 900px) {
  .footer-column__title {
    margin-bottom: 20px; } }

.footer-column__title svg {
  position: absolute;
  right: 20px;
  width: 16px;
  height: 16px;
  transition: -webkit-transform 250ms ease;
  transition: transform 250ms ease;
  transition: transform 250ms ease, -webkit-transform 250ms ease; }
  @media only screen and (min-width: 900px) {
    .footer-column__title svg {
      display: none; } }
  .footer-column__title svg.is-active {
    -webkit-transform: rotate(180deg);
            transform: rotate(180deg); }

@media only screen and (max-width: 899px) {
  .footer-column__title.is-active {
    margin-bottom: 20px; } }

/**
 * Footer column editor.
 */
.footer-column__editor {
  height: 100%;
  max-height: 500px;
  transition: all 350ms ease;
  overflow: hidden; }
  @media only screen and (max-width: 899px) {
    .footer-column__editor {
      max-height: 0;
      padding-bottom: 0; } }
  @media only screen and (max-width: 899px) {
    .footer-column__editor.is-active {
      max-height: 500px;
      padding-bottom: 30px; } }
  .footer-column__editor a {
    color: black;
    text-decoration: none; }

/**
 * Footer lower.
 */
.footer-lower {
  padding: 20px 0;
  background: #c3223d;
  color: white; }
  @media only screen and (max-width: 899px) {
    .footer-lower {
      text-align: center; } }
  .footer-lower .wrapper {
    justify-content: space-between; }

/**
 * Footer links.
 */
@media only screen and (max-width: 899px) {
  .footer-lower__links {
    justify-content: center;
    width: 100%;
    margin-bottom: 10px; } }

/**
 * Footer link.
 */
.footer-lower__link {
  display: flex;
  align-items: center; }
  .footer-lower__link a {
    font-size: 13px;
    font-size: 1.3rem;
    line-height: 1.46154em;
    display: inline-flex;
    position: relative;
    margin-right: 8px;
    padding-right: 8px; }
    .footer-lower__link a::after {
      display: block;
      position: absolute;
      top: 4px;
      right: 0;
      bottom: 0;
      width: 1px;
      height: 15px;
      background: white;
      content: ''; }
    .footer-lower__link a:hover {
      text-decoration: underline; }
  .footer-lower__link:nth-last-child(1) a::after {
    display: none; }

/**
 * Author.
 */
@media only screen and (max-width: 899px) {
  .footer__author {
    width: 100%; } }

.footer__author span {
  font-size: 13px;
  font-size: 1.3rem;
  line-height: 1.46154em; }
  @media only screen and (max-width: 899px) {
    .footer__author span {
      display: block;
      width: 100%; } }

.footer__author a {
  font-size: 13px;
  font-size: 1.3rem;
  line-height: 1.46154em;
  position: relative;
  margin-left: 8px;
  padding-left: 8px; }
  @media only screen and (max-width: 899px) {
    .footer__author a {
      margin: 0;
      padding: 0; } }
  .footer__author a::after {
    display: block;
    position: absolute;
    top: 2px;
    bottom: 0;
    left: 0;
    width: 1px;
    height: 15px;
    background: white;
    content: ''; }
    @media only screen and (max-width: 899px) {
      .footer__author a::after {
        display: none; } }
  .footer__author a:hover {
    text-decoration: underline; }

/**
 * USP's.
 */
.footer__usps {
  position: fixed;
  top: 30%;
  right: 0;
  width: 35px;
  height: auto;
  z-index: 9; }
  @media only screen and (min-width: 900px) {
    .footer__usps {
      display: none; } }

/**
 * Single USP.
 */
.footer-usp {
  width: 100%; }
  .footer-usp a {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 35px;
    height: 35px;
    margin: 5px 0;
    background: #c3223d;
    color: white; }
  .footer-usp svg {
    width: 20px;
    height: 20px;
    color: white; }
  @media only screen and (max-width: 899px) {
    .footer-usp span {
      display: none; } }

/* ==========================================================================
   Gallery
   ========================================================================== */
/**
 * Main.
 */
.gallery {
  position: relative; }

/**
 * Images.
 */
.gallery__images {
  margin: 25px -5px; }

/**
 * Single image.
 */
.gallery__image {
  width: calc(100% / 4 - 5px);
  margin: 2.5px;
  transition: opacity 250ms ease; }
  @media only screen and (max-width: 899px) {
    .gallery__image {
      width: calc(100% / 2 - 5px); } }
  .gallery__image img {
    width: 100%;
    height: 210px; }
  @media only screen and (min-width: 1200px) {
    .gallery__image:hover {
      opacity: 0.75; } }

/* ==========================================================================
   Header
   ========================================================================== */
/**
 * Main.
 */
.header {
  position: relative;
  background: white;
  z-index: 100; }
  .header .wrapper {
    position: relative; }

.filler {
  width: 100%;
  height: 500px;
  padding: 20px 0; }

/**
 * USP's.
 */
.header__usps {
  justify-content: flex-end;
  width: calc(100% / 3 * 2);
  height: auto; }
  @media only screen and (max-width: 1199px) {
    .header__usps {
      display: none; } }

/**
 * Single USP.
 */
.header-usp {
  margin: 0 7.5px; }
  .header-usp svg {
    width: 18px;
    height: 18px;
    margin-right: 10px; }
  .header-usp a {
    transition: all 250ms ease; }
    .header-usp a:hover {
      color: #c3223d;
      text-decoration: underline; }
  .header-usp:nth-child(1) svg {
    -webkit-transform: scaleX(-1);
            transform: scaleX(-1); }

/* ==========================================================================
   Logo
   ========================================================================== */
/**
 * Logo.
 */
.logo {
  width: calc(100% / 3); }
  @media only screen and (max-width: 1199px) {
    .logo {
      display: flex;
      width: calc(100% - 150px); } }
  .logo img {
    display: block;
    max-width: 250px;
    height: auto;
    max-height: 58px;
    margin: 15px 0 15px; }
    @media only screen and (max-width: 899px) {
      .logo img {
        width: 250px;
        margin: 5px 0 0; } }
    @media only screen and (min-width: 900px) and (max-width: 1199px) {
      .logo img {
        height: 60px; } }

/* ==========================================================================
   Navigation
   ========================================================================== */
/**
 * Navigation wrapper.
 */
.navigation__wrapper {
  position: relative;
  background: #c3223d;
  color: white; }
  @media only screen and (min-width: 1200px) {
    .navigation__wrapper {
      text-transform: uppercase; } }

.navigation {
  display: flex;
  flex-wrap: wrap; }
  @media only screen and (min-width: 1200px) {
    .navigation {
      position: relative; } }

/**
 * Navigation menu.
 */
@media only screen and (max-width: 1199px) {
  .navigation-menu {
    display: flex;
    position: absolute;
    top: 0;
    left: 0;
    flex-wrap: wrap;
    align-items: center;
    width: 100vw;
    height: 100vh;
    transition: opacity 500ms;
    background-color: #c3223d;
    opacity: 0;
    pointer-events: none; }
    .navigation-menu.is-active {
      opacity: 1;
      pointer-events: all; }
      .navigation-menu.is-active .main-menu > .menu-item {
        -webkit-transform: translateY(0);
                transform: translateY(0);
        transition: opacity 500ms 700ms, -webkit-transform 500ms 700ms;
        transition: opacity 500ms 700ms, transform 500ms 700ms;
        transition: opacity 500ms 700ms, transform 500ms 700ms, -webkit-transform 500ms 700ms;
        opacity: 1; }
        .navigation-menu.is-active .main-menu > .menu-item:nth-child(2) {
          transition-delay: 900ms; }
        .navigation-menu.is-active .main-menu > .menu-item:nth-child(3) {
          transition-delay: 1100ms; }
        .navigation-menu.is-active .main-menu > .menu-item:nth-child(4) {
          transition-delay: 1300ms; }
        .navigation-menu.is-active .main-menu > .menu-item:nth-child(5) {
          transition-delay: 1500ms; }
        .navigation-menu.is-active .main-menu > .menu-item:nth-child(6) {
          transition-delay: 1700ms; }
        .navigation-menu.is-active .main-menu > .menu-item:nth-child(7) {
          transition-delay: 1900ms; }
        .navigation-menu.is-active .main-menu > .menu-item:nth-child(8) {
          transition-delay: 2100ms; }
        .navigation-menu.is-active .main-menu > .menu-item:nth-child(9) {
          transition-delay: 2300ms; }
        .navigation-menu.is-active .main-menu > .menu-item:nth-child(10) {
          transition-delay: 2500ms; } }

@media only screen and (max-width: 1199px) {
  .navigation-menu__wrapper {
    width: 100%; } }

@media only screen and (max-width: 1199px) {
  .navigation__search {
    display: flex;
    justify-content: center;
    width: 100%;
    transition: all 250ms ease;
    opacity: 0;
    pointer-events: none; } }

@media only screen and (max-width: 1199px) {
  .navigation__search.is-active {
    opacity: 1;
    pointer-events: all; } }

/**
 * Navigation button.
 */
.navigation-button {
  position: absolute;
  top: 0;
  right: 0;
  width: 85px;
  height: 100%;
  background: #c3223d; }
  @media only screen and (min-width: 1200px) {
    .navigation-button {
      display: none; } }
  .navigation-button span {
    display: inline-block;
    position: absolute;
    right: 0;
    left: 0;
    width: 30px;
    height: 4px;
    margin: auto;
    background-color: white; }
    .navigation-button span:nth-child(1) {
      top: 27px;
      transition: background-color 400ms, top 400ms 400ms, -webkit-transform 400ms 0s;
      transition: background-color 400ms, top 400ms 400ms, transform 400ms 0s;
      transition: background-color 400ms, top 400ms 400ms, transform 400ms 0s, -webkit-transform 400ms 0s; }
    .navigation-button span:nth-child(2) {
      top: calc(50% - 2px);
      transition: background-color 400ms, opacity 0ms 400ms;
      opacity: 1; }
    .navigation-button span:nth-child(3) {
      bottom: 27px;
      transition: background-color 400ms, bottom 400ms 400ms, -webkit-transform 400ms 0s;
      transition: background-color 400ms, bottom 400ms 400ms, transform 400ms 0s;
      transition: background-color 400ms, bottom 400ms 400ms, transform 400ms 0s, -webkit-transform 400ms 0s; }
  .navigation-button.is-active span:nth-child(1) {
    top: calc(50% - 2px);
    -webkit-transform: rotate(-45deg);
            transform: rotate(-45deg);
    transition: background-color 400ms, top 400ms, -webkit-transform 400ms 400ms;
    transition: background-color 400ms, top 400ms, transform 400ms 400ms;
    transition: background-color 400ms, top 400ms, transform 400ms 400ms, -webkit-transform 400ms 400ms; }
  .navigation-button.is-active span:nth-child(2) {
    opacity: 0; }
  .navigation-button.is-active span:nth-child(3) {
    bottom: calc(50% - 2px);
    -webkit-transform: rotate(45deg);
            transform: rotate(45deg);
    transition: background-color 400ms, bottom 400ms, -webkit-transform 400ms 400ms;
    transition: background-color 400ms, bottom 400ms, transform 400ms 400ms;
    transition: background-color 400ms, bottom 400ms, transform 400ms 400ms, -webkit-transform 400ms 400ms; }

/**
 * WordPress main menu.
 */
/**
 * Main menu.
 */
@media only screen and (min-width: 1200px) {
  .main-menu {
    display: flex;
    flex-wrap: wrap; } }

/**
 * Main menu item.
 */
@media only screen and (max-width: 1199px) {
  .main-menu > .menu-item {
    display: inline-block;
    width: 100%;
    -webkit-transform: translateY(-50px);
            transform: translateY(-50px);
    transition-delay: 0ms;
    transition-timing-function: 0ms;
    text-align: center;
    opacity: 0; } }

/**
 * Main menu link.
 */
.main-menu > .menu-item > a {
  font-size: 14px;
  font-size: 1.4rem;
  line-height: 1.42857em;
  align-items: center; }
  @media only screen and (min-width: 1200px) {
    .main-menu > .menu-item > a {
      display: flex;
      align-items: center;
      padding: 15px 20px;
      transition: all 250ms ease;
      color: white; } }
  @media only screen and (max-width: 1199px) {
    .main-menu > .menu-item > a {
      font-size: 25px;
      font-size: 2.5rem;
      line-height: 1.6em;
      display: inline-flex;
      position: relative;
      justify-content: center;
      padding: 10px;
      color: white; } }
  @media only screen and (min-width: 1200px) {
    .main-menu > .menu-item > a:hover {
      background: #d0586c; } }

/**
 * Main menu item has children.
 */
.main-menu > .menu-item-has-children {
  position: relative; }
  @media only screen and (min-width: 1200px) {
    .main-menu > .menu-item-has-children:hover .submenu-container {
      -webkit-transform: translateY(0);
              transform: translateY(0);
      opacity: 1;
      pointer-events: all; } }
  @media only screen and (max-width: 1199px) {
    .main-menu > .menu-item-has-children a {
      padding: 10px 15px 10px 10px; } }

/**
 * Current menu item.
 */
.current-menu-item,
.current-page-ancestor {
  background: #d0586c; }

/**
 * Login button.
 */
.navigation__login {
  font-size: 12px;
  font-size: 1.2rem;
  line-height: 2em;
  position: absolute;
  top: -50px;
  right: 0;
  color: #c3223d; }
  .navigation__login::before {
    display: none;
    font-family: "Font Awesome 5 Light";
    content: '\f023'; }
  .navigation__login > svg {
    margin-right: 5px; }

.navigation__login--logout::before {
  display: none;
  font-family: "Font Awesome 5 Light";
  content: '\f09c'; }

/* ==========================================================================
   Page default settings.
   ========================================================================== */
/**
 * Main.
 */
.content {
  padding: 75px 0; }
  @media only screen and (max-width: 1199px) {
    .content {
      padding: 20px 0; } }

/**
 * Content row.
 */
@media only screen and (max-width: 1199px) {
  .content__row {
    flex-direction: column-reverse; } }

/**
 * Content sidebar.
 */
.content__sidebar-container {
  width: 100%;
  max-width: 350px; }
  @media only screen and (max-width: 1199px) {
    .content__sidebar-container {
      max-width: 100%;
      margin-top: 10px; } }

@media only screen and (max-width: 1199px) {
  .side-contact {
    display: none; } }

/**
 * Information.
 */
.contact-information li {
  display: flex;
  align-items: center;
  width: 50%; }

.contact-information svg {
  width: 14px;
  height: 14px;
  margin-right: 5px;
  color: black; }

@media only screen and (min-width: 1200px) {
  .contact-information a:hover {
    color: #c3223d;
    text-decoration: underline; } }

/**
 * Additional rules for certain elements.
 */
.content__sidebar .project-list {
  margin-top: 30px; }
  @media only screen and (max-width: 1199px) {
    .content__sidebar .project-list {
      margin-top: 0 !important;
      padding-top: 0 !important; } }
  @media only screen and (max-width: 1199px) {
    .content__sidebar .project-list::after {
      display: none !important; } }

.content__main .product-category-list {
  padding: 0;
  border: 0; }
  .content__main .product-category-list .wrapper {
    padding: 0; }

.content__main .product-list__loop {
  margin: 5px -5px 0; }

.content__main .product-list-item {
  width: calc(50% - 10px); }
  @media only screen and (max-width: 599px) {
    .content__main .product-list-item {
      width: 100%; } }

.content__main .project-list {
  margin-top: 20px; }

@media only screen and (min-width: 1200px) {
  .content__main .project-item {
    width: calc(50% - 10px); } }

/* ==========================================================================
   Page submenu
   ========================================================================== */
/**
 * Main.
 */
.page-submenu {
  position: relative;
  margin-bottom: 40px; }
  @media only screen and (max-width: 899px) {
    .page-submenu {
      display: none; } }

/**
 * Submenu item.
 */
.page-submenu__item {
  font-size: 14px;
  font-size: 1.4rem;
  line-height: 1.42857em;
  width: 100%; }
  .page-submenu__item a {
    padding: 20px 17px 20px 20px;
    border: 1px solid rgba(195, 34, 61, 0.25);
    background: rgba(195, 34, 61, 0.25); }
  .page-submenu__item svg {
    position: relative;
    right: -20px;
    width: 18px;
    height: 18px;
    transition: all 250ms ease;
    color: #c3223d;
    opacity: 0; }
  .page-submenu__item:hover svg {
    right: 0;
    opacity: 1; }
  .page-submenu__item.active svg {
    right: 0;
    opacity: 1; }

/* ==========================================================================
   Project item
   ========================================================================== */
/**
 * Main.
 */
.product-category-list {
  padding: 55px 0;
  border-top: 1px solid rgba(195, 34, 61, 0.7); }
  @media only screen and (max-width: 1199px) {
    .product-category-list {
      padding: 20px 0; } }

.product-category-menu {
  margin-bottom: 40px; }
  @media only screen and (max-width: 1199px) {
    .product-category-menu {
      display: none; } }

.product-list-item {
  position: relative;
  width: calc(100% / 3 - 10px);
  margin: 5px;
  transition: all 250ms ease;
  border: 1px solid rgba(195, 34, 61, 0.7); }
  @media only screen and (max-width: 599px) {
    .product-list-item {
      width: 100%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) {
    .product-list-item {
      width: calc(100% / 2 - 10px); } }
  @media only screen and (min-width: 1200px) {
    .product-list-item:hover {
      border: 1px solid #c3223d; }
      .product-list-item:hover .product-list-item__image {
        opacity: 0.75; } }

/**
 * Loop.
 */
.product-list__loop {
  margin: 0 -5px; }

/**
 * Image
 */
.product-list-item__image {
  width: 140px;
  height: 100%;
  transition: all 250ms ease; }
  .product-list-item__image img {
    width: 100%;
    height: 100%; }

/**
 * Body.
 */
.product-list-item__body {
  width: calc(100% - 140px);
  padding: 20px 30px;
  background: white; }

/**
 * Link.
 */
.product-list-item__link {
  font-size: 13px;
  font-size: 1.3rem;
  line-height: 1.53846em;
  font-weight: 600; }
  .product-list-item__link svg {
    width: 13px;
    height: 13px;
    color: #c3223d; }

/* ==========================================================================
   Project loop
   ========================================================================== */
/**
 * Main.
 */
.content__main .project-list__loop {
  display: flex;
  flex-wrap: wrap;
  margin: 0 -5px; }
  .content__main .project-list__loop .project-item {
    margin: 5px; }
    @media only screen and (min-width: 1200px) {
      .content__main .project-list__loop .project-item {
        width: calc(50% - 10px); } }

/* ==========================================================================
   Project item
   ========================================================================== */
/**
 * Main.
 */
.project-item {
  position: relative;
  width: 100%;
  margin-bottom: 10px;
  transition: all 250ms ease;
  border: 1px solid rgba(195, 34, 61, 0.7);
  background: white; }
  @media only screen and (min-width: 600px) and (max-width: 1199px) {
    .project-item {
      width: calc(50% - 10px); } }
  @media only screen and (min-width: 1200px) {
    .project-item:hover {
      border: 1px solid #c3223d; }
      .project-item:hover .project-item__image {
        opacity: 0.75; } }

/**
 * Image.
 */
.project-item__image {
  width: 130px;
  height: 100%;
  min-height: 120px;
  transition: all 250ms ease; }
  .project-item__image img {
    width: 100%;
    height: 100%; }

/**
 * Body.
 */
.project-item__body {
  font-size: 13px;
  font-size: 1.3rem;
  line-height: 1.53846em;
  width: calc(100% - 130px);
  height: auto;
  padding: 15px 20px; }

/**
 * Title.
 */
.project-item__title {
  text-transform: none; }

/**
 * Link.
 */
.project-item__link {
  margin-top: 5px; }

/* ==========================================================================
   Project latest
   ========================================================================== */
/**
 * List.
 */
@media only screen and (min-width: 900px) and (max-width: 1199px) {
  .project-list.is-latest {
    position: relative;
    margin-top: 30px;
    padding-top: 20px; } }

.project-list.is-latest::after {
  display: block;
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  width: calc(100% + 40px);
  height: 1px;
  background: rgba(195, 34, 61, 0.6);
  content: ''; }

@media only screen and (max-width: 599px) {
  .project-list .project-item__body {
    display: flex;
    flex-wrap: wrap;
    align-content: center; } }

@media only screen and (max-width: 599px) {
  .project-list .project-item__title {
    width: 100%; } }

@media only screen and (max-width: 599px) {
  .project-list .project-item__teaser {
    display: none; } }

/**
 * Header.
 */
@media only screen and (max-width: 1199px) {
  .project-list__header.is-latest {
    align-items: center;
    margin-bottom: 20px; } }

/* ==========================================================================
   Search
   ========================================================================== */
.search {
  display: flex;
  position: absolute;
  top: 7px;
  right: 20px;
  bottom: 0;
  flex-wrap: wrap; }
  @media only screen and (max-width: 1199px) {
    .search {
      top: 35px;
      right: initial;
      justify-content: center;
      width: 100%; } }

/**
 * Form.
 */
.search-form {
  height: 30px;
  cursor: pointer; }
  @media only screen and (max-width: 1199px) {
    .search-form {
      position: relative;
      width: 100%;
      max-width: 235px;
      height: 40px; } }

/**
 * Button.
 */
.search__button {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  color: white;
  cursor: pointer; }

/**
 * Container.
 */
.search__form.is-active .search__input {
  width: 235px;
  height: 35px;
  transition: all 150ms cubic-bezier(0.2, 0.6, 0.252, 1.2), background-color 0ms 0ms;
  border-radius: 0;
  background-color: transparent;
  color: white;
  cursor: initial; }

.search__form.is-active .search__input-bar {
  top: 5px;
  right: 0;
  box-shadow: none;
  opacity: 0; }

/**
 * Input.
 */
.search__input {
  position: relative;
  width: 15px;
  height: 15px;
  padding: 5px;
  transition: all 150ms cubic-bezier(0.2, 0.6, 0.252, 1.2), background-color 100ms 150ms;
  border: 1px solid white;
  border-radius: 50%;
  outline: none;
  background-color: #c3223d;
  color: white;
  cursor: pointer; }
  .search__input::-webkit-input-placeholder {
    color: white; }
  .search__input:-ms-input-placeholder {
    color: white; }
  .search__input::-ms-input-placeholder {
    color: white; }
  .search__input::placeholder {
    color: white; }

/**
 * Bar.
 */
.search__input-bar {
  display: block;
  position: absolute;
  top: 20px;
  right: -3px;
  width: 12px;
  height: 2px;
  -webkit-transform: rotate(45deg);
          transform: rotate(45deg);
  transition: opacity 150ms ease;
  border-radius: 4px;
  background: white;
  opacity: 1; }

/**
 * Submit button.
 */
.search__submit {
  position: absolute;
  top: 0;
  right: 0;
  width: 30px;
  height: 35px;
  color: white; }
  .search__submit svg {
    width: 12px;
    height: 12px;
    color: white; }

/**
 * Search loop.
 */
.search-item__loop {
  margin: 0 -5px; }

/**
 * Search item.
 */
.search-item {
  width: calc(100% / 3 - 10px);
  margin: 5px;
  margin-bottom: 20px; }
  @media only screen and (max-width: 599px) {
    .search-item {
      width: 100%; } }
  @media only screen and (min-width: 600px) and (max-width: 899px) {
    .search-item {
      width: calc(100% / 2 - 10px); } }

/* ==========================================================================
   Slideshow
   ========================================================================== */
/**
 * Main.
 */
.slideshow {
  position: relative;
  margin: 20px 0; }
  @media only screen and (max-width: 1199px) {
    .slideshow {
      margin: 20px 0 0; } }
  .slideshow .owl-nav {
    display: flex;
    position: absolute;
    top: calc(50% - 30px);
    justify-content: space-between;
    width: 100%;
    z-index: 1;
    pointer-events: none; }
    @media only screen and (max-width: 899px) {
      .slideshow .owl-nav {
        top: calc(50% - 25px); } }
    .slideshow .owl-nav button {
      display: flex;
      align-items: center;
      justify-content: center;
      width: 50px;
      height: 50px;
      background: #c3223d !important;
      pointer-events: all; }
      @media only screen and (max-width: 899px) {
        .slideshow .owl-nav button {
          width: 30px;
          height: 30px; } }
    .slideshow .owl-nav svg {
      width: 18px;
      height: 18px;
      color: white; }
      @media only screen and (max-width: 899px) {
        .slideshow .owl-nav svg {
          width: 13px;
          height: 13px; } }

/**
 * Single slide.
 */
.slide {
  position: relative;
  width: 100%;
  height: 510px;
  padding: 20px 0; }
  @media only screen and (max-width: 599px) {
    .slide {
      height: 250px; } }
  @media only screen and (min-width: 600px) and (max-width: 899px) {
    .slide {
      height: 335px; } }
  @media only screen and (min-width: 900px) and (max-width: 1199px) {
    .slide {
      height: 420px; } }

/**
 * Slide body.
 */
.slide__body {
  position: relative;
  align-content: center;
  width: 100%;
  height: auto;
  padding: 0 30px;
  z-index: 10; }

/**
 * Slide title.
 */
.slide__title {
  width: 100%;
  margin-bottom: 25px;
  padding: 0 20px;
  color: white;
  font-weight: 700;
  text-align: center;
  text-transform: none; }

/**
 * Slide image.
 */
.slide__image {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 100%; }
  .slide__image::after {
    display: block;
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: #c3223d;
    content: '';
    opacity: 0.2; }
  .slide__image img {
    width: 100%;
    height: 100%; }

/* ==========================================================================
   Submenu
   ========================================================================== */
/**
 * Submenu button.
 */
.submenu-button {
  position: absolute;
  right: 0; }
  @media only screen and (max-width: 1199px) {
    .submenu-button {
      right: -30px;
      color: white; }
      .submenu-button.is-active > svg {
        -webkit-transform: rotate(-180deg);
                transform: rotate(-180deg); } }
  .submenu-button svg {
    width: 15px;
    height: 15px;
    color: white; }
    @media only screen and (min-width: 1200px) {
      .submenu-button svg {
        display: none; } }

/**
 * Submenu container.
 */
@media only screen and (min-width: 1200px) {
  .submenu-container {
    position: absolute;
    -webkit-transform: translateY(20px);
            transform: translateY(20px);
    transition: opacity 400ms ease-out, -webkit-transform 400ms ease-out;
    transition: opacity 400ms ease-out, transform 400ms ease-out;
    transition: opacity 400ms ease-out, transform 400ms ease-out, -webkit-transform 400ms ease-out;
    opacity: 0;
    pointer-events: none; } }

@media only screen and (max-width: 1199px) {
  .submenu-container {
    display: none; } }

/**
 * Submenu.
 */
@media only screen and (min-width: 1200px) {
  .submenu {
    position: relative;
    width: 100%;
    background-color: white;
    color: black; } }

@media only screen and (max-width: 1199px) {
  .submenu {
    color: white;
    text-align: center; } }

/**
 * Submenu item.
 */
.submenu > .menu-item {
  white-space: nowrap; }

/**
 * Submenu item link.
 */
@media only screen and (max-width: 899px) {
  .submenu > .menu-item > a {
    display: flex;
    justify-content: center; } }

@media only screen and (min-width: 1200px) {
  .submenu > .menu-item > a {
    font-size: 14px;
    font-size: 1.4rem;
    line-height: 1.42857em;
    display: inline-flex;
    align-items: center;
    width: 100%;
    padding: 15px 20px;
    border-bottom: 1px solid rgba(195, 34, 61, 0.7);
    text-transform: none; } }

.submenu > .menu-item > a svg {
  position: relative;
  right: -20px;
  width: 11px;
  height: 11px;
  margin-left: 10px;
  transition: all 250ms ease;
  color: #c3223d;
  opacity: 0; }
  @media only screen and (max-width: 1199px) {
    .submenu > .menu-item > a svg {
      display: none; } }

.submenu > .menu-item > a:hover svg {
  right: 0;
  opacity: 1; }

.submenu > .menu-item > a:nth-last-child(1) {
  border-bottom: 0; }

.submenu > .current-menu-item > a {
  background: white; }
  @media only screen and (max-width: 899px) {
    .submenu > .current-menu-item > a {
      background: rgba(195, 34, 61, 0.7);
      color: #c3223d; } }
  .submenu > .current-menu-item > a svg {
    right: 0;
    opacity: 1; }

/* ==========================================================================
   Color
   ========================================================================== */
/**
 * Color utility classes.
 */
/**
       * `color` rgba(0, 0, 0, 0.2)-10 color utility.
       */
.color-black-10 {
  color: rgba(0, 0, 0, 0.2); }

/**
       * `background-color` rgba(0, 0, 0, 0.2)-10 color utility.
       */
.background-color-black-10 {
  background-color: rgba(0, 0, 0, 0.2); }

/**
       * `color` rgba(0, 0, 0, 0.25)-25 color utility.
       */
.color-black-25 {
  color: rgba(0, 0, 0, 0.25); }

/**
       * `background-color` rgba(0, 0, 0, 0.25)-25 color utility.
       */
.background-color-black-25 {
  background-color: rgba(0, 0, 0, 0.25); }

/**
       * `color` black-100 color utility.
       */
.color-black-100 {
  color: black; }

/**
       * `background-color` black-100 color utility.
       */
.background-color-black-100 {
  background-color: black; }

/**
       * `color` white-100 color utility.
       */
.color-white-100 {
  color: white; }

/**
       * `background-color` white-100 color utility.
       */
.background-color-white-100 {
  background-color: white; }

/**
       * `color` #bdbdbd-100 color utility.
       */
.color-grey-100 {
  color: #bdbdbd; }

/**
       * `background-color` #bdbdbd-100 color utility.
       */
.background-color-grey-100 {
  background-color: #bdbdbd; }

/**
       * `color` rgba(195, 34, 61, 0.25)-25 color utility.
       */
.color-teaberry-25 {
  color: rgba(195, 34, 61, 0.25); }

/**
       * `background-color` rgba(195, 34, 61, 0.25)-25 color utility.
       */
.background-color-teaberry-25 {
  background-color: rgba(195, 34, 61, 0.25); }

/**
       * `color` rgba(195, 34, 61, 0.5)-50 color utility.
       */
.color-teaberry-50 {
  color: rgba(195, 34, 61, 0.5); }

/**
       * `background-color` rgba(195, 34, 61, 0.5)-50 color utility.
       */
.background-color-teaberry-50 {
  background-color: rgba(195, 34, 61, 0.5); }

/**
       * `color` rgba(195, 34, 61, 0.6)-60 color utility.
       */
.color-teaberry-60 {
  color: rgba(195, 34, 61, 0.6); }

/**
       * `background-color` rgba(195, 34, 61, 0.6)-60 color utility.
       */
.background-color-teaberry-60 {
  background-color: rgba(195, 34, 61, 0.6); }

/**
       * `color` rgba(195, 34, 61, 0.7)-70 color utility.
       */
.color-teaberry-70 {
  color: rgba(195, 34, 61, 0.7); }

/**
       * `background-color` rgba(195, 34, 61, 0.7)-70 color utility.
       */
.background-color-teaberry-70 {
  background-color: rgba(195, 34, 61, 0.7); }

/**
       * `color` rgba(195, 34, 61, 0.8)-80 color utility.
       */
.color-teaberry-80 {
  color: rgba(195, 34, 61, 0.8); }

/**
       * `background-color` rgba(195, 34, 61, 0.8)-80 color utility.
       */
.background-color-teaberry-80 {
  background-color: rgba(195, 34, 61, 0.8); }

/**
       * `color` #c3223d-100 color utility.
       */
.color-teaberry-100 {
  color: #c3223d; }

/**
       * `background-color` #c3223d-100 color utility.
       */
.background-color-teaberry-100 {
  background-color: #c3223d; }

/**
       * `color` #d0586c-200 color utility.
       */
.color-teaberry-200 {
  color: #d0586c; }

/**
       * `background-color` #d0586c-200 color utility.
       */
.background-color-teaberry-200 {
  background-color: #d0586c; }

/**
       * `color` #fc4040-100 color utility.
       */
.color-red-100 {
  color: #fc4040; }

/**
       * `background-color` #fc4040-100 color utility.
       */
.background-color-red-100 {
  background-color: #fc4040; }

/* ==========================================================================
   Object Fit
   ========================================================================== */
/**
 * Object fit.
 *
 * 1. Font family polyfill with (https://github.com/bfred-it/object-fit-images).
 */
/**
   * `object-fit` fill utility class.
   */
.fill {
  font-family: "object-fit: fill;";
  /* 1 */
  -o-object-fit: fill;
     object-fit: fill; }

/**
   * `object-fit` contain utility class.
   */
.contain {
  font-family: "object-fit: contain;";
  /* 1 */
  -o-object-fit: contain;
     object-fit: contain; }

/**
   * `object-fit` cover utility class.
   */
.cover {
  font-family: "object-fit: cover;";
  /* 1 */
  -o-object-fit: cover;
     object-fit: cover; }

/**
   * `object-fit` none utility class.
   */
.none {
  font-family: "object-fit: none;";
  /* 1 */
  -o-object-fit: none;
     object-fit: none; }

/**
   * `object-fit` scale-down utility class.
   */
.scale-down {
  font-family: "object-fit: scale-down;";
  /* 1 */
  -o-object-fit: scale-down;
     object-fit: scale-down; }

/* ==========================================================================
   Position
   ========================================================================== */
/**
 * Position utility class.
 */
.static {
  position: static; }

.relative {
  position: relative; }

.absolute {
  position: absolute; }

.fixed {
  position: fixed; }

.sticky {
  position: -webkit-sticky;
  position: sticky; }

/* ==========================================================================
   Text
   ========================================================================== */
/**
 * Font family utility classes.
 */
.text-xs-default {
  font-family: "Open Sans"; }

@media only screen and (max-width: 599px) {
  .text-sm-default {
    font-family: "Open Sans"; } }

@media only screen and (min-width: 600px) {
  .text-md-default {
    font-family: "Open Sans"; } }

@media only screen and (min-width: 900px) {
  .text-lg-default {
    font-family: "Open Sans"; } }

@media only screen and (min-width: 1200px) {
  .text-xl-default {
    font-family: "Open Sans"; } }

/**
 * Text size utility classes.
 */
.text-xs-h1 {
  font-size: 32px;
  font-size: 3.2rem;
  line-height: 1.5625em; }

.text-xs-h2 {
  font-size: 28px;
  font-size: 2.8rem;
  line-height: 1.21429em; }

.text-xs-h3 {
  font-size: 24px;
  font-size: 2.4rem;
  line-height: 1.20833em; }

.text-xs-h4 {
  font-size: 22px;
  font-size: 2.2rem;
  line-height: 1.45455em; }

.text-xs-h5 {
  font-size: 20px;
  font-size: 2rem;
  line-height: 1.6em; }

.text-xs-h6 {
  font-size: 18px;
  font-size: 1.8rem;
  line-height: 1.77778em; }

.text-xs-p {
  font-size: 16px;
  font-size: 1.6rem;
  line-height: 1.5625em; }

@media only screen and (max-width: 599px) {
  .text-sm-h1 {
    font-size: 32px;
    font-size: 3.2rem;
    line-height: 1.5625em; }
  .text-sm-h2 {
    font-size: 28px;
    font-size: 2.8rem;
    line-height: 1.21429em; }
  .text-sm-h3 {
    font-size: 24px;
    font-size: 2.4rem;
    line-height: 1.20833em; }
  .text-sm-h4 {
    font-size: 22px;
    font-size: 2.2rem;
    line-height: 1.45455em; }
  .text-sm-h5 {
    font-size: 20px;
    font-size: 2rem;
    line-height: 1.6em; }
  .text-sm-h6 {
    font-size: 18px;
    font-size: 1.8rem;
    line-height: 1.77778em; }
  .text-sm-p {
    font-size: 16px;
    font-size: 1.6rem;
    line-height: 1.5625em; } }

@media only screen and (min-width: 600px) {
  .text-md-h1 {
    font-size: 32px;
    font-size: 3.2rem;
    line-height: 1.5625em; }
  .text-md-h2 {
    font-size: 28px;
    font-size: 2.8rem;
    line-height: 1.21429em; }
  .text-md-h3 {
    font-size: 24px;
    font-size: 2.4rem;
    line-height: 1.20833em; }
  .text-md-h4 {
    font-size: 22px;
    font-size: 2.2rem;
    line-height: 1.45455em; }
  .text-md-h5 {
    font-size: 20px;
    font-size: 2rem;
    line-height: 1.6em; }
  .text-md-h6 {
    font-size: 18px;
    font-size: 1.8rem;
    line-height: 1.77778em; }
  .text-md-p {
    font-size: 16px;
    font-size: 1.6rem;
    line-height: 1.5625em; } }

@media only screen and (min-width: 900px) {
  .text-lg-h1 {
    font-size: 32px;
    font-size: 3.2rem;
    line-height: 1.5625em; }
  .text-lg-h2 {
    font-size: 28px;
    font-size: 2.8rem;
    line-height: 1.21429em; }
  .text-lg-h3 {
    font-size: 24px;
    font-size: 2.4rem;
    line-height: 1.20833em; }
  .text-lg-h4 {
    font-size: 22px;
    font-size: 2.2rem;
    line-height: 1.45455em; }
  .text-lg-h5 {
    font-size: 20px;
    font-size: 2rem;
    line-height: 1.6em; }
  .text-lg-h6 {
    font-size: 18px;
    font-size: 1.8rem;
    line-height: 1.77778em; }
  .text-lg-p {
    font-size: 16px;
    font-size: 1.6rem;
    line-height: 1.5625em; } }

@media only screen and (min-width: 1200px) {
  .text-xl-h1 {
    font-size: 32px;
    font-size: 3.2rem;
    line-height: 1.5625em; }
  .text-xl-h2 {
    font-size: 28px;
    font-size: 2.8rem;
    line-height: 1.21429em; }
  .text-xl-h3 {
    font-size: 24px;
    font-size: 2.4rem;
    line-height: 1.20833em; }
  .text-xl-h4 {
    font-size: 22px;
    font-size: 2.2rem;
    line-height: 1.45455em; }
  .text-xl-h5 {
    font-size: 20px;
    font-size: 2rem;
    line-height: 1.6em; }
  .text-xl-h6 {
    font-size: 18px;
    font-size: 1.8rem;
    line-height: 1.77778em; }
  .text-xl-p {
    font-size: 16px;
    font-size: 1.6rem;
    line-height: 1.5625em; } }

/**
 * Text alignment utility classes.
 */
.text-xs-left {
  text-align: left; }

.text-xs-right {
  text-align: right; }

.text-xs-center {
  text-align: center; }

@media only screen and (max-width: 599px) {
  .text-sm-left {
    text-align: left; }
  .text-sm-right {
    text-align: right; }
  .text-sm-center {
    text-align: center; } }

@media only screen and (min-width: 600px) {
  .text-md-left {
    text-align: left; }
  .text-md-right {
    text-align: right; }
  .text-md-center {
    text-align: center; } }

@media only screen and (min-width: 900px) {
  .text-lg-left {
    text-align: left; }
  .text-lg-right {
    text-align: right; }
  .text-lg-center {
    text-align: center; } }

@media only screen and (min-width: 1200px) {
  .text-xl-left {
    text-align: left; }
  .text-xl-right {
    text-align: right; }
  .text-xl-center {
    text-align: center; } }

/**
 * Font weight utility classes.
 *
 * 1. Multiply looped integer by 100 for correct font weight value.
 */
.text-xs-100 {
  font-weight: 100; }

.text-xs-200 {
  font-weight: 200; }

.text-xs-300 {
  font-weight: 300; }

.text-xs-400 {
  font-weight: 400; }

.text-xs-500 {
  font-weight: 500; }

.text-xs-600 {
  font-weight: 600; }

.text-xs-700 {
  font-weight: 700; }

.text-xs-800 {
  font-weight: 800; }

.text-xs-900 {
  font-weight: 900; }

@media only screen and (max-width: 599px) {
  .text-sm-100 {
    font-weight: 100; }
  .text-sm-200 {
    font-weight: 200; }
  .text-sm-300 {
    font-weight: 300; }
  .text-sm-400 {
    font-weight: 400; }
  .text-sm-500 {
    font-weight: 500; }
  .text-sm-600 {
    font-weight: 600; }
  .text-sm-700 {
    font-weight: 700; }
  .text-sm-800 {
    font-weight: 800; }
  .text-sm-900 {
    font-weight: 900; } }

@media only screen and (min-width: 600px) {
  .text-md-100 {
    font-weight: 100; }
  .text-md-200 {
    font-weight: 200; }
  .text-md-300 {
    font-weight: 300; }
  .text-md-400 {
    font-weight: 400; }
  .text-md-500 {
    font-weight: 500; }
  .text-md-600 {
    font-weight: 600; }
  .text-md-700 {
    font-weight: 700; }
  .text-md-800 {
    font-weight: 800; }
  .text-md-900 {
    font-weight: 900; } }

@media only screen and (min-width: 900px) {
  .text-lg-100 {
    font-weight: 100; }
  .text-lg-200 {
    font-weight: 200; }
  .text-lg-300 {
    font-weight: 300; }
  .text-lg-400 {
    font-weight: 400; }
  .text-lg-500 {
    font-weight: 500; }
  .text-lg-600 {
    font-weight: 600; }
  .text-lg-700 {
    font-weight: 700; }
  .text-lg-800 {
    font-weight: 800; }
  .text-lg-900 {
    font-weight: 900; } }

@media only screen and (min-width: 1200px) {
  .text-xl-100 {
    font-weight: 100; }
  .text-xl-200 {
    font-weight: 200; }
  .text-xl-300 {
    font-weight: 300; }
  .text-xl-400 {
    font-weight: 400; }
  .text-xl-500 {
    font-weight: 500; }
  .text-xl-600 {
    font-weight: 600; }
  .text-xl-700 {
    font-weight: 700; }
  .text-xl-800 {
    font-weight: 800; }
  .text-xl-900 {
    font-weight: 900; } }

/**
 * Text transform uitlity classes.
 */
.text-xs-capitalize {
  text-transform: capitalize; }

.text-xs-uppercase {
  text-transform: uppercase; }

.text-xs-lowercase {
  text-transform: lowercase; }

.text-xs-none {
  text-transform: none; }

.text-xs-full-width {
  text-transform: full-width; }

@media only screen and (max-width: 599px) {
  .text-sm-capitalize {
    text-transform: capitalize; }
  .text-sm-uppercase {
    text-transform: uppercase; }
  .text-sm-lowercase {
    text-transform: lowercase; }
  .text-sm-none {
    text-transform: none; }
  .text-sm-full-width {
    text-transform: full-width; } }

@media only screen and (min-width: 600px) {
  .text-md-capitalize {
    text-transform: capitalize; }
  .text-md-uppercase {
    text-transform: uppercase; }
  .text-md-lowercase {
    text-transform: lowercase; }
  .text-md-none {
    text-transform: none; }
  .text-md-full-width {
    text-transform: full-width; } }

@media only screen and (min-width: 900px) {
  .text-lg-capitalize {
    text-transform: capitalize; }
  .text-lg-uppercase {
    text-transform: uppercase; }
  .text-lg-lowercase {
    text-transform: lowercase; }
  .text-lg-none {
    text-transform: none; }
  .text-lg-full-width {
    text-transform: full-width; } }

@media only screen and (min-width: 1200px) {
  .text-xl-capitalize {
    text-transform: capitalize; }
  .text-xl-uppercase {
    text-transform: uppercase; }
  .text-xl-lowercase {
    text-transform: lowercase; }
  .text-xl-none {
    text-transform: none; }
  .text-xl-full-width {
    text-transform: full-width; } }

/* ==========================================================================
   Vertical Rhythm
   ========================================================================== */
.vr-0 {
  margin-bottom: 0px; }

.vr-8 {
  margin-bottom: 8px; }

.vr-16 {
  margin-bottom: 16px; }

.vr-24 {
  margin-bottom: 24px; }

.vr-32 {
  margin-bottom: 32px; }

.vr-40 {
  margin-bottom: 40px; }

.vr-48 {
  margin-bottom: 48px; }

.vr-56 {
  margin-bottom: 56px; }

.vr-64 {
  margin-bottom: 64px; }

.vr-72 {
  margin-bottom: 72px; }

.vr-80 {
  margin-bottom: 80px; }

/* ==========================================================================
   Z-index
   ========================================================================== */
/**
 * Utility classes for manipulating stacking order in HTML.
 */
.z-index-0 {
  z-index: 0; }

.z-index-1 {
  z-index: 10; }

.z-index-2 {
  z-index: 20; }

.z-index-3 {
  z-index: 30; }

.z-index-4 {
  z-index: 40; }

.z-index-5 {
  z-index: 50; }

.z-index-6 {
  z-index: 60; }

.z-index-7 {
  z-index: 70; }

.z-index-8 {
  z-index: 80; }

.z-index-9 {
  z-index: 90; }

.z-index-10 {
  z-index: 100; }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL25vZGVfbW9kdWxlcy9ub3JtYWxpemUuY3NzL25vcm1hbGl6ZS5jc3MiLCJtYWluLmNzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9vd2wuY2Fyb3VzZWwvc3JjL3Njc3MvX2NvcmUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9vd2wuY2Fyb3VzZWwvc3JjL3Njc3MvX2FuaW1hdGUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9vd2wuY2Fyb3VzZWwvc3JjL3Njc3MvX2F1dG9oZWlnaHQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9vd2wuY2Fyb3VzZWwvc3JjL3Njc3MvX2xhenlsb2FkLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvb3dsLmNhcm91c2VsL3NyYy9zY3NzL192aWRlby5zY3NzIiwidG9vbHMvX21hZ25pZmljLXBvcHVwLnNjc3MiLCJnZW5lcmljL19iYXNlLnNjc3MiLCJ0b29scy9fbWl4aW5zLnNjc3MiLCJzZXR0aW5ncy9fdHlwb2dyYXBoeS5zY3NzIiwidG9vbHMvX2Z1bmN0aW9ucy5zY3NzIiwic2V0dGluZ3MvX2NvbG9yLnNjc3MiLCJnZW5lcmljL19yZXNldC5zY3NzIiwib2JqZWN0cy9fYnV0dG9ucy5zY3NzIiwib2JqZWN0cy9fY29udGFpbmVyLnNjc3MiLCJzZXR0aW5ncy9fZGVmaW5pdGlvbnMuc2NzcyIsIm9iamVjdHMvX2NvbnRlbnQtY29uc3RyYWludC5zY3NzIiwib2JqZWN0cy9fZmxleC5zY3NzIiwib2JqZWN0cy9fZm9ybS5zY3NzIiwib2JqZWN0cy9faGVhZGluZy5zY3NzIiwib2JqZWN0cy9fbGlua3Muc2NzcyIsIm9iamVjdHMvX3NlY3Rpb24uc2NzcyIsIm9iamVjdHMvX3dyYXBwZXIuc2NzcyIsImNvbXBvbmVudHMvX2Ntcy1vdXRwdXQuc2NzcyIsImNvbXBvbmVudHMvX2NvbnRlbnQtY29sdW1ucy5zY3NzIiwiY29tcG9uZW50cy9fY29udGVudC1pbnRyb2R1Y3Rpb24uc2NzcyIsImNvbXBvbmVudHMvX2Zvb3Rlci5zY3NzIiwiY29tcG9uZW50cy9fZ2FsbGVyeS5zY3NzIiwiY29tcG9uZW50cy9faGVhZGVyLnNjc3MiLCJjb21wb25lbnRzL19sb2dvLnNjc3MiLCJjb21wb25lbnRzL19uYXZpZ2F0aW9uLnNjc3MiLCJjb21wb25lbnRzL19wYWdlLnNjc3MiLCJjb21wb25lbnRzL19wYWdlLXN1Ym1lbnUuc2NzcyIsImNvbXBvbmVudHMvX3Byb2R1Y3QtbGlzdC1pdGVtcy5zY3NzIiwiY29tcG9uZW50cy9fcHJvamVjdC1saXN0LnNjc3MiLCJjb21wb25lbnRzL19wcm9qZWN0LWl0ZW0uc2NzcyIsImNvbXBvbmVudHMvX3Byb2plY3QtbGF0ZXN0LnNjc3MiLCJjb21wb25lbnRzL19zZWFyY2guc2NzcyIsImNvbXBvbmVudHMvX3NsaWRlc2hvdy5zY3NzIiwiY29tcG9uZW50cy9fc3VibWVudS5zY3NzIiwidXRpbGl0aWVzL19jb2xvci5zY3NzIiwidXRpbGl0aWVzL19vYmplY3QtZml0LnNjc3MiLCJ1dGlsaXRpZXMvX3Bvc2l0aW9uLnNjc3MiLCJ1dGlsaXRpZXMvX3RleHQuc2NzcyIsInV0aWxpdGllcy9fdmVydGljYWwtcmh5dGhtLnNjc3MiLCJ1dGlsaXRpZXMvX3otaW5kZXguc2NzcyIsInNldHRpbmdzL196LWluZGV4LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNEVBQTRFO0FBRTVFO2dGQUNnRjtBQUVoRjs7O0dBR0c7QUFFSDtFQUNFLGtCQUFpQjtFQUFFLE9BQU87RUFDMUIsK0JBQThCO0VBQUUsT0FBTyxFQUN4Qzs7QUFFRDtnRkFDZ0Y7QUFFaEY7O0dBRUc7QUFFSDtFQUNFLFVBQVMsRUFDVjs7QUFFRDs7R0FFRztBQUVIO0VBQ0UsZUFBYyxFQUNmOztBQUVEOzs7R0FHRztBQUVIO0VBQ0UsZUFBYztFQUNkLGlCQUFnQixFQUNqQjs7QUFFRDtnRkFDZ0Y7QUFFaEY7OztHQUdHO0FBRUg7RUFDRSx3QkFBdUI7RUFBRSxPQUFPO0VBQ2hDLFVBQVM7RUFBRSxPQUFP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QUZEO0VuQzBCRixnQkNsQ087RURtQ1Asa0JFOUIrQjtFRm1DL0Isc0JBQWdELEVtQzlCN0M7O0FuQzZHSDtFbUMvR0U7SW5DMEJGLGdCQ3hDUTtJRHlDUixrQkU5QitCO0lGbUMvQixzQkFBZ0QsRW1DOUI3QztFQUZEO0luQzBCRixnQkN2Q1E7SUR3Q1Isa0JFOUIrQjtJRm1DL0IsdUJBQWdELEVtQzlCN0M7RUFGRDtJbkMwQkYsZ0JDdENRO0lEdUNSLGtCRTlCK0I7SUZtQy9CLHVCQUFnRCxFbUM5QjdDO0VBRkQ7SW5DMEJGLGdCQ3JDUTtJRHNDUixrQkU5QitCO0lGbUMvQix1QkFBZ0QsRW1DOUI3QztFQUZEO0luQzBCRixnQkNwQ1E7SURxQ1IsZ0JFOUIrQjtJRm1DL0IsbUJBQWdELEVtQzlCN0M7RUFGRDtJbkMwQkYsZ0JDbkNRO0lEb0NSLGtCRTlCK0I7SUZtQy9CLHVCQUFnRCxFbUM5QjdDO0VBRkQ7SW5DMEJGLGdCQ2xDTztJRG1DUCxrQkU5QitCO0lGbUMvQixzQkFBZ0QsRW1DOUI3QyxFQUFBOztBbkM2Rkg7RW1DL0ZFO0luQzBCRixnQkN4Q1E7SUR5Q1Isa0JFOUIrQjtJRm1DL0Isc0JBQWdELEVtQzlCN0M7RUFGRDtJbkMwQkYsZ0JDdkNRO0lEd0NSLGtCRTlCK0I7SUZtQy9CLHVCQUFnRCxFbUM5QjdDO0VBRkQ7SW5DMEJGLGdCQ3RDUTtJRHVDUixrQkU5QitCO0lGbUMvQix1QkFBZ0QsRW1DOUI3QztFQUZEO0luQzBCRixnQkNyQ1E7SURzQ1Isa0JFOUIrQjtJRm1DL0IsdUJBQWdELEVtQzlCN0M7RUFGRDtJbkMwQkYsZ0JDcENRO0lEcUNSLGdCRTlCK0I7SUZtQy9CLG1CQUFnRCxFbUM5QjdDO0VBRkQ7SW5DMEJGLGdCQ25DUTtJRG9DUixrQkU5QitCO0lGbUMvQix1QkFBZ0QsRW1DOUI3QztFQUZEO0luQzBCRixnQkNsQ087SURtQ1Asa0JFOUIrQjtJRm1DL0Isc0JBQWdELEVtQzlCN0MsRUFBQTs7QW5DaUZIO0VtQ25GRTtJbkMwQkYsZ0JDeENRO0lEeUNSLGtCRTlCK0I7SUZtQy9CLHNCQUFnRCxFbUM5QjdDO0VBRkQ7SW5DMEJGLGdCQ3ZDUTtJRHdDUixrQkU5QitCO0lGbUMvQix1QkFBZ0QsRW1DOUI3QztFQUZEO0luQzBCRixnQkN0Q1E7SUR1Q1Isa0JFOUIrQjtJRm1DL0IsdUJBQWdELEVtQzlCN0M7RUFGRDtJbkMwQkYsZ0JDckNRO0lEc0NSLGtCRTlCK0I7SUZtQy9CLHVCQUFnRCxFbUM5QjdDO0VBRkQ7SW5DMEJGLGdCQ3BDUTtJRHFDUixnQkU5QitCO0lGbUMvQixtQkFBZ0QsRW1DOUI3QztFQUZEO0luQzBCRixnQkNuQ1E7SURvQ1Isa0JFOUIrQjtJRm1DL0IsdUJBQWdELEVtQzlCN0M7RUFGRDtJbkMwQkYsZ0JDbENPO0lEbUNQLGtCRTlCK0I7SUZtQy9CLHNCQUFnRCxFbUM5QjdDLEVBQUE7O0FuQzZFSDtFbUMvRUU7SW5DMEJGLGdCQ3hDUTtJRHlDUixrQkU5QitCO0lGbUMvQixzQkFBZ0QsRW1DOUI3QztFQUZEO0luQzBCRixnQkN2Q1E7SUR3Q1Isa0JFOUIrQjtJRm1DL0IsdUJBQWdELEVtQzlCN0M7RUFGRDtJbkMwQkYsZ0JDdENRO0lEdUNSLGtCRTlCK0I7SUZtQy9CLHVCQUFnRCxFbUM5QjdDO0VBRkQ7SW5DMEJGLGdCQ3JDUTtJRHNDUixrQkU5QitCO0lGbUMvQix1QkFBZ0QsRW1DOUI3QztFQUZEO0luQzBCRixnQkNwQ1E7SURxQ1IsZ0JFOUIrQjtJRm1DL0IsbUJBQWdELEVtQzlCN0M7RUFGRDtJbkMwQkYsZ0JDbkNRO0lEb0NSLGtCRTlCK0I7SUZtQy9CLHVCQUFnRCxFbUM5QjdDO0VBRkQ7SW5DMEJGLGdCQ2xDTztJRG1DUCxrQkU5QitCO0lGbUMvQixzQkFBZ0QsRW1DOUI3QyxFQUFBOztBQU1QOztHQUVHO0FBS0c7RUFDRSxpQkFGb0IsRUFHckI7O0FBRkQ7RUFDRSxrQkFGMkIsRUFHNUI7O0FBRkQ7RUFDRSxtQkFGbUMsRUFHcEM7O0FuQzhGSDtFbUNoR0U7SUFDRSxpQkFGb0IsRUFHckI7RUFGRDtJQUNFLGtCQUYyQixFQUc1QjtFQUZEO0lB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Q0UsMkJBRmtFLEVBR25FLEVBQUE7O0FuQzRCSDtFbUM5QkU7SUFDRSwyQkFGMEIsRUFHM0I7RUFGRDtJQUNFLDBCQUZxQyxFQUd0QztFQUZEO0lBQ0UsMEJBRmdELEVBR2pEO0VBRkQ7SUFDRSxxQkFGc0QsRUFHdkQ7RUFGRDtJQUNFLDJCQUZrRSxFQUduRSxFQUFBOztBQzdFUDs7Z0ZBRWdGO0FBSzlFO0VBQ0UsbUJBQWUsRUFDaEI7O0FBRkQ7RUFDRSxtQkFBZSxFQUNoQjs7QUFGRDtFQUNFLG9CQUFlLEVBQ2hCOztBQUZEO0VBQ0Usb0JBQWUsRUFDaEI7O0FBRkQ7RUFDRSxvQkFBZSxFQUNoQjs7QUFGRDtFQUNFLG9CQUFlLEVBQ2hCOztBQUZEO0VBQ0Usb0JBQWUsRUFDaEI7O0FBRkQ7RUFDRSxvQkFBZSxFQUNoQjs7QUFGRDtFQUNFLG9CQUFlLEVBQ2hCOztBQUZEO0VBQ0Usb0JBQWUsRUFDaEI7O0FBRkQ7RUFDRSxvQkFBZSxFQUNoQjs7QUNUSDs7Z0ZBRWdGO0FBRWhGOztHQUVHO0FBR0Q7RUFDRSxXQ0ZLLEVER047O0FBRkQ7RUFDRSxZQ0RNLEVERVA7O0FBRkQ7RUFDRSxZQ0FNLEVEQ1A7O0FBRkQ7RUFDRSxZQ0NNLEVEQVA7O0FBRkQ7RUFDRSxZQ0VNLEVERFA7O0FBRkQ7RUFDRSxZQ0dNLEVERlA7O0FBRkQ7RUFDRSxZQ0lNLEVESFA7O0FBRkQ7RUFDRSxZQ0tNLEVESlA7O0FBRkQ7RUFDRSxZQ01NLEVETFA7O0FBRkQ7RUFDRSxZQ09NLEVETlA7O0FBRkQ7RUFDRSxhQ1FPLEVEUFIiLCJmaWxlIjoibWFpbi5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiEgbm9ybWFsaXplLmNzcyB2OC4wLjEgfCBNSVQgTGljZW5zZSB8IGdpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzICovXG5cbi8qIERvY3VtZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGxpbmUgaGVpZ2h0IGluIGFsbCBicm93c2Vycy5cbiAqIDIuIFByZXZlbnQgYWRqdXN0bWVudHMgb2YgZm9udCBzaXplIGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZXMgaW4gaU9TLlxuICovXG5cbmh0bWwge1xuICBsaW5lLWhlaWdodDogMS4xNTsgLyogMSAqL1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDIgKi9cbn1cblxuLyogU2VjdGlvbnNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIHRoZSBtYXJnaW4gaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbmJvZHkge1xuICBtYXJnaW46IDA7XG59XG5cbi8qKlxuICogUmVuZGVyIHRoZSBgbWFpbmAgZWxlbWVudCBjb25zaXN0ZW50bHkgaW4gSUUuXG4gKi9cblxubWFpbiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIGZvbnQgc2l6ZSBhbmQgbWFyZ2luIG9uIGBoMWAgZWxlbWVudHMgd2l0aGluIGBzZWN0aW9uYCBhbmRcbiAqIGBhcnRpY2xlYCBjb250ZXh0cyBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBTYWZhcmkuXG4gKi9cblxuaDEge1xuICBmb250LXNpemU6IDJlbTtcbiAgbWFyZ2luOiAwLjY3ZW0gMDtcbn1cblxuLyogR3JvdXBpbmcgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBGaXJlZm94LlxuICogMi4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZSBhbmQgSUUuXG4gKi9cblxuaHIge1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLyogMSAqL1xuICBoZWlnaHQ6IDA7IC8qIDEgKi9cbiAgb3ZlcmZsb3c6IHZpc2libGU7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnByZSB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTsgLyogMSAqL1xuICBmb250LXNpemU6IDFlbTsgLyogMiAqL1xufVxuXG4vKiBUZXh0LWxldmVsIHNlbWFudGljc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBvbiBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG4gKi9cblxuYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4vKipcbiAqIDEuIFJlbW92ZSB0aGUgYm90dG9tIGJvcmRlciBpbiBDaHJvbWUgNTctXG4gKiAyLiBBZGQgdGhlIGNvcnJlY3QgdGV4dCBkZWNvcmF0aW9uIGluIENocm9tZSwgRWRnZSwgSUUsIE9wZXJhLCBhbmQgU2FmYXJpLlxuICovXG5cbmFiYnJbdGl0bGVdIHtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTsgLyogMSAqL1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgLyogMiAqL1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpLlxuICovXG5cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZGVyO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIGFuZCBzY2FsaW5nIG9mIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuY29kZSxcbmtiZCxcbnNhbXAge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IC8qIDEgKi9cbiAgZm9udC1zaXplOiAxZW07IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlO1xufVxuXG4vKipcbiAqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpblxuICogYWxsIGJyb3dzZXJzLlxuICovXG5cbnN1YixcbnN1cCB7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbnN1YiB7XG4gIGJvdHRvbTogLTAuMjVlbTtcbn1cblxuc3VwIHtcbiAgdG9wOiAtMC41ZW07XG59XG5cbi8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIHRoZSBib3JkZXIgb24gaW1hZ2VzIGluc2lkZSBsaW5rcyBpbiBJRSAxMC5cbiAqL1xuXG5pbWcge1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG5cbi8qIEZvcm1zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIENoYW5nZSB0aGUgZm9udCBzdHlsZXMgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpLlxuICovXG5cbmJ1dHRvbixcbmlucHV0LFxub3B0Z3JvdXAsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0OyAvKiAxICovXG4gIGZvbnQtc2l6ZTogMTAwJTsgLyogMSAqL1xuICBsaW5lLWhlaWdodDogMS4xNTsgLyogMSAqL1xuICBtYXJnaW46IDA7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBTaG93IHRoZSBvdmVyZmxvdyBpbiBJRS5cbiAqIDEuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UuXG4gKi9cblxuYnV0dG9uLFxuaW5wdXQgeyAvKiAxICovXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRWRnZSwgRmlyZWZveCwgYW5kIElFLlxuICogMS4gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBGaXJlZm94LlxuICovXG5cbmJ1dHRvbixcbnNlbGVjdCB7IC8qIDEgKi9cbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG59XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAqL1xuXG5idXR0b24sXG5bdHlwZT1cImJ1dHRvblwiXSxcblt0eXBlPVwicmVzZXRcIl0sXG5bdHlwZT1cInN1Ym1pdFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgaW5uZXIgYm9yZGVyIGFuZCBwYWRkaW5nIGluIEZpcmVmb3guXG4gKi9cblxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJidXR0b25cIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInJlc2V0XCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJzdWJtaXRcIl06Oi1tb3otZm9jdXMtaW5uZXIge1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi8qKlxuICogUmVzdG9yZSB0aGUgZm9jdXMgc3R5bGVzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuICovXG5cbmJ1dHRvbjotbW96LWZvY3VzcmluZyxcblt0eXBlPVwiYnV0dG9uXCJdOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJyZXNldFwiXTotbW96LWZvY3VzcmluZyxcblt0eXBlPVwic3VibWl0XCJdOi1tb3otZm9jdXNyaW5nIHtcbiAgb3V0bGluZTogMXB4IGRvdHRlZCBCdXR0b25UZXh0O1xufVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIHBhZGRpbmcgaW4gRmlyZWZveC5cbiAqL1xuXG5maWVsZHNldCB7XG4gIHBhZGRpbmc6IDAuMzVlbSAwLjc1ZW0gMC42MjVlbTtcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSB0ZXh0IHdyYXBwaW5nIGluIEVkZ2UgYW5kIElFLlxuICogMi4gQ29ycmVjdCB0aGUgY29sb3IgaW5oZXJpdGFuY2UgZnJvbSBgZmllbGRzZXRgIGVsZW1lbnRzIGluIElFLlxuICogMy4gUmVtb3ZlIHRoZSBwYWRkaW5nIHNvIGRldmVsb3BlcnMgYXJlIG5vdCBjYXVnaHQgb3V0IHdoZW4gdGhleSB6ZXJvIG91dFxuICogICAgYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxubGVnZW5kIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xuICBjb2xvcjogaW5oZXJpdDsgLyogMiAqL1xuICBkaXNwbGF5OiB0YWJsZTsgLyogMSAqL1xuICBtYXgtd2lkdGg6IDEwMCU7IC8qIDEgKi9cbiAgcGFkZGluZzogMDsgLyogMyAqL1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsOyAvKiAxICovXG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IHZlcnRpY2FsIGFsaWdubWVudCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cbiAqL1xuXG5wcm9ncmVzcyB7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFIDEwKy5cbiAqL1xuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG4vKipcbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIElFIDEwLlxuICogMi4gUmVtb3ZlIHRoZSBwYWRkaW5nIGluIElFIDEwLlxuICovXG5cblt0eXBlPVwiY2hlY2tib3hcIl0sXG5bdHlwZT1cInJhZGlvXCJdIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xuICBwYWRkaW5nOiAwOyAvKiAyICovXG59XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgY3Vyc29yIHN0eWxlIG9mIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGJ1dHRvbnMgaW4gQ2hyb21lLlxuICovXG5cblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgb2RkIGFwcGVhcmFuY2UgaW4gQ2hyb21lIGFuZCBTYWZhcmkuXG4gKiAyLiBDb3JyZWN0IHRoZSBvdXRsaW5lIHN0eWxlIGluIFNhZmFyaS5cbiAqL1xuXG5bdHlwZT1cInNlYXJjaFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOyAvKiAxICovXG4gIG91dGxpbmUtb2Zmc2V0OiAtMnB4OyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbm5lciBwYWRkaW5nIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIG1hY09TLlxuICovXG5cblt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG4gKiAyLiBDaGFuZ2UgZm9udCBwcm9wZXJ0aWVzIHRvIGBpbmhlcml0YCBpbiBTYWZhcmkuXG4gKi9cblxuOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvKiAxICovXG4gIGZvbnQ6IGluaGVyaXQ7IC8qIDIgKi9cbn1cblxuLyogSW50ZXJhY3RpdmVcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBFZGdlLCBJRSAxMCssIGFuZCBGaXJlZm94LlxuICovXG5cbmRldGFpbHMge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLypcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zdW1tYXJ5IHtcbiAgZGlzcGxheTogbGlzdC1pdGVtO1xufVxuXG4vKiBNaXNjXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwKy5cbiAqL1xuXG50ZW1wbGF0ZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTAuXG4gKi9cblxuW2hpZGRlbl0ge1xuICBkaXNwbGF5OiBub25lO1xufVxuIiwiLyohIG5vcm1hbGl6ZS5jc3MgdjguMC4xIHwgTUlUIExpY2Vuc2UgfCBnaXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcyAqL1xuLyogRG9jdW1lbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGxpbmUgaGVpZ2h0IGluIGFsbCBicm93c2Vycy5cbiAqIDIuIFByZXZlbnQgYWRqdXN0bWVudHMgb2YgZm9udCBzaXplIGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZXMgaW4gaU9TLlxuICovXG5odG1sIHtcbiAgbGluZS1oZWlnaHQ6IDEuMTU7XG4gIC8qIDEgKi9cbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xuICAvKiAyICovIH1cblxuLyogU2VjdGlvbnNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFJlbW92ZSB0aGUgbWFyZ2luIGluIGFsbCBicm93c2Vycy5cbiAqL1xuYm9keSB7XG4gIG1hcmdpbjogMDsgfVxuXG4vKipcbiAqIFJlbmRlciB0aGUgYG1haW5gIGVsZW1lbnQgY29uc2lzdGVudGx5IGluIElFLlxuICovXG5tYWluIHtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBmb250IHNpemUgYW5kIG1hcmdpbiBvbiBgaDFgIGVsZW1lbnRzIHdpdGhpbiBgc2VjdGlvbmAgYW5kXG4gKiBgYXJ0aWNsZWAgY29udGV4dHMgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgU2FmYXJpLlxuICovXG5oMSB7XG4gIGZvbnQtc2l6ZTogMmVtO1xuICBtYXJnaW46IDAuNjdlbSAwOyB9XG5cbi8qIEdyb3VwaW5nIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIEZpcmVmb3guXG4gKiAyLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlIGFuZCBJRS5cbiAqL1xuaHIge1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgLyogMSAqL1xuICBoZWlnaHQ6IDA7XG4gIC8qIDEgKi9cbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIC8qIDIgKi8gfVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIGFuZCBzY2FsaW5nIG9mIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbnByZSB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTtcbiAgLyogMSAqL1xuICBmb250LXNpemU6IDFlbTtcbiAgLyogMiAqLyB9XG5cbi8qIFRleHQtbGV2ZWwgc2VtYW50aWNzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBvbiBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG4gKi9cbmEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuXG4vKipcbiAqIDEuIFJlbW92ZSB0aGUgYm90dG9tIGJvcmRlciBpbiBDaHJvbWUgNTctXG4gKiAyLiBBZGQgdGhlIGNvcnJlY3QgdGV4dCBkZWNvcmF0aW9uIGluIENocm9tZSwgRWRnZSwgSUUsIE9wZXJhLCBhbmQgU2FmYXJpLlxuICovXG5hYmJyW3RpdGxlXSB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7XG4gIC8qIDEgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIC8qIDIgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xuICAvKiAyICovIH1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpLlxuICovXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGRlcjsgfVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIGFuZCBzY2FsaW5nIG9mIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbmNvZGUsXG5rYmQsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlO1xuICAvKiAxICovXG4gIGZvbnQtc2l6ZTogMWVtO1xuICAvKiAyICovIH1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqL1xuc21hbGwge1xuICBmb250LXNpemU6IDgwJTsgfVxuXG4vKipcbiAqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpblxuICogYWxsIGJyb3dzZXJzLlxuICovXG5zdWIsXG5zdXAge1xuICBmb250LXNpemU6IDc1JTtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyB9XG5cbnN1YiB7XG4gIGJvdHRvbTogLTAuMjVlbTsgfVxuXG5zdXAge1xuICB0b3A6IC0wLjVlbTsgfVxuXG4vKiBFbWJlZGRlZCBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBSZW1vdmUgdGhlIGJvcmRlciBvbiBpbWFnZXMgaW5zaWRlIGxpbmtzIGluIElFIDEwLlxuICovXG5pbWcge1xuICBib3JkZXItc3R5bGU6IG5vbmU7IH1cblxuLyogRm9ybXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIDEuIENoYW5nZSB0aGUgZm9udCBzdHlsZXMgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpLlxuICovXG5idXR0b24sXG5pbnB1dCxcbm9wdGdyb3VwLFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgLyogMSAqL1xuICBmb250LXNpemU6IDEwMCU7XG4gIC8qIDEgKi9cbiAgbGluZS1oZWlnaHQ6IDEuMTU7XG4gIC8qIDEgKi9cbiAgbWFyZ2luOiAwO1xuICAvKiAyICovIH1cblxuLyoqXG4gKiBTaG93IHRoZSBvdmVyZmxvdyBpbiBJRS5cbiAqIDEuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UuXG4gKi9cbmJ1dHRvbixcbmlucHV0IHtcbiAgLyogMSAqL1xuICBvdmVyZmxvdzogdmlzaWJsZTsgfVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRWRnZSwgRmlyZWZveCwgYW5kIElFLlxuICogMS4gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBGaXJlZm94LlxuICovXG5idXR0b24sXG5zZWxlY3Qge1xuICAvKiAxICovXG4gIHRleHQtdHJhbnNmb3JtOiBub25lOyB9XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAqL1xuYnV0dG9uLFxuW3R5cGU9XCJidXR0b25cIl0sXG5bdHlwZT1cInJlc2V0XCJdLFxuW3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgfVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgaW5uZXIgYm9yZGVyIGFuZCBwYWRkaW5nIGluIEZpcmVmb3guXG4gKi9cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwiYnV0dG9uXCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJyZXNldFwiXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwic3VibWl0XCJdOjotbW96LWZvY3VzLWlubmVyIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xuICBwYWRkaW5nOiAwOyB9XG5cbi8qKlxuICogUmVzdG9yZSB0aGUgZm9jdXMgc3R5bGVzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuICovXG5idXR0b246LW1vei1mb2N1c3JpbmcsXG5bdHlwZT1cImJ1dHRvblwiXTotbW96LWZvY3VzcmluZyxcblt0eXBlPVwicmVzZXRcIl06LW1vei1mb2N1c3JpbmcsXG5bdHlwZT1cInN1Ym1pdFwiXTotbW96LWZvY3VzcmluZyB7XG4gIG91dGxpbmU6IDFweCBkb3R0ZWQgQnV0dG9uVGV4dDsgfVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIHBhZGRpbmcgaW4gRmlyZWZveC5cbiAqL1xuZmllbGRzZXQge1xuICBwYWRkaW5nOiAwLjM1ZW0gMC43NWVtIDAuNjI1ZW07IH1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSB0ZXh0IHdyYXBwaW5nIGluIEVkZ2UgYW5kIElFLlxuICogMi4gQ29ycmVjdCB0aGUgY29sb3IgaW5oZXJpdGFuY2UgZnJvbSBgZmllbGRzZXRgIGVsZW1lbnRzIGluIElFLlxuICogMy4gUmVtb3ZlIHRoZSBwYWRkaW5nIHNvIGRldmVsb3BlcnMgYXJlIG5vdCBjYXVnaHQgb3V0IHdoZW4gdGhleSB6ZXJvIG91dFxuICogICAgYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbmxlZ2VuZCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC8qIDEgKi9cbiAgY29sb3I6IGluaGVyaXQ7XG4gIC8qIDIgKi9cbiAgZGlzcGxheTogdGFibGU7XG4gIC8qIDEgKi9cbiAgbWF4LXdpZHRoOiAxMDAlO1xuICAvKiAxICovXG4gIHBhZGRpbmc6IDA7XG4gIC8qIDMgKi9cbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgLyogMSAqLyB9XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IHZlcnRpY2FsIGFsaWdubWVudCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cbiAqL1xucHJvZ3Jlc3Mge1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFIDEwKy5cbiAqL1xudGV4dGFyZWEge1xuICBvdmVyZmxvdzogYXV0bzsgfVxuXG4vKipcbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIElFIDEwLlxuICogMi4gUmVtb3ZlIHRoZSBwYWRkaW5nIGluIElFIDEwLlxuICovXG5bdHlwZT1cImNoZWNrYm94XCJdLFxuW3R5cGU9XCJyYWRpb1wiXSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC8qIDEgKi9cbiAgcGFkZGluZzogMDtcbiAgLyogMiAqLyB9XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgY3Vyc29yIHN0eWxlIG9mIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGJ1dHRvbnMgaW4gQ2hyb21lLlxuICovXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgaGVpZ2h0OiBhdXRvOyB9XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgb2RkIGFwcGVhcmFuY2UgaW4gQ2hyb21lIGFuZCBTYWZhcmkuXG4gKiAyLiBDb3JyZWN0IHRoZSBvdXRsaW5lIHN0eWxlIGluIFNhZmFyaS5cbiAqL1xuW3R5cGU9XCJzZWFyY2hcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDtcbiAgLyogMSAqL1xuICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgLyogMiAqLyB9XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbm5lciBwYWRkaW5nIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIG1hY09TLlxuICovXG5bdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgfVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG4gKiAyLiBDaGFuZ2UgZm9udCBwcm9wZXJ0aWVzIHRvIGBpbmhlcml0YCBpbiBTYWZhcmkuXG4gKi9cbjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbiAgLyogMSAqL1xuICBmb250OiBpbmhlcml0O1xuICAvKiAyICovIH1cblxuLyogSW50ZXJhY3RpdmVcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gRWRnZSwgSUUgMTArLCBhbmQgRmlyZWZveC5cbiAqL1xuZGV0YWlscyB7XG4gIGRpc3BsYXk6IGJsb2NrOyB9XG5cbi8qXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbnN1bW1hcnkge1xuICBkaXNwbGF5OiBsaXN0LWl0ZW07IH1cblxuLyogTWlzY1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTArLlxuICovXG50ZW1wbGF0ZSB7XG4gIGRpc3BsYXk6IG5vbmU7IH1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAxMC5cbiAqL1xuW2hpZGRlbl0ge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbi8qXG4gKiAgT3dsIENhcm91c2VsIC0gQ29yZVxuICovXG4ub3dsLWNhcm91c2VsIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgd2lkdGg6IDEwMCU7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIC8qIHBvc2l0aW9uIHJlbGF0aXZlIGFuZCB6LWluZGV4IGZpeCB3ZWJraXQgcmVuZGVyaW5nIGZvbnRzIGlzc3VlICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTsgfVxuICAub3dsLWNhcm91c2VsIC5vd2wtc3RhZ2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAtbXMtdG91Y2gtYWN0aW9uOiBwYW4tWTtcbiAgICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcbiAgICAtbW96LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAvKiBmaXggZmlyZWZveCBhbmltYXRpb24gZ2xpdGNoICovIH1cbiAgLm93bC1jYXJvdXNlbCAub3dsLXN0YWdlOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIi5cIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBjbGVhcjogYm90aDtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgaGVpZ2h0OiAwOyB9XG4gIC5vd2wtY2Fyb3VzZWwgLm93bC1zdGFnZS1vdXRlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgLyogZml4IGZvciBmbGFzaGluZyBiYWNrZ3JvdW5kICovXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDBweCwgMHB4LCAwcHgpOyB9XG4gIC5vd2wtY2Fyb3VzZWwgLm93bC13cmFwcGVyLFxuICAub3dsLWNhcm91c2VsIC5vd2wtaXRlbSB7XG4gICAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgLW1vei1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgLW1zLWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOyB9XG4gIC5vd2wtY2Fyb3VzZWwgLm93bC1pdGVtIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWluLWhlaWdodDogMXB4O1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgLXdlYmtpdC10b3VjaC1jYWxsb3V0OiBub25lOyB9XG4gIC5vd2wtY2Fyb3VzZWwgLm93bC1pdGVtIGltZyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7IH1cbiAgLm93bC1jYXJvdXNlbCAub3dsLW5hdi5kaXNhYmxlZCxcbiAgLm93bC1jYXJvdXNlbCAub3dsLWRvdHMuZGlzYWJsZWQge1xuICAgIGRpc3BsYXk6IG5vbmU7IH1cbiAgLm93bC1jYXJvdXNlbCAub3dsLW5hdiAub3dsLXByZXYsXG4gIC5vd2wtY2Fyb3VzZWwgLm93bC1uYXYgLm93bC1uZXh0LFxuICAub3dsLWNhcm91c2VsIC5vd2wtZG90IHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7IH1cbiAgLm93bC1jYXJvdXNlbCAub3dsLW5hdiBidXR0b24ub3dsLXByZXYsXG4gIC5vd2wtY2Fyb3VzZWwgLm93bC1uYXYgYnV0dG9uLm93bC1uZXh0LFxuICAub3dsLWNhcm91c2VsIGJ1dHRvbi5vd2wtZG90IHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgZm9udDogaW5oZXJpdDsgfVxuICAub3dsLWNhcm91c2VsLm93bC1sb2FkZWQge1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9XG4gIC5vd2wtY2Fyb3VzZWwub3dsLWxvYWRpbmcge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgZGlzcGxheTogYmxvY2s7IH1cbiAgLm93bC1jYXJvdXNlbC5vd2wtaGlkZGVuIHtcbiAgICBvcGFjaXR5OiAwOyB9XG4gIC5vd2wtY2Fyb3VzZWwub3dsLXJlZnJlc2ggLm93bC1pdGVtIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47IH1cbiAgLm93bC1jYXJvdXNlbC5vd2wtZHJhZyAub3dsLWl0ZW0ge1xuICAgIHRvdWNoLWFjdGlvbjogcGFuLXk7XG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTsgfVxuICAub3dsLWNhcm91c2VsLm93bC1ncmFiIHtcbiAgICBjdXJzb3I6IG1vdmU7XG4gICAgY3Vyc29yOiBncmFiOyB9XG4gIC5vd2wtY2Fyb3VzZWwub3dsLXJ0bCB7XG4gICAgZGlyZWN0aW9uOiBydGw7IH1cbiAgLm93bC1jYXJvdXNlbC5vd2wtcnRsIC5vd2wtaXRlbSB7XG4gICAgZmxvYXQ6IHJpZ2h0OyB9XG5cbi8qIE5vIEpzICovXG4ubm8tanMgLm93bC1jYXJvdXNlbCB7XG4gIGRpc3BsYXk6IGJsb2NrOyB9XG5cbi8qXG4gKiAgT3dsIENhcm91c2VsIC0gQW5pbWF0ZSBQbHVnaW5cbiAqL1xuLm93bC1jYXJvdXNlbCAuYW5pbWF0ZWQge1xuICBhbmltYXRpb24tZHVyYXRpb246IDEwMDBtcztcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsgfVxuXG4ub3dsLWNhcm91c2VsIC5vd2wtYW5pbWF0ZWQtaW4ge1xuICB6LWluZGV4OiAwOyB9XG5cbi5vd2wtY2Fyb3VzZWwgLm93bC1hbmltYXRlZC1vdXQge1xuICB6LWluZGV4OiAxOyB9XG5cbi5vd2wtY2Fyb3VzZWwgLmZhZGVPdXQge1xuICBhbmltYXRpb24tbmFtZTogZmFkZU91dDsgfVxuXG5Aa2V5ZnJhbWVzIGZhZGVPdXQge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMTsgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAwOyB9IH1cblxuLypcbiAqIFx0T3dsIENhcm91c2VsIC0gQXV0byBIZWlnaHQgUGx1Z2luXG4gKi9cbi5vd2wtaGVpZ2h0IHtcbiAgdHJhbnNpdGlvbjogaGVpZ2h0IDUwMG1zIGVhc2UtaW4tb3V0OyB9XG5cbi8qXG4gKiBcdE93bCBDYXJvdXNlbCAtIExhenkgTG9hZCBQbHVnaW5cbiAqL1xuLm93bC1jYXJvdXNlbCAub3dsLWl0ZW0ge1xuICAvKipcblx0XHRcdFRoaXMgaXMgaW50cm9kdWNlZCBkdWUgdG8gYSBidWcgaW4gSUUxMSB3aGVyZSBsYXp5IGxvYWRpbmcgY29tYmluZWQgd2l0aCBhdXRvaGVpZ2h0IHBsdWdpbiBjYXVzZXMgYSB3cm9uZ1xuXHRcdFx0Y2FsY3VsYXRpb24gb2YgdGhlIGhlaWdodCBvZiB0aGUgb3dsLWl0ZW0gdGhhdCBicmVha3MgcGFnZSBsYXlvdXRzXG5cdFx0ICovIH1cbiAgLm93bC1jYXJvdXNlbCAub3dsLWl0ZW0gLm93bC1sYXp5IHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgNDAwbXMgZWFzZTsgfVxuICAub3dsLWNhcm91c2VsIC5vd2wtaXRlbSAub3dsLWxhenlbc3JjXj1cIlwiXSwgLm93bC1jYXJvdXNlbCAub3dsLWl0ZW0gLm93bC1sYXp5Om5vdChbc3JjXSkge1xuICAgIG1heC1oZWlnaHQ6IDA7IH1cbiAgLm93bC1jYXJvdXNlbCAub3dsLWl0ZW0gaW1nLm93bC1sYXp5IHtcbiAgICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkOyB9XG5cbi8qXG4gKiBcdE93bCBDYXJvdXNlbCAtIFZpZGVvIFBsdWdpblxuICovXG4ub3dsLWNhcm91c2VsIC5vd2wtdmlkZW8td3JhcHBlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kOiAjMDAwOyB9XG5cbi5vd2wtY2Fyb3VzZWwgLm93bC12aWRlby1wbGF5LWljb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGhlaWdodDogODBweDtcbiAgd2lkdGg6IDgwcHg7XG4gIGxlZnQ6IDUwJTtcbiAgdG9wOiA1MCU7XG4gIG1hcmdpbi1sZWZ0OiAtNDBweDtcbiAgbWFyZ2luLXRvcDogLTQwcHg7XG4gIGJhY2tncm91bmQ6IHVybChcIm93bC52aWRlby5wbGF5LnBuZ1wiKSBuby1yZXBlYXQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgei1pbmRleDogMTtcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAxMDBtcyBlYXNlOyB9XG5cbi5vd2wtY2Fyb3VzZWwgLm93bC12aWRlby1wbGF5LWljb246aG92ZXIge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMywgMS4zKTsgfVxuXG4ub3dsLWNhcm91c2VsIC5vd2wtdmlkZW8tcGxheWluZyAub3dsLXZpZGVvLXRuLFxuLm93bC1jYXJvdXNlbCAub3dsLXZpZGVvLXBsYXlpbmcgLm93bC12aWRlby1wbGF5LWljb24ge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbi5vd2wtY2Fyb3VzZWwgLm93bC12aWRlby10biB7XG4gIG9wYWNpdHk6IDA7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDQwMG1zIGVhc2U7IH1cblxuLm93bC1jYXJvdXNlbCAub3dsLXZpZGVvLWZyYW1lIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlOyB9XG5cbi8qIE1hZ25pZmljIFBvcHVwIENTUyAqL1xuLm1mcC1iZyB7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgei1pbmRleDogMTA0MjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBiYWNrZ3JvdW5kOiAjMGIwYjBiO1xuICBvcGFjaXR5OiAwLjg7IH1cblxuLm1mcC13cmFwIHtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB6LWluZGV4OiAxMDQzO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDtcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47IH1cblxuLm1mcC1jb250YWluZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBwYWRkaW5nOiAwIDhweDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuXG4ubWZwLWNvbnRhaW5lcjpiZWZvcmUge1xuICBjb250ZW50OiAnJztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxuLm1mcC1hbGlnbi10b3AgLm1mcC1jb250YWluZXI6YmVmb3JlIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4ubWZwLWNvbnRlbnQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIHotaW5kZXg6IDEwNDU7IH1cblxuLm1mcC1pbmxpbmUtaG9sZGVyIC5tZnAtY29udGVudCxcbi5tZnAtYWpheC1ob2xkZXIgLm1mcC1jb250ZW50IHtcbiAgd2lkdGg6IDEwMCU7XG4gIGN1cnNvcjogYXV0bzsgfVxuXG4ubWZwLWFqYXgtY3VyIHtcbiAgY3Vyc29yOiBwcm9ncmVzczsgfVxuXG4ubWZwLXpvb20tb3V0LWN1ciwgLm1mcC16b29tLW91dC1jdXIgLm1mcC1pbWFnZS1ob2xkZXIgLm1mcC1jbG9zZSB7XG4gIGN1cnNvcjogLW1vei16b29tLW91dDtcbiAgY3Vyc29yOiAtd2Via2l0LXpvb20tb3V0O1xuICBjdXJzb3I6IHpvb20tb3V0OyB9XG5cbi5tZnAtem9vbSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgY3Vyc29yOiAtd2Via2l0LXpvb20taW47XG4gIGN1cnNvcjogLW1vei16b29tLWluO1xuICBjdXJzb3I6IHpvb20taW47IH1cblxuLm1mcC1hdXRvLWN1cnNvciAubWZwLWNvbnRlbnQge1xuICBjdXJzb3I6IGF1dG87IH1cblxuLm1mcC1jbG9zZSxcbi5tZnAtYXJyb3csXG4ubWZwLXByZWxvYWRlcixcbi5tZnAtY291bnRlciB7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHVzZXItc2VsZWN0OiBub25lOyB9XG5cbi5tZnAtbG9hZGluZy5tZnAtZmlndXJlIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4ubWZwLWhpZGUge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cblxuLm1mcC1wcmVsb2FkZXIge1xuICBjb2xvcjogI0NDQztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgd2lkdGg6IGF1dG87XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLXRvcDogLTAuOGVtO1xuICBsZWZ0OiA4cHg7XG4gIHJpZ2h0OiA4cHg7XG4gIHotaW5kZXg6IDEwNDQ7IH1cblxuLm1mcC1wcmVsb2FkZXIgYSB7XG4gIGNvbG9yOiAjQ0NDOyB9XG5cbi5tZnAtcHJlbG9hZGVyIGE6aG92ZXIge1xuICBjb2xvcjogI0ZGRjsgfVxuXG4ubWZwLXMtcmVhZHkgLm1mcC1wcmVsb2FkZXIge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbi5tZnAtcy1lcnJvciAubWZwLWNvbnRlbnQge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbmJ1dHRvbi5tZnAtY2xvc2UsXG5idXR0b24ubWZwLWFycm93IHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMDtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3V0bGluZTogbm9uZTtcbiAgcGFkZGluZzogMDtcbiAgei1pbmRleDogMTA0NjtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247IH1cblxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyIHtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiAwOyB9XG5cbi5tZnAtY2xvc2Uge1xuICB3aWR0aDogNDRweDtcbiAgaGVpZ2h0OiA0NHB4O1xuICBsaW5lLWhlaWdodDogNDRweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMDtcbiAgdG9wOiAwO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgb3BhY2l0eTogMC42NTtcbiAgcGFkZGluZzogMCAwIDE4cHggMTBweDtcbiAgY29sb3I6ICNGRkY7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC1zaXplOiAyOHB4O1xuICBmb250LWZhbWlseTogQXJpYWwsIEJhc2tlcnZpbGxlLCBtb25vc3BhY2U7IH1cblxuLm1mcC1jbG9zZTpob3Zlcixcbi5tZnAtY2xvc2U6Zm9jdXMge1xuICBvcGFjaXR5OiAxOyB9XG5cbi5tZnAtY2xvc2U6YWN0aXZlIHtcbiAgdG9wOiAxcHg7IH1cblxuLm1mcC1jbG9zZS1idG4taW4gLm1mcC1jbG9zZSB7XG4gIGNvbG9yOiAjMzMzOyB9XG5cbi5tZnAtaW1hZ2UtaG9sZGVyIC5tZnAtY2xvc2UsXG4ubWZwLWlmcmFtZS1ob2xkZXIgLm1mcC1jbG9zZSB7XG4gIGNvbG9yOiAjRkZGO1xuICByaWdodDogLTZweDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIHBhZGRpbmctcmlnaHQ6IDZweDtcbiAgd2lkdGg6IDEwMCU7IH1cblxuLm1mcC1jb3VudGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBjb2xvcjogI0NDQztcbiAgZm9udC1zaXplOiAxMnB4O1xuICBsaW5lLWhlaWdodDogMThweDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuXG4ubWZwLWFycm93IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBvcGFjaXR5OiAwLjY1O1xuICBtYXJnaW46IDA7XG4gIHRvcDogNTAlO1xuICBtYXJnaW4tdG9wOiAtNTVweDtcbiAgcGFkZGluZzogMDtcbiAgd2lkdGg6IDkwcHg7XG4gIGhlaWdodDogMTEwcHg7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cblxuLm1mcC1hcnJvdzphY3RpdmUge1xuICBtYXJnaW4tdG9wOiAtNTRweDsgfVxuXG4ubWZwLWFycm93OmhvdmVyLFxuLm1mcC1hcnJvdzpmb2N1cyB7XG4gIG9wYWNpdHk6IDE7IH1cblxuLm1mcC1hcnJvdzpiZWZvcmUsXG4ubWZwLWFycm93OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgbWFyZ2luLXRvcDogMzVweDtcbiAgbWFyZ2luLWxlZnQ6IDM1cHg7XG4gIGJvcmRlcjogbWVkaXVtIGluc2V0IHRyYW5zcGFyZW50OyB9XG5cbi5tZnAtYXJyb3c6YWZ0ZXIge1xuICBib3JkZXItdG9wLXdpZHRoOiAxM3B4O1xuICBib3JkZXItYm90dG9tLXdpZHRoOiAxM3B4O1xuICB0b3A6IDhweDsgfVxuXG4ubWZwLWFycm93OmJlZm9yZSB7XG4gIGJvcmRlci10b3Atd2lkdGg6IDIxcHg7XG4gIGJvcmRlci1ib3R0b20td2lkdGg6IDIxcHg7XG4gIG9wYWNpdHk6IDAuNzsgfVxuXG4ubWZwLWFycm93LWxlZnQge1xuICBsZWZ0OiAwOyB9XG5cbi5tZnAtYXJyb3ctbGVmdDphZnRlciB7XG4gIGJvcmRlci1yaWdodDogMTdweCBzb2xpZCAjRkZGO1xuICBtYXJnaW4tbGVmdDogMzFweDsgfVxuXG4ubWZwLWFycm93LWxlZnQ6YmVmb3JlIHtcbiAgbWFyZ2luLWxlZnQ6IDI1cHg7XG4gIGJvcmRlci1yaWdodDogMjdweCBzb2xpZCAjM0YzRjNGOyB9XG5cbi5tZnAtYXJyb3ctcmlnaHQge1xuICByaWdodDogMDsgfVxuXG4ubWZwLWFycm93LXJpZ2h0OmFmdGVyIHtcbiAgYm9yZGVyLWxlZnQ6IDE3cHggc29saWQgI0ZGRjtcbiAgbWFyZ2luLWxlZnQ6IDM5cHg7IH1cblxuLm1mcC1hcnJvdy1yaWdodDpiZWZvcmUge1xuICBib3JkZXItbGVmdDogMjdweCBzb2xpZCAjM0YzRjNGOyB9XG5cbi5tZnAtaWZyYW1lLWhvbGRlciB7XG4gIHBhZGRpbmctdG9wOiA0MHB4O1xuICBwYWRkaW5nLWJvdHRvbTogNDBweDsgfVxuXG4ubWZwLWlmcmFtZS1ob2xkZXIgLm1mcC1jb250ZW50IHtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDkwMHB4OyB9XG5cbi5tZnAtaWZyYW1lLWhvbGRlciAubWZwLWNsb3NlIHtcbiAgdG9wOiAtNDBweDsgfVxuXG4ubWZwLWlmcmFtZS1zY2FsZXIge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nLXRvcDogNTYuMjUlOyB9XG5cbi5tZnAtaWZyYW1lLXNjYWxlciBpZnJhbWUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJveC1zaGFkb3c6IDAgMCA4cHggcmdiYSgwLCAwLCAwLCAwLjYpO1xuICBiYWNrZ3JvdW5kOiAjMDAwOyB9XG5cbi8qIE1haW4gaW1hZ2UgaW4gcG9wdXAgKi9cbmltZy5tZnAtaW1nIHtcbiAgd2lkdGg6IGF1dG87XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xuICBkaXNwbGF5OiBibG9jaztcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDQwcHggMCA0MHB4O1xuICBtYXJnaW46IDAgYXV0bzsgfVxuXG4vKiBUaGUgc2hhZG93IGJlaGluZCB0aGUgaW1hZ2UgKi9cbi5tZnAtZmlndXJlIHtcbiAgbGluZS1oZWlnaHQ6IDA7IH1cblxuLm1mcC1maWd1cmU6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDQwcHg7XG4gIGJvdHRvbTogNDBweDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHJpZ2h0OiAwO1xuICB3aWR0aDogYXV0bztcbiAgaGVpZ2h0OiBhdXRvO1xuICB6LWluZGV4OiAtMTtcbiAgYm94LXNoYWRvdzogMCAwIDhweCByZ2JhKDAsIDAsIDAsIDAuNik7XG4gIGJhY2tncm91bmQ6ICM0NDQ7IH1cblxuLm1mcC1maWd1cmUgc21hbGwge1xuICBjb2xvcjogI0JEQkRCRDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgbGluZS1oZWlnaHQ6IDE0cHg7IH1cblxuLm1mcC1maWd1cmUgZmlndXJlIHtcbiAgbWFyZ2luOiAwOyB9XG5cbi5tZnAtYm90dG9tLWJhciB7XG4gIG1hcmdpbi10b3A6IC0zNnB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTAwJTtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGN1cnNvcjogYXV0bzsgfVxuXG4ubWZwLXRpdGxlIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbGluZS1oZWlnaHQ6IDE4cHg7XG4gIGNvbG9yOiAjRjNGM0YzO1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gIHBhZGRpbmctcmlnaHQ6IDM2cHg7IH1cblxuLm1mcC1pbWFnZS1ob2xkZXIgLm1mcC1jb250ZW50IHtcbiAgbWF4LXdpZHRoOiAxMDAlOyB9XG5cbi5tZnAtZ2FsbGVyeSAubWZwLWltYWdlLWhvbGRlciAubWZwLWZpZ3VyZSB7XG4gIGN1cnNvcjogcG9pbnRlcjsgfVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSwgc2NyZWVuIGFuZCAobWF4LWhlaWdodDogMzAwcHgpIHtcbiAgLyoqXHJcbiAgICAgICAqIFJlbW92ZSBhbGwgcGFkZGluZ3MgYXJvdW5kIHRoZSBpbWFnZSBvbiBzbWFsbCBzY3JlZW5cclxuICAgICAgICovXG4gIC5tZnAtaW1nLW1vYmlsZSAubWZwLWltYWdlLWhvbGRlciB7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7IH1cbiAgLm1mcC1pbWctbW9iaWxlIGltZy5tZnAtaW1nIHtcbiAgICBwYWRkaW5nOiAwOyB9XG4gIC5tZnAtaW1nLW1vYmlsZSAubWZwLWZpZ3VyZTphZnRlciB7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDsgfVxuICAubWZwLWltZy1tb2JpbGUgLm1mcC1maWd1cmUgc21hbGwge1xuICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICBtYXJnaW4tbGVmdDogNXB4OyB9XG4gIC5tZnAtaW1nLW1vYmlsZSAubWZwLWJvdHRvbS1iYXIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC42KTtcbiAgICBib3R0b206IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHRvcDogYXV0bztcbiAgICBwYWRkaW5nOiAzcHggNXB4O1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG4gIC5tZnAtaW1nLW1vYmlsZSAubWZwLWJvdHRvbS1iYXI6ZW1wdHkge1xuICAgIHBhZGRpbmc6IDA7IH1cbiAgLm1mcC1pbWctbW9iaWxlIC5tZnAtY291bnRlciB7XG4gICAgcmlnaHQ6IDVweDtcbiAgICB0b3A6IDNweDsgfVxuICAubWZwLWltZy1tb2JpbGUgLm1mcC1jbG9zZSB7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIHdpZHRoOiAzNXB4O1xuICAgIGhlaWdodDogMzVweDtcbiAgICBsaW5lLWhlaWdodDogMzVweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAwOyB9IH1cblxuQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogOTAwcHgpIHtcbiAgLm1mcC1hcnJvdyB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuNzUpO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC43NSk7IH1cbiAgLm1mcC1hcnJvdy1sZWZ0IHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDA7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMDsgfVxuICAubWZwLWFycm93LXJpZ2h0IHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDEwMCU7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMTAwJTsgfVxuICAubWZwLWNvbnRhaW5lciB7XG4gICAgcGFkZGluZy1sZWZ0OiA2cHg7XG4gICAgcGFkZGluZy1yaWdodDogNnB4OyB9IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgQmFzZVxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXHJcbiAqIFJlbW92ZSBtYXJnaW4gYW5kIHBhZGRpbmcgZnJvbSBldmVyeSBzZWxlY3RvciBpbmNsdWRpbmcgdGhlaXJcclxuICogcHN1ZWRvIHNlbGVjdG9ycy5cclxuICpcclxuICogMS4gTW9yZSBzZW5zaWJsZSBkZWZhdWx0IGJveCBzaXppbmcuXHJcbiAqICAgIChjc3MtdHJpY2tzLmNvbS9pbmhlcml0aW5nLWJveC1zaXppbmctcHJvYmFibHktc2xpZ2h0bHktYmV0dGVyLWJlc3QtcHJhY3RpY2UpLlxyXG4gKi9cbiosXG4qOjpiZWZvcmUsXG4qOjphZnRlciB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgLyogMSAqLyB9XG5cbi8qKlxyXG4gKiBTZXQgaGVpZ2h0IG9mIHRoZSBkb2N1bWVudCB0byBtYXhpdW0gdmlld3BvcnQgaGVpZ2h0LlxyXG4gKlxyXG4gKiAxLiBTZXQgcm9vdCBmb250IHNpemUgdG8gMTAuXHJcbiAqL1xuaHRtbCB7XG4gIGhlaWdodDogMTAwdmg7XG4gIGZvbnQtc2l6ZTogNjIuNSU7XG4gIC8qIDEgKi9cbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuXG4vKipcclxuICogU2V0IG1pbmltYWwgaGVpZ2h0IG9mIHRoZSBib2R5IHRvIG1heGltdW0gdmlld3BvcnQgaGVpZ2h0IHRvXHJcbiAqIG1hdGNoIHRoZSBkb2N1bWVudCdzIGhlaWdodC5cclxuICpcclxuICogMS4gRmlyZWZveCAyNSsuXHJcbiAqIDIuIENocm9tZSA1Ky5cclxuICovXG5ib2R5IHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXNpemU6IDEuNnJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTYyNWVtO1xuICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGNvbG9yOiBibGFjaztcbiAgZm9udC1mYW1pbHk6IFwiT3BlbiBTYW5zXCI7XG4gIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIC8qIDEgKi9cbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIC8qIDIgKi8gfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBSZXNldFxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXHJcbiAqIEN1c3RvbSB1c2VyIGFnZW50IHJlc2V0cyBhbmQgb3ZlcnJpZGVzIHRoYXQgYXJlIG5vdCBwcmVzZW50IGluXHJcbiAqIE5vcm1hbGl6ZSA4LjAuMC4gVGhpcyBtb3N0bHkgcmVtb3ZlcyBzb21lIGFubm95aW5nIG1hcmdpbiBhbmQgcGFkZGluZ1xyXG4gKiBkZWZhdWx0cywgYm9yZGVyIHJhZGl1cywgYW5kIG91dGxpbmVzLlxyXG4gKi9cbmEge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG5cbi8qKlxyXG4gKiAxLiBSZW1vdmUgYm9yZGVyIHJhZGl1cyBvbiBDaHJvbWUgNjIuMCsgb24gbWFjT1MuXHJcbiAqL1xuYnV0dG9uIHtcbiAgYm9yZGVyOiAwO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICAvKiAxICovXG4gIG91dGxpbmU6IG5vbmU7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjsgfVxuXG5maWVsZHNldCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiAwOyB9XG5cbmZpZ3VyZSB7XG4gIG1hcmdpbjogMDsgfVxuXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7IH1cblxuaHIge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7IH1cblxuLyoqXHJcbiAqIDEuIFJlbW92ZSB3aGl0ZSBzcGFjZS5cclxuICovXG5pbWcge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogYXV0bztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgLyogMSAqLyB9XG5cbi8qKlxyXG4gKiAxLiBSZW1vdmUgaW5oZXJpdGVkIHVzZXIgYWdlbnQgYXBwZWFyYW5jZS5cclxuICovXG5pbnB1dCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBib3JkZXI6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIC8qIDEgKi8gfVxuXG4vKipcclxuICogMS4gT25seSBhbGxvdyB2ZXJ0aWNhbCByZXNpemluZyB0byBwcmV2ZW50IHRoZSB0ZXh0YXJlYVxyXG4gKiAgICBmcm9tIG92ZXJmbG93aW5nIHRoZSBjb250YWluZXIuXHJcbiAqL1xudGV4dGFyZWEge1xuICByZXNpemU6IHZlcnRpY2FsOyB9XG5cbnVsLFxub2wge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsgfVxuXG5wIHtcbiAgbWFyZ2luOiAwOyB9XG5cbi8qKlxyXG4gKiAxLiBDb2xsYXBzZSBib3JkZXJzIHRvIHByZXZlbnQgZG91YmxlIHNpZGVkIGJvcmRlcnMuXHJcbiAqL1xudGFibGUge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIC8qIDEgKi8gfVxuXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogNzAwOyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIEJ1dHRvbnNcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gKiBCdXR0b24gYmFzZS5cclxuICovXG4uYnV0dG9uLCBpbnB1dFt0eXBlPSdzdWJtaXQnXSB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC1zaXplOiAxLjRyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjQyODU3ZW07XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgaGVpZ2h0OiAxMDAlO1xuICBwYWRkaW5nOiA3cHggMTJweDtcbiAgdHJhbnNpdGlvbjogYWxsIDI1MG1zIGVhc2U7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyOyB9XG4gIC5idXR0b24gc3ZnLCBpbnB1dFt0eXBlPSdzdWJtaXQnXSBzdmcge1xuICAgIHdpZHRoOiAxMXB4O1xuICAgIGhlaWdodDogMTFweDsgfVxuICAuYnV0dG9uLnN2Zy1yaWdodCBzdmcsIGlucHV0LnN2Zy1yaWdodFt0eXBlPSdzdWJtaXQnXSBzdmcge1xuICAgIG1hcmdpbi1sZWZ0OiAxMHB4OyB9XG4gIC5idXR0b24uc3ZnLWxlZnQgc3ZnLCBpbnB1dC5zdmctbGVmdFt0eXBlPSdzdWJtaXQnXSBzdmcge1xuICAgIG1hcmdpbi1yaWdodDogMTBweDsgfVxuXG4vKipcclxuICogQnV0dG9uIHByaW1hcnkgKGdyZWVuKS5cclxuICovXG4uYnV0dG9uLXByaW1hcnktLWdyZWVuLCBpbnB1dFt0eXBlPSdzdWJtaXQnXSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjMzIyM2Q7XG4gIGJhY2tncm91bmQ6ICNjMzIyM2Q7XG4gIGNvbG9yOiB3aGl0ZTsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAgIC5idXR0b24tcHJpbWFyeS0tZ3JlZW46aG92ZXIsIGlucHV0OmhvdmVyW3R5cGU9J3N1Ym1pdCddIHtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgY29sb3I6ICNjMzIyM2Q7IH0gfVxuXG4vKipcclxuICogQnV0dG9uIHNlY29uZGFyeSAoZ3JlZW4pLlxyXG4gKi9cbi5idXR0b24tc2Vjb25kYXJ5LS1ncmVlbiB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjMzIyM2Q7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogI2MzMjIzZDsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAgIC5idXR0b24tc2Vjb25kYXJ5LS1ncmVlbjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAjYzMyMjNkO1xuICAgICAgY29sb3I6IHdoaXRlOyB9IH1cblxuLyoqXHJcbiAqIEJ1dHRvbiBzZWNvbmRhcnkgKHdoaXRlKS5cclxuICovXG4uYnV0dG9uLXNlY29uZGFyeS0td2hpdGUge1xuICBwYWRkaW5nOiAxMHB4IDE1cHg7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHdoaXRlO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICBjb2xvcjogd2hpdGU7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgICAuYnV0dG9uLXNlY29uZGFyeS0td2hpdGU6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogcmdiYSgxOTUsIDM0LCA2MSwgMC4yNSk7IH0gfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBDb250YWluZXJcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gKiBUaGUgY29udGFpbmVyIG9iamVjdCBjZW50ZXJzIGFuIGVsZW1lbnQgaW4gdGhlIGRvY3VtZW50LlxyXG4gKi9cbi5jb250YWluZXIge1xuICBtYXgtd2lkdGg6IGNhbGMoMTAyNHB4ICsgNDBweCk7XG4gIHBhZGRpbmc6IDAgMjBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbjogMCBhdXRvOyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIENvbnRlbnQgQ29uc3RyYWludFxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXHJcbiAqIFRoZSBjb250ZW50IGNvbnN0cmFpbnQgaXMgYSBjb25zdHJhaW50IGZvciBhbGwgdGhlIGNvbnRlbnQgd2l0aGluXHJcbiAqIHRoZSBkb2N1bWVudC4gSXQgY2FuIGJlIG1hbmlwdWxhdGVkIGJ5IENTUyBvciBKYXZhU2NyaXB0IHdpdGhvdXRcclxuICogaW5mbHVlbmNpbmcgdGhlIGJvZHkuXHJcbiAqL1xuLmNvbnRlbnQtY29uc3RyYWludCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWluLWhlaWdodDogMTAwdmg7XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgRmxleFxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXHJcbiAqIEV4YW1wbGUgb2YgYSBmbGV4IGJhc2VkIGNvbHVtbiBncmlkIGxheW91dCBpbiBwcmFjdGljZTpcclxuICpcclxuICogPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gKiAgIDxkaXYgY2xhc3M9XCJjb2wgY29sLXhzLTYgY29sLXNtLTEyXCI+PC9kaXY+XHJcbiAqICAgPGRpdiBjbGFzcz1cImNvbCBjb2wteHMtNiBjb2wtc20tMTJcIj48L2Rpdj5cclxuICogPC9kaXY+XHJcbiAqXHJcbiAqIFRoaXMgZXhhbXBsZSB3aWxsIGNyZWF0ZSBhIHJvdyB3aXRoIHR3byBjb2x1bW5zIGVhY2ggZmlsbGluZyBoYWxmIHRoZSB3aWR0aFxyXG4gKiBvZiB0aGUgcm93IG9uIGFsbCBtZWRpYSwgYnV0IHdpbGwgY29udmVydCB0byBhIGZ1bGwgd2lkdGggY29sdW1uIG9uIHRoZVxyXG4gKiBzbWFsbCBgLXNtYCBicmVha3BvaW50IGFsaWFzLCB3aGljaCBpcyBtb2JpbGUgb25seS4gUmVmZXIgdG9cclxuICogYHNldHRpbmdzL19kZWZpbml0aW9ucy5zY3NzYCBmb3IgYWxsIGJyZWFrcG9pbnQgYWxpYXMuXHJcbiAqL1xuLyoqXHJcbiAqIEZsZXggb2JqZWN0LlxyXG4gKlxyXG4gKiBUaXA6IFVzZSBmbGV4IG9uIGEgY29sdW1uIHRvIG1ha2UgdGhlIGJveCB0aGUgc2FtZSBoZWlnaHQgYXMgdGhlIGNvbHVtbi5cclxuICovXG4uZmxleCB7XG4gIGRpc3BsYXk6IGZsZXg7IH1cblxuLmlubGluZS1mbGV4IHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7IH1cblxuLmZsZXgtd3JhcCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDsgfVxuXG4uaW5saW5lLWZsZXgtd3JhcCB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7IH1cblxuLyoqXHJcbiAqIEZsZXggb2JqZWN0IHdpdGggYSBjb2x1bW4gYmFzZWQgbGF5b3V0IHN5c3RlbS5cclxuICovXG4ucm93IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleDogMCAxIGF1dG87XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIG1hcmdpbjogMCAtMTBweDsgfVxuXG4vKipcclxuICogQm94LCB0aGUgaW5zaWRlIG9mIGEgY29sdW1uLlxyXG4gKi9cbi5ib3gge1xuICBmbGV4OiAxOyB9XG5cbi8qKlxyXG4gICAgICAgKiBDb2x1bW4gMSBmb3IgdGhlIGB4c2AgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4uY29sLXhzLTEge1xuICBmbGV4OiAwIDEgYXV0bztcbiAgd2lkdGg6IDguMzMzMzMlO1xuICBwYWRkaW5nOiAwIDEwcHg7IH1cblxuLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDEgZm9yIHRoZSBgeHNgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4ub2Zmc2V0LXhzLTEge1xuICBtYXJnaW4tbGVmdDogOC4zMzMzMyU7IH1cblxuLyoqXHJcbiAgICAgICAqIENvbHVtbiAyIGZvciB0aGUgYHhzYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbi5jb2wteHMtMiB7XG4gIGZsZXg6IDAgMSBhdXRvO1xuICB3aWR0aDogMTYuNjY2NjclO1xuICBwYWRkaW5nOiAwIDEwcHg7IH1cblxuLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDIgZm9yIHRoZSBgeHNgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4ub2Zmc2V0LXhzLTIge1xuICBtYXJnaW4tbGVmdDogMTYuNjY2NjclOyB9XG5cbi8qKlxyXG4gICAgICAgKiBDb2x1bW4gMyBmb3IgdGhlIGB4c2AgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4uY29sLXhzLTMge1xuICBmbGV4OiAwIDEgYXV0bztcbiAgd2lkdGg6IDI1JTtcbiAgcGFkZGluZzogMCAxMHB4OyB9XG5cbi8qKlxyXG4gICAgICAgICAqIE9mZnNldCAzIGZvciB0aGUgYHhzYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuLm9mZnNldC14cy0zIHtcbiAgbWFyZ2luLWxlZnQ6IDI1JTsgfVxuXG4vKipcclxuICAgICAgICogQ29sdW1uIDQgZm9yIHRoZSBgeHNgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuLmNvbC14cy00IHtcbiAgZmxleDogMCAxIGF1dG87XG4gIHdpZHRoOiAzMy4zMzMzMyU7XG4gIHBhZGRpbmc6IDAgMTBweDsgfVxuXG4vKipcclxuICAgICAgICAgKiBPZmZzZXQgNCBmb3IgdGhlIGB4c2AgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbi5vZmZzZXQteHMtNCB7XG4gIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMyU7IH1cblxuLyoqXHJcbiAgICAgICAqIENvbHVtbiA1IGZvciB0aGUgYHhzYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbi5jb2wteHMtNSB7XG4gIGZsZXg6IDAgMSBhdXRvO1xuICB3aWR0aDogNDEuNjY2NjclO1xuICBwYWRkaW5nOiAwIDEwcHg7IH1cblxuLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDUgZm9yIHRoZSBgeHNgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4ub2Zmc2V0LXhzLTUge1xuICBtYXJnaW4tbGVmdDogNDEuNjY2NjclOyB9XG5cbi8qKlxyXG4gICAgICAgKiBDb2x1bW4gNiBmb3IgdGhlIGB4c2AgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4uY29sLXhzLTYge1xuICBmbGV4OiAwIDEgYXV0bztcbiAgd2lkdGg6IDUwJTtcbiAgcGFkZGluZzogMCAxMHB4OyB9XG5cbi8qKlxyXG4gICAgICAgICAqIE9mZnNldCA2IGZvciB0aGUgYHhzYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuLm9mZnNldC14cy02IHtcbiAgbWFyZ2luLWxlZnQ6IDUwJTsgfVxuXG4vKipcclxuICAgICAgICogQ29sdW1uIDcgZm9yIHRoZSBgeHNgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuLmNvbC14cy03IHtcbiAgZmxleDogMCAxIGF1dG87XG4gIHdpZHRoOiA1OC4zMzMzMyU7XG4gIHBhZGRpbmc6IDAgMTBweDsgfVxuXG4vKipcclxuICAgICAgICAgKiBPZmZzZXQgNyBmb3IgdGhlIGB4c2AgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbi5vZmZzZXQteHMtNyB7XG4gIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMyU7IH1cblxuLyoqXHJcbiAgICAgICAqIENvbHVtbiA4IGZvciB0aGUgYHhzYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbi5jb2wteHMtOCB7XG4gIGZsZXg6IDAgMSBhdXRvO1xuICB3aWR0aDogNjYuNjY2NjclO1xuICBwYWRkaW5nOiAwIDEwcHg7IH1cblxuLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDggZm9yIHRoZSBgeHNgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4ub2Zmc2V0LXhzLTgge1xuICBtYXJnaW4tbGVmdDogNjYuNjY2NjclOyB9XG5cbi8qKlxyXG4gICAgICAgKiBDb2x1bW4gOSBmb3IgdGhlIGB4c2AgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4uY29sLXhzLTkge1xuICBmbGV4OiAwIDEgYXV0bztcbiAgd2lkdGg6IDc1JTtcbiAgcGFkZGluZzogMCAxMHB4OyB9XG5cbi8qKlxyXG4gICAgICAgICAqIE9mZnNldCA5IGZvciB0aGUgYHhzYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuLm9mZnNldC14cy05IHtcbiAgbWFyZ2luLWxlZnQ6IDc1JTsgfVxuXG4vKipcclxuICAgICAgICogQ29sdW1uIDEwIGZvciB0aGUgYHhzYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbi5jb2wteHMtMTAge1xuICBmbGV4OiAwIDEgYXV0bztcbiAgd2lkdGg6IDgzLjMzMzMzJTtcbiAgcGFkZGluZzogMCAxMHB4OyB9XG5cbi8qKlxyXG4gICAgICAgICAqIE9mZnNldCAxMCBmb3IgdGhlIGB4c2AgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbi5vZmZzZXQteHMtMTAge1xuICBtYXJnaW4tbGVmdDogODMuMzMzMzMlOyB9XG5cbi8qKlxyXG4gICAgICAgKiBDb2x1bW4gMTEgZm9yIHRoZSBgeHNgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuLmNvbC14cy0xMSB7XG4gIGZsZXg6IDAgMSBhdXRvO1xuICB3aWR0aDogOTEuNjY2NjclO1xuICBwYWRkaW5nOiAwIDEwcHg7IH1cblxuLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDExIGZvciB0aGUgYHhzYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuLm9mZnNldC14cy0xMSB7XG4gIG1hcmdpbi1sZWZ0OiA5MS42NjY2NyU7IH1cblxuLyoqXHJcbiAgICAgICAqIENvbHVtbiAxMiBmb3IgdGhlIGB4c2AgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4uY29sLXhzLTEyIHtcbiAgZmxleDogMCAxIGF1dG87XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwIDEwcHg7IH1cblxuLyoqXHJcbiAgICAgICAqIEFsaWduIGBzdHJldGNoYCBmb3IgdGhlIHhzIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuLmFsaWduLXhzLXN0cmV0Y2gge1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDsgfVxuXG4vKipcclxuICAgICAgICogQWxpZ24gYGNlbnRlcmAgZm9yIHRoZSB4cyBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbi5hbGlnbi14cy1jZW50ZXIge1xuICBhbGlnbi1pdGVtczogY2VudGVyOyB9XG5cbi8qKlxyXG4gICAgICAgKiBBbGlnbiBgZmxleC1zdGFydGAgZm9yIHRoZSB4cyBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbi5hbGlnbi14cy1mbGV4LXN0YXJ0IHtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IH1cblxuLyoqXHJcbiAgICAgICAqIEFsaWduIGBmbGV4LWVuZGAgZm9yIHRoZSB4cyBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbi5hbGlnbi14cy1mbGV4LWVuZCB7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsgfVxuXG4vKipcclxuICAgICAgICogQWxpZ24gYGJhc2VsaW5lYCBmb3IgdGhlIHhzIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuLmFsaWduLXhzLWJhc2VsaW5lIHtcbiAgYWxpZ24taXRlbXM6IGJhc2VsaW5lOyB9XG5cbi8qKlxyXG4gICAgICAgKiBKdXN0aWZ5IGBzdGFydGAgZm9yIHRoZSB4cyBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbi5qdXN0aWZ5LXhzLXN0YXJ0IHtcbiAganVzdGlmeS1jb250ZW50OiBzdGFydDsgfVxuXG4vKipcclxuICAgICAgICogSnVzdGlmeSBgY2VudGVyYCBmb3IgdGhlIHhzIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuLmp1c3RpZnkteHMtY2VudGVyIHtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH1cblxuLyoqXHJcbiAgICAgICAqIEp1c3RpZnkgYHNwYWNlLWJldHdlZW5gIGZvciB0aGUgeHMgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4uanVzdGlmeS14cy1zcGFjZS1iZXR3ZWVuIHtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB9XG5cbi8qKlxyXG4gICAgICAgKiBKdXN0aWZ5IGBzcGFjZS1hcm91bmRgIGZvciB0aGUgeHMgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4uanVzdGlmeS14cy1zcGFjZS1hcm91bmQge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsgfVxuXG4vKipcclxuICAgICAgICogSnVzdGlmeSBgc3BhY2UtZXZlbmx5YCBmb3IgdGhlIHhzIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuLmp1c3RpZnkteHMtc3BhY2UtZXZlbmx5IHtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1ldmVubHk7IH1cblxuLyoqXHJcbiAgICAgICAqIEJsZWVkIGxlZnQgZm9yIHRoZSB4cyBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbi5ibGVlZC14cy1sZWZ0IHtcbiAgcGFkZGluZy1sZWZ0OiAwOyB9XG5cbi8qKlxyXG4gICAgICAgKiBCbGVlZCByaWdodCBmb3IgdGhlIHhzIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuLmJsZWVkLXhzLXJpZ2h0IHtcbiAgcGFkZGluZy1yaWdodDogMDsgfVxuXG4vKipcclxuICAgICAqIE9yZGVyIGZpcnN0IGZvciB0aGUgYHhzYCBicmVha3BvaW50LlxyXG4gICAgICovXG4uZmlyc3QteHMge1xuICBvcmRlcjogLTE7IH1cblxuLyoqXHJcbiAgICAgKiBPcmRlciBsYXN0IGZvciB0aGUgYHhzYCBicmVha3BvaW50LlxyXG4gICAgICovXG4ubGFzdC14cyB7XG4gIG9yZGVyOiAxOyB9XG5cbi8qKlxyXG4gICAgICogUmV2ZXJzZSBvcmRlciBmb3IgdGhlIGB4c2AgYnJlYWtwb2ludC5cclxuICAgICAqL1xuLnJldmVyc2UteHMge1xuICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7IH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OTlweCkge1xuICAvKipcclxuICAgICAgICogQ29sdW1uIDEgZm9yIHRoZSBgc21gIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLXNtLTEge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA4LjMzMzMzJTtcbiAgICBwYWRkaW5nOiAwIDEwcHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDEgZm9yIHRoZSBgc21gIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQtc20tMSB7XG4gICAgbWFyZ2luLWxlZnQ6IDguMzMzMzMlOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gMiBmb3IgdGhlIGBzbWAgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wtc20tMiB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDE2LjY2NjY3JTtcbiAgICBwYWRkaW5nOiAwIDEwcHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDIgZm9yIHRoZSBgc21gIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQtc20tMiB7XG4gICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY3JTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDMgZm9yIHRoZSBgc21gIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLXNtLTMge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiAyNSU7XG4gICAgcGFkZGluZzogMCAxMHB4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCAzIGZvciB0aGUgYHNtYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LXNtLTMge1xuICAgIG1hcmdpbi1sZWZ0OiAyNSU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiA0IGZvciB0aGUgYHNtYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC1zbS00IHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogMzMuMzMzMzMlO1xuICAgIHBhZGRpbmc6IDAgMTBweDsgfVxuICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgNCBmb3IgdGhlIGBzbWAgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC1zbS00IHtcbiAgICBtYXJnaW4tbGVmdDogMzMuMzMzMzMlOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gNSBmb3IgdGhlIGBzbWAgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wtc20tNSB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDQxLjY2NjY3JTtcbiAgICBwYWRkaW5nOiAwIDEwcHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDUgZm9yIHRoZSBgc21gIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQtc20tNSB7XG4gICAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY3JTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDYgZm9yIHRoZSBgc21gIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLXNtLTYge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA1MCU7XG4gICAgcGFkZGluZzogMCAxMHB4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCA2IGZvciB0aGUgYHNtYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LXNtLTYge1xuICAgIG1hcmdpbi1sZWZ0OiA1MCU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiA3IGZvciB0aGUgYHNtYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC1zbS03IHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogNTguMzMzMzMlO1xuICAgIHBhZGRpbmc6IDAgMTBweDsgfVxuICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgNyBmb3IgdGhlIGBzbWAgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC1zbS03IHtcbiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMlOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gOCBmb3IgdGhlIGBzbWAgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wtc20tOCB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDY2LjY2NjY3JTtcbiAgICBwYWRkaW5nOiAwIDEwcHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDggZm9yIHRoZSBgc21gIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQtc20tOCB7XG4gICAgbWFyZ2luLWxlZnQ6IDY2LjY2NjY3JTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDkgZm9yIHRoZSBgc21gIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLXNtLTkge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA3NSU7XG4gICAgcGFkZGluZzogMCAxMHB4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCA5IGZvciB0aGUgYHNtYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LXNtLTkge1xuICAgIG1hcmdpbi1sZWZ0OiA3NSU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiAxMCBmb3IgdGhlIGBzbWAgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wtc20tMTAge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA4My4zMzMzMyU7XG4gICAgcGFkZGluZzogMCAxMHB4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCAxMCBmb3IgdGhlIGBzbWAgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC1zbS0xMCB7XG4gICAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzJTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDExIGZvciB0aGUgYHNtYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC1zbS0xMSB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDkxLjY2NjY3JTtcbiAgICBwYWRkaW5nOiAwIDEwcHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDExIGZvciB0aGUgYHNtYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LXNtLTExIHtcbiAgICBtYXJnaW4tbGVmdDogOTEuNjY2NjclOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gMTIgZm9yIHRoZSBgc21gIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLXNtLTEyIHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAwIDEwcHg7IH1cbiAgLyoqXHJcbiAgICAgICAqIEFsaWduIGBzdHJldGNoYCBmb3IgdGhlIHNtIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuYWxpZ24tc20tc3RyZXRjaCB7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7IH1cbiAgLyoqXHJcbiAgICAgICAqIEFsaWduIGBjZW50ZXJgIGZvciB0aGUgc20gYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5hbGlnbi1zbS1jZW50ZXIge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cbiAgLyoqXHJcbiAgICAgICAqIEFsaWduIGBmbGV4LXN0YXJ0YCBmb3IgdGhlIHNtIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuYWxpZ24tc20tZmxleC1zdGFydCB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IH1cbiAgLyoqXHJcbiAgICAgICAqIEFsaWduIGBmbGV4LWVuZGAgZm9yIHRoZSBzbSBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmFsaWduLXNtLWZsZXgtZW5kIHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7IH1cbiAgLyoqXHJcbiAgICAgICAqIEFsaWduIGBiYXNlbGluZWAgZm9yIHRoZSBzbSBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmFsaWduLXNtLWJhc2VsaW5lIHtcbiAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7IH1cbiAgLyoqXHJcbiAgICAgICAqIEp1c3RpZnkgYHN0YXJ0YCBmb3IgdGhlIHNtIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuanVzdGlmeS1zbS1zdGFydCB7XG4gICAganVzdGlmeS1jb250ZW50OiBzdGFydDsgfVxuICAvKipcclxuICAgICAgICogSnVzdGlmeSBgY2VudGVyYCBmb3IgdGhlIHNtIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuanVzdGlmeS1zbS1jZW50ZXIge1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOyB9XG4gIC8qKlxyXG4gICAgICAgKiBKdXN0aWZ5IGBzcGFjZS1iZXR3ZWVuYCBmb3IgdGhlIHNtIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuanVzdGlmeS1zbS1zcGFjZS1iZXR3ZWVuIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IH1cbiAgLyoqXHJcbiAgICAgICAqIEp1c3RpZnkgYHNwYWNlLWFyb3VuZGAgZm9yIHRoZSBzbSBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmp1c3RpZnktc20tc3BhY2UtYXJvdW5kIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsgfVxuICAvKipcclxuICAgICAgICogSnVzdGlmeSBgc3BhY2UtZXZlbmx5YCBmb3IgdGhlIHNtIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuanVzdGlmeS1zbS1zcGFjZS1ldmVubHkge1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtZXZlbmx5OyB9XG4gIC8qKlxyXG4gICAgICAgKiBCbGVlZCBsZWZ0IGZvciB0aGUgc20gYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5ibGVlZC1zbS1sZWZ0IHtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7IH1cbiAgLyoqXHJcbiAgICAgICAqIEJsZWVkIHJpZ2h0IGZvciB0aGUgc20gYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5ibGVlZC1zbS1yaWdodCB7XG4gICAgcGFkZGluZy1yaWdodDogMDsgfVxuICAvKipcclxuICAgICAqIE9yZGVyIGZpcnN0IGZvciB0aGUgYHNtYCBicmVha3BvaW50LlxyXG4gICAgICovXG4gIC5maXJzdC1zbSB7XG4gICAgb3JkZXI6IC0xOyB9XG4gIC8qKlxyXG4gICAgICogT3JkZXIgbGFzdCBmb3IgdGhlIGBzbWAgYnJlYWtwb2ludC5cclxuICAgICAqL1xuICAubGFzdC1zbSB7XG4gICAgb3JkZXI6IDE7IH1cbiAgLyoqXHJcbiAgICAgKiBSZXZlcnNlIG9yZGVyIGZvciB0aGUgYHNtYCBicmVha3BvaW50LlxyXG4gICAgICovXG4gIC5yZXZlcnNlLXNtIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7IH0gfVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwMHB4KSB7XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gMSBmb3IgdGhlIGBtZGAgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wtbWQtMSB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDguMzMzMzMlO1xuICAgIHBhZGRpbmc6IDAgMTBweDsgfVxuICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgMSBmb3IgdGhlIGBtZGAgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC1tZC0xIHtcbiAgICBtYXJnaW4tbGVmdDogOC4zMzMzMyU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiAyIGZvciB0aGUgYG1kYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC1tZC0yIHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogMTYuNjY2NjclO1xuICAgIHBhZGRpbmc6IDAgMTBweDsgfVxuICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgMiBmb3IgdGhlIGBtZGAgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC1tZC0yIHtcbiAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjclOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gMyBmb3IgdGhlIGBtZGAgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wtbWQtMyB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDI1JTtcbiAgICBwYWRkaW5nOiAwIDEwcHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDMgZm9yIHRoZSBgbWRgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQtbWQtMyB7XG4gICAgbWFyZ2luLWxlZnQ6IDI1JTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDQgZm9yIHRoZSBgbWRgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLW1kLTQge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiAzMy4zMzMzMyU7XG4gICAgcGFkZGluZzogMCAxMHB4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCA0IGZvciB0aGUgYG1kYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LW1kLTQge1xuICAgIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMyU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiA1IGZvciB0aGUgYG1kYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC1tZC01IHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogNDEuNjY2NjclO1xuICAgIHBhZGRpbmc6IDAgMTBweDsgfVxuICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgNSBmb3IgdGhlIGBtZGAgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC1tZC01IHtcbiAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjclOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gNiBmb3IgdGhlIGBtZGAgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wtbWQtNiB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDUwJTtcbiAgICBwYWRkaW5nOiAwIDEwcHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDYgZm9yIHRoZSBgbWRgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQtbWQtNiB7XG4gICAgbWFyZ2luLWxlZnQ6IDUwJTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDcgZm9yIHRoZSBgbWRgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLW1kLTcge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA1OC4zMzMzMyU7XG4gICAgcGFkZGluZzogMCAxMHB4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCA3IGZvciB0aGUgYG1kYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LW1kLTcge1xuICAgIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMyU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiA4IGZvciB0aGUgYG1kYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC1tZC04IHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogNjYuNjY2NjclO1xuICAgIHBhZGRpbmc6IDAgMTBweDsgfVxuICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgOCBmb3IgdGhlIGBtZGAgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC1tZC04IHtcbiAgICBtYXJnaW4tbGVmdDogNjYuNjY2NjclOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gOSBmb3IgdGhlIGBtZGAgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wtbWQtOSB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDc1JTtcbiAgICBwYWRkaW5nOiAwIDEwcHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDkgZm9yIHRoZSBgbWRgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQtbWQtOSB7XG4gICAgbWFyZ2luLWxlZnQ6IDc1JTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDEwIGZvciB0aGUgYG1kYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC1tZC0xMCB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDgzLjMzMzMzJTtcbiAgICBwYWRkaW5nOiAwIDEwcHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDEwIGZvciB0aGUgYG1kYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LW1kLTEwIHtcbiAgICBtYXJnaW4tbGVmdDogODMuMzMzMzMlOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gMTEgZm9yIHRoZSBgbWRgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLW1kLTExIHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogOTEuNjY2NjclO1xuICAgIHBhZGRpbmc6IDAgMTBweDsgfVxuICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgMTEgZm9yIHRoZSBgbWRgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQtbWQtMTEge1xuICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NyU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiAxMiBmb3IgdGhlIGBtZGAgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wtbWQtMTIge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDAgMTBweDsgfVxuICAvKipcclxuICAgICAgICogQWxpZ24gYHN0cmV0Y2hgIGZvciB0aGUgbWQgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5hbGlnbi1tZC1zdHJldGNoIHtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDsgfVxuICAvKipcclxuICAgICAgICogQWxpZ24gYGNlbnRlcmAgZm9yIHRoZSBtZCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmFsaWduLW1kLWNlbnRlciB7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxuICAvKipcclxuICAgICAgICogQWxpZ24gYGZsZXgtc3RhcnRgIGZvciB0aGUgbWQgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5hbGlnbi1tZC1mbGV4LXN0YXJ0IHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgfVxuICAvKipcclxuICAgICAgICogQWxpZ24gYGZsZXgtZW5kYCBmb3IgdGhlIG1kIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuYWxpZ24tbWQtZmxleC1lbmQge1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsgfVxuICAvKipcclxuICAgICAgICogQWxpZ24gYGJhc2VsaW5lYCBmb3IgdGhlIG1kIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuYWxpZ24tbWQtYmFzZWxpbmUge1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTsgfVxuICAvKipcclxuICAgICAgICogSnVzdGlmeSBgc3RhcnRgIGZvciB0aGUgbWQgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5qdXN0aWZ5LW1kLXN0YXJ0IHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHN0YXJ0OyB9XG4gIC8qKlxyXG4gICAgICAgKiBKdXN0aWZ5IGBjZW50ZXJgIGZvciB0aGUgbWQgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5qdXN0aWZ5LW1kLWNlbnRlciB7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH1cbiAgLyoqXHJcbiAgICAgICAqIEp1c3RpZnkgYHNwYWNlLWJldHdlZW5gIGZvciB0aGUgbWQgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5qdXN0aWZ5LW1kLXNwYWNlLWJldHdlZW4ge1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgfVxuICAvKipcclxuICAgICAgICogSnVzdGlmeSBgc3BhY2UtYXJvdW5kYCBmb3IgdGhlIG1kIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuanVzdGlmeS1tZC1zcGFjZS1hcm91bmQge1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kOyB9XG4gIC8qKlxyXG4gICAgICAgKiBKdXN0aWZ5IGBzcGFjZS1ldmVubHlgIGZvciB0aGUgbWQgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5qdXN0aWZ5LW1kLXNwYWNlLWV2ZW5seSB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1ldmVubHk7IH1cbiAgLyoqXHJcbiAgICAgICAqIEJsZWVkIGxlZnQgZm9yIHRoZSBtZCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmJsZWVkLW1kLWxlZnQge1xuICAgIHBhZGRpbmctbGVmdDogMDsgfVxuICAvKipcclxuICAgICAgICogQmxlZWQgcmlnaHQgZm9yIHRoZSBtZCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmJsZWVkLW1kLXJpZ2h0IHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwOyB9XG4gIC8qKlxyXG4gICAgICogT3JkZXIgZmlyc3QgZm9yIHRoZSBgbWRgIGJyZWFrcG9pbnQuXHJcbiAgICAgKi9cbiAgLmZpcnN0LW1kIHtcbiAgICBvcmRlcjogLTE7IH1cbiAgLyoqXHJcbiAgICAgKiBPcmRlciBsYXN0IGZvciB0aGUgYG1kYCBicmVha3BvaW50LlxyXG4gICAgICovXG4gIC5sYXN0LW1kIHtcbiAgICBvcmRlcjogMTsgfVxuICAvKipcclxuICAgICAqIFJldmVyc2Ugb3JkZXIgZm9yIHRoZSBgbWRgIGJyZWFrcG9pbnQuXHJcbiAgICAgKi9cbiAgLnJldmVyc2UtbWQge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsgfSB9XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogOTAwcHgpIHtcbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiAxIGZvciB0aGUgYGxnYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC1sZy0xIHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogOC4zMzMzMyU7XG4gICAgcGFkZGluZzogMCAxMHB4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCAxIGZvciB0aGUgYGxnYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LWxnLTEge1xuICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzJTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDIgZm9yIHRoZSBgbGdgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLWxnLTIge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiAxNi42NjY2NyU7XG4gICAgcGFkZGluZzogMCAxMHB4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCAyIGZvciB0aGUgYGxnYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LWxnLTIge1xuICAgIG1hcmdpbi1sZWZ0OiAxNi42NjY2NyU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiAzIGZvciB0aGUgYGxnYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC1sZy0zIHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogMjUlO1xuICAgIHBhZGRpbmc6IDAgMTBweDsgfVxuICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgMyBmb3IgdGhlIGBsZ2AgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC1sZy0zIHtcbiAgICBtYXJnaW4tbGVmdDogMjUlOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gNCBmb3IgdGhlIGBsZ2AgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wtbGctNCB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDMzLjMzMzMzJTtcbiAgICBwYWRkaW5nOiAwIDEwcHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDQgZm9yIHRoZSBgbGdgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQtbGctNCB7XG4gICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzJTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDUgZm9yIHRoZSBgbGdgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLWxnLTUge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA0MS42NjY2NyU7XG4gICAgcGFkZGluZzogMCAxMHB4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCA1IGZvciB0aGUgYGxnYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LWxnLTUge1xuICAgIG1hcmdpbi1sZWZ0OiA0MS42NjY2NyU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiA2IGZvciB0aGUgYGxnYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC1sZy02IHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogNTAlO1xuICAgIHBhZGRpbmc6IDAgMTBweDsgfVxuICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgNiBmb3IgdGhlIGBsZ2AgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC1sZy02IHtcbiAgICBtYXJnaW4tbGVmdDogNTAlOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gNyBmb3IgdGhlIGBsZ2AgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wtbGctNyB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDU4LjMzMzMzJTtcbiAgICBwYWRkaW5nOiAwIDEwcHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDcgZm9yIHRoZSBgbGdgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQtbGctNyB7XG4gICAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzJTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDggZm9yIHRoZSBgbGdgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLWxnLTgge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA2Ni42NjY2NyU7XG4gICAgcGFkZGluZzogMCAxMHB4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCA4IGZvciB0aGUgYGxnYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LWxnLTgge1xuICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NyU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiA5IGZvciB0aGUgYGxnYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC1sZy05IHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogNzUlO1xuICAgIHBhZGRpbmc6IDAgMTBweDsgfVxuICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgOSBmb3IgdGhlIGBsZ2AgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC1sZy05IHtcbiAgICBtYXJnaW4tbGVmdDogNzUlOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gMTAgZm9yIHRoZSBgbGdgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLWxnLTEwIHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogODMuMzMzMzMlO1xuICAgIHBhZGRpbmc6IDAgMTBweDsgfVxuICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgMTAgZm9yIHRoZSBgbGdgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQtbGctMTAge1xuICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMyU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiAxMSBmb3IgdGhlIGBsZ2AgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wtbGctMTEge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA5MS42NjY2NyU7XG4gICAgcGFkZGluZzogMCAxMHB4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCAxMSBmb3IgdGhlIGBsZ2AgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC1sZy0xMSB7XG4gICAgbWFyZ2luLWxlZnQ6IDkxLjY2NjY3JTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDEyIGZvciB0aGUgYGxnYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC1sZy0xMiB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMCAxMHB4OyB9XG4gIC8qKlxyXG4gICAgICAgKiBBbGlnbiBgc3RyZXRjaGAgZm9yIHRoZSBsZyBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmFsaWduLWxnLXN0cmV0Y2gge1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoOyB9XG4gIC8qKlxyXG4gICAgICAgKiBBbGlnbiBgY2VudGVyYCBmb3IgdGhlIGxnIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuYWxpZ24tbGctY2VudGVyIHtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyOyB9XG4gIC8qKlxyXG4gICAgICAgKiBBbGlnbiBgZmxleC1zdGFydGAgZm9yIHRoZSBsZyBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmFsaWduLWxnLWZsZXgtc3RhcnQge1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyB9XG4gIC8qKlxyXG4gICAgICAgKiBBbGlnbiBgZmxleC1lbmRgIGZvciB0aGUgbGcgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5hbGlnbi1sZy1mbGV4LWVuZCB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kOyB9XG4gIC8qKlxyXG4gICAgICAgKiBBbGlnbiBgYmFzZWxpbmVgIGZvciB0aGUgbGcgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5hbGlnbi1sZy1iYXNlbGluZSB7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lOyB9XG4gIC8qKlxyXG4gICAgICAgKiBKdXN0aWZ5IGBzdGFydGAgZm9yIHRoZSBsZyBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmp1c3RpZnktbGctc3RhcnQge1xuICAgIGp1c3RpZnktY29udGVudDogc3RhcnQ7IH1cbiAgLyoqXHJcbiAgICAgICAqIEp1c3RpZnkgYGNlbnRlcmAgZm9yIHRoZSBsZyBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmp1c3RpZnktbGctY2VudGVyIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfVxuICAvKipcclxuICAgICAgICogSnVzdGlmeSBgc3BhY2UtYmV0d2VlbmAgZm9yIHRoZSBsZyBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmp1c3RpZnktbGctc3BhY2UtYmV0d2VlbiB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB9XG4gIC8qKlxyXG4gICAgICAgKiBKdXN0aWZ5IGBzcGFjZS1hcm91bmRgIGZvciB0aGUgbGcgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5qdXN0aWZ5LWxnLXNwYWNlLWFyb3VuZCB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7IH1cbiAgLyoqXHJcbiAgICAgICAqIEp1c3RpZnkgYHNwYWNlLWV2ZW5seWAgZm9yIHRoZSBsZyBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmp1c3RpZnktbGctc3BhY2UtZXZlbmx5IHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWV2ZW5seTsgfVxuICAvKipcclxuICAgICAgICogQmxlZWQgbGVmdCBmb3IgdGhlIGxnIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuYmxlZWQtbGctbGVmdCB7XG4gICAgcGFkZGluZy1sZWZ0OiAwOyB9XG4gIC8qKlxyXG4gICAgICAgKiBCbGVlZCByaWdodCBmb3IgdGhlIGxnIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuYmxlZWQtbGctcmlnaHQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7IH1cbiAgLyoqXHJcbiAgICAgKiBPcmRlciBmaXJzdCBmb3IgdGhlIGBsZ2AgYnJlYWtwb2ludC5cclxuICAgICAqL1xuICAuZmlyc3QtbGcge1xuICAgIG9yZGVyOiAtMTsgfVxuICAvKipcclxuICAgICAqIE9yZGVyIGxhc3QgZm9yIHRoZSBgbGdgIGJyZWFrcG9pbnQuXHJcbiAgICAgKi9cbiAgLmxhc3QtbGcge1xuICAgIG9yZGVyOiAxOyB9XG4gIC8qKlxyXG4gICAgICogUmV2ZXJzZSBvcmRlciBmb3IgdGhlIGBsZ2AgYnJlYWtwb2ludC5cclxuICAgICAqL1xuICAucmV2ZXJzZS1sZyB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOyB9IH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiAxIGZvciB0aGUgYHhsYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC14bC0xIHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogOC4zMzMzMyU7XG4gICAgcGFkZGluZzogMCAxMHB4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCAxIGZvciB0aGUgYHhsYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LXhsLTEge1xuICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzJTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDIgZm9yIHRoZSBgeGxgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLXhsLTIge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiAxNi42NjY2NyU7XG4gICAgcGFkZGluZzogMCAxMHB4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCAyIGZvciB0aGUgYHhsYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LXhsLTIge1xuICAgIG1hcmdpbi1sZWZ0OiAxNi42NjY2NyU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiAzIGZvciB0aGUgYHhsYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC14bC0zIHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogMjUlO1xuICAgIHBhZGRpbmc6IDAgMTBweDsgfVxuICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgMyBmb3IgdGhlIGB4bGAgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC14bC0zIHtcbiAgICBtYXJnaW4tbGVmdDogMjUlOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gNCBmb3IgdGhlIGB4bGAgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wteGwtNCB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDMzLjMzMzMzJTtcbiAgICBwYWRkaW5nOiAwIDEwcHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDQgZm9yIHRoZSBgeGxgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQteGwtNCB7XG4gICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzJTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDUgZm9yIHRoZSBgeGxgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLXhsLTUge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA0MS42NjY2NyU7XG4gICAgcGFkZGluZzogMCAxMHB4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCA1IGZvciB0aGUgYHhsYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LXhsLTUge1xuICAgIG1hcmdpbi1sZWZ0OiA0MS42NjY2NyU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiA2IGZvciB0aGUgYHhsYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC14bC02IHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogNTAlO1xuICAgIHBhZGRpbmc6IDAgMTBweDsgfVxuICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgNiBmb3IgdGhlIGB4bGAgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC14bC02IHtcbiAgICBtYXJnaW4tbGVmdDogNTAlOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gNyBmb3IgdGhlIGB4bGAgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wteGwtNyB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDU4LjMzMzMzJTtcbiAgICBwYWRkaW5nOiAwIDEwcHg7IH1cbiAgLyoqXHJcbiAgICAgICAgICogT2Zmc2V0IDcgZm9yIHRoZSBgeGxgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQteGwtNyB7XG4gICAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzJTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDggZm9yIHRoZSBgeGxgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLXhsLTgge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA2Ni42NjY2NyU7XG4gICAgcGFkZGluZzogMCAxMHB4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCA4IGZvciB0aGUgYHhsYCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xuICAub2Zmc2V0LXhsLTgge1xuICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NyU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiA5IGZvciB0aGUgYHhsYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC14bC05IHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogNzUlO1xuICAgIHBhZGRpbmc6IDAgMTBweDsgfVxuICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgOSBmb3IgdGhlIGB4bGAgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC14bC05IHtcbiAgICBtYXJnaW4tbGVmdDogNzUlOyB9XG4gIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gMTAgZm9yIHRoZSBgeGxgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuY29sLXhsLTEwIHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICB3aWR0aDogODMuMzMzMzMlO1xuICAgIHBhZGRpbmc6IDAgMTBweDsgfVxuICAvKipcclxuICAgICAgICAgKiBPZmZzZXQgMTAgZm9yIHRoZSBgeGxgIGJyZWFrcG9pbnQuXHJcbiAgICAgICAgICovXG4gIC5vZmZzZXQteGwtMTAge1xuICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMyU7IH1cbiAgLyoqXHJcbiAgICAgICAqIENvbHVtbiAxMSBmb3IgdGhlIGB4bGAgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5jb2wteGwtMTEge1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIHdpZHRoOiA5MS42NjY2NyU7XG4gICAgcGFkZGluZzogMCAxMHB4OyB9XG4gIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCAxMSBmb3IgdGhlIGB4bGAgYnJlYWtwb2ludC5cclxuICAgICAgICAgKi9cbiAgLm9mZnNldC14bC0xMSB7XG4gICAgbWFyZ2luLWxlZnQ6IDkxLjY2NjY3JTsgfVxuICAvKipcclxuICAgICAgICogQ29sdW1uIDEyIGZvciB0aGUgYHhsYCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmNvbC14bC0xMiB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMCAxMHB4OyB9XG4gIC8qKlxyXG4gICAgICAgKiBBbGlnbiBgc3RyZXRjaGAgZm9yIHRoZSB4bCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmFsaWduLXhsLXN0cmV0Y2gge1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoOyB9XG4gIC8qKlxyXG4gICAgICAgKiBBbGlnbiBgY2VudGVyYCBmb3IgdGhlIHhsIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuYWxpZ24teGwtY2VudGVyIHtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyOyB9XG4gIC8qKlxyXG4gICAgICAgKiBBbGlnbiBgZmxleC1zdGFydGAgZm9yIHRoZSB4bCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmFsaWduLXhsLWZsZXgtc3RhcnQge1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyB9XG4gIC8qKlxyXG4gICAgICAgKiBBbGlnbiBgZmxleC1lbmRgIGZvciB0aGUgeGwgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5hbGlnbi14bC1mbGV4LWVuZCB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kOyB9XG4gIC8qKlxyXG4gICAgICAgKiBBbGlnbiBgYmFzZWxpbmVgIGZvciB0aGUgeGwgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5hbGlnbi14bC1iYXNlbGluZSB7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lOyB9XG4gIC8qKlxyXG4gICAgICAgKiBKdXN0aWZ5IGBzdGFydGAgZm9yIHRoZSB4bCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmp1c3RpZnkteGwtc3RhcnQge1xuICAgIGp1c3RpZnktY29udGVudDogc3RhcnQ7IH1cbiAgLyoqXHJcbiAgICAgICAqIEp1c3RpZnkgYGNlbnRlcmAgZm9yIHRoZSB4bCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmp1c3RpZnkteGwtY2VudGVyIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfVxuICAvKipcclxuICAgICAgICogSnVzdGlmeSBgc3BhY2UtYmV0d2VlbmAgZm9yIHRoZSB4bCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmp1c3RpZnkteGwtc3BhY2UtYmV0d2VlbiB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB9XG4gIC8qKlxyXG4gICAgICAgKiBKdXN0aWZ5IGBzcGFjZS1hcm91bmRgIGZvciB0aGUgeGwgYnJlYWtwb2ludC5cclxuICAgICAgICovXG4gIC5qdXN0aWZ5LXhsLXNwYWNlLWFyb3VuZCB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7IH1cbiAgLyoqXHJcbiAgICAgICAqIEp1c3RpZnkgYHNwYWNlLWV2ZW5seWAgZm9yIHRoZSB4bCBicmVha3BvaW50LlxyXG4gICAgICAgKi9cbiAgLmp1c3RpZnkteGwtc3BhY2UtZXZlbmx5IHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWV2ZW5seTsgfVxuICAvKipcclxuICAgICAgICogQmxlZWQgbGVmdCBmb3IgdGhlIHhsIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuYmxlZWQteGwtbGVmdCB7XG4gICAgcGFkZGluZy1sZWZ0OiAwOyB9XG4gIC8qKlxyXG4gICAgICAgKiBCbGVlZCByaWdodCBmb3IgdGhlIHhsIGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xuICAuYmxlZWQteGwtcmlnaHQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7IH1cbiAgLyoqXHJcbiAgICAgKiBPcmRlciBmaXJzdCBmb3IgdGhlIGB4bGAgYnJlYWtwb2ludC5cclxuICAgICAqL1xuICAuZmlyc3QteGwge1xuICAgIG9yZGVyOiAtMTsgfVxuICAvKipcclxuICAgICAqIE9yZGVyIGxhc3QgZm9yIHRoZSBgeGxgIGJyZWFrcG9pbnQuXHJcbiAgICAgKi9cbiAgLmxhc3QteGwge1xuICAgIG9yZGVyOiAxOyB9XG4gIC8qKlxyXG4gICAgICogUmV2ZXJzZSBvcmRlciBmb3IgdGhlIGB4bGAgYnJlYWtwb2ludC5cclxuICAgICAqL1xuICAucmV2ZXJzZS14bCB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOyB9IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgRm9ybVxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXHJcbiAqIE1haW4uXHJcbiAqL1xuLmZvcm0ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cblxuLyoqXHJcbiAqIElucHV0IGNvbnRhaW5lci5cclxuICovXG4uZ2ZpZWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDsgfVxuXG4vKipcclxuICogSW5wdXQgbGFiZWwuXHJcbiAqL1xuLmdmaWVsZF9sYWJlbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tYm90dG9tOiA1cHg7IH1cblxuLyoqXHJcbiAqIERlZmF1bHQgc2V0dGluZ3MgZm9yIHRoZSBpbnB1dHMuXHJcbiAqL1xuLmZvcm0gc2VsZWN0LFxuLmZvcm0gaW5wdXRbdHlwZT0ndGV4dCddLFxudGV4dGFyZWEge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAzNXB4O1xuICBwYWRkaW5nOiAwIDEwcHg7XG4gIHRyYW5zaXRpb246IGFsbCAyNTBtcyBlYXNlO1xuICBib3JkZXI6IDFweCBzb2xpZCAjYmRiZGJkOyB9XG4gIC5mb3JtIHNlbGVjdDpob3ZlcixcbiAgLmZvcm0gaW5wdXRbdHlwZT0ndGV4dCddOmhvdmVyLFxuICB0ZXh0YXJlYTpob3ZlciB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2MzMjIzZDsgfVxuICAuZm9ybSBzZWxlY3Q6Zm9jdXMsXG4gIC5mb3JtIGlucHV0W3R5cGU9J3RleHQnXTpmb2N1cyxcbiAgdGV4dGFyZWE6Zm9jdXMge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTk1LCAzNCwgNjEsIDAuNyk7IH1cblxuLyoqXHJcbiAqIFN1Ym1pdCBidXR0b24uXHJcbiAqL1xuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICBpbnB1dFt0eXBlPSdzdWJtaXQnXSB7XG4gICAgd2lkdGg6IDEwMCU7IH0gfVxuXG4vKipcclxuICogU2VsZWN0IGlucHV0LlxyXG4gKi9cbi5naW5wdXRfY29udGFpbmVyX3NlbGVjdCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuICAuZ2lucHV0X2NvbnRhaW5lcl9zZWxlY3Qgc3ZnIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAxMHB4O1xuICAgIHJpZ2h0OiAxNXB4O1xuICAgIHdpZHRoOiAxNHB4O1xuICAgIGhlaWdodDogMTRweDtcbiAgICBjb2xvcjogI2MzMjIzZDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsgfVxuXG4vKipcclxuICogVGV4dGFyZWEuXHJcbiAqL1xudGV4dGFyZWEge1xuICBoZWlnaHQ6IDEwMHB4OyB9XG5cbi8qKlxyXG4gKiBFcnJvciBtZXNzYWdlcy5cclxuICovXG4uZ2Zvcm1fdmFsaWRhdGlvbl9jb250YWluZXIge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbi5nZmllbGRfZXJyb3IgaW5wdXQge1xuICBib3JkZXI6IDFweCBzb2xpZCAjZmM0MDQwICFpbXBvcnRhbnQ7IH1cblxuLnZhbGlkYXRpb25fZXJyb3Ige1xuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICBjb2xvcjogI2ZjNDA0MDtcbiAgZm9udC13ZWlnaHQ6IDcwMDsgfVxuXG4udmFsaWRhdGlvbl9tZXNzYWdlIHtcbiAgbWFyZ2luLXRvcDogMTBweDtcbiAgY29sb3I6ICNmYzQwNDA7IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgSGVhZGluZ1xyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXHJcbiAqIEhlYWRpbmcgYmFzZVxyXG4gKi9cbi5oZWFkaW5nIHtcbiAgY29sb3I6IGJsYWNrO1xuICBmb250LXdlaWdodDogNzAwO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9XG5cbi8qKlxyXG4gKiBIZWFkaW5nIDFcclxuICovXG4uaGVhZGluZy0xIHtcbiAgZm9udC1zaXplOiAyNHB4O1xuICBmb250LXNpemU6IDIuNHJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMzMzMzNlbTsgfVxuXG4vKipcclxuICogSGVhZGluZyAyXHJcbiAqL1xuLmhlYWRpbmctMiB7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgZm9udC1zaXplOiAycmVtO1xuICBsaW5lLWhlaWdodDogMS43NWVtOyB9XG5cbi8qKlxyXG4gKiBIZWFkaW5nIDNcclxuICovXG4uaGVhZGluZy0zIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXNpemU6IDEuNHJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNzE0MjllbTsgfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBMaW5rc1xyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXHJcbiAqIExpbmsgYmFzZS5cclxuICovXG4ubGluayB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC1zaXplOiAxLjRyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjQyODU3ZW07XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgdHJhbnNpdGlvbjogYWxsIDI1MG1zIGVhc2U7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyOyB9XG4gIC5saW5rIHN2ZyB7XG4gICAgd2lkdGg6IDExcHg7XG4gICAgaGVpZ2h0OiAxMXB4OyB9XG4gIC5saW5rLnN2Zy1yaWdodCBzdmcge1xuICAgIG1hcmdpbi1sZWZ0OiAxMHB4OyB9XG4gIC5saW5rLnN2Zy1sZWZ0IHN2ZyB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4OyB9XG4gIC5saW5rLnVuZGVybGluZSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH1cblxuLyoqXHJcbiAqIExpbmsgKGdyZWVuKS5cclxuICovXG4ubGluay0tZ3JlZW4ge1xuICBjb2xvcjogI2MzMjIzZDsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAgIC5saW5rLS1ncmVlbjpob3ZlciB7XG4gICAgICBjb2xvcjogI2QwMjU0MTtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9IH1cblxuLyoqXHJcbiAqIExpbmsgKGdyZWVuKS5cclxuICovXG4ubGluay0tYmxhY2sge1xuICBjb2xvcjogYmxhY2s7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgICAubGluay0tYmxhY2s6aG92ZXIge1xuICAgICAgY29sb3I6ICNkMDI1NDE7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfSB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIFNlY3Rpb25cclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5tMTAtdG9wIHtcbiAgbWFyZ2luLXRvcDogMTBweDsgfVxuXG4ubTEwLWJvdHRvbSB7XG4gIG1hcmdpbi1ib3R0b206IDEwcHg7IH1cblxuLm0xNS10b3Age1xuICBtYXJnaW4tdG9wOiAxNXB4OyB9XG5cbi5tMTUtYm90dG9tIHtcbiAgbWFyZ2luLWJvdHRvbTogMTVweDsgfVxuXG4ubTIwLXRvcCB7XG4gIG1hcmdpbi10b3A6IDIwcHg7IH1cblxuLm0yMC1ib3R0b20ge1xuICBtYXJnaW4tYm90dG9tOiAyMHB4OyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIFdyYXBwZXJcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gKiBUaGUgd3JhcHBlciBvYmplY3QgY2VudGVycyBhbiBlbGVtZW50IGluIHRoZSBkb2N1bWVudC5cclxuICovXG4ud3JhcHBlciB7XG4gIG1heC13aWR0aDogY2FsYygxMjIwcHggKyA0MHB4KTtcbiAgcGFkZGluZzogMCAyMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luOiAwIGF1dG87IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgQ01TIE91dHB1dFxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXHJcbiAqIEV2ZXJ5IGNvbmNlaXZhYmxlIEhUTUwgZWxlbWVudCB3aXRoaW4gYSBgLmNtcy1vdXRwdXRgIHdyYXBwZXIuXHJcbiAqXHJcbiAqIDEuIEV4Y2x1ZGUgbGFzdCBjaGlsZHMuXHJcbiAqL1xuLmNtcy1vdXRwdXQgaDIsXG4uY21zLW91dHB1dCBoMyB7XG4gIGNvbG9yOiBibGFjaztcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfVxuXG4uY21zLW91dHB1dCBoMiB7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgZm9udC1zaXplOiAycmVtO1xuICBsaW5lLWhlaWdodDogMS43NWVtOyB9XG5cbi5jbXMtb3V0cHV0IGgzIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXNpemU6IDEuNHJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNzE0MjllbTsgfVxuXG4uY21zLW91dHB1dCA+ICo6bm90KDpsYXN0LWNoaWxkKSB7XG4gIG1hcmdpbi1ib3R0b206IDEuNWVtO1xuICAvKiAxICovIH1cblxuLmNtcy1vdXRwdXQgdWwge1xuICBsaXN0LXN0eWxlLXR5cGU6IGRpc2M7IH1cblxuLmNtcy1vdXRwdXQgb2wge1xuICBsaXN0LXN0eWxlLXR5cGU6IGRlY2ltYWw7IH1cblxuLmNtcy1vdXRwdXQgYSB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICBjb2xvcjogI2MzMjIzZDtcbiAgdHJhbnNpdGlvbjogYWxsIDI1MG1zIGVhc2U7IH1cbiAgLmNtcy1vdXRwdXQgYTpob3ZlciB7XG4gICAgY29sb3I6ICNkMDU4NmM7IH1cblxuLmNvbnRlbnQtY29sdW1ucyB7XG4gIHBhZGRpbmc6IDQwcHggMCAxMDBweCAwOyB9XG5cbi5jb250ZW50LWNvbHVtbnNfX2NvbHVtbiB7XG4gIHdpZHRoOiA1MCU7XG4gIHBhZGRpbmc6IDAgMCAwIDYwcHg7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAgIC5jb250ZW50LWNvbHVtbnNfX2NvbHVtbiB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHBhZGRpbmc6IDYwcHggMCAwIDA7IH0gfVxuICAuY29udGVudC1jb2x1bW5zX19jb2x1bW4uaXMtbGVmdCB7XG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2JkYmRiZDtcbiAgICBwYWRkaW5nOiAwIDYwcHggMCAwOyB9XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAgICAgLmNvbnRlbnQtY29sdW1uc19fY29sdW1uLmlzLWxlZnQge1xuICAgICAgICBib3JkZXItcmlnaHQ6IDA7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYmRiZGJkO1xuICAgICAgICBwYWRkaW5nOiAwIDAgNjBweCAwOyB9IH1cblxuLmNvbnRlbnQtY29sdW1uc19fZWRpdG9yIHVsIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbWFyZ2luLWJvdHRvbTogMTVweDsgfVxuICAuY29udGVudC1jb2x1bW5zX19lZGl0b3IgdWwgbGkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtYXJnaW4tYm90dG9tOiAyNXB4O1xuICAgIHBhZGRpbmctbGVmdDogNDBweDsgfVxuICAgIC5jb250ZW50LWNvbHVtbnNfX2VkaXRvciB1bCBsaSBzdmcge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogMDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB3aWR0aDogMjVweDtcbiAgICAgIGhlaWdodDogMjVweDtcbiAgICAgIHBhZGRpbmc6IDRweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzMyMjNkO1xuICAgICAgY29sb3I6IHdoaXRlOyB9XG5cbi5jb250ZW50LWNvbHVtbnNfX3RpdGxlIHtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDsgfVxuXG4uY29udGVudC1jb2x1bW5zX19idXR0b24ge1xuICBoZWlnaHQ6IDUwcHg7XG4gIG1hcmdpbi10b3A6IDQwcHg7XG4gIHBhZGRpbmctbGVmdDogMjBweDtcbiAgcGFkZGluZy1yaWdodDogMjBweDsgfVxuICAuY29udGVudC1jb2x1bW5zX19idXR0b24gc3ZnIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiAxcHg7XG4gICAgd2lkdGg6IDhweDtcbiAgICBoZWlnaHQ6IDE3cHg7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgQ29udGVudCBpbnRyb2R1Y3Rpb25cclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gKiBNYWluLlxyXG4gKi9cbi5jb250ZW50LWludHJvZHVjdGlvbiB7XG4gIG1hcmdpbjogMjBweCAwIDYwcHg7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgICAuY29udGVudC1pbnRyb2R1Y3Rpb24ge1xuICAgICAgbWFyZ2luOiAwIDAgMjBweDsgfSB9XG5cbi8qKlxyXG4gKiBJbnRyby5cclxuICovXG4uY29udGVudC1pbnRyb2R1Y3Rpb25fX2ludHJvIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogODk5cHgpIHtcbiAgICAuY29udGVudC1pbnRyb2R1Y3Rpb25fX2ludHJvIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogMjVweDsgfSB9XG4gIC5jb250ZW50LWludHJvZHVjdGlvbl9faW50cm86OmFmdGVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDQwcHgpO1xuICAgIGhlaWdodDogMXB4O1xuICAgIG1hcmdpbi1sZWZ0OiAtMjBweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDE5NSwgMzQsIDYxLCAwLjYpO1xuICAgIGNvbnRlbnQ6ICcnOyB9XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5MDBweCkge1xuICAgICAgLmNvbnRlbnQtaW50cm9kdWN0aW9uX19pbnRybzo6YWZ0ZXIge1xuICAgICAgICBkaXNwbGF5OiBub25lOyB9IH1cblxuLyoqXHJcbiAqIEJ1dHRvbi5cclxuICovXG4uY29udGVudC1pbnRyb2R1Y3Rpb25fX2J1dHRvbiB7XG4gIG1hcmdpbi10b3A6IDIwcHg7IH1cblxuLyoqXHJcbiAqIFNlcnZpY2VzLlxyXG4gKi9cbi5jb250ZW50LWludHJvZHVjdGlvbl9fc2VydmljZXMge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAgIC5jb250ZW50LWludHJvZHVjdGlvbl9fc2VydmljZXMge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAyNXB4OyB9IH1cbiAgLmNvbnRlbnQtaW50cm9kdWN0aW9uX19zZXJ2aWNlcyB1bCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgbWFyZ2luOiAtNXB4IDA7XG4gICAgbGlzdC1zdHlsZTogbm9uZTsgfVxuICAuY29udGVudC1pbnRyb2R1Y3Rpb25fX3NlcnZpY2VzIGxpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgd2lkdGg6IDUwJTtcbiAgICBtYXJnaW46IDVweCAwOyB9XG4gICAgLmNvbnRlbnQtaW50cm9kdWN0aW9uX19zZXJ2aWNlcyBsaSBzdmcge1xuICAgICAgd2lkdGg6IDE0cHg7XG4gICAgICBoZWlnaHQ6IDE0cHg7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICBjb2xvcjogI2MzMjIzZDsgfVxuICAuY29udGVudC1pbnRyb2R1Y3Rpb25fX3NlcnZpY2VzOjphZnRlciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgKyA0MHB4KTtcbiAgICBoZWlnaHQ6IDFweDtcbiAgICBtYXJnaW4tbGVmdDogLTIwcHg7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxOTUsIDM0LCA2MSwgMC42KTtcbiAgICBjb250ZW50OiAnJzsgfVxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogOTAwcHgpIHtcbiAgICAgIC5jb250ZW50LWludHJvZHVjdGlvbl9fc2VydmljZXM6OmFmdGVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTsgfSB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIEZvb3Rlci5cclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gKiBVcHBlciBwYXJ0IG9mIGZvb3Rlci5cclxuICovXG4uZm9vdGVyLXVwcGVyIHtcbiAgcGFkZGluZzogNDBweCAwIDYwcHg7XG4gIGJhY2tncm91bmQ6IHJnYmEoMTk1LCAzNCwgNjEsIDAuMjUpOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgLmZvb3Rlci11cHBlciB7XG4gICAgICBwYWRkaW5nOiAyMHB4IDA7IH0gfVxuXG4vKipcclxuICogRm9vdGVyIGNvbHVtbi5cclxuICovXG4uZm9vdGVyLWNvbHVtbi5maXJzdC1jb2x1bW4gdWwge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7IH1cblxuLmZvb3Rlci1jb2x1bW4uZmlyc3QtY29sdW1uIGxpIHtcbiAgd2lkdGg6IDUwJTsgfVxuXG4vKipcclxuICogRm9vdGVyIGNvbHVtbiB0aXRsZS4uXHJcbiAqL1xuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAuZm9vdGVyLWNvbHVtbl9fdGl0bGUge1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgY3Vyc29yOiBwb2ludGVyOyB9IH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5MDBweCkge1xuICAuZm9vdGVyLWNvbHVtbl9fdGl0bGUge1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7IH0gfVxuXG4uZm9vdGVyLWNvbHVtbl9fdGl0bGUgc3ZnIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMjBweDtcbiAgd2lkdGg6IDE2cHg7XG4gIGhlaWdodDogMTZweDtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDI1MG1zIGVhc2U7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5MDBweCkge1xuICAgIC5mb290ZXItY29sdW1uX190aXRsZSBzdmcge1xuICAgICAgZGlzcGxheTogbm9uZTsgfSB9XG4gIC5mb290ZXItY29sdW1uX190aXRsZSBzdmcuaXMtYWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOyB9XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogODk5cHgpIHtcbiAgLmZvb3Rlci1jb2x1bW5fX3RpdGxlLmlzLWFjdGl2ZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDsgfSB9XG5cbi8qKlxyXG4gKiBGb290ZXIgY29sdW1uIGVkaXRvci5cclxuICovXG4uZm9vdGVyLWNvbHVtbl9fZWRpdG9yIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtYXgtaGVpZ2h0OiA1MDBweDtcbiAgdHJhbnNpdGlvbjogYWxsIDM1MG1zIGVhc2U7XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAgIC5mb290ZXItY29sdW1uX19lZGl0b3Ige1xuICAgICAgbWF4LWhlaWdodDogMDtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAwOyB9IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAgIC5mb290ZXItY29sdW1uX19lZGl0b3IuaXMtYWN0aXZlIHtcbiAgICAgIG1heC1oZWlnaHQ6IDUwMHB4O1xuICAgICAgcGFkZGluZy1ib3R0b206IDMwcHg7IH0gfVxuICAuZm9vdGVyLWNvbHVtbl9fZWRpdG9yIGEge1xuICAgIGNvbG9yOiBibGFjaztcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cblxuLyoqXHJcbiAqIEZvb3RlciBsb3dlci5cclxuICovXG4uZm9vdGVyLWxvd2VyIHtcbiAgcGFkZGluZzogMjBweCAwO1xuICBiYWNrZ3JvdW5kOiAjYzMyMjNkO1xuICBjb2xvcjogd2hpdGU7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAgIC5mb290ZXItbG93ZXIge1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyOyB9IH1cbiAgLmZvb3Rlci1sb3dlciAud3JhcHBlciB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB9XG5cbi8qKlxyXG4gKiBGb290ZXIgbGlua3MuXHJcbiAqL1xuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAuZm9vdGVyLWxvd2VyX19saW5rcyB7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDsgfSB9XG5cbi8qKlxyXG4gKiBGb290ZXIgbGluay5cclxuICovXG4uZm9vdGVyLWxvd2VyX19saW5rIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxuICAuZm9vdGVyLWxvd2VyX19saW5rIGEge1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBmb250LXNpemU6IDEuM3JlbTtcbiAgICBsaW5lLWhlaWdodDogMS40NjE1NGVtO1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiA4cHg7IH1cbiAgICAuZm9vdGVyLWxvd2VyX19saW5rIGE6OmFmdGVyIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA0cHg7XG4gICAgICByaWdodDogMDtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIHdpZHRoOiAxcHg7XG4gICAgICBoZWlnaHQ6IDE1cHg7XG4gICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgIGNvbnRlbnQ6ICcnOyB9XG4gICAgLmZvb3Rlci1sb3dlcl9fbGluayBhOmhvdmVyIHtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9XG4gIC5mb290ZXItbG93ZXJfX2xpbms6bnRoLWxhc3QtY2hpbGQoMSkgYTo6YWZ0ZXIge1xuICAgIGRpc3BsYXk6IG5vbmU7IH1cblxuLyoqXHJcbiAqIEF1dGhvci5cclxuICovXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDg5OXB4KSB7XG4gIC5mb290ZXJfX2F1dGhvciB7XG4gICAgd2lkdGg6IDEwMCU7IH0gfVxuXG4uZm9vdGVyX19hdXRob3Igc3BhbiB7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgZm9udC1zaXplOiAxLjNyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjQ2MTU0ZW07IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAgIC5mb290ZXJfX2F1dGhvciBzcGFuIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgd2lkdGg6IDEwMCU7IH0gfVxuXG4uZm9vdGVyX19hdXRob3IgYSB7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgZm9udC1zaXplOiAxLjNyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjQ2MTU0ZW07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgcGFkZGluZy1sZWZ0OiA4cHg7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAgIC5mb290ZXJfX2F1dGhvciBhIHtcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIHBhZGRpbmc6IDA7IH0gfVxuICAuZm9vdGVyX19hdXRob3IgYTo6YWZ0ZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDJweDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMXB4O1xuICAgIGhlaWdodDogMTVweDtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBjb250ZW50OiAnJzsgfVxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogODk5cHgpIHtcbiAgICAgIC5mb290ZXJfX2F1dGhvciBhOjphZnRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuICAuZm9vdGVyX19hdXRob3IgYTpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH1cblxuLyoqXHJcbiAqIFVTUCdzLlxyXG4gKi9cbi5mb290ZXJfX3VzcHMge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMzAlO1xuICByaWdodDogMDtcbiAgd2lkdGg6IDM1cHg7XG4gIGhlaWdodDogYXV0bztcbiAgei1pbmRleDogOTsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDkwMHB4KSB7XG4gICAgLmZvb3Rlcl9fdXNwcyB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9IH1cblxuLyoqXHJcbiAqIFNpbmdsZSBVU1AuXHJcbiAqL1xuLmZvb3Rlci11c3Age1xuICB3aWR0aDogMTAwJTsgfVxuICAuZm9vdGVyLXVzcCBhIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDM1cHg7XG4gICAgaGVpZ2h0OiAzNXB4O1xuICAgIG1hcmdpbjogNXB4IDA7XG4gICAgYmFja2dyb3VuZDogI2MzMjIzZDtcbiAgICBjb2xvcjogd2hpdGU7IH1cbiAgLmZvb3Rlci11c3Agc3ZnIHtcbiAgICB3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDIwcHg7XG4gICAgY29sb3I6IHdoaXRlOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogODk5cHgpIHtcbiAgICAuZm9vdGVyLXVzcCBzcGFuIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBHYWxsZXJ5XHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcclxuICogTWFpbi5cclxuICovXG4uZ2FsbGVyeSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuXG4vKipcclxuICogSW1hZ2VzLlxyXG4gKi9cbi5nYWxsZXJ5X19pbWFnZXMge1xuICBtYXJnaW46IDI1cHggLTVweDsgfVxuXG4vKipcclxuICogU2luZ2xlIGltYWdlLlxyXG4gKi9cbi5nYWxsZXJ5X19pbWFnZSB7XG4gIHdpZHRoOiBjYWxjKDEwMCUgLyA0IC0gNXB4KTtcbiAgbWFyZ2luOiAyLjVweDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAyNTBtcyBlYXNlOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogODk5cHgpIHtcbiAgICAuZ2FsbGVyeV9faW1hZ2Uge1xuICAgICAgd2lkdGg6IGNhbGMoMTAwJSAvIDIgLSA1cHgpOyB9IH1cbiAgLmdhbGxlcnlfX2ltYWdlIGltZyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAyMTBweDsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAgIC5nYWxsZXJ5X19pbWFnZTpob3ZlciB7XG4gICAgICBvcGFjaXR5OiAwLjc1OyB9IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgSGVhZGVyXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcclxuICogTWFpbi5cclxuICovXG4uaGVhZGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgei1pbmRleDogMTAwOyB9XG4gIC5oZWFkZXIgLndyYXBwZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuXG4uZmlsbGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNTAwcHg7XG4gIHBhZGRpbmc6IDIwcHggMDsgfVxuXG4vKipcclxuICogVVNQJ3MuXHJcbiAqL1xuLmhlYWRlcl9fdXNwcyB7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIHdpZHRoOiBjYWxjKDEwMCUgLyAzICogMik7XG4gIGhlaWdodDogYXV0bzsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAgIC5oZWFkZXJfX3VzcHMge1xuICAgICAgZGlzcGxheTogbm9uZTsgfSB9XG5cbi8qKlxyXG4gKiBTaW5nbGUgVVNQLlxyXG4gKi9cbi5oZWFkZXItdXNwIHtcbiAgbWFyZ2luOiAwIDcuNXB4OyB9XG4gIC5oZWFkZXItdXNwIHN2ZyB7XG4gICAgd2lkdGg6IDE4cHg7XG4gICAgaGVpZ2h0OiAxOHB4O1xuICAgIG1hcmdpbi1yaWdodDogMTBweDsgfVxuICAuaGVhZGVyLXVzcCBhIHtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMjUwbXMgZWFzZTsgfVxuICAgIC5oZWFkZXItdXNwIGE6aG92ZXIge1xuICAgICAgY29sb3I6ICNjMzIyM2Q7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfVxuICAuaGVhZGVyLXVzcDpudGgtY2hpbGQoMSkgc3ZnIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgTG9nb1xyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXHJcbiAqIExvZ28uXHJcbiAqL1xuLmxvZ28ge1xuICB3aWR0aDogY2FsYygxMDAlIC8gMyk7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgICAubG9nbyB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDE1MHB4KTsgfSB9XG4gIC5sb2dvIGltZyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWF4LXdpZHRoOiAyNTBweDtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgbWF4LWhlaWdodDogNThweDtcbiAgICBtYXJnaW46IDE1cHggMCAxNXB4OyB9XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAgICAgLmxvZ28gaW1nIHtcbiAgICAgICAgd2lkdGg6IDI1MHB4O1xuICAgICAgICBtYXJnaW46IDVweCAwIDA7IH0gfVxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogOTAwcHgpIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgICAgIC5sb2dvIGltZyB7XG4gICAgICAgIGhlaWdodDogNjBweDsgfSB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIE5hdmlnYXRpb25cclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gKiBOYXZpZ2F0aW9uIHdyYXBwZXIuXHJcbiAqL1xuLm5hdmlnYXRpb25fX3dyYXBwZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQ6ICNjMzIyM2Q7XG4gIGNvbG9yOiB3aGl0ZTsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAgIC5uYXZpZ2F0aW9uX193cmFwcGVyIHtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0gfVxuXG4ubmF2aWdhdGlvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAgIC5uYXZpZ2F0aW9uIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgfSB9XG5cbi8qKlxyXG4gKiBOYXZpZ2F0aW9uIG1lbnUuXHJcbiAqL1xuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgLm5hdmlnYXRpb24tbWVudSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgd2lkdGg6IDEwMHZ3O1xuICAgIGhlaWdodDogMTAwdmg7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSA1MDBtcztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzMyMjNkO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7IH1cbiAgICAubmF2aWdhdGlvbi1tZW51LmlzLWFjdGl2ZSB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgICAgcG9pbnRlci1ldmVudHM6IGFsbDsgfVxuICAgICAgLm5hdmlnYXRpb24tbWVudS5pcy1hY3RpdmUgLm1haW4tbWVudSA+IC5tZW51LWl0ZW0ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgNTAwbXMgNzAwbXMsIHRyYW5zZm9ybSA1MDBtcyA3MDBtcztcbiAgICAgICAgb3BhY2l0eTogMTsgfVxuICAgICAgICAubmF2aWdhdGlvbi1tZW51LmlzLWFjdGl2ZSAubWFpbi1tZW51ID4gLm1lbnUtaXRlbTpudGgtY2hpbGQoMikge1xuICAgICAgICAgIHRyYW5zaXRpb24tZGVsYXk6IDkwMG1zOyB9XG4gICAgICAgIC5uYXZpZ2F0aW9uLW1lbnUuaXMtYWN0aXZlIC5tYWluLW1lbnUgPiAubWVudS1pdGVtOm50aC1jaGlsZCgzKSB7XG4gICAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMTEwMG1zOyB9XG4gICAgICAgIC5uYXZpZ2F0aW9uLW1lbnUuaXMtYWN0aXZlIC5tYWluLW1lbnUgPiAubWVudS1pdGVtOm50aC1jaGlsZCg0KSB7XG4gICAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMTMwMG1zOyB9XG4gICAgICAgIC5uYXZpZ2F0aW9uLW1lbnUuaXMtYWN0aXZlIC5tYWluLW1lbnUgPiAubWVudS1pdGVtOm50aC1jaGlsZCg1KSB7XG4gICAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMTUwMG1zOyB9XG4gICAgICAgIC5uYXZpZ2F0aW9uLW1lbnUuaXMtYWN0aXZlIC5tYWluLW1lbnUgPiAubWVudS1pdGVtOm50aC1jaGlsZCg2KSB7XG4gICAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMTcwMG1zOyB9XG4gICAgICAgIC5uYXZpZ2F0aW9uLW1lbnUuaXMtYWN0aXZlIC5tYWluLW1lbnUgPiAubWVudS1pdGVtOm50aC1jaGlsZCg3KSB7XG4gICAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMTkwMG1zOyB9XG4gICAgICAgIC5uYXZpZ2F0aW9uLW1lbnUuaXMtYWN0aXZlIC5tYWluLW1lbnUgPiAubWVudS1pdGVtOm50aC1jaGlsZCg4KSB7XG4gICAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMjEwMG1zOyB9XG4gICAgICAgIC5uYXZpZ2F0aW9uLW1lbnUuaXMtYWN0aXZlIC5tYWluLW1lbnUgPiAubWVudS1pdGVtOm50aC1jaGlsZCg5KSB7XG4gICAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMjMwMG1zOyB9XG4gICAgICAgIC5uYXZpZ2F0aW9uLW1lbnUuaXMtYWN0aXZlIC5tYWluLW1lbnUgPiAubWVudS1pdGVtOm50aC1jaGlsZCgxMCkge1xuICAgICAgICAgIHRyYW5zaXRpb24tZGVsYXk6IDI1MDBtczsgfSB9XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gIC5uYXZpZ2F0aW9uLW1lbnVfX3dyYXBwZXIge1xuICAgIHdpZHRoOiAxMDAlOyB9IH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgLm5hdmlnYXRpb25fX3NlYXJjaCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMjUwbXMgZWFzZTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lOyB9IH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgLm5hdmlnYXRpb25fX3NlYXJjaC5pcy1hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgcG9pbnRlci1ldmVudHM6IGFsbDsgfSB9XG5cbi8qKlxyXG4gKiBOYXZpZ2F0aW9uIGJ1dHRvbi5cclxuICovXG4ubmF2aWdhdGlvbi1idXR0b24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIHdpZHRoOiA4NXB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQ6ICNjMzIyM2Q7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgICAubmF2aWdhdGlvbi1idXR0b24ge1xuICAgICAgZGlzcGxheTogbm9uZTsgfSB9XG4gIC5uYXZpZ2F0aW9uLWJ1dHRvbiBzcGFuIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDMwcHg7XG4gICAgaGVpZ2h0OiA0cHg7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyB9XG4gICAgLm5hdmlnYXRpb24tYnV0dG9uIHNwYW46bnRoLWNoaWxkKDEpIHtcbiAgICAgIHRvcDogMjdweDtcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgNDAwbXMsIHRvcCA0MDBtcyA0MDBtcywgdHJhbnNmb3JtIDQwMG1zIDBzOyB9XG4gICAgLm5hdmlnYXRpb24tYnV0dG9uIHNwYW46bnRoLWNoaWxkKDIpIHtcbiAgICAgIHRvcDogY2FsYyg1MCUgLSAycHgpO1xuICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciA0MDBtcywgb3BhY2l0eSAwbXMgNDAwbXM7XG4gICAgICBvcGFjaXR5OiAxOyB9XG4gICAgLm5hdmlnYXRpb24tYnV0dG9uIHNwYW46bnRoLWNoaWxkKDMpIHtcbiAgICAgIGJvdHRvbTogMjdweDtcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgNDAwbXMsIGJvdHRvbSA0MDBtcyA0MDBtcywgdHJhbnNmb3JtIDQwMG1zIDBzOyB9XG4gIC5uYXZpZ2F0aW9uLWJ1dHRvbi5pcy1hY3RpdmUgc3BhbjpudGgtY2hpbGQoMSkge1xuICAgIHRvcDogY2FsYyg1MCUgLSAycHgpO1xuICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciA0MDBtcywgdG9wIDQwMG1zLCB0cmFuc2Zvcm0gNDAwbXMgNDAwbXM7IH1cbiAgLm5hdmlnYXRpb24tYnV0dG9uLmlzLWFjdGl2ZSBzcGFuOm50aC1jaGlsZCgyKSB7XG4gICAgb3BhY2l0eTogMDsgfVxuICAubmF2aWdhdGlvbi1idXR0b24uaXMtYWN0aXZlIHNwYW46bnRoLWNoaWxkKDMpIHtcbiAgICBib3R0b206IGNhbGMoNTAlIC0gMnB4KTtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciA0MDBtcywgYm90dG9tIDQwMG1zLCB0cmFuc2Zvcm0gNDAwbXMgNDAwbXM7IH1cblxuLyoqXHJcbiAqIFdvcmRQcmVzcyBtYWluIG1lbnUuXHJcbiAqL1xuLyoqXHJcbiAqIE1haW4gbWVudS5cclxuICovXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAubWFpbi1tZW51IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDsgfSB9XG5cbi8qKlxyXG4gKiBNYWluIG1lbnUgaXRlbS5cclxuICovXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAubWFpbi1tZW51ID4gLm1lbnUtaXRlbSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTBweCk7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMG1zO1xuICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiAwbXM7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG9wYWNpdHk6IDA7IH0gfVxuXG4vKipcclxuICogTWFpbiBtZW51IGxpbmsuXHJcbiAqL1xuLm1haW4tbWVudSA+IC5tZW51LWl0ZW0gPiBhIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXNpemU6IDEuNHJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNDI4NTdlbTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAgIC5tYWluLW1lbnUgPiAubWVudS1pdGVtID4gYSB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIHBhZGRpbmc6IDE1cHggMjBweDtcbiAgICAgIHRyYW5zaXRpb246IGFsbCAyNTBtcyBlYXNlO1xuICAgICAgY29sb3I6IHdoaXRlOyB9IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgICAubWFpbi1tZW51ID4gLm1lbnUtaXRlbSA+IGEge1xuICAgICAgZm9udC1zaXplOiAyNXB4O1xuICAgICAgZm9udC1zaXplOiAyLjVyZW07XG4gICAgICBsaW5lLWhlaWdodDogMS42ZW07XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgIGNvbG9yOiB3aGl0ZTsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gICAgLm1haW4tbWVudSA+IC5tZW51LWl0ZW0gPiBhOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICNkMDU4NmM7IH0gfVxuXG4vKipcclxuICogTWFpbiBtZW51IGl0ZW0gaGFzIGNoaWxkcmVuLlxyXG4gKi9cbi5tYWluLW1lbnUgPiAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAgIC5tYWluLW1lbnUgPiAubWVudS1pdGVtLWhhcy1jaGlsZHJlbjpob3ZlciAuc3VibWVudS1jb250YWluZXIge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgICAgb3BhY2l0eTogMTtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7IH0gfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAgIC5tYWluLW1lbnUgPiAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiBhIHtcbiAgICAgIHBhZGRpbmc6IDEwcHggMTVweCAxMHB4IDEwcHg7IH0gfVxuXG4vKipcclxuICogQ3VycmVudCBtZW51IGl0ZW0uXHJcbiAqL1xuLmN1cnJlbnQtbWVudS1pdGVtLFxuLmN1cnJlbnQtcGFnZS1hbmNlc3RvciB7XG4gIGJhY2tncm91bmQ6ICNkMDU4NmM7IH1cblxuLyoqXHJcbiAqIExvZ2luIGJ1dHRvbi5cclxuICovXG4ubmF2aWdhdGlvbl9fbG9naW4ge1xuICBmb250LXNpemU6IDEycHg7XG4gIGZvbnQtc2l6ZTogMS4ycmVtO1xuICBsaW5lLWhlaWdodDogMmVtO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogLTUwcHg7XG4gIHJpZ2h0OiAwO1xuICBjb2xvcjogI2MzMjIzZDsgfVxuICAubmF2aWdhdGlvbl9fbG9naW46OmJlZm9yZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBmb250LWZhbWlseTogXCJGb250IEF3ZXNvbWUgNSBMaWdodFwiO1xuICAgIGNvbnRlbnQ6ICdcXGYwMjMnOyB9XG4gIC5uYXZpZ2F0aW9uX19sb2dpbiA+IHN2ZyB7XG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7IH1cblxuLm5hdmlnYXRpb25fX2xvZ2luLS1sb2dvdXQ6OmJlZm9yZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGZvbnQtZmFtaWx5OiBcIkZvbnQgQXdlc29tZSA1IExpZ2h0XCI7XG4gIGNvbnRlbnQ6ICdcXGYwOWMnOyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIFBhZ2UgZGVmYXVsdCBzZXR0aW5ncy5cclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gKiBNYWluLlxyXG4gKi9cbi5jb250ZW50IHtcbiAgcGFkZGluZzogNzVweCAwOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgLmNvbnRlbnQge1xuICAgICAgcGFkZGluZzogMjBweCAwOyB9IH1cblxuLyoqXHJcbiAqIENvbnRlbnQgcm93LlxyXG4gKi9cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gIC5jb250ZW50X19yb3cge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTsgfSB9XG5cbi8qKlxyXG4gKiBDb250ZW50IHNpZGViYXIuXHJcbiAqL1xuLmNvbnRlbnRfX3NpZGViYXItY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMzUwcHg7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgICAuY29udGVudF9fc2lkZWJhci1jb250YWluZXIge1xuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgbWFyZ2luLXRvcDogMTBweDsgfSB9XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gIC5zaWRlLWNvbnRhY3Qge1xuICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuXG4vKipcclxuICogSW5mb3JtYXRpb24uXHJcbiAqL1xuLmNvbnRhY3QtaW5mb3JtYXRpb24gbGkge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB3aWR0aDogNTAlOyB9XG5cbi5jb250YWN0LWluZm9ybWF0aW9uIHN2ZyB7XG4gIHdpZHRoOiAxNHB4O1xuICBoZWlnaHQ6IDE0cHg7XG4gIG1hcmdpbi1yaWdodDogNXB4O1xuICBjb2xvcjogYmxhY2s7IH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLmNvbnRhY3QtaW5mb3JtYXRpb24gYTpob3ZlciB7XG4gICAgY29sb3I6ICNjMzIyM2Q7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH0gfVxuXG4vKipcclxuICogQWRkaXRpb25hbCBydWxlcyBmb3IgY2VydGFpbiBlbGVtZW50cy5cclxuICovXG4uY29udGVudF9fc2lkZWJhciAucHJvamVjdC1saXN0IHtcbiAgbWFyZ2luLXRvcDogMzBweDsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAgIC5jb250ZW50X19zaWRlYmFyIC5wcm9qZWN0LWxpc3Qge1xuICAgICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50O1xuICAgICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgLmNvbnRlbnRfX3NpZGViYXIgLnByb2plY3QtbGlzdDo6YWZ0ZXIge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9IH1cblxuLmNvbnRlbnRfX21haW4gLnByb2R1Y3QtY2F0ZWdvcnktbGlzdCB7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDsgfVxuICAuY29udGVudF9fbWFpbiAucHJvZHVjdC1jYXRlZ29yeS1saXN0IC53cmFwcGVyIHtcbiAgICBwYWRkaW5nOiAwOyB9XG5cbi5jb250ZW50X19tYWluIC5wcm9kdWN0LWxpc3RfX2xvb3Age1xuICBtYXJnaW46IDVweCAtNXB4IDA7IH1cblxuLmNvbnRlbnRfX21haW4gLnByb2R1Y3QtbGlzdC1pdGVtIHtcbiAgd2lkdGg6IGNhbGMoNTAlIC0gMTBweCk7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OTlweCkge1xuICAgIC5jb250ZW50X19tYWluIC5wcm9kdWN0LWxpc3QtaXRlbSB7XG4gICAgICB3aWR0aDogMTAwJTsgfSB9XG5cbi5jb250ZW50X19tYWluIC5wcm9qZWN0LWxpc3Qge1xuICBtYXJnaW4tdG9wOiAyMHB4OyB9XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5jb250ZW50X19tYWluIC5wcm9qZWN0LWl0ZW0ge1xuICAgIHdpZHRoOiBjYWxjKDUwJSAtIDEwcHgpOyB9IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgUGFnZSBzdWJtZW51XHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcclxuICogTWFpbi5cclxuICovXG4ucGFnZS1zdWJtZW51IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tYm90dG9tOiA0MHB4OyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogODk5cHgpIHtcbiAgICAucGFnZS1zdWJtZW51IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuXG4vKipcclxuICogU3VibWVudSBpdGVtLlxyXG4gKi9cbi5wYWdlLXN1Ym1lbnVfX2l0ZW0ge1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtc2l6ZTogMS40cmVtO1xuICBsaW5lLWhlaWdodDogMS40Mjg1N2VtO1xuICB3aWR0aDogMTAwJTsgfVxuICAucGFnZS1zdWJtZW51X19pdGVtIGEge1xuICAgIHBhZGRpbmc6IDIwcHggMTdweCAyMHB4IDIwcHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxOTUsIDM0LCA2MSwgMC4yNSk7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxOTUsIDM0LCA2MSwgMC4yNSk7IH1cbiAgLnBhZ2Utc3VibWVudV9faXRlbSBzdmcge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICByaWdodDogLTIwcHg7XG4gICAgd2lkdGg6IDE4cHg7XG4gICAgaGVpZ2h0OiAxOHB4O1xuICAgIHRyYW5zaXRpb246IGFsbCAyNTBtcyBlYXNlO1xuICAgIGNvbG9yOiAjYzMyMjNkO1xuICAgIG9wYWNpdHk6IDA7IH1cbiAgLnBhZ2Utc3VibWVudV9faXRlbTpob3ZlciBzdmcge1xuICAgIHJpZ2h0OiAwO1xuICAgIG9wYWNpdHk6IDE7IH1cbiAgLnBhZ2Utc3VibWVudV9faXRlbS5hY3RpdmUgc3ZnIHtcbiAgICByaWdodDogMDtcbiAgICBvcGFjaXR5OiAxOyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIFByb2plY3QgaXRlbVxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXHJcbiAqIE1haW4uXHJcbiAqL1xuLnByb2R1Y3QtY2F0ZWdvcnktbGlzdCB7XG4gIHBhZGRpbmc6IDU1cHggMDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMTk1LCAzNCwgNjEsIDAuNyk7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgICAucHJvZHVjdC1jYXRlZ29yeS1saXN0IHtcbiAgICAgIHBhZGRpbmc6IDIwcHggMDsgfSB9XG5cbi5wcm9kdWN0LWNhdGVnb3J5LW1lbnUge1xuICBtYXJnaW4tYm90dG9tOiA0MHB4OyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgLnByb2R1Y3QtY2F0ZWdvcnktbWVudSB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9IH1cblxuLnByb2R1Y3QtbGlzdC1pdGVtIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogY2FsYygxMDAlIC8gMyAtIDEwcHgpO1xuICBtYXJnaW46IDVweDtcbiAgdHJhbnNpdGlvbjogYWxsIDI1MG1zIGVhc2U7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTk1LCAzNCwgNjEsIDAuNyk7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OTlweCkge1xuICAgIC5wcm9kdWN0LWxpc3QtaXRlbSB7XG4gICAgICB3aWR0aDogMTAwJTsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgICAucHJvZHVjdC1saXN0LWl0ZW0ge1xuICAgICAgd2lkdGg6IGNhbGMoMTAwJSAvIDIgLSAxMHB4KTsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gICAgLnByb2R1Y3QtbGlzdC1pdGVtOmhvdmVyIHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNjMzIyM2Q7IH1cbiAgICAgIC5wcm9kdWN0LWxpc3QtaXRlbTpob3ZlciAucHJvZHVjdC1saXN0LWl0ZW1fX2ltYWdlIHtcbiAgICAgICAgb3BhY2l0eTogMC43NTsgfSB9XG5cbi8qKlxyXG4gKiBMb29wLlxyXG4gKi9cbi5wcm9kdWN0LWxpc3RfX2xvb3Age1xuICBtYXJnaW46IDAgLTVweDsgfVxuXG4vKipcclxuICogSW1hZ2VcclxuICovXG4ucHJvZHVjdC1saXN0LWl0ZW1fX2ltYWdlIHtcbiAgd2lkdGg6IDE0MHB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIHRyYW5zaXRpb246IGFsbCAyNTBtcyBlYXNlOyB9XG4gIC5wcm9kdWN0LWxpc3QtaXRlbV9faW1hZ2UgaW1nIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7IH1cblxuLyoqXHJcbiAqIEJvZHkuXHJcbiAqL1xuLnByb2R1Y3QtbGlzdC1pdGVtX19ib2R5IHtcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDE0MHB4KTtcbiAgcGFkZGluZzogMjBweCAzMHB4O1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTsgfVxuXG4vKipcclxuICogTGluay5cclxuICovXG4ucHJvZHVjdC1saXN0LWl0ZW1fX2xpbmsge1xuICBmb250LXNpemU6IDEzcHg7XG4gIGZvbnQtc2l6ZTogMS4zcmVtO1xuICBsaW5lLWhlaWdodDogMS41Mzg0NmVtO1xuICBmb250LXdlaWdodDogNjAwOyB9XG4gIC5wcm9kdWN0LWxpc3QtaXRlbV9fbGluayBzdmcge1xuICAgIHdpZHRoOiAxM3B4O1xuICAgIGhlaWdodDogMTNweDtcbiAgICBjb2xvcjogI2MzMjIzZDsgfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBQcm9qZWN0IGxvb3BcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gKiBNYWluLlxyXG4gKi9cbi5jb250ZW50X19tYWluIC5wcm9qZWN0LWxpc3RfX2xvb3Age1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIG1hcmdpbjogMCAtNXB4OyB9XG4gIC5jb250ZW50X19tYWluIC5wcm9qZWN0LWxpc3RfX2xvb3AgLnByb2plY3QtaXRlbSB7XG4gICAgbWFyZ2luOiA1cHg7IH1cbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAgICAgLmNvbnRlbnRfX21haW4gLnByb2plY3QtbGlzdF9fbG9vcCAucHJvamVjdC1pdGVtIHtcbiAgICAgICAgd2lkdGg6IGNhbGMoNTAlIC0gMTBweCk7IH0gfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBQcm9qZWN0IGl0ZW1cclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gKiBNYWluLlxyXG4gKi9cbi5wcm9qZWN0LWl0ZW0ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICB0cmFuc2l0aW9uOiBhbGwgMjUwbXMgZWFzZTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxOTUsIDM0LCA2MSwgMC43KTtcbiAgYmFja2dyb3VuZDogd2hpdGU7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkgYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAgIC5wcm9qZWN0LWl0ZW0ge1xuICAgICAgd2lkdGg6IGNhbGMoNTAlIC0gMTBweCk7IH0gfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAgIC5wcm9qZWN0LWl0ZW06aG92ZXIge1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2MzMjIzZDsgfVxuICAgICAgLnByb2plY3QtaXRlbTpob3ZlciAucHJvamVjdC1pdGVtX19pbWFnZSB7XG4gICAgICAgIG9wYWNpdHk6IDAuNzU7IH0gfVxuXG4vKipcclxuICogSW1hZ2UuXHJcbiAqL1xuLnByb2plY3QtaXRlbV9faW1hZ2Uge1xuICB3aWR0aDogMTMwcHg7XG4gIGhlaWdodDogMTAwJTtcbiAgbWluLWhlaWdodDogMTIwcHg7XG4gIHRyYW5zaXRpb246IGFsbCAyNTBtcyBlYXNlOyB9XG4gIC5wcm9qZWN0LWl0ZW1fX2ltYWdlIGltZyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlOyB9XG5cbi8qKlxyXG4gKiBCb2R5LlxyXG4gKi9cbi5wcm9qZWN0LWl0ZW1fX2JvZHkge1xuICBmb250LXNpemU6IDEzcHg7XG4gIGZvbnQtc2l6ZTogMS4zcmVtO1xuICBsaW5lLWhlaWdodDogMS41Mzg0NmVtO1xuICB3aWR0aDogY2FsYygxMDAlIC0gMTMwcHgpO1xuICBoZWlnaHQ6IGF1dG87XG4gIHBhZGRpbmc6IDE1cHggMjBweDsgfVxuXG4vKipcclxuICogVGl0bGUuXHJcbiAqL1xuLnByb2plY3QtaXRlbV9fdGl0bGUge1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgfVxuXG4vKipcclxuICogTGluay5cclxuICovXG4ucHJvamVjdC1pdGVtX19saW5rIHtcbiAgbWFyZ2luLXRvcDogNXB4OyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIFByb2plY3QgbGF0ZXN0XHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcclxuICogTGlzdC5cclxuICovXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDkwMHB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gIC5wcm9qZWN0LWxpc3QuaXMtbGF0ZXN0IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWFyZ2luLXRvcDogMzBweDtcbiAgICBwYWRkaW5nLXRvcDogMjBweDsgfSB9XG5cbi5wcm9qZWN0LWxpc3QuaXMtbGF0ZXN0OjphZnRlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiBjYWxjKDEwMCUgKyA0MHB4KTtcbiAgaGVpZ2h0OiAxcHg7XG4gIGJhY2tncm91bmQ6IHJnYmEoMTk1LCAzNCwgNjEsIDAuNik7XG4gIGNvbnRlbnQ6ICcnOyB9XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTk5cHgpIHtcbiAgLnByb2plY3QtbGlzdCAucHJvamVjdC1pdGVtX19ib2R5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7IH0gfVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU5OXB4KSB7XG4gIC5wcm9qZWN0LWxpc3QgLnByb2plY3QtaXRlbV9fdGl0bGUge1xuICAgIHdpZHRoOiAxMDAlOyB9IH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OTlweCkge1xuICAucHJvamVjdC1saXN0IC5wcm9qZWN0LWl0ZW1fX3RlYXNlciB7XG4gICAgZGlzcGxheTogbm9uZTsgfSB9XG5cbi8qKlxyXG4gKiBIZWFkZXIuXHJcbiAqL1xuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgLnByb2plY3QtbGlzdF9faGVhZGVyLmlzLWxhdGVzdCB7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4OyB9IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgU2VhcmNoXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uc2VhcmNoIHtcbiAgZGlzcGxheTogZmxleDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDdweDtcbiAgcmlnaHQ6IDIwcHg7XG4gIGJvdHRvbTogMDtcbiAgZmxleC13cmFwOiB3cmFwOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgLnNlYXJjaCB7XG4gICAgICB0b3A6IDM1cHg7XG4gICAgICByaWdodDogaW5pdGlhbDtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgd2lkdGg6IDEwMCU7IH0gfVxuXG4vKipcclxuICogRm9ybS5cclxuICovXG4uc2VhcmNoLWZvcm0ge1xuICBoZWlnaHQ6IDMwcHg7XG4gIGN1cnNvcjogcG9pbnRlcjsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAgIC5zZWFyY2gtZm9ybSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1heC13aWR0aDogMjM1cHg7XG4gICAgICBoZWlnaHQ6IDQwcHg7IH0gfVxuXG4vKipcclxuICogQnV0dG9uLlxyXG4gKi9cbi5zZWFyY2hfX2J1dHRvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB3aWR0aDogMzRweDtcbiAgaGVpZ2h0OiAzNHB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgY3Vyc29yOiBwb2ludGVyOyB9XG5cbi8qKlxyXG4gKiBDb250YWluZXIuXHJcbiAqL1xuLnNlYXJjaF9fZm9ybS5pcy1hY3RpdmUgLnNlYXJjaF9faW5wdXQge1xuICB3aWR0aDogMjM1cHg7XG4gIGhlaWdodDogMzVweDtcbiAgdHJhbnNpdGlvbjogYWxsIDE1MG1zIGN1YmljLWJlemllcigwLjIsIDAuNiwgMC4yNTIsIDEuMiksIGJhY2tncm91bmQtY29sb3IgMG1zIDBtcztcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgY3Vyc29yOiBpbml0aWFsOyB9XG5cbi5zZWFyY2hfX2Zvcm0uaXMtYWN0aXZlIC5zZWFyY2hfX2lucHV0LWJhciB7XG4gIHRvcDogNXB4O1xuICByaWdodDogMDtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgb3BhY2l0eTogMDsgfVxuXG4vKipcclxuICogSW5wdXQuXHJcbiAqL1xuLnNlYXJjaF9faW5wdXQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxNXB4O1xuICBoZWlnaHQ6IDE1cHg7XG4gIHBhZGRpbmc6IDVweDtcbiAgdHJhbnNpdGlvbjogYWxsIDE1MG1zIGN1YmljLWJlemllcigwLjIsIDAuNiwgMC4yNTIsIDEuMiksIGJhY2tncm91bmQtY29sb3IgMTAwbXMgMTUwbXM7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHdoaXRlO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjMzIyM2Q7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgY3Vyc29yOiBwb2ludGVyOyB9XG4gIC5zZWFyY2hfX2lucHV0OjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHdoaXRlOyB9XG5cbi8qKlxyXG4gKiBCYXIuXHJcbiAqL1xuLnNlYXJjaF9faW5wdXQtYmFyIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAyMHB4O1xuICByaWdodDogLTNweDtcbiAgd2lkdGg6IDEycHg7XG4gIGhlaWdodDogMnB4O1xuICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMTUwbXMgZWFzZTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgb3BhY2l0eTogMTsgfVxuXG4vKipcclxuICogU3VibWl0IGJ1dHRvbi5cclxuICovXG4uc2VhcmNoX19zdWJtaXQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIHdpZHRoOiAzMHB4O1xuICBoZWlnaHQ6IDM1cHg7XG4gIGNvbG9yOiB3aGl0ZTsgfVxuICAuc2VhcmNoX19zdWJtaXQgc3ZnIHtcbiAgICB3aWR0aDogMTJweDtcbiAgICBoZWlnaHQ6IDEycHg7XG4gICAgY29sb3I6IHdoaXRlOyB9XG5cbi8qKlxyXG4gKiBTZWFyY2ggbG9vcC5cclxuICovXG4uc2VhcmNoLWl0ZW1fX2xvb3Age1xuICBtYXJnaW46IDAgLTVweDsgfVxuXG4vKipcclxuICogU2VhcmNoIGl0ZW0uXHJcbiAqL1xuLnNlYXJjaC1pdGVtIHtcbiAgd2lkdGg6IGNhbGMoMTAwJSAvIDMgLSAxMHB4KTtcbiAgbWFyZ2luOiA1cHg7XG4gIG1hcmdpbi1ib3R0b206IDIwcHg7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OTlweCkge1xuICAgIC5zZWFyY2gtaXRlbSB7XG4gICAgICB3aWR0aDogMTAwJTsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAgIC5zZWFyY2gtaXRlbSB7XG4gICAgICB3aWR0aDogY2FsYygxMDAlIC8gMiAtIDEwcHgpOyB9IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgU2xpZGVzaG93XHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcclxuICogTWFpbi5cclxuICovXG4uc2xpZGVzaG93IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW46IDIwcHggMDsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAgIC5zbGlkZXNob3cge1xuICAgICAgbWFyZ2luOiAyMHB4IDAgMDsgfSB9XG4gIC5zbGlkZXNob3cgLm93bC1uYXYge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogY2FsYyg1MCUgLSAzMHB4KTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgei1pbmRleDogMTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsgfVxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogODk5cHgpIHtcbiAgICAgIC5zbGlkZXNob3cgLm93bC1uYXYge1xuICAgICAgICB0b3A6IGNhbGMoNTAlIC0gMjVweCk7IH0gfVxuICAgIC5zbGlkZXNob3cgLm93bC1uYXYgYnV0dG9uIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB3aWR0aDogNTBweDtcbiAgICAgIGhlaWdodDogNTBweDtcbiAgICAgIGJhY2tncm91bmQ6ICNjMzIyM2QgIWltcG9ydGFudDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7IH1cbiAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogODk5cHgpIHtcbiAgICAgICAgLnNsaWRlc2hvdyAub3dsLW5hdiBidXR0b24ge1xuICAgICAgICAgIHdpZHRoOiAzMHB4O1xuICAgICAgICAgIGhlaWdodDogMzBweDsgfSB9XG4gICAgLnNsaWRlc2hvdyAub3dsLW5hdiBzdmcge1xuICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgICBjb2xvcjogd2hpdGU7IH1cbiAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogODk5cHgpIHtcbiAgICAgICAgLnNsaWRlc2hvdyAub3dsLW5hdiBzdmcge1xuICAgICAgICAgIHdpZHRoOiAxM3B4O1xuICAgICAgICAgIGhlaWdodDogMTNweDsgfSB9XG5cbi8qKlxyXG4gKiBTaW5nbGUgc2xpZGUuXHJcbiAqL1xuLnNsaWRlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA1MTBweDtcbiAgcGFkZGluZzogMjBweCAwOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTk5cHgpIHtcbiAgICAuc2xpZGUge1xuICAgICAgaGVpZ2h0OiAyNTBweDsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAgIC5zbGlkZSB7XG4gICAgICBoZWlnaHQ6IDMzNXB4OyB9IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5MDBweCkgYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAgIC5zbGlkZSB7XG4gICAgICBoZWlnaHQ6IDQyMHB4OyB9IH1cblxuLyoqXHJcbiAqIFNsaWRlIGJvZHkuXHJcbiAqL1xuLnNsaWRlX19ib2R5IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87XG4gIHBhZGRpbmc6IDAgMzBweDtcbiAgei1pbmRleDogMTA7IH1cblxuLyoqXHJcbiAqIFNsaWRlIHRpdGxlLlxyXG4gKi9cbi5zbGlkZV9fdGl0bGUge1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogMjVweDtcbiAgcGFkZGluZzogMCAyMHB4O1xuICBjb2xvcjogd2hpdGU7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7IH1cblxuLyoqXHJcbiAqIFNsaWRlIGltYWdlLlxyXG4gKi9cbi5zbGlkZV9faW1hZ2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTsgfVxuICAuc2xpZGVfX2ltYWdlOjphZnRlciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogI2MzMjIzZDtcbiAgICBjb250ZW50OiAnJztcbiAgICBvcGFjaXR5OiAwLjI7IH1cbiAgLnNsaWRlX19pbWFnZSBpbWcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTsgfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBTdWJtZW51XHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcclxuICogU3VibWVudSBidXR0b24uXHJcbiAqL1xuLnN1Ym1lbnUtYnV0dG9uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMDsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAgIC5zdWJtZW51LWJ1dHRvbiB7XG4gICAgICByaWdodDogLTMwcHg7XG4gICAgICBjb2xvcjogd2hpdGU7IH1cbiAgICAgIC5zdWJtZW51LWJ1dHRvbi5pcy1hY3RpdmUgPiBzdmcge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtMTgwZGVnKTsgfSB9XG4gIC5zdWJtZW51LWJ1dHRvbiBzdmcge1xuICAgIHdpZHRoOiAxNXB4O1xuICAgIGhlaWdodDogMTVweDtcbiAgICBjb2xvcjogd2hpdGU7IH1cbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAgICAgLnN1Ym1lbnUtYnV0dG9uIHN2ZyB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuXG4vKipcclxuICogU3VibWVudSBjb250YWluZXIuXHJcbiAqL1xuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLnN1Ym1lbnUtY29udGFpbmVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwcHgpO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgNDAwbXMgZWFzZS1vdXQsIHRyYW5zZm9ybSA0MDBtcyBlYXNlLW91dDtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lOyB9IH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgLnN1Ym1lbnUtY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBub25lOyB9IH1cblxuLyoqXHJcbiAqIFN1Ym1lbnUuXHJcbiAqL1xuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLnN1Ym1lbnUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBjb2xvcjogYmxhY2s7IH0gfVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAuc3VibWVudSB7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfSB9XG5cbi8qKlxyXG4gKiBTdWJtZW51IGl0ZW0uXHJcbiAqL1xuLnN1Ym1lbnUgPiAubWVudS1pdGVtIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuXG4vKipcclxuICogU3VibWVudSBpdGVtIGxpbmsuXHJcbiAqL1xuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAuc3VibWVudSA+IC5tZW51LWl0ZW0gPiBhIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOyB9IH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLnN1Ym1lbnUgPiAubWVudS1pdGVtID4gYSB7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGZvbnQtc2l6ZTogMS40cmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQyODU3ZW07XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAxNXB4IDIwcHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMTk1LCAzNCwgNjEsIDAuNyk7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7IH0gfVxuXG4uc3VibWVudSA+IC5tZW51LWl0ZW0gPiBhIHN2ZyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcmlnaHQ6IC0yMHB4O1xuICB3aWR0aDogMTFweDtcbiAgaGVpZ2h0OiAxMXB4O1xuICBtYXJnaW4tbGVmdDogMTBweDtcbiAgdHJhbnNpdGlvbjogYWxsIDI1MG1zIGVhc2U7XG4gIGNvbG9yOiAjYzMyMjNkO1xuICBvcGFjaXR5OiAwOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gICAgLnN1Ym1lbnUgPiAubWVudS1pdGVtID4gYSBzdmcge1xuICAgICAgZGlzcGxheTogbm9uZTsgfSB9XG5cbi5zdWJtZW51ID4gLm1lbnUtaXRlbSA+IGE6aG92ZXIgc3ZnIHtcbiAgcmlnaHQ6IDA7XG4gIG9wYWNpdHk6IDE7IH1cblxuLnN1Ym1lbnUgPiAubWVudS1pdGVtID4gYTpudGgtbGFzdC1jaGlsZCgxKSB7XG4gIGJvcmRlci1ib3R0b206IDA7IH1cblxuLnN1Ym1lbnUgPiAuY3VycmVudC1tZW51LWl0ZW0gPiBhIHtcbiAgYmFja2dyb3VuZDogd2hpdGU7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4OTlweCkge1xuICAgIC5zdWJtZW51ID4gLmN1cnJlbnQtbWVudS1pdGVtID4gYSB7XG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDE5NSwgMzQsIDYxLCAwLjcpO1xuICAgICAgY29sb3I6ICNjMzIyM2Q7IH0gfVxuICAuc3VibWVudSA+IC5jdXJyZW50LW1lbnUtaXRlbSA+IGEgc3ZnIHtcbiAgICByaWdodDogMDtcbiAgICBvcGFjaXR5OiAxOyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIENvbG9yXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcclxuICogQ29sb3IgdXRpbGl0eSBjbGFzc2VzLlxyXG4gKi9cbi8qKlxyXG4gICAgICAgKiBgY29sb3JgIHJnYmEoMCwgMCwgMCwgMC4yKS0xMCBjb2xvciB1dGlsaXR5LlxyXG4gICAgICAgKi9cbi5jb2xvci1ibGFjay0xMCB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMik7IH1cblxuLyoqXHJcbiAgICAgICAqIGBiYWNrZ3JvdW5kLWNvbG9yYCByZ2JhKDAsIDAsIDAsIDAuMiktMTAgY29sb3IgdXRpbGl0eS5cclxuICAgICAgICovXG4uYmFja2dyb3VuZC1jb2xvci1ibGFjay0xMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yKTsgfVxuXG4vKipcclxuICAgICAgICogYGNvbG9yYCByZ2JhKDAsIDAsIDAsIDAuMjUpLTI1IGNvbG9yIHV0aWxpdHkuXHJcbiAgICAgICAqL1xuLmNvbG9yLWJsYWNrLTI1IHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7IH1cblxuLyoqXHJcbiAgICAgICAqIGBiYWNrZ3JvdW5kLWNvbG9yYCByZ2JhKDAsIDAsIDAsIDAuMjUpLTI1IGNvbG9yIHV0aWxpdHkuXHJcbiAgICAgICAqL1xuLmJhY2tncm91bmQtY29sb3ItYmxhY2stMjUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpOyB9XG5cbi8qKlxyXG4gICAgICAgKiBgY29sb3JgIGJsYWNrLTEwMCBjb2xvciB1dGlsaXR5LlxyXG4gICAgICAgKi9cbi5jb2xvci1ibGFjay0xMDAge1xuICBjb2xvcjogYmxhY2s7IH1cblxuLyoqXHJcbiAgICAgICAqIGBiYWNrZ3JvdW5kLWNvbG9yYCBibGFjay0xMDAgY29sb3IgdXRpbGl0eS5cclxuICAgICAgICovXG4uYmFja2dyb3VuZC1jb2xvci1ibGFjay0xMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsgfVxuXG4vKipcclxuICAgICAgICogYGNvbG9yYCB3aGl0ZS0xMDAgY29sb3IgdXRpbGl0eS5cclxuICAgICAgICovXG4uY29sb3Itd2hpdGUtMTAwIHtcbiAgY29sb3I6IHdoaXRlOyB9XG5cbi8qKlxyXG4gICAgICAgKiBgYmFja2dyb3VuZC1jb2xvcmAgd2hpdGUtMTAwIGNvbG9yIHV0aWxpdHkuXHJcbiAgICAgICAqL1xuLmJhY2tncm91bmQtY29sb3Itd2hpdGUtMTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IH1cblxuLyoqXHJcbiAgICAgICAqIGBjb2xvcmAgI2JkYmRiZC0xMDAgY29sb3IgdXRpbGl0eS5cclxuICAgICAgICovXG4uY29sb3ItZ3JleS0xMDAge1xuICBjb2xvcjogI2JkYmRiZDsgfVxuXG4vKipcclxuICAgICAgICogYGJhY2tncm91bmQtY29sb3JgICNiZGJkYmQtMTAwIGNvbG9yIHV0aWxpdHkuXHJcbiAgICAgICAqL1xuLmJhY2tncm91bmQtY29sb3ItZ3JleS0xMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmRiZGJkOyB9XG5cbi8qKlxyXG4gICAgICAgKiBgY29sb3JgIHJnYmEoMTk1LCAzNCwgNjEsIDAuMjUpLTI1IGNvbG9yIHV0aWxpdHkuXHJcbiAgICAgICAqL1xuLmNvbG9yLXRlYWJlcnJ5LTI1IHtcbiAgY29sb3I6IHJnYmEoMTk1LCAzNCwgNjEsIDAuMjUpOyB9XG5cbi8qKlxyXG4gICAgICAgKiBgYmFja2dyb3VuZC1jb2xvcmAgcmdiYSgxOTUsIDM0LCA2MSwgMC4yNSktMjUgY29sb3IgdXRpbGl0eS5cclxuICAgICAgICovXG4uYmFja2dyb3VuZC1jb2xvci10ZWFiZXJyeS0yNSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTk1LCAzNCwgNjEsIDAuMjUpOyB9XG5cbi8qKlxyXG4gICAgICAgKiBgY29sb3JgIHJnYmEoMTk1LCAzNCwgNjEsIDAuNSktNTAgY29sb3IgdXRpbGl0eS5cclxuICAgICAgICovXG4uY29sb3ItdGVhYmVycnktNTAge1xuICBjb2xvcjogcmdiYSgxOTUsIDM0LCA2MSwgMC41KTsgfVxuXG4vKipcclxuICAgICAgICogYGJhY2tncm91bmQtY29sb3JgIHJnYmEoMTk1LCAzNCwgNjEsIDAuNSktNTAgY29sb3IgdXRpbGl0eS5cclxuICAgICAgICovXG4uYmFja2dyb3VuZC1jb2xvci10ZWFiZXJyeS01MCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTk1LCAzNCwgNjEsIDAuNSk7IH1cblxuLyoqXHJcbiAgICAgICAqIGBjb2xvcmAgcmdiYSgxOTUsIDM0LCA2MSwgMC42KS02MCBjb2xvciB1dGlsaXR5LlxyXG4gICAgICAgKi9cbi5jb2xvci10ZWFiZXJyeS02MCB7XG4gIGNvbG9yOiByZ2JhKDE5NSwgMzQsIDYxLCAwLjYpOyB9XG5cbi8qKlxyXG4gICAgICAgKiBgYmFja2dyb3VuZC1jb2xvcmAgcmdiYSgxOTUsIDM0LCA2MSwgMC42KS02MCBjb2xvciB1dGlsaXR5LlxyXG4gICAgICAgKi9cbi5iYWNrZ3JvdW5kLWNvbG9yLXRlYWJlcnJ5LTYwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxOTUsIDM0LCA2MSwgMC42KTsgfVxuXG4vKipcclxuICAgICAgICogYGNvbG9yYCByZ2JhKDE5NSwgMzQsIDYxLCAwLjcpLTcwIGNvbG9yIHV0aWxpdHkuXHJcbiAgICAgICAqL1xuLmNvbG9yLXRlYWJlcnJ5LTcwIHtcbiAgY29sb3I6IHJnYmEoMTk1LCAzNCwgNjEsIDAuNyk7IH1cblxuLyoqXHJcbiAgICAgICAqIGBiYWNrZ3JvdW5kLWNvbG9yYCByZ2JhKDE5NSwgMzQsIDYxLCAwLjcpLTcwIGNvbG9yIHV0aWxpdHkuXHJcbiAgICAgICAqL1xuLmJhY2tncm91bmQtY29sb3ItdGVhYmVycnktNzAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE5NSwgMzQsIDYxLCAwLjcpOyB9XG5cbi8qKlxyXG4gICAgICAgKiBgY29sb3JgIHJnYmEoMTk1LCAzNCwgNjEsIDAuOCktODAgY29sb3IgdXRpbGl0eS5cclxuICAgICAgICovXG4uY29sb3ItdGVhYmVycnktODAge1xuICBjb2xvcjogcmdiYSgxOTUsIDM0LCA2MSwgMC44KTsgfVxuXG4vKipcclxuICAgICAgICogYGJhY2tncm91bmQtY29sb3JgIHJnYmEoMTk1LCAzNCwgNjEsIDAuOCktODAgY29sb3IgdXRpbGl0eS5cclxuICAgICAgICovXG4uYmFja2dyb3VuZC1jb2xvci10ZWFiZXJyeS04MCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTk1LCAzNCwgNjEsIDAuOCk7IH1cblxuLyoqXHJcbiAgICAgICAqIGBjb2xvcmAgI2MzMjIzZC0xMDAgY29sb3IgdXRpbGl0eS5cclxuICAgICAgICovXG4uY29sb3ItdGVhYmVycnktMTAwIHtcbiAgY29sb3I6ICNjMzIyM2Q7IH1cblxuLyoqXHJcbiAgICAgICAqIGBiYWNrZ3JvdW5kLWNvbG9yYCAjYzMyMjNkLTEwMCBjb2xvciB1dGlsaXR5LlxyXG4gICAgICAgKi9cbi5iYWNrZ3JvdW5kLWNvbG9yLXRlYWJlcnJ5LTEwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjMzIyM2Q7IH1cblxuLyoqXHJcbiAgICAgICAqIGBjb2xvcmAgI2QwNTg2Yy0yMDAgY29sb3IgdXRpbGl0eS5cclxuICAgICAgICovXG4uY29sb3ItdGVhYmVycnktMjAwIHtcbiAgY29sb3I6ICNkMDU4NmM7IH1cblxuLyoqXHJcbiAgICAgICAqIGBiYWNrZ3JvdW5kLWNvbG9yYCAjZDA1ODZjLTIwMCBjb2xvciB1dGlsaXR5LlxyXG4gICAgICAgKi9cbi5iYWNrZ3JvdW5kLWNvbG9yLXRlYWJlcnJ5LTIwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkMDU4NmM7IH1cblxuLyoqXHJcbiAgICAgICAqIGBjb2xvcmAgI2ZjNDA0MC0xMDAgY29sb3IgdXRpbGl0eS5cclxuICAgICAgICovXG4uY29sb3ItcmVkLTEwMCB7XG4gIGNvbG9yOiAjZmM0MDQwOyB9XG5cbi8qKlxyXG4gICAgICAgKiBgYmFja2dyb3VuZC1jb2xvcmAgI2ZjNDA0MC0xMDAgY29sb3IgdXRpbGl0eS5cclxuICAgICAgICovXG4uYmFja2dyb3VuZC1jb2xvci1yZWQtMTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZjNDA0MDsgfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBPYmplY3QgRml0XHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcclxuICogT2JqZWN0IGZpdC5cclxuICpcclxuICogMS4gRm9udCBmYW1pbHkgcG9seWZpbGwgd2l0aCAoaHR0cHM6Ly9naXRodWIuY29tL2JmcmVkLWl0L29iamVjdC1maXQtaW1hZ2VzKS5cclxuICovXG4vKipcclxuICAgKiBgb2JqZWN0LWZpdGAgZmlsbCB1dGlsaXR5IGNsYXNzLlxyXG4gICAqL1xuLmZpbGwge1xuICBmb250LWZhbWlseTogXCJvYmplY3QtZml0OiBmaWxsO1wiO1xuICAvKiAxICovXG4gIG9iamVjdC1maXQ6IGZpbGw7IH1cblxuLyoqXHJcbiAgICogYG9iamVjdC1maXRgIGNvbnRhaW4gdXRpbGl0eSBjbGFzcy5cclxuICAgKi9cbi5jb250YWluIHtcbiAgZm9udC1mYW1pbHk6IFwib2JqZWN0LWZpdDogY29udGFpbjtcIjtcbiAgLyogMSAqL1xuICBvYmplY3QtZml0OiBjb250YWluOyB9XG5cbi8qKlxyXG4gICAqIGBvYmplY3QtZml0YCBjb3ZlciB1dGlsaXR5IGNsYXNzLlxyXG4gICAqL1xuLmNvdmVyIHtcbiAgZm9udC1mYW1pbHk6IFwib2JqZWN0LWZpdDogY292ZXI7XCI7XG4gIC8qIDEgKi9cbiAgb2JqZWN0LWZpdDogY292ZXI7IH1cblxuLyoqXHJcbiAgICogYG9iamVjdC1maXRgIG5vbmUgdXRpbGl0eSBjbGFzcy5cclxuICAgKi9cbi5ub25lIHtcbiAgZm9udC1mYW1pbHk6IFwib2JqZWN0LWZpdDogbm9uZTtcIjtcbiAgLyogMSAqL1xuICBvYmplY3QtZml0OiBub25lOyB9XG5cbi8qKlxyXG4gICAqIGBvYmplY3QtZml0YCBzY2FsZS1kb3duIHV0aWxpdHkgY2xhc3MuXHJcbiAgICovXG4uc2NhbGUtZG93biB7XG4gIGZvbnQtZmFtaWx5OiBcIm9iamVjdC1maXQ6IHNjYWxlLWRvd247XCI7XG4gIC8qIDEgKi9cbiAgb2JqZWN0LWZpdDogc2NhbGUtZG93bjsgfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBQb3NpdGlvblxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXHJcbiAqIFBvc2l0aW9uIHV0aWxpdHkgY2xhc3MuXHJcbiAqL1xuLnN0YXRpYyB7XG4gIHBvc2l0aW9uOiBzdGF0aWM7IH1cblxuLnJlbGF0aXZlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlOyB9XG5cbi5hYnNvbHV0ZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTsgfVxuXG4uZml4ZWQge1xuICBwb3NpdGlvbjogZml4ZWQ7IH1cblxuLnN0aWNreSB7XG4gIHBvc2l0aW9uOiBzdGlja3k7IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgVGV4dFxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXHJcbiAqIEZvbnQgZmFtaWx5IHV0aWxpdHkgY2xhc3Nlcy5cclxuICovXG4udGV4dC14cy1kZWZhdWx0IHtcbiAgZm9udC1mYW1pbHk6IFwiT3BlbiBTYW5zXCI7IH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OTlweCkge1xuICAudGV4dC1zbS1kZWZhdWx0IHtcbiAgICBmb250LWZhbWlseTogXCJPcGVuIFNhbnNcIjsgfSB9XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIHtcbiAgLnRleHQtbWQtZGVmYXVsdCB7XG4gICAgZm9udC1mYW1pbHk6IFwiT3BlbiBTYW5zXCI7IH0gfVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDkwMHB4KSB7XG4gIC50ZXh0LWxnLWRlZmF1bHQge1xuICAgIGZvbnQtZmFtaWx5OiBcIk9wZW4gU2Fuc1wiOyB9IH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLnRleHQteGwtZGVmYXVsdCB7XG4gICAgZm9udC1mYW1pbHk6IFwiT3BlbiBTYW5zXCI7IH0gfVxuXG4vKipcclxuICogVGV4dCBzaXplIHV0aWxpdHkgY2xhc3Nlcy5cclxuICovXG4udGV4dC14cy1oMSB7XG4gIGZvbnQtc2l6ZTogMzJweDtcbiAgZm9udC1zaXplOiAzLjJyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjU2MjVlbTsgfVxuXG4udGV4dC14cy1oMiB7XG4gIGZvbnQtc2l6ZTogMjhweDtcbiAgZm9udC1zaXplOiAyLjhyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjIxNDI5ZW07IH1cblxuLnRleHQteHMtaDMge1xuICBmb250LXNpemU6IDI0cHg7XG4gIGZvbnQtc2l6ZTogMi40cmVtO1xuICBsaW5lLWhlaWdodDogMS4yMDgzM2VtOyB9XG5cbi50ZXh0LXhzLWg0IHtcbiAgZm9udC1zaXplOiAyMnB4O1xuICBmb250LXNpemU6IDIuMnJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNDU0NTVlbTsgfVxuXG4udGV4dC14cy1oNSB7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgZm9udC1zaXplOiAycmVtO1xuICBsaW5lLWhlaWdodDogMS42ZW07IH1cblxuLnRleHQteHMtaDYge1xuICBmb250LXNpemU6IDE4cHg7XG4gIGZvbnQtc2l6ZTogMS44cmVtO1xuICBsaW5lLWhlaWdodDogMS43Nzc3OGVtOyB9XG5cbi50ZXh0LXhzLXAge1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtc2l6ZTogMS42cmVtO1xuICBsaW5lLWhlaWdodDogMS41NjI1ZW07IH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OTlweCkge1xuICAudGV4dC1zbS1oMSB7XG4gICAgZm9udC1zaXplOiAzMnB4O1xuICAgIGZvbnQtc2l6ZTogMy4ycmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU2MjVlbTsgfVxuICAudGV4dC1zbS1oMiB7XG4gICAgZm9udC1zaXplOiAyOHB4O1xuICAgIGZvbnQtc2l6ZTogMi44cmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjIxNDI5ZW07IH1cbiAgLnRleHQtc20taDMge1xuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICBmb250LXNpemU6IDIuNHJlbTtcbiAgICBsaW5lLWhlaWdodDogMS4yMDgzM2VtOyB9XG4gIC50ZXh0LXNtLWg0IHtcbiAgICBmb250LXNpemU6IDIycHg7XG4gICAgZm9udC1zaXplOiAyLjJyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNDU0NTVlbTsgfVxuICAudGV4dC1zbS1oNSB7XG4gICAgZm9udC1zaXplOiAyMHB4O1xuICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICBsaW5lLWhlaWdodDogMS42ZW07IH1cbiAgLnRleHQtc20taDYge1xuICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICBmb250LXNpemU6IDEuOHJlbTtcbiAgICBsaW5lLWhlaWdodDogMS43Nzc3OGVtOyB9XG4gIC50ZXh0LXNtLXAge1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBmb250LXNpemU6IDEuNnJlbTtcbiAgICBsaW5lLWhlaWdodDogMS41NjI1ZW07IH0gfVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwMHB4KSB7XG4gIC50ZXh0LW1kLWgxIHtcbiAgICBmb250LXNpemU6IDMycHg7XG4gICAgZm9udC1zaXplOiAzLjJyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNTYyNWVtOyB9XG4gIC50ZXh0LW1kLWgyIHtcbiAgICBmb250LXNpemU6IDI4cHg7XG4gICAgZm9udC1zaXplOiAyLjhyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuMjE0MjllbTsgfVxuICAudGV4dC1tZC1oMyB7XG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIGZvbnQtc2l6ZTogMi40cmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjIwODMzZW07IH1cbiAgLnRleHQtbWQtaDQge1xuICAgIGZvbnQtc2l6ZTogMjJweDtcbiAgICBmb250LXNpemU6IDIuMnJlbTtcbiAgICBsaW5lLWhlaWdodDogMS40NTQ1NWVtOyB9XG4gIC50ZXh0LW1kLWg1IHtcbiAgICBmb250LXNpemU6IDIwcHg7XG4gICAgZm9udC1zaXplOiAycmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjZlbTsgfVxuICAudGV4dC1tZC1oNiB7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGZvbnQtc2l6ZTogMS44cmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjc3Nzc4ZW07IH1cbiAgLnRleHQtbWQtcCB7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIGZvbnQtc2l6ZTogMS42cmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU2MjVlbTsgfSB9XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogOTAwcHgpIHtcbiAgLnRleHQtbGctaDEge1xuICAgIGZvbnQtc2l6ZTogMzJweDtcbiAgICBmb250LXNpemU6IDMuMnJlbTtcbiAgICBsaW5lLWhlaWdodDogMS41NjI1ZW07IH1cbiAgLnRleHQtbGctaDIge1xuICAgIGZvbnQtc2l6ZTogMjhweDtcbiAgICBmb250LXNpemU6IDIuOHJlbTtcbiAgICBsaW5lLWhlaWdodDogMS4yMTQyOWVtOyB9XG4gIC50ZXh0LWxnLWgzIHtcbiAgICBmb250LXNpemU6IDI0cHg7XG4gICAgZm9udC1zaXplOiAyLjRyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuMjA4MzNlbTsgfVxuICAudGV4dC1sZy1oNCB7XG4gICAgZm9udC1zaXplOiAyMnB4O1xuICAgIGZvbnQtc2l6ZTogMi4ycmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ1NDU1ZW07IH1cbiAgLnRleHQtbGctaDUge1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICBmb250LXNpemU6IDJyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNmVtOyB9XG4gIC50ZXh0LWxnLWg2IHtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgZm9udC1zaXplOiAxLjhyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNzc3NzhlbTsgfVxuICAudGV4dC1sZy1wIHtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgZm9udC1zaXplOiAxLjZyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNTYyNWVtOyB9IH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLnRleHQteGwtaDEge1xuICAgIGZvbnQtc2l6ZTogMzJweDtcbiAgICBmb250LXNpemU6IDMuMnJlbTtcbiAgICBsaW5lLWhlaWdodDogMS41NjI1ZW07IH1cbiAgLnRleHQteGwtaDIge1xuICAgIGZvbnQtc2l6ZTogMjhweDtcbiAgICBmb250LXNpemU6IDIuOHJlbTtcbiAgICBsaW5lLWhlaWdodDogMS4yMTQyOWVtOyB9XG4gIC50ZXh0LXhsLWgzIHtcbiAgICBmb250LXNpemU6IDI0cHg7XG4gICAgZm9udC1zaXplOiAyLjRyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuMjA4MzNlbTsgfVxuICAudGV4dC14bC1oNCB7XG4gICAgZm9udC1zaXplOiAyMnB4O1xuICAgIGZvbnQtc2l6ZTogMi4ycmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ1NDU1ZW07IH1cbiAgLnRleHQteGwtaDUge1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICBmb250LXNpemU6IDJyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNmVtOyB9XG4gIC50ZXh0LXhsLWg2IHtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgZm9udC1zaXplOiAxLjhyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNzc3NzhlbTsgfVxuICAudGV4dC14bC1wIHtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgZm9udC1zaXplOiAxLjZyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNTYyNWVtOyB9IH1cblxuLyoqXHJcbiAqIFRleHQgYWxpZ25tZW50IHV0aWxpdHkgY2xhc3Nlcy5cclxuICovXG4udGV4dC14cy1sZWZ0IHtcbiAgdGV4dC1hbGlnbjogbGVmdDsgfVxuXG4udGV4dC14cy1yaWdodCB7XG4gIHRleHQtYWxpZ246IHJpZ2h0OyB9XG5cbi50ZXh0LXhzLWNlbnRlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU5OXB4KSB7XG4gIC50ZXh0LXNtLWxlZnQge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7IH1cbiAgLnRleHQtc20tcmlnaHQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0OyB9XG4gIC50ZXh0LXNtLWNlbnRlciB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyOyB9IH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkge1xuICAudGV4dC1tZC1sZWZ0IHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0OyB9XG4gIC50ZXh0LW1kLXJpZ2h0IHtcbiAgICB0ZXh0LWFsaWduOiByaWdodDsgfVxuICAudGV4dC1tZC1jZW50ZXIge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfSB9XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogOTAwcHgpIHtcbiAgLnRleHQtbGctbGVmdCB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDsgfVxuICAudGV4dC1sZy1yaWdodCB7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7IH1cbiAgLnRleHQtbGctY2VudGVyIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH0gfVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAudGV4dC14bC1sZWZ0IHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0OyB9XG4gIC50ZXh0LXhsLXJpZ2h0IHtcbiAgICB0ZXh0LWFsaWduOiByaWdodDsgfVxuICAudGV4dC14bC1jZW50ZXIge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfSB9XG5cbi8qKlxyXG4gKiBGb250IHdlaWdodCB1dGlsaXR5IGNsYXNzZXMuXHJcbiAqXHJcbiAqIDEuIE11bHRpcGx5IGxvb3BlZCBpbnRlZ2VyIGJ5IDEwMCBmb3IgY29ycmVjdCBmb250IHdlaWdodCB2YWx1ZS5cclxuICovXG4udGV4dC14cy0xMDAge1xuICBmb250LXdlaWdodDogMTAwOyB9XG5cbi50ZXh0LXhzLTIwMCB7XG4gIGZvbnQtd2VpZ2h0OiAyMDA7IH1cblxuLnRleHQteHMtMzAwIHtcbiAgZm9udC13ZWlnaHQ6IDMwMDsgfVxuXG4udGV4dC14cy00MDAge1xuICBmb250LXdlaWdodDogNDAwOyB9XG5cbi50ZXh0LXhzLTUwMCB7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7IH1cblxuLnRleHQteHMtNjAwIHtcbiAgZm9udC13ZWlnaHQ6IDYwMDsgfVxuXG4udGV4dC14cy03MDAge1xuICBmb250LXdlaWdodDogNzAwOyB9XG5cbi50ZXh0LXhzLTgwMCB7XG4gIGZvbnQtd2VpZ2h0OiA4MDA7IH1cblxuLnRleHQteHMtOTAwIHtcbiAgZm9udC13ZWlnaHQ6IDkwMDsgfVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU5OXB4KSB7XG4gIC50ZXh0LXNtLTEwMCB7XG4gICAgZm9udC13ZWlnaHQ6IDEwMDsgfVxuICAudGV4dC1zbS0yMDAge1xuICAgIGZvbnQtd2VpZ2h0OiAyMDA7IH1cbiAgLnRleHQtc20tMzAwIHtcbiAgICBmb250LXdlaWdodDogMzAwOyB9XG4gIC50ZXh0LXNtLTQwMCB7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDsgfVxuICAudGV4dC1zbS01MDAge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7IH1cbiAgLnRleHQtc20tNjAwIHtcbiAgICBmb250LXdlaWdodDogNjAwOyB9XG4gIC50ZXh0LXNtLTcwMCB7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDsgfVxuICAudGV4dC1zbS04MDAge1xuICAgIGZvbnQtd2VpZ2h0OiA4MDA7IH1cbiAgLnRleHQtc20tOTAwIHtcbiAgICBmb250LXdlaWdodDogOTAwOyB9IH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkge1xuICAudGV4dC1tZC0xMDAge1xuICAgIGZvbnQtd2VpZ2h0OiAxMDA7IH1cbiAgLnRleHQtbWQtMjAwIHtcbiAgICBmb250LXdlaWdodDogMjAwOyB9XG4gIC50ZXh0LW1kLTMwMCB7XG4gICAgZm9udC13ZWlnaHQ6IDMwMDsgfVxuICAudGV4dC1tZC00MDAge1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7IH1cbiAgLnRleHQtbWQtNTAwIHtcbiAgICBmb250LXdlaWdodDogNTAwOyB9XG4gIC50ZXh0LW1kLTYwMCB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDsgfVxuICAudGV4dC1tZC03MDAge1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7IH1cbiAgLnRleHQtbWQtODAwIHtcbiAgICBmb250LXdlaWdodDogODAwOyB9XG4gIC50ZXh0LW1kLTkwMCB7XG4gICAgZm9udC13ZWlnaHQ6IDkwMDsgfSB9XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogOTAwcHgpIHtcbiAgLnRleHQtbGctMTAwIHtcbiAgICBmb250LXdlaWdodDogMTAwOyB9XG4gIC50ZXh0LWxnLTIwMCB7XG4gICAgZm9udC13ZWlnaHQ6IDIwMDsgfVxuICAudGV4dC1sZy0zMDAge1xuICAgIGZvbnQtd2VpZ2h0OiAzMDA7IH1cbiAgLnRleHQtbGctNDAwIHtcbiAgICBmb250LXdlaWdodDogNDAwOyB9XG4gIC50ZXh0LWxnLTUwMCB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDsgfVxuICAudGV4dC1sZy02MDAge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7IH1cbiAgLnRleHQtbGctNzAwIHtcbiAgICBmb250LXdlaWdodDogNzAwOyB9XG4gIC50ZXh0LWxnLTgwMCB7XG4gICAgZm9udC13ZWlnaHQ6IDgwMDsgfVxuICAudGV4dC1sZy05MDAge1xuICAgIGZvbnQtd2VpZ2h0OiA5MDA7IH0gfVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAudGV4dC14bC0xMDAge1xuICAgIGZvbnQtd2VpZ2h0OiAxMDA7IH1cbiAgLnRleHQteGwtMjAwIHtcbiAgICBmb250LXdlaWdodDogMjAwOyB9XG4gIC50ZXh0LXhsLTMwMCB7XG4gICAgZm9udC13ZWlnaHQ6IDMwMDsgfVxuICAudGV4dC14bC00MDAge1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7IH1cbiAgLnRleHQteGwtNTAwIHtcbiAgICBmb250LXdlaWdodDogNTAwOyB9XG4gIC50ZXh0LXhsLTYwMCB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDsgfVxuICAudGV4dC14bC03MDAge1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7IH1cbiAgLnRleHQteGwtODAwIHtcbiAgICBmb250LXdlaWdodDogODAwOyB9XG4gIC50ZXh0LXhsLTkwMCB7XG4gICAgZm9udC13ZWlnaHQ6IDkwMDsgfSB9XG5cbi8qKlxyXG4gKiBUZXh0IHRyYW5zZm9ybSB1aXRsaXR5IGNsYXNzZXMuXHJcbiAqL1xuLnRleHQteHMtY2FwaXRhbGl6ZSB7XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOyB9XG5cbi50ZXh0LXhzLXVwcGVyY2FzZSB7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH1cblxuLnRleHQteHMtbG93ZXJjYXNlIHtcbiAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZTsgfVxuXG4udGV4dC14cy1ub25lIHtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7IH1cblxuLnRleHQteHMtZnVsbC13aWR0aCB7XG4gIHRleHQtdHJhbnNmb3JtOiBmdWxsLXdpZHRoOyB9XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTk5cHgpIHtcbiAgLnRleHQtc20tY2FwaXRhbGl6ZSB7XG4gICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7IH1cbiAgLnRleHQtc20tdXBwZXJjYXNlIHtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9XG4gIC50ZXh0LXNtLWxvd2VyY2FzZSB7XG4gICAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZTsgfVxuICAudGV4dC1zbS1ub25lIHtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgfVxuICAudGV4dC1zbS1mdWxsLXdpZHRoIHtcbiAgICB0ZXh0LXRyYW5zZm9ybTogZnVsbC13aWR0aDsgfSB9XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIHtcbiAgLnRleHQtbWQtY2FwaXRhbGl6ZSB7XG4gICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7IH1cbiAgLnRleHQtbWQtdXBwZXJjYXNlIHtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9XG4gIC50ZXh0LW1kLWxvd2VyY2FzZSB7XG4gICAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZTsgfVxuICAudGV4dC1tZC1ub25lIHtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgfVxuICAudGV4dC1tZC1mdWxsLXdpZHRoIHtcbiAgICB0ZXh0LXRyYW5zZm9ybTogZnVsbC13aWR0aDsgfSB9XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogOTAwcHgpIHtcbiAgLnRleHQtbGctY2FwaXRhbGl6ZSB7XG4gICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7IH1cbiAgLnRleHQtbGctdXBwZXJjYXNlIHtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9XG4gIC50ZXh0LWxnLWxvd2VyY2FzZSB7XG4gICAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZTsgfVxuICAudGV4dC1sZy1ub25lIHtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgfVxuICAudGV4dC1sZy1mdWxsLXdpZHRoIHtcbiAgICB0ZXh0LXRyYW5zZm9ybTogZnVsbC13aWR0aDsgfSB9XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC50ZXh0LXhsLWNhcGl0YWxpemUge1xuICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOyB9XG4gIC50ZXh0LXhsLXVwcGVyY2FzZSB7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfVxuICAudGV4dC14bC1sb3dlcmNhc2Uge1xuICAgIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2U7IH1cbiAgLnRleHQteGwtbm9uZSB7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7IH1cbiAgLnRleHQteGwtZnVsbC13aWR0aCB7XG4gICAgdGV4dC10cmFuc2Zvcm06IGZ1bGwtd2lkdGg7IH0gfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBWZXJ0aWNhbCBSaHl0aG1cclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi52ci0wIHtcbiAgbWFyZ2luLWJvdHRvbTogMHB4OyB9XG5cbi52ci04IHtcbiAgbWFyZ2luLWJvdHRvbTogOHB4OyB9XG5cbi52ci0xNiB7XG4gIG1hcmdpbi1ib3R0b206IDE2cHg7IH1cblxuLnZyLTI0IHtcbiAgbWFyZ2luLWJvdHRvbTogMjRweDsgfVxuXG4udnItMzIge1xuICBtYXJnaW4tYm90dG9tOiAzMnB4OyB9XG5cbi52ci00MCB7XG4gIG1hcmdpbi1ib3R0b206IDQwcHg7IH1cblxuLnZyLTQ4IHtcbiAgbWFyZ2luLWJvdHRvbTogNDhweDsgfVxuXG4udnItNTYge1xuICBtYXJnaW4tYm90dG9tOiA1NnB4OyB9XG5cbi52ci02NCB7XG4gIG1hcmdpbi1ib3R0b206IDY0cHg7IH1cblxuLnZyLTcyIHtcbiAgbWFyZ2luLWJvdHRvbTogNzJweDsgfVxuXG4udnItODAge1xuICBtYXJnaW4tYm90dG9tOiA4MHB4OyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIFotaW5kZXhcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gKiBVdGlsaXR5IGNsYXNzZXMgZm9yIG1hbmlwdWxhdGluZyBzdGFja2luZyBvcmRlciBpbiBIVE1MLlxyXG4gKi9cbi56LWluZGV4LTAge1xuICB6LWluZGV4OiAwOyB9XG5cbi56LWluZGV4LTEge1xuICB6LWluZGV4OiAxMDsgfVxuXG4uei1pbmRleC0yIHtcbiAgei1pbmRleDogMjA7IH1cblxuLnotaW5kZXgtMyB7XG4gIHotaW5kZXg6IDMwOyB9XG5cbi56LWluZGV4LTQge1xuICB6LWluZGV4OiA0MDsgfVxuXG4uei1pbmRleC01IHtcbiAgei1pbmRleDogNTA7IH1cblxuLnotaW5kZXgtNiB7XG4gIHotaW5kZXg6IDYwOyB9XG5cbi56LWluZGV4LTcge1xuICB6LWluZGV4OiA3MDsgfVxuXG4uei1pbmRleC04IHtcbiAgei1pbmRleDogODA7IH1cblxuLnotaW5kZXgtOSB7XG4gIHotaW5kZXg6IDkwOyB9XG5cbi56LWluZGV4LTEwIHtcbiAgei1pbmRleDogMTAwOyB9XG4iLCIvKlxuICogIE93bCBDYXJvdXNlbCAtIENvcmVcbiAqL1xuLm93bC1jYXJvdXNlbCB7XG5cdGRpc3BsYXk6IG5vbmU7XG5cdHdpZHRoOiAxMDAlO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHQvKiBwb3NpdGlvbiByZWxhdGl2ZSBhbmQgei1pbmRleCBmaXggd2Via2l0IHJlbmRlcmluZyBmb250cyBpc3N1ZSAqL1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHotaW5kZXg6IDE7XG5cblx0Lm93bC1zdGFnZSB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdC1tcy10b3VjaC1hY3Rpb246IHBhbi1ZO1xuXHRcdHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xuXHRcdC1tb3otYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOyAvKiBmaXggZmlyZWZveCBhbmltYXRpb24gZ2xpdGNoICovXG5cdH1cblxuXHQub3dsLXN0YWdlOmFmdGVyIHtcblx0XHRjb250ZW50OiBcIi5cIjtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRjbGVhcjogYm90aDtcblx0XHR2aXNpYmlsaXR5OiBoaWRkZW47XG5cdFx0bGluZS1oZWlnaHQ6IDA7XG5cdFx0aGVpZ2h0OiAwO1xuXHR9XG5cblx0Lm93bC1zdGFnZS1vdXRlciB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0LyogZml4IGZvciBmbGFzaGluZyBiYWNrZ3JvdW5kICovXG5cdFx0LXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDBweCwgMHB4LCAwcHgpO1xuXHR9XG5cblx0Lm93bC13cmFwcGVyLFxuXHQub3dsLWl0ZW17XG5cdFx0LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG5cdFx0LW1vei1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG5cdFx0LW1zLWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcblx0XHQtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwwLDApO1xuXHRcdC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLDAsMCk7XG5cdFx0LW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwwLDApO1xuXHR9XG5cblx0Lm93bC1pdGVtIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0bWluLWhlaWdodDogMXB4O1xuXHRcdGZsb2F0OiBsZWZ0O1xuXHRcdC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuXHRcdC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdFx0LXdlYmtpdC10b3VjaC1jYWxsb3V0OiBub25lO1xuXHR9XG5cdC5vd2wtaXRlbSBpbWcge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG5cblx0Lm93bC1uYXYuZGlzYWJsZWQsXG5cdC5vd2wtZG90cy5kaXNhYmxlZCB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxuXG5cdC5vd2wtbmF2IC5vd2wtcHJldixcblx0Lm93bC1uYXYgLm93bC1uZXh0LFxuXHQub3dsLWRvdCB7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG5cdFx0LWtodG1sLXVzZXItc2VsZWN0OiBub25lO1xuXHRcdC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG5cdFx0LW1zLXVzZXItc2VsZWN0OiBub25lO1xuXHRcdHVzZXItc2VsZWN0OiBub25lO1xuXHR9XG5cblx0Lm93bC1uYXYgYnV0dG9uLm93bC1wcmV2LFxuXHQub3dsLW5hdiBidXR0b24ub3dsLW5leHQsXG5cdGJ1dHRvbi5vd2wtZG90IHtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdGNvbG9yOiBpbmhlcml0O1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRwYWRkaW5nOjAhaW1wb3J0YW50O1xuXHRcdGZvbnQ6IGluaGVyaXQ7XG5cdH1cblxuXHQmLm93bC1sb2FkZWQge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG5cblx0Ji5vd2wtbG9hZGluZyB7XG5cdFx0b3BhY2l0eTogMDtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0fVxuXG5cdCYub3dsLWhpZGRlbiB7XG5cdFx0b3BhY2l0eTogMDtcblx0fVxuXG5cdCYub3dsLXJlZnJlc2ggLm93bC1pdGVtIHtcblx0XHR2aXNpYmlsaXR5OiBoaWRkZW47XG5cdH1cblxuXHQmLm93bC1kcmFnIC5vd2wtaXRlbSB7XG5cdFx0dG91Y2gtYWN0aW9uOiBwYW4teTtcblx0XHQtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuXHRcdC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG5cdFx0LW1zLXVzZXItc2VsZWN0OiBub25lO1xuXHRcdHVzZXItc2VsZWN0OiBub25lO1xuXHR9XG5cblx0Ji5vd2wtZ3JhYiB7XG5cdFx0Y3Vyc29yOiBtb3ZlO1xuXHRcdGN1cnNvcjogZ3JhYjtcblx0fVxuXG5cdCYub3dsLXJ0bCB7XG5cdFx0ZGlyZWN0aW9uOiBydGw7XG5cdH1cblxuXHQmLm93bC1ydGwgLm93bC1pdGVtIHtcblx0XHRmbG9hdDogcmlnaHQ7XG5cdH1cbn1cblxuLyogTm8gSnMgKi9cbi5uby1qcyAub3dsLWNhcm91c2VsIHtcblx0ZGlzcGxheTogYmxvY2s7XG59XG4iLCIvKlxuICogIE93bCBDYXJvdXNlbCAtIEFuaW1hdGUgUGx1Z2luXG4gKi9cbi5vd2wtY2Fyb3VzZWx7XG5cdC5hbmltYXRlZCB7XG5cdFx0YW5pbWF0aW9uLWR1cmF0aW9uOiAxMDAwbXM7XG5cdFx0YW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcblx0fVxuXHQub3dsLWFuaW1hdGVkLWluIHtcblx0XHR6LWluZGV4OiAwO1xuXHR9XG5cdC5vd2wtYW5pbWF0ZWQtb3V0IHtcblx0XHR6LWluZGV4OiAxO1xuXHR9XG5cdC5mYWRlT3V0IHtcblx0XHRhbmltYXRpb24tbmFtZTogZmFkZU91dDtcblx0fVxufVxuXG5Aa2V5ZnJhbWVzIGZhZGVPdXQge1xuXHQwJSB7XG5cdFx0b3BhY2l0eTogMTtcblx0fVxuXG5cdDEwMCUge1xuXHRcdG9wYWNpdHk6IDA7XG5cdH1cbn1cbiIsIi8qXG4gKiBcdE93bCBDYXJvdXNlbCAtIEF1dG8gSGVpZ2h0IFBsdWdpblxuICovXG5cbi5vd2wtaGVpZ2h0IHtcblx0dHJhbnNpdGlvbjogaGVpZ2h0IDUwMG1zIGVhc2UtaW4tb3V0O1xufVxuIiwiLypcbiAqIFx0T3dsIENhcm91c2VsIC0gTGF6eSBMb2FkIFBsdWdpblxuICovXG5cbi5vd2wtY2Fyb3VzZWwge1xuXHQub3dsLWl0ZW0ge1xuXHRcdC5vd2wtbGF6eSB7XG5cdFx0XHRcdG9wYWNpdHk6IDA7XG5cdFx0XHRcdHRyYW5zaXRpb246IG9wYWNpdHkgNDAwbXMgZWFzZTtcblx0XHR9XG5cblx0XHQvKipcblx0XHRcdFRoaXMgaXMgaW50cm9kdWNlZCBkdWUgdG8gYSBidWcgaW4gSUUxMSB3aGVyZSBsYXp5IGxvYWRpbmcgY29tYmluZWQgd2l0aCBhdXRvaGVpZ2h0IHBsdWdpbiBjYXVzZXMgYSB3cm9uZ1xuXHRcdFx0Y2FsY3VsYXRpb24gb2YgdGhlIGhlaWdodCBvZiB0aGUgb3dsLWl0ZW0gdGhhdCBicmVha3MgcGFnZSBsYXlvdXRzXG5cdFx0ICovXG5cdFx0Lm93bC1sYXp5W3NyY149XCJcIl0sIC5vd2wtbGF6eTpub3QoW3NyY10pIHtcblx0XHRcdG1heC1oZWlnaHQ6IDA7XG5cdFx0fVxuXG5cdFx0aW1nLm93bC1sYXp5IHtcblx0XHRcdHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG5cdFx0fVxuXHR9XG59XG5cbiIsIiRvd2wtaW1hZ2UtcGF0aDogXCJcIiAhZGVmYXVsdDtcblxuLypcbiAqIFx0T3dsIENhcm91c2VsIC0gVmlkZW8gUGx1Z2luXG4gKi9cblxuLm93bC1jYXJvdXNlbHtcblx0Lm93bC12aWRlby13cmFwcGVyIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdGJhY2tncm91bmQ6ICMwMDA7XG5cdH1cblxuXHQub3dsLXZpZGVvLXBsYXktaWNvbiB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGhlaWdodDogODBweDtcblx0XHR3aWR0aDogODBweDtcblx0XHRsZWZ0OiA1MCU7XG5cdFx0dG9wOiA1MCU7XG5cdFx0bWFyZ2luLWxlZnQ6IC00MHB4O1xuXHRcdG1hcmdpbi10b3A6IC00MHB4O1xuXHRcdGJhY2tncm91bmQ6IHVybChcIiN7JG93bC1pbWFnZS1wYXRofW93bC52aWRlby5wbGF5LnBuZ1wiKSBuby1yZXBlYXQ7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdHotaW5kZXg6IDE7XG5cdFx0LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG5cdFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDEwMG1zIGVhc2U7XG5cdH1cblxuXHQub3dsLXZpZGVvLXBsYXktaWNvbjpob3ZlciB7XG5cdFx0dHJhbnNmb3JtOiBzY2FsZSgxLjMsIDEuMyk7XG5cdH1cblxuXHQub3dsLXZpZGVvLXBsYXlpbmcgLm93bC12aWRlby10bixcblx0Lm93bC12aWRlby1wbGF5aW5nIC5vd2wtdmlkZW8tcGxheS1pY29uIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG5cblx0Lm93bC12aWRlby10biB7XG5cdFx0b3BhY2l0eTogMDtcblx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0YmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcblx0XHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRcdGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcblx0XHR0cmFuc2l0aW9uOiBvcGFjaXR5IDQwMG1zIGVhc2U7XG5cdH1cblxuXHQub3dsLXZpZGVvLWZyYW1lIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0ei1pbmRleDogMTtcblx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdH1cbn1cbiIsIi8vIHNhc3MtbGludDpkaXNhYmxlIGluZGVudGF0aW9uIG5vLXF1YWxpZnlpbmctZWxlbWVudHMgc2hvcnRoYW5kLXZhbHVlcyBzaW5nbGUtbGluZS1wZXItc2VsZWN0b3IgY2xhc3MtbmFtZS1mb3JtYXQgbm8taWRzIGlkLW5hbWUtZm9ybWF0IHByb3BlcnR5LXNvcnQtb3JkZXIgbm8tY29sb3ItbGl0ZXJhbHMgaGV4LW5vdGF0aW9uIGJyYWNlLXN0eWxlIHplcm8tdW5pdCBzcGFjZS1hZnRlci1jb2xvbiBlbXB0eS1saW5lLWJldHdlZW4tYmxvY2tzXHJcblxyXG5cclxuLyogTWFnbmlmaWMgUG9wdXAgQ1NTICovXHJcbi5tZnAtYmcge1xyXG4gIHRvcDogMDtcclxuICBsZWZ0OiAwO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICB6LWluZGV4OiAxMDQyO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIGJhY2tncm91bmQ6ICMwYjBiMGI7XHJcbiAgb3BhY2l0eTogMC44OyB9XHJcblxyXG4ubWZwLXdyYXAge1xyXG4gIHRvcDogMDtcclxuICBsZWZ0OiAwO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICB6LWluZGV4OiAxMDQzO1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XHJcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47IH1cclxuXHJcbi5tZnAtY29udGFpbmVyIHtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBsZWZ0OiAwO1xyXG4gIHRvcDogMDtcclxuICBwYWRkaW5nOiAwIDhweDtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XHJcblxyXG4ubWZwLWNvbnRhaW5lcjpiZWZvcmUge1xyXG4gIGNvbnRlbnQ6ICcnO1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxyXG5cclxuLm1mcC1hbGlnbi10b3AgLm1mcC1jb250YWluZXI6YmVmb3JlIHtcclxuICBkaXNwbGF5OiBub25lOyB9XHJcblxyXG4ubWZwLWNvbnRlbnQge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICBtYXJnaW46IDAgYXV0bztcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIHotaW5kZXg6IDEwNDU7IH1cclxuXHJcbi5tZnAtaW5saW5lLWhvbGRlciAubWZwLWNvbnRlbnQsXHJcbi5tZnAtYWpheC1ob2xkZXIgLm1mcC1jb250ZW50IHtcclxuICB3aWR0aDogMTAwJTtcclxuICBjdXJzb3I6IGF1dG87IH1cclxuXHJcbi5tZnAtYWpheC1jdXIge1xyXG4gIGN1cnNvcjogcHJvZ3Jlc3M7IH1cclxuXHJcbi5tZnAtem9vbS1vdXQtY3VyLCAubWZwLXpvb20tb3V0LWN1ciAubWZwLWltYWdlLWhvbGRlciAubWZwLWNsb3NlIHtcclxuICBjdXJzb3I6IC1tb3otem9vbS1vdXQ7XHJcbiAgY3Vyc29yOiAtd2Via2l0LXpvb20tb3V0O1xyXG4gIGN1cnNvcjogem9vbS1vdXQ7IH1cclxuXHJcbi5tZnAtem9vbSB7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIGN1cnNvcjogLXdlYmtpdC16b29tLWluO1xyXG4gIGN1cnNvcjogLW1vei16b29tLWluO1xyXG4gIGN1cnNvcjogem9vbS1pbjsgfVxyXG5cclxuLm1mcC1hdXRvLWN1cnNvciAubWZwLWNvbnRlbnQge1xyXG4gIGN1cnNvcjogYXV0bzsgfVxyXG5cclxuLm1mcC1jbG9zZSxcclxuLm1mcC1hcnJvdyxcclxuLm1mcC1wcmVsb2FkZXIsXHJcbi5tZnAtY291bnRlciB7XHJcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcclxuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xyXG4gIHVzZXItc2VsZWN0OiBub25lOyB9XHJcblxyXG4ubWZwLWxvYWRpbmcubWZwLWZpZ3VyZSB7XHJcbiAgZGlzcGxheTogbm9uZTsgfVxyXG5cclxuLm1mcC1oaWRlIHtcclxuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cclxuXHJcbi5tZnAtcHJlbG9hZGVyIHtcclxuICBjb2xvcjogI0NDQztcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiA1MCU7XHJcbiAgd2lkdGg6IGF1dG87XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIG1hcmdpbi10b3A6IC0wLjhlbTtcclxuICBsZWZ0OiA4cHg7XHJcbiAgcmlnaHQ6IDhweDtcclxuICB6LWluZGV4OiAxMDQ0OyB9XHJcbiAgLm1mcC1wcmVsb2FkZXIgYSB7XHJcbiAgICBjb2xvcjogI0NDQzsgfVxyXG4gICAgLm1mcC1wcmVsb2FkZXIgYTpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiAjRkZGOyB9XHJcblxyXG4ubWZwLXMtcmVhZHkgLm1mcC1wcmVsb2FkZXIge1xyXG4gIGRpc3BsYXk6IG5vbmU7IH1cclxuXHJcbi5tZnAtcy1lcnJvciAubWZwLWNvbnRlbnQge1xyXG4gIGRpc3BsYXk6IG5vbmU7IH1cclxuXHJcbmJ1dHRvbi5tZnAtY2xvc2UsXHJcbmJ1dHRvbi5tZnAtYXJyb3cge1xyXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICBib3JkZXI6IDA7XHJcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgcGFkZGluZzogMDtcclxuICB6LWluZGV4OiAxMDQ2O1xyXG4gIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247IH1cclxuXHJcbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciB7XHJcbiAgcGFkZGluZzogMDtcclxuICBib3JkZXI6IDA7IH1cclxuXHJcbi5tZnAtY2xvc2Uge1xyXG4gIHdpZHRoOiA0NHB4O1xyXG4gIGhlaWdodDogNDRweDtcclxuICBsaW5lLWhlaWdodDogNDRweDtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgcmlnaHQ6IDA7XHJcbiAgdG9wOiAwO1xyXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgb3BhY2l0eTogMC42NTtcclxuICBwYWRkaW5nOiAwIDAgMThweCAxMHB4O1xyXG4gIGNvbG9yOiAjRkZGO1xyXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcclxuICBmb250LXNpemU6IDI4cHg7XHJcbiAgZm9udC1mYW1pbHk6IEFyaWFsLCBCYXNrZXJ2aWxsZSwgbW9ub3NwYWNlOyB9XHJcbiAgLm1mcC1jbG9zZTpob3ZlcixcclxuICAubWZwLWNsb3NlOmZvY3VzIHtcclxuICAgIG9wYWNpdHk6IDE7IH1cclxuICAubWZwLWNsb3NlOmFjdGl2ZSB7XHJcbiAgICB0b3A6IDFweDsgfVxyXG5cclxuLm1mcC1jbG9zZS1idG4taW4gLm1mcC1jbG9zZSB7XHJcbiAgY29sb3I6ICMzMzM7IH1cclxuXHJcbi5tZnAtaW1hZ2UtaG9sZGVyIC5tZnAtY2xvc2UsXHJcbi5tZnAtaWZyYW1lLWhvbGRlciAubWZwLWNsb3NlIHtcclxuICBjb2xvcjogI0ZGRjtcclxuICByaWdodDogLTZweDtcclxuICB0ZXh0LWFsaWduOiByaWdodDtcclxuICBwYWRkaW5nLXJpZ2h0OiA2cHg7XHJcbiAgd2lkdGg6IDEwMCU7IH1cclxuXHJcbi5tZnAtY291bnRlciB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogMDtcclxuICByaWdodDogMDtcclxuICBjb2xvcjogI0NDQztcclxuICBmb250LXNpemU6IDEycHg7XHJcbiAgbGluZS1oZWlnaHQ6IDE4cHg7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxyXG5cclxuLm1mcC1hcnJvdyB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIG9wYWNpdHk6IDAuNjU7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIHRvcDogNTAlO1xyXG4gIG1hcmdpbi10b3A6IC01NXB4O1xyXG4gIHBhZGRpbmc6IDA7XHJcbiAgd2lkdGg6IDkwcHg7XHJcbiAgaGVpZ2h0OiAxMTBweDtcclxuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50OyB9XHJcbiAgLm1mcC1hcnJvdzphY3RpdmUge1xyXG4gICAgbWFyZ2luLXRvcDogLTU0cHg7IH1cclxuICAubWZwLWFycm93OmhvdmVyLFxyXG4gIC5tZnAtYXJyb3c6Zm9jdXMge1xyXG4gICAgb3BhY2l0eTogMTsgfVxyXG4gIC5tZnAtYXJyb3c6YmVmb3JlLFxyXG4gIC5tZnAtYXJyb3c6YWZ0ZXIge1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHdpZHRoOiAwO1xyXG4gICAgaGVpZ2h0OiAwO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHRvcDogMDtcclxuICAgIG1hcmdpbi10b3A6IDM1cHg7XHJcbiAgICBtYXJnaW4tbGVmdDogMzVweDtcclxuICAgIGJvcmRlcjogbWVkaXVtIGluc2V0IHRyYW5zcGFyZW50OyB9XHJcbiAgLm1mcC1hcnJvdzphZnRlciB7XHJcbiAgICBib3JkZXItdG9wLXdpZHRoOiAxM3B4O1xyXG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMTNweDtcclxuICAgIHRvcDogOHB4OyB9XHJcbiAgLm1mcC1hcnJvdzpiZWZvcmUge1xyXG4gICAgYm9yZGVyLXRvcC13aWR0aDogMjFweDtcclxuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDIxcHg7XHJcbiAgICBvcGFjaXR5OiAwLjc7IH1cclxuXHJcbi5tZnAtYXJyb3ctbGVmdCB7XHJcbiAgbGVmdDogMDsgfVxyXG4gIC5tZnAtYXJyb3ctbGVmdDphZnRlciB7XHJcbiAgICBib3JkZXItcmlnaHQ6IDE3cHggc29saWQgI0ZGRjtcclxuICAgIG1hcmdpbi1sZWZ0OiAzMXB4OyB9XHJcbiAgLm1mcC1hcnJvdy1sZWZ0OmJlZm9yZSB7XHJcbiAgICBtYXJnaW4tbGVmdDogMjVweDtcclxuICAgIGJvcmRlci1yaWdodDogMjdweCBzb2xpZCAjM0YzRjNGOyB9XHJcblxyXG4ubWZwLWFycm93LXJpZ2h0IHtcclxuICByaWdodDogMDsgfVxyXG4gIC5tZnAtYXJyb3ctcmlnaHQ6YWZ0ZXIge1xyXG4gICAgYm9yZGVyLWxlZnQ6IDE3cHggc29saWQgI0ZGRjtcclxuICAgIG1hcmdpbi1sZWZ0OiAzOXB4OyB9XHJcbiAgLm1mcC1hcnJvdy1yaWdodDpiZWZvcmUge1xyXG4gICAgYm9yZGVyLWxlZnQ6IDI3cHggc29saWQgIzNGM0YzRjsgfVxyXG5cclxuLm1mcC1pZnJhbWUtaG9sZGVyIHtcclxuICBwYWRkaW5nLXRvcDogNDBweDtcclxuICBwYWRkaW5nLWJvdHRvbTogNDBweDsgfVxyXG4gIC5tZnAtaWZyYW1lLWhvbGRlciAubWZwLWNvbnRlbnQge1xyXG4gICAgbGluZS1oZWlnaHQ6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1heC13aWR0aDogOTAwcHg7IH1cclxuICAubWZwLWlmcmFtZS1ob2xkZXIgLm1mcC1jbG9zZSB7XHJcbiAgICB0b3A6IC00MHB4OyB9XHJcblxyXG4ubWZwLWlmcmFtZS1zY2FsZXIge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMDtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIHBhZGRpbmctdG9wOiA1Ni4yNSU7IH1cclxuICAubWZwLWlmcmFtZS1zY2FsZXIgaWZyYW1lIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgYm94LXNoYWRvdzogMCAwIDhweCByZ2JhKDAsIDAsIDAsIDAuNik7XHJcbiAgICBiYWNrZ3JvdW5kOiAjMDAwOyB9XHJcblxyXG4vKiBNYWluIGltYWdlIGluIHBvcHVwICovXHJcbmltZy5tZnAtaW1nIHtcclxuICB3aWR0aDogYXV0bztcclxuICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiBhdXRvO1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG4gIGxpbmUtaGVpZ2h0OiAwO1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgcGFkZGluZzogNDBweCAwIDQwcHg7XHJcbiAgbWFyZ2luOiAwIGF1dG87IH1cclxuXHJcbi8qIFRoZSBzaGFkb3cgYmVoaW5kIHRoZSBpbWFnZSAqL1xyXG4ubWZwLWZpZ3VyZSB7XHJcbiAgbGluZS1oZWlnaHQ6IDA7IH1cclxuICAubWZwLWZpZ3VyZTphZnRlciB7XHJcbiAgICBjb250ZW50OiAnJztcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB0b3A6IDQwcHg7XHJcbiAgICBib3R0b206IDQwcHg7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHJpZ2h0OiAwO1xyXG4gICAgd2lkdGg6IGF1dG87XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICB6LWluZGV4OiAtMTtcclxuICAgIGJveC1zaGFkb3c6IDAgMCA4cHggcmdiYSgwLCAwLCAwLCAwLjYpO1xyXG4gICAgYmFja2dyb3VuZDogIzQ0NDsgfVxyXG4gIC5tZnAtZmlndXJlIHNtYWxsIHtcclxuICAgIGNvbG9yOiAjQkRCREJEO1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICBsaW5lLWhlaWdodDogMTRweDsgfVxyXG4gIC5tZnAtZmlndXJlIGZpZ3VyZSB7XHJcbiAgICBtYXJnaW46IDA7IH1cclxuXHJcbi5tZnAtYm90dG9tLWJhciB7XHJcbiAgbWFyZ2luLXRvcDogLTM2cHg7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogMTAwJTtcclxuICBsZWZ0OiAwO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGN1cnNvcjogYXV0bzsgfVxyXG5cclxuLm1mcC10aXRsZSB7XHJcbiAgdGV4dC1hbGlnbjogbGVmdDtcclxuICBsaW5lLWhlaWdodDogMThweDtcclxuICBjb2xvcjogI0YzRjNGMztcclxuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XHJcbiAgcGFkZGluZy1yaWdodDogMzZweDsgfVxyXG5cclxuLm1mcC1pbWFnZS1ob2xkZXIgLm1mcC1jb250ZW50IHtcclxuICBtYXgtd2lkdGg6IDEwMCU7IH1cclxuXHJcbi5tZnAtZ2FsbGVyeSAubWZwLWltYWdlLWhvbGRlciAubWZwLWZpZ3VyZSB7XHJcbiAgY3Vyc29yOiBwb2ludGVyOyB9XHJcblxyXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSwgc2NyZWVuIGFuZCAobWF4LWhlaWdodDogMzAwcHgpIHtcclxuICAvKipcclxuICAgICAgICogUmVtb3ZlIGFsbCBwYWRkaW5ncyBhcm91bmQgdGhlIGltYWdlIG9uIHNtYWxsIHNjcmVlblxyXG4gICAgICAgKi9cclxuICAubWZwLWltZy1tb2JpbGUgLm1mcC1pbWFnZS1ob2xkZXIge1xyXG4gICAgcGFkZGluZy1sZWZ0OiAwO1xyXG4gICAgcGFkZGluZy1yaWdodDogMDsgfVxyXG4gIC5tZnAtaW1nLW1vYmlsZSBpbWcubWZwLWltZyB7XHJcbiAgICBwYWRkaW5nOiAwOyB9XHJcbiAgLm1mcC1pbWctbW9iaWxlIC5tZnAtZmlndXJlOmFmdGVyIHtcclxuICAgIHRvcDogMDtcclxuICAgIGJvdHRvbTogMDsgfVxyXG4gIC5tZnAtaW1nLW1vYmlsZSAubWZwLWZpZ3VyZSBzbWFsbCB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmU7XHJcbiAgICBtYXJnaW4tbGVmdDogNXB4OyB9XHJcbiAgLm1mcC1pbWctbW9iaWxlIC5tZnAtYm90dG9tLWJhciB7XHJcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7XHJcbiAgICBib3R0b206IDA7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICB0b3A6IGF1dG87XHJcbiAgICBwYWRkaW5nOiAzcHggNXB4O1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxyXG4gICAgLm1mcC1pbWctbW9iaWxlIC5tZnAtYm90dG9tLWJhcjplbXB0eSB7XHJcbiAgICAgIHBhZGRpbmc6IDA7IH1cclxuICAubWZwLWltZy1tb2JpbGUgLm1mcC1jb3VudGVyIHtcclxuICAgIHJpZ2h0OiA1cHg7XHJcbiAgICB0b3A6IDNweDsgfVxyXG4gIC5tZnAtaW1nLW1vYmlsZSAubWZwLWNsb3NlIHtcclxuICAgIHRvcDogMDtcclxuICAgIHJpZ2h0OiAwO1xyXG4gICAgd2lkdGg6IDM1cHg7XHJcbiAgICBoZWlnaHQ6IDM1cHg7XHJcbiAgICBsaW5lLWhlaWdodDogMzVweDtcclxuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC42KTtcclxuICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIHBhZGRpbmc6IDA7IH0gfVxyXG5cclxuQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogOTAwcHgpIHtcclxuICAubWZwLWFycm93IHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjc1KTtcclxuICAgIHRyYW5zZm9ybTogc2NhbGUoMC43NSk7IH1cclxuICAubWZwLWFycm93LWxlZnQge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiAwO1xyXG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMDsgfVxyXG4gIC5tZnAtYXJyb3ctcmlnaHQge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiAxMDAlO1xyXG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMTAwJTsgfVxyXG4gIC5tZnAtY29udGFpbmVyIHtcclxuICAgIHBhZGRpbmctbGVmdDogNnB4O1xyXG4gICAgcGFkZGluZy1yaWdodDogNnB4OyB9IH1cclxuXHJcbi8vIHNhc3MtbGludDplbmFibGUgaW5kZW50YXRpb24gbm8tcXVhbGlmeWluZy1lbGVtZW50cyBzaG9ydGhhbmQtdmFsdWVzIHNpbmdsZS1saW5lLXBlci1zZWxlY3RvciBjbGFzcy1uYW1lLWZvcm1hdCBuby1pZHMgaWQtbmFtZS1mb3JtYXQgcHJvcGVydHktc29ydC1vcmRlciBuby1jb2xvci1saXRlcmFscyBoZXgtbm90YXRpb24gYnJhY2Utc3R5bGUgemVyby11bml0IHNwYWNlLWFmdGVyLWNvbG9uIGVtcHR5LWxpbmUtYmV0d2Vlbi1ibG9ja3NcclxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgQmFzZVxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLyoqXHJcbiAqIFJlbW92ZSBtYXJnaW4gYW5kIHBhZGRpbmcgZnJvbSBldmVyeSBzZWxlY3RvciBpbmNsdWRpbmcgdGhlaXJcclxuICogcHN1ZWRvIHNlbGVjdG9ycy5cclxuICpcclxuICogMS4gTW9yZSBzZW5zaWJsZSBkZWZhdWx0IGJveCBzaXppbmcuXHJcbiAqICAgIChjc3MtdHJpY2tzLmNvbS9pbmhlcml0aW5nLWJveC1zaXppbmctcHJvYmFibHktc2xpZ2h0bHktYmV0dGVyLWJlc3QtcHJhY3RpY2UpLlxyXG4gKi9cclxuXHJcbiosXHJcbio6OmJlZm9yZSxcclxuKjo6YWZ0ZXIge1xyXG4gIG1hcmdpbjogMDtcclxuICBwYWRkaW5nOiAwO1xyXG4gIGJveC1zaXppbmc6IGluaGVyaXQ7IC8qIDEgKi9cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBTZXQgaGVpZ2h0IG9mIHRoZSBkb2N1bWVudCB0byBtYXhpdW0gdmlld3BvcnQgaGVpZ2h0LlxyXG4gKlxyXG4gKiAxLiBTZXQgcm9vdCBmb250IHNpemUgdG8gMTAuXHJcbiAqL1xyXG5cclxuaHRtbCB7XHJcbiAgaGVpZ2h0OiAxMDB2aDtcclxuICBmb250LXNpemU6IDYyLjUlOyAvKiAxICovXHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBTZXQgbWluaW1hbCBoZWlnaHQgb2YgdGhlIGJvZHkgdG8gbWF4aW11bSB2aWV3cG9ydCBoZWlnaHQgdG9cclxuICogbWF0Y2ggdGhlIGRvY3VtZW50J3MgaGVpZ2h0LlxyXG4gKlxyXG4gKiAxLiBGaXJlZm94IDI1Ky5cclxuICogMi4gQ2hyb21lIDUrLlxyXG4gKi9cclxuXHJcbmJvZHkge1xyXG4gIEBpbmNsdWRlIHRleHQoJGJvZHktdGV4dCk7XHJcbiAgbWluLWhlaWdodDogMTAwdmg7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJvZHktYmFja2dyb3VuZC1jb2xvcjtcclxuICBjb2xvcjogJGJvZHktY29sb3I7XHJcbiAgZm9udC1mYW1pbHk6ICRib2R5LWZvbnQtZmFtaWx5O1xyXG4gIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XHJcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsgLyogMSAqL1xyXG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOyAvKiAyICovXHJcbn1cclxuIiwiLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuLy8gTWl4aW5zXHJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vLyBDb250YWluZXJcclxuLy8gQ2VudGVyIGFsaWducyBlbGVtZW50IHdpdGggZ2l2ZW4gbWF4aW11bSB3aWR0aCwgcGFkZGluZywgYW5kIG1hcmdpbnMgdG9wXHJcbi8vIGFuZCBib3R0b20uXHJcbi8vIEBwYXJhbSB7U3RyaW5nfSAkd2lkdGggLSBQaXhlbCB1bml0IHZhbHVlLlxyXG4vLyBAcGFyYW0ge1N0cmluZ30gJGdhcCAtIFBpeGVsIHVuaXQgdmFsdWUuXHJcbi8vIEBleGFtcGxlXHJcbi8vICAgQGluY2x1ZGUgY29udGFpbmVyKDEwMjRweCwgMjBweCk7XHJcbkBtaXhpbiBjb250YWluZXIoJHdpZHRoOiAkZ3JpZC13aWR0aCwgJGdhcDogJGdyaWQtZ2FwKSB7XHJcbiAgQGlmICh0eXBlLW9mKCR3aWR0aCkgPT0gbnVtYmVyIGFuZCB0eXBlLW9mKCRnYXApID09IG51bWJlcikge1xyXG4gICAgQGlmICgkZ2FwICE9IDApIHtcclxuICAgICAgbWF4LXdpZHRoOiBjYWxjKCN7JHdpZHRofSArICN7KCRnYXAgKiAyKX0pO1xyXG4gICAgICBwYWRkaW5nOiAwICRnYXA7XHJcbiAgICB9IEBlbHNlIHtcclxuICAgICAgbWF4LXdpZHRoOiAkd2lkdGg7XHJcbiAgICB9XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gIH0gQGVsc2Uge1xyXG4gICAgQGVycm9yICdBcmd1bWVudHMgYCR3aWR0aGAgYW5kIGAkZ2FwYCBzaG91bGQgYmUgYSBudW1iZXInO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8vIFNlY3Rpb25cclxuLy8gQWRkIHRvcCBhbmQgYm90dG9tIHNwYWNpbmcgdG8gZWxlbWVudCB1c2luZyBwYWRkaW5ncy5cclxuLy8gQHBhcmFtIHtTdHJpbmd9ICR0b3AgLSBQaXhlbCB1bml0IHZhbHVlLlxyXG4vLyBAcGFyYW0ge1N0cmluZ30gJGJvdHRvbSAtIFBpeGVsIHVuaXQgdmFsdWUuXHJcbi8vIEBleGFtcGxlXHJcbi8vICAgQGluY2x1ZGUgc2VjdGlvbigxMDBweCwgMTAwcHgpO1xyXG5AbWl4aW4gc2VjdGlvbigkdG9wOiAwLCAkYm90dG9tOiAwKSB7XHJcbiAgQGlmICh0eXBlLW9mKCR0b3ApID09IG51bWJlciBhbmQgdHlwZS1vZigkYm90dG9tKSA9PSBudW1iZXIpIHtcclxuICAgIHBhZGRpbmc6ICR0b3AgMCAkYm90dG9tO1xyXG4gIH0gQGVsc2Uge1xyXG4gICAgQGVycm9yICdBcmd1bWVudHMgYCR0b3BgIGFuZCBgYm90dG9tYCBzaG91bGQgYmUgYSBudW1iZXInO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8vIEZvbnRcclxuLy8gQWRkcyBgcmVtYCB1bml0IGJhc2VkIGZvbnQgc2l6ZSBwcm9wZXJ0eSwgYSBmYWxsYmFja1xyXG4vLyBgcHhgIHVuaXQgYmFzZWQgZm9udCBzaXplIHByb3BlcnR5LCBhbmQgYSBgZW1gIHVuaXQgYmFzZWQgbGluZSBoZWlnaHRcclxuLy8gcHJvcGVydHkgdG8gYW55IHJ1bGUuXHJcbi8vIEBwYXJhbSB7U3RyaW5nfSAkZm9udC1zaXplIC0gUGl4ZWwgdW5pdCB2YWx1ZS5cclxuLy8gQHBhcmFtIHtTdHJpbmd9ICRsaW5lLWhlaWdodCAtIFBpeGVsIHVuaXQgdmFsdWUuXHJcbi8vIEBleGFtcGxlXHJcbi8vICAgQGluY2x1ZGUgZm9udC1zaXplKDE2cHgsIDI0cHgpO1xyXG5AbWl4aW4gZm9udCgkZm9udC1zaXplLCAkbGluZS1oZWlnaHQpIHtcclxuICBAaWYgKHR5cGUtb2YoJGZvbnQtc2l6ZSkgPT0gbnVtYmVyIGFuZCB1bml0KCRmb250LXNpemUpID09ICdweCcpIHtcclxuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcclxuICAgIGZvbnQtc2l6ZTogcmVtKCRmb250LXNpemUpOyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLWR1cGxpY2F0ZS1wcm9wZXJ0aWVzXHJcbiAgfSBAZWxzZSB7XHJcbiAgICBAZXJyb3IgJ1ZhbHVlIGZvciBgI3skZm9udC1zaXplfWAgc2hvdWxkIGJlIGEgYHB4YCB1bml0JztcclxuICB9XHJcbiAgQGlmICh0eXBlLW9mKCRsaW5lLWhlaWdodCkgPT0gbnVtYmVyIGFuZCB1bml0KCRsaW5lLWhlaWdodCkgPT0gJ3B4Jykge1xyXG4gICAgbGluZS1oZWlnaHQ6ICgoJGxpbmUtaGVpZ2h0IC8gJGZvbnQtc2l6ZSkgKiAxZW0pO1xyXG4gIH0gQGVsc2Uge1xyXG4gICAgQGVycm9yICdWYWx1ZSBmb3IgYCN7JGxpbmUtaGVpZ2h0fWAgc2hvdWxkIGJlIGEgYHB4YCB1bml0JztcclxuICB9XHJcbn1cclxuXHJcblxyXG4vLyBUZXh0XHJcbi8vIFNob3J0aGFuZCBmb3IgdGhlIGZvbnQgbWl4aW4sIHJ1bnMgdGhlIGZvbnQgbWl4aW4gYmFzZWQgb24gYSBjb21tb25cclxuLy8gZGVtZWFub3VyIGV4aXN0aW5nIGJvdGggaW4gdGhlIGAkZm9udC1zaXplYCBhbmQgdGhlIGAkbGluZS1oZWlnaHRgIG1hcHMuXHJcbi8vIEBwYXJhbSB7c3RyaW5nfSAkdmFsdWUgLSBTdHJpbmdcclxuLy8gQGV4YW1wbGVcclxuLy8gICBAaW5jbHVkZSB0ZXh0KCdwJyk7XHJcbkBtaXhpbiB0ZXh0KCR2YWx1ZSkge1xyXG4gIEBpZiAodHlwZS1vZigkdmFsdWUpID09IHN0cmluZykge1xyXG4gICAgQGluY2x1ZGUgZm9udChtYXAtZ2V0KCRmb250LXNpemUsICR2YWx1ZSksIG1hcC1nZXQoJGxpbmUtaGVpZ2h0LCAkdmFsdWUpKTtcclxuICB9IEBlbHNlIHtcclxuICAgIEBlcnJvciAnVmFsdWUgc2hvdWxkIGJlIGEgc3RyaW5nJztcclxuICB9XHJcbn1cclxuXHJcblxyXG4vLyBGb250IEF3ZXNvbWVcclxuLy8gQWRkIEZvbnQgQXdlc29tZSBpY29ucyBhcyBwc3VlZG8gZWxlbWVudHMgYnkgdXNpbmcgdGhlaXIgdW5pY29kZS5cclxuLy8gQHBhcmFtIHtTdHJpbmd9ICRjb250ZW50IC0gVW5pY29kZSBzdHJpbmcuXHJcbi8vIEBwYXJhbSB7U3RyaW5nfSAkZmFtaWx5IC0gRm9udCBBd2Vzb21lIGZvbnQgZmFtaWx5IHN0cmluZy5cclxuLy8gQGV4YW1wbGVcclxuLy8gICBAaW5jbHVkZSBmb250YXdlc29tZSgnZjEwMCcsICdMaWdodCcpO1xyXG5AbWl4aW4gZm9udGF3ZXNvbWUoJGNvbnRlbnQsICRmYW1pbHkpIHtcclxuICBAaWYgKHR5cGUtb2YoJGZhbWlseSkgPT0gc3RyaW5nKSB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgZm9udC1mYW1pbHk6ICdGb250IEF3ZXNvbWUgNSAjeyRmYW1pbHl9JztcclxuICAgIGNvbnRlbnQ6IHVuaWNvZGUoJGNvbnRlbnQpO1xyXG4gIH0gQGVsc2Uge1xyXG4gICAgQGVycm9yICdBcmd1bWVudCBgJGZhbWlseWAgc2hvdWxkIGJlIGEgc3RyaW5nJztcclxuICB9XHJcbn1cclxuXHJcblxyXG4vLyBNZWRpYVxyXG4vLyBNZWRpYSBxdWVyaWVzIGFjY29yZGluZyB0byBcIlRoZSAxMDAlIENvcnJlY3QgV2F5IFRvIERvIENTUyBCcmVha3BvaW50c1wiXHJcbi8vIChodHRwczovL21lZGl1bS5mcmVlY29kZWNhbXAuY29tL3RoZS0xMDAtY29ycmVjdC13YXktdG8tZG8tY3NzLWJyZWFrcG9pbnRzLTg4ZDZhNWJhMTg2MikuXHJcbi8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCAtIEJyZWFrcG9pbnQgcGl4ZWwgdW5pdCB2YWx1ZS5cclxuLy8gQGV4YW1wbGVcclxuLy8gICBAaW5jbHVkZSBtZWRpYSgncGhvbmUnKSB7fVxyXG5AbWl4aW4gbWVkaWEoJHNpemUpIHtcclxuICBAaWYgKCRzaXplID09ICdkZXNrdG9wJykge1xyXG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZChtaW4td2lkdGg6IDEyMDBweCkge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9IEBlbHNlIGlmICgkc2l6ZSA9PSAndGFibGV0LWxhbmRzY2FwZS11cCcpIHtcclxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQobWluLXdpZHRoOiA5MDBweCkge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9IEBlbHNlIGlmICgkc2l6ZSA9PSAndGFibGV0LWxhbmRzY2FwZScpIHtcclxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQobWluLXdpZHRoOiA5MDBweCkgYW5kKG1heC13aWR0aDogMTE5OXB4KSB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH0gQGVsc2UgaWYgKCRzaXplID09ICd0YWJsZXQtbGFuZHNjYXBlLWRvd24nKSB7XHJcbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kKG1heC13aWR0aDogMTE5OXB4KSB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH0gQGVsc2UgaWYgKCRzaXplID09ICd0YWJsZXQtcG9ydHJhaXQtdXAnKSB7XHJcbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kKG1pbi13aWR0aDogNjAwcHgpIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfSBAZWxzZSBpZiAoJHNpemUgPT0gJ3RhYmxldC1wb3J0cmFpdCcpIHtcclxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQobWluLXdpZHRoOiA2MDBweCkgYW5kKG1heC13aWR0aDogODk5cHgpIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfSBAZWxzZSBpZiAoJHNpemUgPT0gJ3RhYmxldC1wb3J0cmFpdC1kb3duJykge1xyXG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZChtYXgtd2lkdGg6IDg5OXB4KSB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH0gQGVsc2UgaWYgKCRzaXplID09ICd0YWJsZXQnKSB7XHJcbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kKG1pbi13aWR0aDogNjAwcHgpIGFuZChtYXgtd2lkdGg6IDExOTlweCkge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9IEBlbHNlIGlmICgkc2l6ZSA9PSAncGhvbmUnKSB7XHJcbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kKG1heC13aWR0aDogNTk5cHgpIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfSBAZWxzZSB7XHJcbiAgICBAY29udGVudDtcclxuICB9XHJcbn1cclxuIiwiLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuLy8gVHlwb2dyYXBoeVxyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLy8gRm9udCBmYW1pbHkgbWFwLlxyXG4kZm9udC1mYW1pbHk6IChcclxuICAnZGVmYXVsdCc6ICdPcGVuIFNhbnMnXHJcbik7XHJcblxyXG5cclxuLy8gRm9udCBzaXplIG1hcC5cclxuJGZvbnQtc2l6ZTogKFxyXG4gICdoMSc6IDMycHgsXHJcbiAgJ2gyJzogMjhweCxcclxuICAnaDMnOiAyNHB4LFxyXG4gICdoNCc6IDIycHgsXHJcbiAgJ2g1JzogMjBweCxcclxuICAnaDYnOiAxOHB4LFxyXG4gICdwJzogMTZweFxyXG4pO1xyXG5cclxuXHJcbi8vIExpbmUgaGVpZ2h0IG1hcC5cclxuJGxpbmUtaGVpZ2h0OiAoXHJcbiAgJ2gxJzogNTBweCxcclxuICAnaDInOiAzNHB4LFxyXG4gICdoMyc6IDI5cHgsXHJcbiAgJ2g0JzogMzJweCxcclxuICAnaDUnOiAzMnB4LFxyXG4gICdoNic6IDMycHgsXHJcbiAgJ3AnOiAyNXB4XHJcbik7XHJcbiIsIi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbi8vIEZ1bmN0aW9uc1xyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLy8gVW5pY29kZVxyXG4vLyBQcmVzZXJ2ZSBlc2NhcGVkIHVuaWNvZGUgc3RyaW5nLlxyXG4vLyBAcGFyYW0ge1N0cmluZ30gJHN0cmluZyAtIEFuIHVuaWNvZGUgc3RyaW5nLlxyXG4vLyBAcmV0dXJuIHtTdHJpbmd9IEEgcHJlc2VydmVkIGVzY2FwZWQgdW5pY29kZSBzdHJpbmdcclxuLy8gc2Fzcy1saW50OmRpc2FibGUgcXVvdGVzXHJcbkBmdW5jdGlvbiB1bmljb2RlKCRzdHJpbmcpIHtcclxuICBAcmV0dXJuIHVucXVvdGUoXCJcXCdcIikgKyB1bnF1b3RlKHN0ci1pbnNlcnQoJHN0cmluZywgJ1xcXFwnLCAxKSkgKyB1bnF1b3RlKFwiXFwnXCIpO1xyXG59XHJcbi8vIHNhc3MtbGludDplbmFibGUgcXVvdGVzXHJcblxyXG5cclxuLy8gUkVNXHJcbi8vIENvbnZlcnQgcGl4ZWwgdW5pdHMgdG8gUkVNIHVuaXRzLlxyXG4vLyBAcGFyYW0ge051bWJlcn0gJHBpeGVscyAtIFBpeGVsIHZhbHVlLlxyXG4vLyBAcmV0dXJuIHsqfSAtIEEgY29udmVydGVkIGByZW1gIHVuaXQuXHJcbkBmdW5jdGlvbiByZW0oJHBpeGVscykge1xyXG4gIEBpZiAodW5pdGxlc3MoJHBpeGVscykpIHtcclxuICAgIEBlcnJvciAnVmFsdWUgZm9yIGAjeyRwaXhlbHN9YCBzaG91bGQgYmUgYSBgcHhgIHVuaXQuJztcclxuICB9XHJcbiAgQHJldHVybiAoKCRwaXhlbHMgLyAxMHB4KSAqIDFyZW0pO1xyXG59XHJcblxyXG5cclxuLy8gQ29sdW1uXHJcbi8vIENhbGN1bGF0ZSBnaXZlbiBjb2x1bW4gd2lkdGguXHJcbi8vIEBwYXJhbSB7TnVtYmVyfSAkY29sdW1uIC0gVGhlIGFtb3VudCBvZiBjb2x1bW5zIHRvIHNwYW4uXHJcbi8vIEBwYXJhbSB7TnVtYmVyfSAkY29sdW1ucyAtIFRoZSBhbW91bnQgb2YgY29sdW1ucyB0aGF0IGNhbiBiZSBzcGFubmVkLlxyXG4vLyBAcmV0dXJuIHtTdHJpbmd9IC0gUGVyY2VudGFnZSB2YWx1ZS5cclxuQGZ1bmN0aW9uIGNvbHVtbigkY29sdW1uLCAkY29sdW1uczogJGdyaWQtY29sdW1ucykge1xyXG4gIEByZXR1cm4gKCRjb2x1bW4gICogMTAwJSAvICRjb2x1bW5zKTtcclxufVxyXG5cclxuXHJcbi8vIENvbG9yXHJcbi8vIEdldCBhIGNvbG9yIHZhbHVlIGZyb20gdHdvIGxldmVscyBkZWVwIGluIHRoZSBgJGNvbG9yYCBtYXAuXHJcbi8vIEBwYXJhbSB7JHN0cmluZ30gJGtleSAtIEtleSBvZiB0aGUgY29sb3IgdG8gZ2V0IGZyb20gdGhlIG1hcC5cclxuLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZSAtIFZhbHVlIG9mIHRoZSBrZXkgdG8gZ2V0IGZyb20gdGhlIG1hcC5cclxuLy8gQHJldHVybiB7Kn0gQSBIU0xBIGNvbG9yIHZhbHVlLlxyXG5AZnVuY3Rpb24gY29sb3IoJGtleSwgJHZhbHVlKSB7XHJcbiAgQHJldHVybiBtYXAtZ2V0KG1hcC1nZXQoJGNvbG9ycywgJGtleSksICR2YWx1ZSk7XHJcbn1cclxuIiwiLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuLy8gQ29sb3JcclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8vIENvbG9yIG1hcC5cclxuJGNvbG9yczogKFxyXG4gICdibGFjayc6IChcclxuICAgICcxMCc6IGhzbGEoMCwgMCUsIDAlLCAwLjIpLFxyXG4gICAgJzI1JzogaHNsYSgwLCAwJSwgMCUsIDAuMjUpLFxyXG4gICAgJzEwMCc6IGhzbGEoMCwgMCUsIDAlLCAxKVxyXG4gICksXHJcbiAgJ3doaXRlJzogKFxyXG4gICAgJzEwMCc6IGhzbGEoMCwgMCUsIDEwMCUsIDEpXHJcbiAgKSxcclxuICAnZ3JleSc6IChcclxuICAgICcxMDAnOiBoc2xhKDAsIDAlLCA3NCUsIDEpXHJcbiAgKSxcclxuICAndGVhYmVycnknOiAoXHJcbiAgICAnMjUnOiBoc2xhKDM1MCwgNzAlLCA0NSUsIDAuMjUpLFxyXG4gICAgJzUwJzogaHNsYSgzNTAsIDcwJSwgNDUlLCAwLjUpLFxyXG4gICAgJzYwJzogaHNsYSgzNTAsIDcwJSwgNDUlLCAwLjYpLFxyXG4gICAgJzcwJzogaHNsYSgzNTAsIDcwJSwgNDUlLCAwLjcpLFxyXG4gICAgJzgwJzogaHNsYSgzNTAsIDcwJSwgNDUlLCAwLjgpLFxyXG4gICAgJzEwMCc6IGhzbGEoMzUwLCA3MCUsIDQ1JSwgMSksXHJcbiAgICAnMjAwJzogaHNsYSgzNTAsIDU2JSwgNTglLCAxKVxyXG4gICksXHJcbiAgJ3JlZCc6IChcclxuICAgICcxMDAnOiBoc2xhKDAsIDk3JSwgNjIlLCAxKSxcclxuICApXHJcblxyXG4pO1xyXG5cclxuLy8gQ29sb3Igc2hvcnRoYW5kIHZhcmlhYmxlcy5cclxuXHJcbi8vIEJsYWNrXHJcbiRjb2xvci1ibGFjay0xMDogICAgbWFwLWdldChtYXAtZ2V0KCRjb2xvcnMsICdibGFjaycpLCAnMTAnKTtcclxuJGNvbG9yLWJsYWNrLTI1OiAgICBtYXAtZ2V0KG1hcC1nZXQoJGNvbG9ycywgJ2JsYWNrJyksICcyNScpO1xyXG4kY29sb3ItYmxhY2stMTAwOiAgIG1hcC1nZXQobWFwLWdldCgkY29sb3JzLCAnYmxhY2snKSwgJzEwMCcpO1xyXG5cclxuXHJcbi8vIFdoaXRlXHJcbiRjb2xvci13aGl0ZS0xMDA6ICAgbWFwLWdldChtYXAtZ2V0KCRjb2xvcnMsICd3aGl0ZScpLCAnMTAwJyk7XHJcblxyXG4vLyBHcmV5XHJcbiRjb2xvci1ncmV5LTEwMDogICAgbWFwLWdldChtYXAtZ2V0KCRjb2xvcnMsICdncmV5JyksICcxMDAnKTtcclxuXHJcbi8vIEdyZWVuXHJcbiRjb2xvci10ZWFiZXJyeS0yNTogICAgbWFwLWdldChtYXAtZ2V0KCRjb2xvcnMsICd0ZWFiZXJyeScpLCAnMjUnKTtcclxuJGNvbG9yLXRlYWJlcnJ5LTUwOiAgICBtYXAtZ2V0KG1hcC1nZXQoJGNvbG9ycywgJ3RlYWJlcnJ5JyksICc1MCcpO1xyXG4kY29sb3ItdGVhYmVycnktNjA6ICAgIG1hcC1nZXQobWFwLWdldCgkY29sb3JzLCAndGVhYmVycnknKSwgJzYwJyk7XHJcbiRjb2xvci10ZWFiZXJyeS03MDogICAgbWFwLWdldChtYXAtZ2V0KCRjb2xvcnMsICd0ZWFiZXJyeScpLCAnNzAnKTtcclxuJGNvbG9yLXRlYWJlcnJ5LTgwOiAgICBtYXAtZ2V0KG1hcC1nZXQoJGNvbG9ycywgJ3RlYWJlcnJ5JyksICc4MCcpO1xyXG4kY29sb3ItdGVhYmVycnktMTAwOiAgIG1hcC1nZXQobWFwLWdldCgkY29sb3JzLCAndGVhYmVycnknKSwgJzEwMCcpO1xyXG4kY29sb3ItdGVhYmVycnktMjAwOiAgIG1hcC1nZXQobWFwLWdldCgkY29sb3JzLCAndGVhYmVycnknKSwgJzIwMCcpO1xyXG5cclxuLy8gUmVkXHJcbiRjb2xvci1yZWQtMTAwOiAgICAgbWFwLWdldChtYXAtZ2V0KCRjb2xvcnMsICdyZWQnKSwgJzEwMCcpO1xyXG5cclxuXHJcbi8vIFByaW1hcnkgY29sb3IuXHJcbiRjb2xvci1wcmltYXJ5OiAgICAgJGNvbG9yLXRlYWJlcnJ5LTEwMDtcclxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgUmVzZXRcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBDdXN0b20gdXNlciBhZ2VudCByZXNldHMgYW5kIG92ZXJyaWRlcyB0aGF0IGFyZSBub3QgcHJlc2VudCBpblxyXG4gKiBOb3JtYWxpemUgOC4wLjAuIFRoaXMgbW9zdGx5IHJlbW92ZXMgc29tZSBhbm5veWluZyBtYXJnaW4gYW5kIHBhZGRpbmdcclxuICogZGVmYXVsdHMsIGJvcmRlciByYWRpdXMsIGFuZCBvdXRsaW5lcy5cclxuICovXHJcblxyXG5hIHtcclxuICBjb2xvcjogaW5oZXJpdDtcclxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogMS4gUmVtb3ZlIGJvcmRlciByYWRpdXMgb24gQ2hyb21lIDYyLjArIG9uIG1hY09TLlxyXG4gKi9cclxuXHJcbmJ1dHRvbiB7XHJcbiAgYm9yZGVyOiAwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDA7IC8qIDEgKi9cclxuICBvdXRsaW5lOiBub25lO1xyXG4gIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG5maWVsZHNldCB7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIHBhZGRpbmc6IDA7XHJcbiAgYm9yZGVyOiAwO1xyXG59XHJcblxyXG5maWd1cmUge1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuaDEsXHJcbmgyLFxyXG5oMyxcclxuaDQsXHJcbmg1LFxyXG5oNiB7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIHBhZGRpbmc6IDA7XHJcbiAgZm9udC1zaXplOiBpbmhlcml0O1xyXG4gIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xyXG59XHJcblxyXG5ociB7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIHBhZGRpbmc6IDA7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogMS4gUmVtb3ZlIHdoaXRlIHNwYWNlLlxyXG4gKi9cclxuXHJcbmltZyB7XHJcbiAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogYXV0bztcclxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyAvKiAxICovXHJcbn1cclxuXHJcblxyXG4vKipcclxuICogMS4gUmVtb3ZlIGluaGVyaXRlZCB1c2VyIGFnZW50IGFwcGVhcmFuY2UuXHJcbiAqL1xyXG5cclxuaW5wdXQsXHJcbnNlbGVjdCxcclxudGV4dGFyZWEge1xyXG4gIG1heC13aWR0aDogMTAwJTtcclxuICBib3JkZXI6IDA7XHJcbiAgYm9yZGVyLXJhZGl1czogMDtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIGFwcGVhcmFuY2U6IG5vbmU7IC8qIDEgKi9cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiAxLiBPbmx5IGFsbG93IHZlcnRpY2FsIHJlc2l6aW5nIHRvIHByZXZlbnQgdGhlIHRleHRhcmVhXHJcbiAqICAgIGZyb20gb3ZlcmZsb3dpbmcgdGhlIGNvbnRhaW5lci5cclxuICovXHJcblxyXG50ZXh0YXJlYSB7XHJcbiAgcmVzaXplOiB2ZXJ0aWNhbDtcclxufVxyXG5cclxudWwsXHJcbm9sIHtcclxuICBtYXJnaW46IDA7XHJcbiAgcGFkZGluZzogMDtcclxuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XHJcbn1cclxuXHJcbnAge1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiAxLiBDb2xsYXBzZSBib3JkZXJzIHRvIHByZXZlbnQgZG91YmxlIHNpZGVkIGJvcmRlcnMuXHJcbiAqL1xyXG5cclxudGFibGUge1xyXG4gIG1heC13aWR0aDogMTAwJTtcclxuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyAvKiAxICovXHJcbn1cclxuXHJcbnN0cm9uZyB7XHJcbiAgZm9udC13ZWlnaHQ6IDcwMDtcclxufVxyXG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBCdXR0b25zXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG5cclxuLyoqXHJcbiAqIEJ1dHRvbiBiYXNlLlxyXG4gKi9cclxuXHJcbi5idXR0b24ge1xyXG4gIEBpbmNsdWRlIGZvbnQoMTRweCwgMjBweCk7XHJcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgcGFkZGluZzogN3B4IDEycHg7XHJcbiAgdHJhbnNpdGlvbjogYWxsIDI1MG1zIGVhc2U7XHJcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuXHJcbiAgc3ZnIHtcclxuICAgIHdpZHRoOiAxMXB4O1xyXG4gICAgaGVpZ2h0OiAxMXB4O1xyXG4gIH1cclxuXHJcbiAgJi5zdmctcmlnaHQgc3ZnIHtcclxuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xyXG4gIH1cclxuXHJcbiAgJi5zdmctbGVmdCBzdmcge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBCdXR0b24gcHJpbWFyeSAoZ3JlZW4pLlxyXG4gKi9cclxuXHJcbi5idXR0b24tcHJpbWFyeS0tZ3JlZW4ge1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvci10ZWFiZXJyeS0xMDA7XHJcbiAgYmFja2dyb3VuZDogJGNvbG9yLXRlYWJlcnJ5LTEwMDtcclxuICBjb2xvcjogJGNvbG9yLXdoaXRlLTEwMDtcclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgnZGVza3RvcCcpIHtcclxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICAgIGNvbG9yOiAkY29sb3ItdGVhYmVycnktMTAwO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBCdXR0b24gc2Vjb25kYXJ5IChncmVlbikuXHJcbiAqL1xyXG5cclxuLmJ1dHRvbi1zZWNvbmRhcnktLWdyZWVuIHtcclxuICBib3JkZXI6IDFweCBzb2xpZCAkY29sb3ItdGVhYmVycnktMTAwO1xyXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gIGNvbG9yOiAkY29sb3ItdGVhYmVycnktMTAwO1xyXG5cclxuICAmOmhvdmVyIHtcclxuICAgIEBpbmNsdWRlIG1lZGlhKCdkZXNrdG9wJykge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItdGVhYmVycnktMTAwO1xyXG4gICAgICBjb2xvcjogJGNvbG9yLXdoaXRlLTEwMDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogQnV0dG9uIHNlY29uZGFyeSAod2hpdGUpLlxyXG4gKi9cclxuXHJcbi5idXR0b24tc2Vjb25kYXJ5LS13aGl0ZSB7XHJcbiAgcGFkZGluZzogMTBweCAxNXB4O1xyXG4gIGJvcmRlcjogMnB4IHNvbGlkICRjb2xvci13aGl0ZS0xMDA7XHJcbiAgYmFja2dyb3VuZDogJGNvbG9yLWJsYWNrLTI1O1xyXG4gIGNvbG9yOiAkY29sb3Itd2hpdGUtMTAwO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgnZGVza3RvcCcpIHtcclxuICAgICAgYmFja2dyb3VuZDogJGNvbG9yLXRlYWJlcnJ5LTI1O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBDb250YWluZXJcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBUaGUgY29udGFpbmVyIG9iamVjdCBjZW50ZXJzIGFuIGVsZW1lbnQgaW4gdGhlIGRvY3VtZW50LlxyXG4gKi9cclxuXHJcbi5jb250YWluZXIge1xyXG4gIEBpbmNsdWRlIGNvbnRhaW5lcjtcclxufVxyXG4iLCIvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4vLyBEZWZpbml0aW9uc1xyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLy8gR3JpZFxyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLy8gR3JpZCB3aWR0aC5cclxuLy8gTWF4aW11bSBjb250YWluZXIgd2lkdGguXHJcbiRncmlkLXdpZHRoOiAxMDI0cHg7XHJcblxyXG4vLyBHcmlkIGNvbHVtbnMuXHJcbi8vIEFtb3VudCBvZiBncmlkIGNvbHVtbnMgdG8gY2FsY3VsYXRlIGEgY29sdW1uIHdpZHRoIHdpdGguXHJcbiRncmlkLWNvbHVtbnM6IDEyO1xyXG5cclxuLy8gR3JpZCBnYXAuXHJcbi8vIFNwYWNlIGJldHdlZW4gZ3JpZCBjb2x1bW5zLCBhdXRvbWF0ZWQuXHJcbiRncmlkLWdhcDogMjBweDtcclxuXHJcblxyXG4vLyBBc3NldHNcclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8vIEltYWdlIHBhdGguXHJcbiRpbWFnZS1wYXRoOiAnLi4vaW1hZ2VzLyc7XHJcblxyXG5cclxuLy8gQm9keVxyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLy8gQm9keSBiYWNrZ3JvdW5kIGNvbG9yLlxyXG4kYm9keS1iYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3Itd2hpdGUtMTAwO1xyXG5cclxuLy8gQm9keSBjb2xvci5cclxuJGJvZHktY29sb3I6ICRjb2xvci1ibGFjay0xMDA7XHJcblxyXG4vLyBCb2R5IGZvbnQgZmFtaWx5LlxyXG4kYm9keS1mb250LWZhbWlseTogbWFwLWdldCgkZm9udC1mYW1pbHksICdkZWZhdWx0Jyk7XHJcblxyXG4vLyBCb2R5IHRleHQuXHJcbiRib2R5LXRleHQ6ICdwJztcclxuXHJcblxyXG4vLyBPdGhlclxyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLy8gTGluayBjb2xvci5cclxuJGxpbmstY29sb3I6ICRjb2xvci1ibGFjay0xMDA7XHJcblxyXG5cclxuLy8gUmVzcG9uc2l2ZVxyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLy8gR3JpZCBicmVha3BvaW50IGFsaWFzLlxyXG4kYnJlYWtwb2ludHM6IChcclxuICB4czogbnVsbCxcclxuICBzbTogJ3Bob25lJyxcclxuICBtZDogJ3RhYmxldC1wb3J0cmFpdC11cCcsXHJcbiAgbGc6ICd0YWJsZXQtbGFuZHNjYXBlLXVwJyxcclxuICB4bDogJ2Rlc2t0b3AnXHJcbik7XHJcbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIENvbnRlbnQgQ29uc3RyYWludFxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLyoqXHJcbiAqIFRoZSBjb250ZW50IGNvbnN0cmFpbnQgaXMgYSBjb25zdHJhaW50IGZvciBhbGwgdGhlIGNvbnRlbnQgd2l0aGluXHJcbiAqIHRoZSBkb2N1bWVudC4gSXQgY2FuIGJlIG1hbmlwdWxhdGVkIGJ5IENTUyBvciBKYXZhU2NyaXB0IHdpdGhvdXRcclxuICogaW5mbHVlbmNpbmcgdGhlIGJvZHkuXHJcbiAqL1xyXG5cclxuLmNvbnRlbnQtY29uc3RyYWludCB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgRmxleFxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLyoqXHJcbiAqIEV4YW1wbGUgb2YgYSBmbGV4IGJhc2VkIGNvbHVtbiBncmlkIGxheW91dCBpbiBwcmFjdGljZTpcclxuICpcclxuICogPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gKiAgIDxkaXYgY2xhc3M9XCJjb2wgY29sLXhzLTYgY29sLXNtLTEyXCI+PC9kaXY+XHJcbiAqICAgPGRpdiBjbGFzcz1cImNvbCBjb2wteHMtNiBjb2wtc20tMTJcIj48L2Rpdj5cclxuICogPC9kaXY+XHJcbiAqXHJcbiAqIFRoaXMgZXhhbXBsZSB3aWxsIGNyZWF0ZSBhIHJvdyB3aXRoIHR3byBjb2x1bW5zIGVhY2ggZmlsbGluZyBoYWxmIHRoZSB3aWR0aFxyXG4gKiBvZiB0aGUgcm93IG9uIGFsbCBtZWRpYSwgYnV0IHdpbGwgY29udmVydCB0byBhIGZ1bGwgd2lkdGggY29sdW1uIG9uIHRoZVxyXG4gKiBzbWFsbCBgLXNtYCBicmVha3BvaW50IGFsaWFzLCB3aGljaCBpcyBtb2JpbGUgb25seS4gUmVmZXIgdG9cclxuICogYHNldHRpbmdzL19kZWZpbml0aW9ucy5zY3NzYCBmb3IgYWxsIGJyZWFrcG9pbnQgYWxpYXMuXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEZsZXggb2JqZWN0LlxyXG4gKlxyXG4gKiBUaXA6IFVzZSBmbGV4IG9uIGEgY29sdW1uIHRvIG1ha2UgdGhlIGJveCB0aGUgc2FtZSBoZWlnaHQgYXMgdGhlIGNvbHVtbi5cclxuICovXHJcblxyXG4uZmxleCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxufVxyXG5cclxuLmlubGluZS1mbGV4IHtcclxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcclxufVxyXG5cclxuLmZsZXgtd3JhcCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LXdyYXA6IHdyYXA7XHJcbn1cclxuXHJcbi5pbmxpbmUtZmxleC13cmFwIHtcclxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcclxuICBmbGV4LXdyYXA6IHdyYXA7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogRmxleCBvYmplY3Qgd2l0aCBhIGNvbHVtbiBiYXNlZCBsYXlvdXQgc3lzdGVtLlxyXG4gKi9cclxuXHJcbi5yb3cge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleDogMCAxIGF1dG87XHJcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcclxuICBtYXJnaW46IDAgLSN7KCRncmlkLWdhcC8yKX07XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogQm94LCB0aGUgaW5zaWRlIG9mIGEgY29sdW1uLlxyXG4gKi9cclxuXHJcbi5ib3gge1xyXG4gIGZsZXg6IDE7XHJcbn1cclxuXHJcblxyXG4vLyBMb29wIHRocm91Z2ggYWxsIHRoZSBrZXlzIGluIHRoZSBgJGJyZWFrcG9pbnRzYCB2YXJpYWJsZSBtYXAgZGVmaW5lZCBpblxyXG4vLyBgc2V0dGluZ3MvX2RlZmluaXRpb25zLnNjc3NgLlxyXG5AZWFjaCAka2V5LCAkdmFsdWUgaW4gJGJyZWFrcG9pbnRzIHtcclxuXHJcbiAgLy8gQ3JlYXRlIGEgbWVkaWEgcXVlcnkgZm9yIGV2ZXJ5IGtleSBpbiBgJGJyZWFrcG9pbnRzYC5cclxuICBAaW5jbHVkZSBtZWRpYSgkdmFsdWUpIHtcclxuXHJcbiAgICAvLyBJdGVyYXRlIGZyb20gMSB0aHJvdWdoIHRoZSBhbW91bnQgb2YgZ3JpZCBjb2x1bW5zIGRlZmluZWQgYnlcclxuICAgIC8vIGAkZ3JpZC1jb2x1bW5zYCBpbiBgc2V0dGluZ3MvX2RlZmluaXRpb25zLnNjc3NgLlxyXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcclxuXHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBDb2x1bW4gI3skaX0gZm9yIHRoZSBgI3ska2V5fWAgYnJlYWtwb2ludC5cclxuICAgICAgICovXHJcblxyXG4gICAgICAuY29sLSN7JGtleX0tI3skaX0ge1xyXG4gICAgICAgIGZsZXg6IDAgMSBhdXRvO1xyXG4gICAgICAgIHdpZHRoOiBjb2x1bW4oJGkpO1xyXG4gICAgICAgIHBhZGRpbmc6IDAgKCRncmlkLWdhcC8yKTtcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIC8vIE91dHB1dCBhbiBvZmZzZXQgdXRpbGl0eSBjbGFzcyBpZiB0aGUgaXRlcmF0b3IgaXMgbGVzcyB0aGFuIHRoZSBhbW91bnRcclxuICAgICAgLy8gb2YgZ3JpZCBjb2x1bW5zIGRlZmluZWQgYnkgYCRncmlkLWNvbHVtbnNgIGluXHJcbiAgICAgIC8vIGBzZXR0aW5ncy9fZGVmaW5pdGlvbnMuc2Nzc2AuXHJcbiAgICAgIEBpZiAoJGkgPCAkZ3JpZC1jb2x1bW5zKSB7XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIE9mZnNldCAjeyRpfSBmb3IgdGhlIGAjeyRrZXl9YCBicmVha3BvaW50LlxyXG4gICAgICAgICAqL1xyXG5cclxuICAgICAgICAub2Zmc2V0LSN7JGtleX0tI3skaX0ge1xyXG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IGNvbHVtbigkaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIExvb3AgdGhyb3VnaCBhbGwgdmFsdWVzIGZvciB0aGUgYGFsaWduLWl0ZW1zYCBwcm9wZXJ0eS5cclxuICAgIEBlYWNoICR2YWx1ZSBpbiBzdHJldGNoLCBjZW50ZXIsIGZsZXgtc3RhcnQsIGZsZXgtZW5kLCBiYXNlbGluZSB7XHJcblxyXG4gICAgICAvKipcclxuICAgICAgICogQWxpZ24gYCN7JHZhbHVlfWAgZm9yIHRoZSAjeyRrZXl9IGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xyXG5cclxuICAgICAgLmFsaWduLSN7JGtleX0tI3skdmFsdWV9IHtcclxuICAgICAgICBhbGlnbi1pdGVtczogJHZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIExvb3AgdGhyb3VnaCBhbGwgdmFsdWVzIGZvciB0aGUgYGp1c3RpZnktY29udGVudGAgcHJvcGVydHkuXHJcbiAgICBAZWFjaCAkdmFsdWUgaW4gc3RhcnQsIGNlbnRlciwgc3BhY2UtYmV0d2Vlbiwgc3BhY2UtYXJvdW5kLCBzcGFjZS1ldmVubHkge1xyXG5cclxuICAgICAgLyoqXHJcbiAgICAgICAqIEp1c3RpZnkgYCN7JHZhbHVlfWAgZm9yIHRoZSAjeyRrZXl9IGJyZWFrcG9pbnQuXHJcbiAgICAgICAqL1xyXG5cclxuICAgICAgLmp1c3RpZnktI3ska2V5fS0jeyR2YWx1ZX0ge1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogJHZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIExvb3AgdGhyb3VnaCBldmVyeSBkaXJlY3Rpb24gZnJvbSBsZWZ0IHRvIHJpZ2h0LlxyXG4gICAgQGVhY2ggJGRpcmVjdGlvbiBpbiBsZWZ0LCByaWdodCB7XHJcblxyXG4gICAgICAvKipcclxuICAgICAgICogQmxlZWQgI3skZGlyZWN0aW9ufSBmb3IgdGhlICN7JGtleX0gYnJlYWtwb2ludC5cclxuICAgICAgICovXHJcblxyXG4gICAgICAuYmxlZWQtI3ska2V5fS0jeyRkaXJlY3Rpb259IHtcclxuICAgICAgICBwYWRkaW5nLSN7JGRpcmVjdGlvbn06IDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPcmRlciBmaXJzdCBmb3IgdGhlIGAjeyRrZXl9YCBicmVha3BvaW50LlxyXG4gICAgICovXHJcblxyXG4gICAgLmZpcnN0LSN7JGtleX0ge1xyXG4gICAgICBvcmRlcjogLTE7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT3JkZXIgbGFzdCBmb3IgdGhlIGAjeyRrZXl9YCBicmVha3BvaW50LlxyXG4gICAgICovXHJcblxyXG4gICAgLmxhc3QtI3ska2V5fSB7XHJcbiAgICAgIG9yZGVyOiAxO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldmVyc2Ugb3JkZXIgZm9yIHRoZSBgI3ska2V5fWAgYnJlYWtwb2ludC5cclxuICAgICAqL1xyXG5cclxuICAgIC5yZXZlcnNlLSN7JGtleX0ge1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIEZvcm1cclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8vc2Fzcy1saW50OmRpc2FibGUgY2xhc3MtbmFtZS1mb3JtYXRcclxuXHJcbi8qKlxyXG4gKiBNYWluLlxyXG4gKi9cclxuXHJcbi5mb3JtIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogSW5wdXQgY29udGFpbmVyLlxyXG4gKi9cclxuXHJcbi5nZmllbGQge1xyXG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogSW5wdXQgbGFiZWwuXHJcbiAqL1xyXG5cclxuLmdmaWVsZF9sYWJlbCB7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIERlZmF1bHQgc2V0dGluZ3MgZm9yIHRoZSBpbnB1dHMuXHJcbiAqL1xyXG5cclxuLmZvcm0gc2VsZWN0LFxyXG4uZm9ybSBpbnB1dFt0eXBlPSd0ZXh0J10sXHJcbnRleHRhcmVhIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDM1cHg7XHJcbiAgcGFkZGluZzogMCAxMHB4O1xyXG4gIHRyYW5zaXRpb246IGFsbCAyNTBtcyBlYXNlO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvci1ncmV5LTEwMDtcclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkY29sb3ItdGVhYmVycnktMTAwO1xyXG4gIH1cclxuXHJcbiAgJjpmb2N1cyB7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkY29sb3ItdGVhYmVycnktNzA7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIFN1Ym1pdCBidXR0b24uXHJcbiAqL1xyXG5cclxuaW5wdXRbdHlwZT0nc3VibWl0J10ge1xyXG4gIEBleHRlbmQgLmJ1dHRvbjtcclxuICBAZXh0ZW5kIC5idXR0b24tcHJpbWFyeS0tZ3JlZW47XHJcblxyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtcG9ydHJhaXQtZG93bicpIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBTZWxlY3QgaW5wdXQuXHJcbiAqL1xyXG5cclxuLmdpbnB1dF9jb250YWluZXJfc2VsZWN0IHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcblxyXG4gIHN2ZyB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDEwcHg7XHJcbiAgICByaWdodDogMTVweDtcclxuICAgIHdpZHRoOiAxNHB4O1xyXG4gICAgaGVpZ2h0OiAxNHB4O1xyXG4gICAgY29sb3I6ICRjb2xvci10ZWFiZXJyeS0xMDA7XHJcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogVGV4dGFyZWEuXHJcbiAqL1xyXG5cclxudGV4dGFyZWEge1xyXG4gIGhlaWdodDogMTAwcHg7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogRXJyb3IgbWVzc2FnZXMuXHJcbiAqL1xyXG5cclxuLy8gVmFsaWRhdGlvbiBjb250YWluZXIuXHJcbi5nZm9ybV92YWxpZGF0aW9uX2NvbnRhaW5lciAge1xyXG4gIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuXHJcbi8vIE1haW4gZXJyb3IuXHJcbi5nZmllbGRfZXJyb3Ige1xyXG5cclxuICBpbnB1dCB7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkY29sb3ItcmVkLTEwMCAhaW1wb3J0YW50O1xyXG4gIH1cclxufVxyXG5cclxuLy8gRXJyb3IgYWJvdmUgdGhlIGZvcm0uXHJcbi52YWxpZGF0aW9uX2Vycm9yIHtcclxuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xyXG4gIGNvbG9yOiAkY29sb3ItcmVkLTEwMDtcclxuICBmb250LXdlaWdodDogNzAwO1xyXG59XHJcblxyXG4vLyBFcnJvciBwZXIgaW5wdXQgZmllbGQuXHJcbi52YWxpZGF0aW9uX21lc3NhZ2Uge1xyXG4gIG1hcmdpbi10b3A6IDEwcHg7XHJcbiAgY29sb3I6ICRjb2xvci1yZWQtMTAwO1xyXG59XHJcblxyXG4vL3Nhc3MtbGludDplbmFibGUgY2xhc3MtbmFtZS1mb3JtYXRcclxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgSGVhZGluZ1xyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuXHJcbi8qKlxyXG4gKiBIZWFkaW5nIGJhc2VcclxuICovXHJcblxyXG4uaGVhZGluZyB7XHJcbiAgY29sb3I6ICRjb2xvci1ibGFjay0xMDA7XHJcbiAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIEhlYWRpbmcgMVxyXG4gKi9cclxuXHJcbi5oZWFkaW5nLTEge1xyXG4gIEBpbmNsdWRlIGZvbnQoMjRweCwgMzJweCk7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogSGVhZGluZyAyXHJcbiAqL1xyXG5cclxuLmhlYWRpbmctMiB7XHJcbiAgQGluY2x1ZGUgZm9udCgyMHB4LCAzNXB4KTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEhlYWRpbmcgM1xyXG4gKi9cclxuXHJcbi5oZWFkaW5nLTMge1xyXG4gIEBpbmNsdWRlIGZvbnQoMTRweCwgMjRweCk7XHJcbn1cclxuXHJcbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIExpbmtzXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG5cclxuLyoqXHJcbiAqIExpbmsgYmFzZS5cclxuICovXHJcblxyXG4ubGluayB7XHJcbiAgQGluY2x1ZGUgZm9udCgxNHB4LCAyMHB4KTtcclxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIHRyYW5zaXRpb246IGFsbCAyNTBtcyBlYXNlO1xyXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG4gIHN2ZyB7XHJcbiAgICB3aWR0aDogMTFweDtcclxuICAgIGhlaWdodDogMTFweDtcclxuICB9XHJcblxyXG4gICYuc3ZnLXJpZ2h0IHN2ZyB7XHJcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcclxuICB9XHJcblxyXG4gICYuc3ZnLWxlZnQgc3ZnIHtcclxuICAgIG1hcmdpbi1yaWdodDogMTBweDtcclxuICB9XHJcblxyXG4gICYudW5kZXJsaW5lIHtcclxuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBMaW5rIChncmVlbikuXHJcbiAqL1xyXG5cclxuLmxpbmstLWdyZWVuIHtcclxuICBjb2xvcjogJGNvbG9yLXRlYWJlcnJ5LTEwMDtcclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgnZGVza3RvcCcpIHtcclxuICAgICAgY29sb3I6IGxpZ2h0ZW4oJGNvbG9yLXRlYWJlcnJ5LTEwMCwgMyUpO1xyXG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBMaW5rIChncmVlbikuXHJcbiAqL1xyXG5cclxuLmxpbmstLWJsYWNrIHtcclxuICBjb2xvcjogJGNvbG9yLWJsYWNrLTEwMDtcclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgnZGVza3RvcCcpIHtcclxuICAgICAgY29sb3I6IGxpZ2h0ZW4oJGNvbG9yLXRlYWJlcnJ5LTEwMCwgMyUpO1xyXG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIFNlY3Rpb25cclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi5tMTAtdG9wIHtcclxuICBtYXJnaW4tdG9wOiAxMHB4O1xyXG59XHJcblxyXG4ubTEwLWJvdHRvbSB7XHJcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcclxufVxyXG5cclxuLm0xNS10b3Age1xyXG4gIG1hcmdpbi10b3A6IDE1cHg7XHJcbn1cclxuXHJcbi5tMTUtYm90dG9tIHtcclxuICBtYXJnaW4tYm90dG9tOiAxNXB4O1xyXG59XHJcblxyXG4ubTIwLXRvcCB7XHJcbiAgbWFyZ2luLXRvcDogMjBweDtcclxufVxyXG5cclxuLm0yMC1ib3R0b20ge1xyXG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbn1cclxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgV3JhcHBlclxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLyoqXHJcbiAqIFRoZSB3cmFwcGVyIG9iamVjdCBjZW50ZXJzIGFuIGVsZW1lbnQgaW4gdGhlIGRvY3VtZW50LlxyXG4gKi9cclxuXHJcbi8vXHJcbiR3ZWJzaXRlLXdpZHRoOiAgIDEyMjBweDtcclxuJHdlYnNpdGUtcGFkZGluZzogMjBweDtcclxuXHJcbi53cmFwcGVyIHtcclxuICBAaW5jbHVkZSBjb250YWluZXIoJHdlYnNpdGUtd2lkdGgsICR3ZWJzaXRlLXBhZGRpbmcpO1xyXG59XHJcbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIENNUyBPdXRwdXRcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBFdmVyeSBjb25jZWl2YWJsZSBIVE1MIGVsZW1lbnQgd2l0aGluIGEgYC5jbXMtb3V0cHV0YCB3cmFwcGVyLlxyXG4gKlxyXG4gKiAxLiBFeGNsdWRlIGxhc3QgY2hpbGRzLlxyXG4gKi9cclxuXHJcbi5jbXMtb3V0cHV0IHtcclxuXHJcbiAgaDIsXHJcbiAgaDMge1xyXG4gICAgY29sb3I6ICRjb2xvci1ibGFjay0xMDA7XHJcbiAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuICB9XHJcblxyXG4gIGgyIHtcclxuICAgIEBpbmNsdWRlIGZvbnQoMjBweCwgMzVweCk7XHJcbiAgfVxyXG5cclxuICBoMyB7XHJcbiAgICBAaW5jbHVkZSBmb250KDE0cHgsIDI0cHgpO1xyXG4gIH1cclxuXHJcbiAgPiAqIHtcclxuXHJcbiAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAxLjVlbTsgLyogMSAqL1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdWwge1xyXG4gICAgbGlzdC1zdHlsZS10eXBlOiBkaXNjO1xyXG4gIH1cclxuXHJcbiAgb2wge1xyXG4gICAgbGlzdC1zdHlsZS10eXBlOiBkZWNpbWFsO1xyXG4gIH1cclxuXHJcbiAgYSB7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICAgIGNvbG9yOiAkY29sb3ItdGVhYmVycnktMTAwO1xyXG4gICAgdHJhbnNpdGlvbjogYWxsIDI1MG1zIGVhc2U7XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiAkY29sb3ItdGVhYmVycnktMjAwO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIuY29udGVudC1jb2x1bW5zIHtcclxuXHRwYWRkaW5nOiA0MHB4IDAgMTAwcHggMDtcclxufVxyXG5cclxuLmNvbnRlbnQtY29sdW1uc19fY29sdW1uIHtcclxuXHRAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0LWRvd24nKSB7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdHBhZGRpbmc6IDYwcHggMCAwIDA7XHJcblx0fVxyXG5cclxuXHR3aWR0aDogNTAlO1xyXG5cdHBhZGRpbmc6IDAgMCAwIDYwcHg7XHJcblxyXG5cdCYuaXMtbGVmdCB7XHJcblx0XHRAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0LWRvd24nKSB7XHJcblx0XHRcdGJvcmRlci1yaWdodDogMDtcclxuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjb2xvci1ncmV5LTEwMDtcclxuXHRcdFx0cGFkZGluZzogMCAwIDYwcHggMDtcclxuXHRcdH1cclxuXHJcblx0XHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkY29sb3ItZ3JleS0xMDA7XHJcblx0XHRwYWRkaW5nOiAwIDYwcHggMCAwO1xyXG5cdH1cclxufVxyXG5cclxuLmNvbnRlbnQtY29sdW1uc19fZWRpdG9yIHtcclxuXHR1bCB7XHJcblx0XHRsaXN0LXN0eWxlOiBub25lO1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogMTVweDtcclxuXHJcblx0XHRsaSB7XHJcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdFx0bWFyZ2luLWJvdHRvbTogMjVweDtcclxuXHRcdFx0cGFkZGluZy1sZWZ0OiA0MHB4O1xyXG5cclxuXHRcdFx0c3ZnIHtcclxuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRcdFx0dG9wOiAwO1xyXG5cdFx0XHRcdGxlZnQ6IDA7XHJcblx0XHRcdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdFx0XHRcdHdpZHRoOiAyNXB4O1xyXG5cdFx0XHRcdGhlaWdodDogMjVweDtcclxuXHRcdFx0XHRwYWRkaW5nOiA0cHg7XHJcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcclxuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItdGVhYmVycnktMTAwO1xyXG5cdFx0XHRcdGNvbG9yOiAkY29sb3Itd2hpdGUtMTAwO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG4uY29udGVudC1jb2x1bW5zX190aXRsZSB7XHJcblx0bWFyZ2luLWJvdHRvbTogMjBweDtcclxufVxyXG5cclxuLmNvbnRlbnQtY29sdW1uc19fYnV0dG9uIHtcclxuXHRoZWlnaHQ6IDUwcHg7XHJcblx0bWFyZ2luLXRvcDogNDBweDtcclxuXHRwYWRkaW5nLWxlZnQ6IDIwcHg7XHJcblx0cGFkZGluZy1yaWdodDogMjBweDtcclxuXHJcblx0c3ZnIHtcclxuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdHRvcDogMXB4O1xyXG5cdFx0d2lkdGg6IDhweDtcclxuXHRcdGhlaWdodDogMTdweDtcclxuXHRcdG1hcmdpbi1sZWZ0OiAxMHB4O1xyXG5cdH1cclxufVxyXG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBDb250ZW50IGludHJvZHVjdGlvblxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuXHJcbi8qKlxyXG4gKiBNYWluLlxyXG4gKi9cclxuXHJcbi5jb250ZW50LWludHJvZHVjdGlvbiB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1sYW5kc2NhcGUtZG93bicpIHtcclxuICAgIG1hcmdpbjogMCAwIDIwcHg7XHJcbiAgfVxyXG5cclxuICBtYXJnaW46IDIwcHggMCA2MHB4O1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIEludHJvLlxyXG4gKi9cclxuXHJcbi5jb250ZW50LWludHJvZHVjdGlvbl9faW50cm8ge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtcG9ydHJhaXQtZG93bicpIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMjVweDtcclxuICB9XHJcblxyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHJcbiAgJjo6YWZ0ZXIge1xyXG4gICAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1sYW5kc2NhcGUtdXAnKSB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICByaWdodDogMDtcclxuICAgIGJvdHRvbTogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB3aWR0aDogY2FsYygxMDAlICsgNDBweCk7XHJcbiAgICBoZWlnaHQ6IDFweDtcclxuICAgIG1hcmdpbi1sZWZ0OiAtMjBweDtcclxuICAgIGJhY2tncm91bmQ6ICRjb2xvci10ZWFiZXJyeS02MDtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBCdXR0b24uXHJcbiAqL1xyXG5cclxuLmNvbnRlbnQtaW50cm9kdWN0aW9uX19idXR0b24ge1xyXG4gIG1hcmdpbi10b3A6IDIwcHg7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogU2VydmljZXMuXHJcbiAqL1xyXG5cclxuLmNvbnRlbnQtaW50cm9kdWN0aW9uX19zZXJ2aWNlcyB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1wb3J0cmFpdC1kb3duJykge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcclxuICAgIHBhZGRpbmctYm90dG9tOiAyNXB4O1xyXG4gIH1cclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcblxyXG4gIHVsIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICBtYXJnaW46IC01cHggMDtcclxuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XHJcbiAgfVxyXG5cclxuICBsaSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIHdpZHRoOiA1MCU7XHJcbiAgICBtYXJnaW46IDVweCAwO1xyXG5cclxuICAgIHN2ZyB7XHJcbiAgICAgIHdpZHRoOiAxNHB4O1xyXG4gICAgICBoZWlnaHQ6IDE0cHg7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcclxuICAgICAgY29sb3I6ICRjb2xvci10ZWFiZXJyeS0xMDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmOjphZnRlciB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZS11cCcpIHtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHJpZ2h0OiAwO1xyXG4gICAgYm90dG9tOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHdpZHRoOiBjYWxjKDEwMCUgKyA0MHB4KTtcclxuICAgIGhlaWdodDogMXB4O1xyXG4gICAgbWFyZ2luLWxlZnQ6IC0yMHB4O1xyXG4gICAgYmFja2dyb3VuZDogJGNvbG9yLXRlYWJlcnJ5LTYwO1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgfVxyXG59XHJcbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIEZvb3Rlci5cclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcblxyXG4vKipcclxuICogVXBwZXIgcGFydCBvZiBmb290ZXIuXHJcbiAqL1xyXG5cclxuLmZvb3Rlci11cHBlciB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1sYW5kc2NhcGUtZG93bicpIHtcclxuICAgIHBhZGRpbmc6IDIwcHggMDtcclxuICB9XHJcblxyXG4gIHBhZGRpbmc6IDQwcHggMCA2MHB4O1xyXG4gIGJhY2tncm91bmQ6ICRjb2xvci10ZWFiZXJyeS0yNTtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBGb290ZXIgY29sdW1uLlxyXG4gKi9cclxuXHJcbi5mb290ZXItY29sdW1uIHtcclxuXHJcbiAgJi5maXJzdC1jb2x1bW4ge1xyXG5cclxuICAgIHVsIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC13cmFwOiB3cmFwO1xyXG4gICAgICBsaXN0LXN0eWxlOiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgIGxpIHtcclxuICAgICAgd2lkdGg6IDUwJTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogRm9vdGVyIGNvbHVtbiB0aXRsZS4uXHJcbiAqL1xyXG5cclxuLmZvb3Rlci1jb2x1bW5fX3RpdGxlIHtcclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0LWRvd24nKSB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1sYW5kc2NhcGUtdXAnKSB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xyXG4gIH1cclxuXHJcbiAgc3ZnIHtcclxuICAgIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlLXVwJykge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHJpZ2h0OiAyMHB4O1xyXG4gICAgd2lkdGg6IDE2cHg7XHJcbiAgICBoZWlnaHQ6IDE2cHg7XHJcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjUwbXMgZWFzZTtcclxuXHJcbiAgICAmLmlzLWFjdGl2ZSB7XHJcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLmlzLWFjdGl2ZSB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0LWRvd24nKSB7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIEZvb3RlciBjb2x1bW4gZWRpdG9yLlxyXG4gKi9cclxuXHJcbi5mb290ZXItY29sdW1uX19lZGl0b3Ige1xyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtcG9ydHJhaXQtZG93bicpIHtcclxuICAgIG1heC1oZWlnaHQ6IDA7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMDtcclxuICB9XHJcblxyXG4gIGhlaWdodDogMTAwJTtcclxuICBtYXgtaGVpZ2h0OiA1MDBweDtcclxuICB0cmFuc2l0aW9uOiBhbGwgMzUwbXMgZWFzZTtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAmLmlzLWFjdGl2ZSB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0LWRvd24nKSB7XHJcbiAgICAgIG1heC1oZWlnaHQ6IDUwMHB4O1xyXG4gICAgICBwYWRkaW5nLWJvdHRvbTogMzBweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGEge1xyXG4gICAgY29sb3I6ICRjb2xvci1ibGFjay0xMDA7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIEZvb3RlciBsb3dlci5cclxuICovXHJcblxyXG4uZm9vdGVyLWxvd2VyIHtcclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0LWRvd24nKSB7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgfVxyXG5cclxuXHJcbiAgcGFkZGluZzogMjBweCAwO1xyXG4gIGJhY2tncm91bmQ6ICRjb2xvci10ZWFiZXJyeS0xMDA7XHJcbiAgY29sb3I6ICRjb2xvci13aGl0ZS0xMDA7XHJcblxyXG4gIC53cmFwcGVyIHtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogRm9vdGVyIGxpbmtzLlxyXG4gKi9cclxuXHJcbi5mb290ZXItbG93ZXJfX2xpbmtzIHtcclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0LWRvd24nKSB7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogRm9vdGVyIGxpbmsuXHJcbiAqL1xyXG5cclxuLmZvb3Rlci1sb3dlcl9fbGluayB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cclxuICBhIHtcclxuICAgIEBpbmNsdWRlIGZvbnQoMTNweCwgMTlweCk7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIG1hcmdpbi1yaWdodDogOHB4O1xyXG4gICAgcGFkZGluZy1yaWdodDogOHB4O1xyXG5cclxuICAgICY6OmFmdGVyIHtcclxuICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiA0cHg7XHJcbiAgICAgIHJpZ2h0OiAwO1xyXG4gICAgICBib3R0b206IDA7XHJcbiAgICAgIHdpZHRoOiAxcHg7XHJcbiAgICAgIGhlaWdodDogMTVweDtcclxuICAgICAgYmFja2dyb3VuZDogJGNvbG9yLXdoaXRlLTEwMDtcclxuICAgICAgY29udGVudDogJyc7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJjpudGgtbGFzdC1jaGlsZCgxKSBhOjphZnRlciB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBBdXRob3IuXHJcbiAqL1xyXG5cclxuLmZvb3Rlcl9fYXV0aG9yIHtcclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0LWRvd24nKSB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICB9XHJcblxyXG4gIHNwYW4ge1xyXG4gICAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1wb3J0cmFpdC1kb3duJykge1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgQGluY2x1ZGUgZm9udCgxM3B4LCAxOXB4KTtcclxuICB9XHJcblxyXG4gIGEge1xyXG4gICAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1wb3J0cmFpdC1kb3duJykge1xyXG4gICAgICBtYXJnaW46IDA7XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgQGluY2x1ZGUgZm9udCgxM3B4LCAxOXB4KTtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIG1hcmdpbi1sZWZ0OiA4cHg7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDhweDtcclxuXHJcbiAgICAmOjphZnRlciB7XHJcbiAgICAgIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtcG9ydHJhaXQtZG93bicpIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IDJweDtcclxuICAgICAgYm90dG9tOiAwO1xyXG4gICAgICBsZWZ0OiAwO1xyXG4gICAgICB3aWR0aDogMXB4O1xyXG4gICAgICBoZWlnaHQ6IDE1cHg7XHJcbiAgICAgIGJhY2tncm91bmQ6ICRjb2xvci13aGl0ZS0xMDA7XHJcbiAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogVVNQJ3MuXHJcbiAqL1xyXG5cclxuLmZvb3Rlcl9fdXNwcyB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1sYW5kc2NhcGUtdXAnKSB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxuXHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIHRvcDogMzAlO1xyXG4gIHJpZ2h0OiAwO1xyXG4gIHdpZHRoOiAzNXB4O1xyXG4gIGhlaWdodDogYXV0bztcclxuICB6LWluZGV4OiA5O1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIFNpbmdsZSBVU1AuXHJcbiAqL1xyXG5cclxuLmZvb3Rlci11c3Age1xyXG4gIHdpZHRoOiAxMDAlO1xyXG5cclxuICBhIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICB3aWR0aDogMzVweDtcclxuICAgIGhlaWdodDogMzVweDtcclxuICAgIG1hcmdpbjogNXB4IDA7XHJcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItdGVhYmVycnktMTAwO1xyXG4gICAgY29sb3I6ICRjb2xvci13aGl0ZS0xMDA7XHJcbiAgfVxyXG5cclxuICBzdmcge1xyXG4gICAgd2lkdGg6IDIwcHg7XHJcbiAgICBoZWlnaHQ6IDIwcHg7XHJcbiAgICBjb2xvcjogJGNvbG9yLXdoaXRlLTEwMDtcclxuICB9XHJcblxyXG4gIHNwYW4ge1xyXG4gICAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1wb3J0cmFpdC1kb3duJykge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBHYWxsZXJ5XHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG5cclxuLyoqXHJcbiAqIE1haW4uXHJcbiAqL1xyXG5cclxuLmdhbGxlcnkge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBJbWFnZXMuXHJcbiAqL1xyXG5cclxuLmdhbGxlcnlfX2ltYWdlcyB7XHJcbiAgbWFyZ2luOiAyNXB4IC01cHg7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogU2luZ2xlIGltYWdlLlxyXG4gKi9cclxuXHJcbi5nYWxsZXJ5X19pbWFnZSB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1wb3J0cmFpdC1kb3duJykge1xyXG4gICAgd2lkdGg6IGNhbGMoMTAwJSAvIDIgLSA1cHgpO1xyXG4gIH1cclxuXHJcbiAgd2lkdGg6IGNhbGMoMTAwJSAvIDQgLSA1cHgpO1xyXG4gIG1hcmdpbjogMi41cHg7XHJcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAyNTBtcyBlYXNlO1xyXG5cclxuICBpbWcge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDIxMHB4O1xyXG4gIH1cclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgnZGVza3RvcCcpIHtcclxuICAgICAgb3BhY2l0eTogMC43NTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgSGVhZGVyXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG5cclxuLyoqXHJcbiAqIE1haW4uXHJcbiAqL1xyXG5cclxuLmhlYWRlciB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGJhY2tncm91bmQ6ICRjb2xvci13aGl0ZS0xMDA7XHJcbiAgei1pbmRleDogMTAwO1xyXG5cclxuICAud3JhcHBlciB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgfVxyXG59XHJcblxyXG4uZmlsbGVyIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDUwMHB4O1xyXG4gIHBhZGRpbmc6IDIwcHggMDtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBVU1Ancy5cclxuICovXHJcblxyXG4uaGVhZGVyX191c3BzIHtcclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZS1kb3duJykge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICB9XHJcblxyXG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XHJcbiAgd2lkdGg6IGNhbGMoMTAwJSAvIDMgKiAyKTtcclxuICBoZWlnaHQ6IGF1dG87XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogU2luZ2xlIFVTUC5cclxuICovXHJcblxyXG4uaGVhZGVyLXVzcCB7XHJcbiAgbWFyZ2luOiAwIDcuNXB4O1xyXG5cclxuICBzdmcge1xyXG4gICAgd2lkdGg6IDE4cHg7XHJcbiAgICBoZWlnaHQ6IDE4cHg7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XHJcbiAgfVxyXG5cclxuICBhIHtcclxuICAgIHRyYW5zaXRpb246IGFsbCAyNTBtcyBlYXNlO1xyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBjb2xvcjogJGNvbG9yLXRlYWJlcnJ5LTEwMDtcclxuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmOm50aC1jaGlsZCgxKSB7XHJcbiAgICBzdmcge1xyXG4gICAgICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIExvZ29cclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBMb2dvLlxyXG4gKi9cclxuXHJcbi5sb2dvIHtcclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZS1kb3duJykge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAxNTBweCk7XHJcbiAgfVxyXG5cclxuICB3aWR0aDogY2FsYygxMDAlIC8gMyk7XHJcblxyXG4gIGltZyB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0LWRvd24nKSB7XHJcbiAgICAgIHdpZHRoOiAyNTBweDtcclxuICAgICAgbWFyZ2luOiA1cHggMCAwO1xyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlJykge1xyXG4gICAgICBoZWlnaHQ6IDYwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBtYXgtd2lkdGg6IDI1MHB4O1xyXG4gICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgbWF4LWhlaWdodDogNThweDtcclxuICAgIG1hcmdpbjogMTVweCAwIDE1cHg7XHJcbiAgfVxyXG59XHJcbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIE5hdmlnYXRpb25cclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBOYXZpZ2F0aW9uIHdyYXBwZXIuXHJcbiAqL1xyXG5cclxuLm5hdmlnYXRpb25fX3dyYXBwZXIge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCdkZXNrdG9wJykge1xyXG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuICB9XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGJhY2tncm91bmQ6ICRjb2xvci10ZWFiZXJyeS0xMDA7XHJcbiAgY29sb3I6ICRjb2xvci13aGl0ZS0xMDA7XHJcbn1cclxuXHJcbi5uYXZpZ2F0aW9uIHtcclxuICBAaW5jbHVkZSBtZWRpYSgnZGVza3RvcCcpIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB9XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LXdyYXA6IHdyYXA7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogTmF2aWdhdGlvbiBtZW51LlxyXG4gKi9cclxuXHJcbi5uYXZpZ2F0aW9uLW1lbnUge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlLWRvd24nKSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIGZsZXgtd3JhcDogd3JhcDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICB3aWR0aDogMTAwdnc7XHJcbiAgICBoZWlnaHQ6IDEwMHZoO1xyXG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSA1MDBtcztcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5O1xyXG4gICAgb3BhY2l0eTogMDtcclxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG5cclxuICAgICYuaXMtYWN0aXZlIHtcclxuICAgICAgb3BhY2l0eTogMTtcclxuICAgICAgcG9pbnRlci1ldmVudHM6IGFsbDtcclxuXHJcbiAgICAgIC5tYWluLW1lbnUgPiAubWVudS1pdGVtIHtcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSA1MDBtcyA3MDBtcywgdHJhbnNmb3JtIDUwMG1zIDcwMG1zO1xyXG4gICAgICAgIG9wYWNpdHk6IDE7XHJcblxyXG4gICAgICAgICY6bnRoLWNoaWxkKDIpIHtcclxuICAgICAgICAgIHRyYW5zaXRpb24tZGVsYXk6IDkwMG1zO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpudGgtY2hpbGQoMykge1xyXG4gICAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMTEwMG1zO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpudGgtY2hpbGQoNCkge1xyXG4gICAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMTMwMG1zO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpudGgtY2hpbGQoNSkge1xyXG4gICAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMTUwMG1zO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpudGgtY2hpbGQoNikge1xyXG4gICAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMTcwMG1zO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpudGgtY2hpbGQoNykge1xyXG4gICAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMTkwMG1zO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpudGgtY2hpbGQoOCkge1xyXG4gICAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMjEwMG1zO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpudGgtY2hpbGQoOSkge1xyXG4gICAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMjMwMG1zO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpudGgtY2hpbGQoMTApIHtcclxuICAgICAgICAgIHRyYW5zaXRpb24tZGVsYXk6IDI1MDBtcztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5uYXZpZ2F0aW9uLW1lbnVfX3dyYXBwZXIge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlLWRvd24nKSB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICB9XHJcbn1cclxuXHJcbi5uYXZpZ2F0aW9uX19zZWFyY2gge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlLWRvd24nKSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIHRyYW5zaXRpb246IGFsbCAyNTBtcyBlYXNlO1xyXG4gICAgb3BhY2l0eTogMDtcclxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG4gIH1cclxuXHJcbiAgJi5pcy1hY3RpdmUge1xyXG4gICAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1sYW5kc2NhcGUtZG93bicpIHtcclxuICAgICAgb3BhY2l0eTogMTtcclxuICAgICAgcG9pbnRlci1ldmVudHM6IGFsbDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBOYXZpZ2F0aW9uIGJ1dHRvbi5cclxuICovXHJcblxyXG4kdHJhbnNpdGlvbi10aW1pbmc6IDQwMG1zO1xyXG5cclxuLm5hdmlnYXRpb24tYnV0dG9uIHtcclxuICBAaW5jbHVkZSBtZWRpYSgnZGVza3RvcCcpIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDA7XHJcbiAgcmlnaHQ6IDA7XHJcbiAgd2lkdGg6IDg1cHg7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIGJhY2tncm91bmQ6ICRjb2xvci10ZWFiZXJyeS0xMDA7XHJcblxyXG4gIHNwYW4ge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgcmlnaHQ6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgd2lkdGg6IDMwcHg7XHJcbiAgICBoZWlnaHQ6IDRweDtcclxuICAgIG1hcmdpbjogYXV0bztcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci13aGl0ZS0xMDA7XHJcblxyXG4gICAgJjpudGgtY2hpbGQoMSkge1xyXG4gICAgICB0b3A6IDI3cHg7XHJcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgJHRyYW5zaXRpb24tdGltaW5nLCB0b3AgJHRyYW5zaXRpb24tdGltaW5nICR0cmFuc2l0aW9uLXRpbWluZywgdHJhbnNmb3JtICR0cmFuc2l0aW9uLXRpbWluZyAwcztcclxuICAgIH1cclxuXHJcbiAgICAmOm50aC1jaGlsZCgyKSB7XHJcbiAgICAgIHRvcDogY2FsYyg1MCUgLSAycHgpO1xyXG4gICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yICR0cmFuc2l0aW9uLXRpbWluZywgb3BhY2l0eSAwbXMgJHRyYW5zaXRpb24tdGltaW5nO1xyXG4gICAgICBvcGFjaXR5OiAxO1xyXG4gICAgfVxyXG5cclxuICAgICY6bnRoLWNoaWxkKDMpIHtcclxuICAgICAgYm90dG9tOiAyN3B4O1xyXG4gICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yICR0cmFuc2l0aW9uLXRpbWluZywgYm90dG9tICR0cmFuc2l0aW9uLXRpbWluZyAkdHJhbnNpdGlvbi10aW1pbmcsIHRyYW5zZm9ybSAkdHJhbnNpdGlvbi10aW1pbmcgMHM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLmlzLWFjdGl2ZSB7XHJcbiAgICBzcGFuIHtcclxuXHJcbiAgICAgICY6bnRoLWNoaWxkKDEpIHtcclxuICAgICAgICB0b3A6IGNhbGMoNTAlIC0gMnB4KTtcclxuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xyXG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgJHRyYW5zaXRpb24tdGltaW5nLCB0b3AgJHRyYW5zaXRpb24tdGltaW5nLCB0cmFuc2Zvcm0gJHRyYW5zaXRpb24tdGltaW5nICR0cmFuc2l0aW9uLXRpbWluZztcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpudGgtY2hpbGQoMikge1xyXG4gICAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6bnRoLWNoaWxkKDMpIHtcclxuICAgICAgICBib3R0b206IGNhbGMoNTAlIC0gMnB4KTtcclxuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAkdHJhbnNpdGlvbi10aW1pbmcsIGJvdHRvbSAkdHJhbnNpdGlvbi10aW1pbmcsIHRyYW5zZm9ybSAkdHJhbnNpdGlvbi10aW1pbmcgJHRyYW5zaXRpb24tdGltaW5nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIFdvcmRQcmVzcyBtYWluIG1lbnUuXHJcbiAqL1xyXG5cclxuXHJcbi8qKlxyXG4gKiBNYWluIG1lbnUuXHJcbiAqL1xyXG5cclxuLm1haW4tbWVudSB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJ2Rlc2t0b3AnKSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC13cmFwOiB3cmFwO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBNYWluIG1lbnUgaXRlbS5cclxuICovXHJcblxyXG4ubWFpbi1tZW51ID4gLm1lbnUtaXRlbSB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1sYW5kc2NhcGUtZG93bicpIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MHB4KTtcclxuICAgIHRyYW5zaXRpb24tZGVsYXk6IDBtcztcclxuICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiAwbXM7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBvcGFjaXR5OiAwO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBNYWluIG1lbnUgbGluay5cclxuICovXHJcblxyXG4ubWFpbi1tZW51ID4gLm1lbnUtaXRlbSA+IGEge1xyXG4gIEBpbmNsdWRlIGZvbnQoMTRweCwgMjBweCk7XHJcblxyXG4gIEBpbmNsdWRlIG1lZGlhKCdkZXNrdG9wJykge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBwYWRkaW5nOiAxNXB4IDIwcHg7XHJcbiAgICB0cmFuc2l0aW9uOiBhbGwgMjUwbXMgZWFzZTtcclxuICAgIGNvbG9yOiAkY29sb3Itd2hpdGUtMTAwO1xyXG4gIH1cclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZS1kb3duJykge1xyXG4gICAgQGluY2x1ZGUgZm9udCgyNXB4LCA0MHB4KTtcclxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBwYWRkaW5nOiAxMHB4O1xyXG4gICAgY29sb3I6ICRjb2xvci13aGl0ZS0xMDA7XHJcbiAgfVxyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblxyXG4gICY6aG92ZXIge1xyXG4gICAgQGluY2x1ZGUgbWVkaWEoJ2Rlc2t0b3AnKSB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICRjb2xvci10ZWFiZXJyeS0yMDA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIE1haW4gbWVudSBpdGVtIGhhcyBjaGlsZHJlbi5cclxuICovXHJcblxyXG4ubWFpbi1tZW51ID4gLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4ge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCdkZXNrdG9wJykge1xyXG4gICAgJjpob3ZlciAuc3VibWVudS1jb250YWluZXIge1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XHJcbiAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlLWRvd24nKSB7XHJcbiAgICBhIHtcclxuICAgICAgcGFkZGluZzogMTBweCAxNXB4IDEwcHggMTBweDtcclxuICAgIH1cclxuICB9XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIEN1cnJlbnQgbWVudSBpdGVtLlxyXG4gKi9cclxuXHJcbi5jdXJyZW50LW1lbnUtaXRlbSxcclxuLmN1cnJlbnQtcGFnZS1hbmNlc3RvciB7XHJcbiAgYmFja2dyb3VuZDogJGNvbG9yLXRlYWJlcnJ5LTIwMDtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBMb2dpbiBidXR0b24uXHJcbiAqL1xyXG5cclxuLm5hdmlnYXRpb25fX2xvZ2luIHtcclxuICBAaW5jbHVkZSBmb250KDEycHgsIDI0cHgpO1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IC01MHB4O1xyXG4gIHJpZ2h0OiAwO1xyXG4gIGNvbG9yOiAkY29sb3ItcHJpbWFyeTtcclxuXHJcbiAgJjo6YmVmb3JlIHtcclxuICAgIEBpbmNsdWRlIGZvbnRhd2Vzb21lKCdmMDIzJywgJ0xpZ2h0Jyk7XHJcbiAgfVxyXG5cclxuICA+IHN2ZyB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcclxuICB9XHJcbn1cclxuXHJcbi5uYXZpZ2F0aW9uX19sb2dpbi0tbG9nb3V0IHtcclxuICAmOjpiZWZvcmUge1xyXG4gICAgQGluY2x1ZGUgZm9udGF3ZXNvbWUoJ2YwOWMnLCAnTGlnaHQnKTtcclxuICB9XHJcbn1cclxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgUGFnZSBkZWZhdWx0IHNldHRpbmdzLlxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLyoqXHJcbiAqIE1haW4uXHJcbiAqL1xyXG5cclxuLmNvbnRlbnQge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlLWRvd24nKSB7XHJcbiAgICBwYWRkaW5nOiAyMHB4IDA7XHJcbiAgfVxyXG4gIHBhZGRpbmc6IDc1cHggMDtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBDb250ZW50IHJvdy5cclxuICovXHJcblxyXG4uY29udGVudF9fcm93IHtcclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZS1kb3duJykge1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBDb250ZW50IHNpZGViYXIuXHJcbiAqL1xyXG5cclxuLmNvbnRlbnRfX3NpZGViYXItY29udGFpbmVyIHtcclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZS1kb3duJykge1xyXG4gICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgbWFyZ2luLXRvcDogMTBweDtcclxuICB9XHJcblxyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIG1heC13aWR0aDogMzUwcHg7XHJcbn1cclxuXHJcbi5zaWRlLWNvbnRhY3Qge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlLWRvd24nKSB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBJbmZvcm1hdGlvbi5cclxuICovXHJcblxyXG4uY29udGFjdC1pbmZvcm1hdGlvbiB7XHJcblxyXG4gIGxpIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgd2lkdGg6IDUwJTtcclxuICB9XHJcblxyXG4gIHN2ZyB7XHJcbiAgICB3aWR0aDogMTRweDtcclxuICAgIGhlaWdodDogMTRweDtcclxuICAgIG1hcmdpbi1yaWdodDogNXB4O1xyXG4gICAgY29sb3I6ICRjb2xvci1ibGFjay0xMDA7XHJcbiAgfVxyXG5cclxuICBhIHtcclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgQGluY2x1ZGUgbWVkaWEoJ2Rlc2t0b3AnKSB7XHJcbiAgICAgICAgY29sb3I6ICRjb2xvci10ZWFiZXJyeS0xMDA7XHJcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBZGRpdGlvbmFsIHJ1bGVzIGZvciBjZXJ0YWluIGVsZW1lbnRzLlxyXG4gKi9cclxuXHJcbi5jb250ZW50X19zaWRlYmFyIHtcclxuXHJcbiAgLnByb2plY3QtbGlzdCB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZS1kb3duJykge1xyXG4gICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XHJcbiAgICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgbWFyZ2luLXRvcDogMzBweDtcclxuXHJcbiAgICAmOjphZnRlciB7XHJcbiAgICAgIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlLWRvd24nKSB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uY29udGVudF9fbWFpbiB7XHJcblxyXG4gIC5wcm9kdWN0LWNhdGVnb3J5LWxpc3Qge1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIGJvcmRlcjogMDtcclxuXHJcbiAgICAud3JhcHBlciB7XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAucHJvZHVjdC1saXN0X19sb29wIHtcclxuICAgIG1hcmdpbjogNXB4IC01cHggMDtcclxuICB9XHJcblxyXG4gIC5wcm9kdWN0LWxpc3QtaXRlbSB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgncGhvbmUnKSB7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIHdpZHRoOiBjYWxjKDUwJSAtIDEwcHgpO1xyXG4gIH1cclxuXHJcbiAgLnByb2plY3QtbGlzdCB7XHJcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xyXG4gIH1cclxuXHJcbiAgLnByb2plY3QtaXRlbSB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgnZGVza3RvcCcpIHtcclxuICAgICAgd2lkdGg6IGNhbGMoNTAlIC0gMTBweCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIFBhZ2Ugc3VibWVudVxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuXHJcbi8qKlxyXG4gKiBNYWluLlxyXG4gKi9cclxuXHJcbi5wYWdlLXN1Ym1lbnUge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtcG9ydHJhaXQtZG93bicpIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG5cclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgbWFyZ2luLWJvdHRvbTogNDBweDtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBTdWJtZW51IGl0ZW0uXHJcbiAqL1xyXG5cclxuLnBhZ2Utc3VibWVudV9faXRlbSB7XHJcbiAgQGluY2x1ZGUgZm9udCgxNHB4LCAyMHB4KTtcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgYSB7XHJcbiAgICBwYWRkaW5nOiAyMHB4IDE3cHggMjBweCAyMHB4O1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yLXRlYWJlcnJ5LTI1O1xyXG4gICAgYmFja2dyb3VuZDogJGNvbG9yLXRlYWJlcnJ5LTI1O1xyXG4gIH1cclxuXHJcbiAgc3ZnIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHJpZ2h0OiAtMjBweDtcclxuICAgIHdpZHRoOiAxOHB4O1xyXG4gICAgaGVpZ2h0OiAxOHB4O1xyXG4gICAgdHJhbnNpdGlvbjogYWxsIDI1MG1zIGVhc2U7XHJcbiAgICBjb2xvcjogJGNvbG9yLXRlYWJlcnJ5LTEwMDtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgfVxyXG5cclxuICAmOmhvdmVyIHtcclxuXHJcbiAgICBzdmcge1xyXG4gICAgICByaWdodDogMDtcclxuICAgICAgb3BhY2l0eTogMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICYuYWN0aXZlIHtcclxuXHJcbiAgICBzdmcge1xyXG4gICAgICByaWdodDogMDtcclxuICAgICAgb3BhY2l0eTogMTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgUHJvamVjdCBpdGVtXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vKipcclxuICogTWFpbi5cclxuICovXHJcblxyXG4ucHJvZHVjdC1jYXRlZ29yeS1saXN0IHtcclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZS1kb3duJykge1xyXG4gICAgcGFkZGluZzogMjBweCAwO1xyXG4gIH1cclxuXHJcbiAgcGFkZGluZzogNTVweCAwO1xyXG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAkY29sb3ItdGVhYmVycnktNzA7XHJcbn1cclxuXHJcbi5wcm9kdWN0LWNhdGVnb3J5LW1lbnUge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlLWRvd24nKSB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxuICBtYXJnaW4tYm90dG9tOiA0MHB4O1xyXG59XHJcblxyXG4ucHJvZHVjdC1saXN0LWl0ZW0ge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCdwaG9uZScpIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldCcpIHtcclxuICAgIHdpZHRoOiBjYWxjKDEwMCUgLyAyIC0gMTBweCk7XHJcbiAgfVxyXG5cclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgd2lkdGg6IGNhbGMoMTAwJSAvIDMgLSAxMHB4KTtcclxuICBtYXJnaW46IDVweDtcclxuICB0cmFuc2l0aW9uOiBhbGwgMjUwbXMgZWFzZTtcclxuICBib3JkZXI6IDFweCBzb2xpZCAkY29sb3ItdGVhYmVycnktNzA7XHJcblxyXG4gICY6aG92ZXIge1xyXG4gICAgQGluY2x1ZGUgbWVkaWEoJ2Rlc2t0b3AnKSB7XHJcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvci10ZWFiZXJyeS0xMDA7XHJcblxyXG4gICAgICAucHJvZHVjdC1saXN0LWl0ZW1fX2ltYWdlIHtcclxuICAgICAgICBvcGFjaXR5OiAwLjc1O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIExvb3AuXHJcbiAqL1xyXG5cclxuLnByb2R1Y3QtbGlzdF9fbG9vcCB7XHJcbiAgbWFyZ2luOiAwIC01cHg7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogSW1hZ2VcclxuICovXHJcblxyXG4ucHJvZHVjdC1saXN0LWl0ZW1fX2ltYWdlIHtcclxuICB3aWR0aDogMTQwcHg7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIHRyYW5zaXRpb246IGFsbCAyNTBtcyBlYXNlO1xyXG5cclxuICBpbWcge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIEJvZHkuXHJcbiAqL1xyXG5cclxuLnByb2R1Y3QtbGlzdC1pdGVtX19ib2R5IHtcclxuICB3aWR0aDogY2FsYygxMDAlIC0gMTQwcHgpO1xyXG4gIHBhZGRpbmc6IDIwcHggMzBweDtcclxuICBiYWNrZ3JvdW5kOiAkY29sb3Itd2hpdGUtMTAwO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIExpbmsuXHJcbiAqL1xyXG5cclxuLnByb2R1Y3QtbGlzdC1pdGVtX19saW5rIHtcclxuICBAaW5jbHVkZSBmb250KDEzcHgsIDIwcHgpO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcblxyXG4gIHN2ZyB7XHJcbiAgICB3aWR0aDogMTNweDtcclxuICAgIGhlaWdodDogMTNweDtcclxuICAgIGNvbG9yOiAkY29sb3ItdGVhYmVycnktMTAwO1xyXG4gIH1cclxufVxyXG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBQcm9qZWN0IGxvb3BcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBNYWluLlxyXG4gKi9cclxuXHJcbi5jb250ZW50X19tYWluIC5wcm9qZWN0LWxpc3RfX2xvb3Age1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC13cmFwOiB3cmFwO1xyXG4gIG1hcmdpbjogMCAtNXB4O1xyXG5cclxuICAucHJvamVjdC1pdGVtIHtcclxuICAgIEBpbmNsdWRlIG1lZGlhKCdkZXNrdG9wJykge1xyXG4gICAgICB3aWR0aDogY2FsYyg1MCUgLSAxMHB4KTtcclxuICAgIH1cclxuXHJcbiAgICBtYXJnaW46IDVweDtcclxuICB9XHJcbn1cclxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgUHJvamVjdCBpdGVtXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vKipcclxuICogTWFpbi5cclxuICovXHJcblxyXG4ucHJvamVjdC1pdGVtIHtcclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0Jykge1xyXG4gICAgd2lkdGg6IGNhbGMoNTAlIC0gMTBweCk7XHJcbiAgfVxyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB3aWR0aDogMTAwJTtcclxuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG4gIHRyYW5zaXRpb246IGFsbCAyNTBtcyBlYXNlO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvci10ZWFiZXJyeS03MDtcclxuICBiYWNrZ3JvdW5kOiAkY29sb3Itd2hpdGUtMTAwO1xyXG5cclxuICAmOmhvdmVyIHtcclxuICAgIEBpbmNsdWRlIG1lZGlhKCdkZXNrdG9wJykge1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAkY29sb3ItdGVhYmVycnktMTAwO1xyXG5cclxuICAgICAgLnByb2plY3QtaXRlbV9faW1hZ2Uge1xyXG4gICAgICAgIG9wYWNpdHk6IDAuNzU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogSW1hZ2UuXHJcbiAqL1xyXG5cclxuLnByb2plY3QtaXRlbV9faW1hZ2Uge1xyXG4gIHdpZHRoOiAxMzBweDtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgbWluLWhlaWdodDogMTIwcHg7XHJcbiAgdHJhbnNpdGlvbjogYWxsIDI1MG1zIGVhc2U7XHJcblxyXG4gIGltZyB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogQm9keS5cclxuICovXHJcblxyXG4ucHJvamVjdC1pdGVtX19ib2R5IHtcclxuICBAaW5jbHVkZSBmb250KDEzcHgsIDIwcHgpO1xyXG4gIHdpZHRoOiBjYWxjKDEwMCUgLSAxMzBweCk7XHJcbiAgaGVpZ2h0OiBhdXRvO1xyXG4gIHBhZGRpbmc6IDE1cHggMjBweDtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBUaXRsZS5cclxuICovXHJcblxyXG4ucHJvamVjdC1pdGVtX190aXRsZSB7XHJcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogTGluay5cclxuICovXHJcblxyXG4ucHJvamVjdC1pdGVtX19saW5rIHtcclxuICBtYXJnaW4tdG9wOiA1cHg7XHJcbn1cclxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgUHJvamVjdCBsYXRlc3RcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBMaXN0LlxyXG4gKi9cclxuXHJcbi5wcm9qZWN0LWxpc3Qge1xyXG5cclxuICAmLmlzLWxhdGVzdCB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZScpIHtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICBtYXJnaW4tdG9wOiAzMHB4O1xyXG4gICAgICBwYWRkaW5nLXRvcDogMjBweDtcclxuICAgIH1cclxuXHJcbiAgICAmOjphZnRlciB7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogMDtcclxuICAgICAgcmlnaHQ6IDA7XHJcbiAgICAgIGxlZnQ6IDA7XHJcbiAgICAgIHdpZHRoOiBjYWxjKDEwMCUgKyA0MHB4KTtcclxuICAgICAgaGVpZ2h0OiAxcHg7XHJcbiAgICAgIGJhY2tncm91bmQ6ICRjb2xvci10ZWFiZXJyeS02MDtcclxuICAgICAgY29udGVudDogJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAucHJvamVjdC1pdGVtX19ib2R5IHtcclxuICAgIEBpbmNsdWRlIG1lZGlhKCdwaG9uZScpIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC13cmFwOiB3cmFwO1xyXG4gICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAucHJvamVjdC1pdGVtX190aXRsZSB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgncGhvbmUnKSB7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnByb2plY3QtaXRlbV9fdGVhc2VyIHtcclxuICAgIEBpbmNsdWRlIG1lZGlhKCdwaG9uZScpIHtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogSGVhZGVyLlxyXG4gKi9cclxuXHJcbi5wcm9qZWN0LWxpc3RfX2hlYWRlciAge1xyXG5cclxuICAmLmlzLWxhdGVzdCB7XHJcbiAgICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZS1kb3duJykge1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBTZWFyY2hcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi5zZWFyY2gge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlLWRvd24nKSB7XHJcbiAgICB0b3A6IDM1cHg7XHJcbiAgICByaWdodDogaW5pdGlhbDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgfVxyXG5cclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDdweDtcclxuICByaWdodDogMjBweDtcclxuICBib3R0b206IDA7XHJcbiAgZmxleC13cmFwOiB3cmFwO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIEZvcm0uXHJcbiAqL1xyXG5cclxuLnNlYXJjaC1mb3JtIHtcclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZS1kb3duJykge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXgtd2lkdGg6IDIzNXB4O1xyXG4gICAgaGVpZ2h0OiA0MHB4O1xyXG4gIH1cclxuXHJcbiAgaGVpZ2h0OiAzMHB4O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBCdXR0b24uXHJcbiAqL1xyXG5cclxuLnNlYXJjaF9fYnV0dG9uIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgd2lkdGg6IDM0cHg7XHJcbiAgaGVpZ2h0OiAzNHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICBjb2xvcjogJGNvbG9yLXdoaXRlLTEwMDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogQ29udGFpbmVyLlxyXG4gKi9cclxuXHJcbi5zZWFyY2hfX2Zvcm0ge1xyXG5cclxuICAmLmlzLWFjdGl2ZSB7XHJcbiAgICAuc2VhcmNoX19pbnB1dCB7XHJcbiAgICAgIHdpZHRoOiAyMzVweDtcclxuICAgICAgaGVpZ2h0OiAzNXB4O1xyXG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMTUwbXMgY3ViaWMtYmV6aWVyKDAuMiwgMC42LCAwLjI1MiwgMS4yKSwgYmFja2dyb3VuZC1jb2xvciAwbXMgMG1zO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiAwO1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgICAgY29sb3I6ICRjb2xvci13aGl0ZS0xMDA7XHJcbiAgICAgIGN1cnNvcjogaW5pdGlhbDtcclxuICAgIH1cclxuXHJcbiAgICAuc2VhcmNoX19pbnB1dC1iYXIge1xyXG4gICAgICB0b3A6IDVweDtcclxuICAgICAgcmlnaHQ6IDA7XHJcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIElucHV0LlxyXG4gKi9cclxuXHJcbi5zZWFyY2hfX2lucHV0IHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgd2lkdGg6IDE1cHg7XHJcbiAgaGVpZ2h0OiAxNXB4O1xyXG4gIHBhZGRpbmc6IDVweDtcclxuICB0cmFuc2l0aW9uOiBhbGwgMTUwbXMgY3ViaWMtYmV6aWVyKDAuMiwgMC42LCAwLjI1MiwgMS4yKSwgYmFja2dyb3VuZC1jb2xvciAxMDBtcyAxNTBtcztcclxuICBib3JkZXI6IDFweCBzb2xpZCAkY29sb3Itd2hpdGUtMTAwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci10ZWFiZXJyeS0xMDA7XHJcbiAgY29sb3I6ICRjb2xvci13aGl0ZS0xMDA7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG5cclxuICAmOjpwbGFjZWhvbGRlciB7XHJcbiAgICBjb2xvcjogJGNvbG9yLXdoaXRlLTEwMDtcclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogQmFyLlxyXG4gKi9cclxuXHJcbi5zZWFyY2hfX2lucHV0LWJhciB7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogMjBweDtcclxuICByaWdodDogLTNweDtcclxuICB3aWR0aDogMTJweDtcclxuICBoZWlnaHQ6IDJweDtcclxuICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XHJcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAxNTBtcyBlYXNlO1xyXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICBiYWNrZ3JvdW5kOiAkY29sb3Itd2hpdGUtMTAwO1xyXG4gIG9wYWNpdHk6IDE7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogU3VibWl0IGJ1dHRvbi5cclxuICovXHJcblxyXG4uc2VhcmNoX19zdWJtaXQge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDA7XHJcbiAgcmlnaHQ6IDA7XHJcbiAgd2lkdGg6IDMwcHg7XHJcbiAgaGVpZ2h0OiAzNXB4O1xyXG4gIGNvbG9yOiAkY29sb3Itd2hpdGUtMTAwO1xyXG5cclxuICBzdmcge1xyXG4gICAgd2lkdGg6IDEycHg7XHJcbiAgICBoZWlnaHQ6IDEycHg7XHJcbiAgICBjb2xvcjogJGNvbG9yLXdoaXRlLTEwMDtcclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogU2VhcmNoIGxvb3AuXHJcbiAqL1xyXG5cclxuLnNlYXJjaC1pdGVtX19sb29wIHtcclxuICBtYXJnaW46IDAgLTVweDtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBTZWFyY2ggaXRlbS5cclxuICovXHJcblxyXG4uc2VhcmNoLWl0ZW0ge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCdwaG9uZScpIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1wb3J0cmFpdCcpIHtcclxuICAgIHdpZHRoOiBjYWxjKDEwMCUgLyAyIC0gMTBweCk7XHJcbiAgfVxyXG5cclxuICB3aWR0aDogY2FsYygxMDAlIC8gMyAtIDEwcHgpO1xyXG4gIG1hcmdpbjogNXB4O1xyXG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbn1cclxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgU2xpZGVzaG93XHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG5cclxuLyoqXHJcbiAqIE1haW4uXHJcbiAqL1xyXG5cclxuLnNsaWRlc2hvdyB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1sYW5kc2NhcGUtZG93bicpIHtcclxuICAgIG1hcmdpbjogMjBweCAwIDA7XHJcbiAgfVxyXG5cclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgbWFyZ2luOiAyMHB4IDA7XHJcblxyXG4gIC5vd2wtbmF2IHtcclxuICAgIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtcG9ydHJhaXQtZG93bicpIHtcclxuICAgICAgdG9wOiBjYWxjKDUwJSAtIDI1cHgpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IGNhbGMoNTAlIC0gMzBweCk7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIHotaW5kZXg6IDE7XHJcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuXHJcbiAgICBidXR0b24ge1xyXG4gICAgICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0LWRvd24nKSB7XHJcbiAgICAgICAgd2lkdGg6IDMwcHg7XHJcbiAgICAgICAgaGVpZ2h0OiAzMHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgd2lkdGg6IDUwcHg7XHJcbiAgICAgIGhlaWdodDogNTBweDtcclxuICAgICAgYmFja2dyb3VuZDogJGNvbG9yLXRlYWJlcnJ5LTEwMCAhaW1wb3J0YW50O1xyXG4gICAgICBwb2ludGVyLWV2ZW50czogYWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHN2ZyB7XHJcbiAgICAgIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtcG9ydHJhaXQtZG93bicpIHtcclxuICAgICAgICB3aWR0aDogMTNweDtcclxuICAgICAgICBoZWlnaHQ6IDEzcHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHdpZHRoOiAxOHB4O1xyXG4gICAgICBoZWlnaHQ6IDE4cHg7XHJcbiAgICAgIGNvbG9yOiAkY29sb3Itd2hpdGUtMTAwO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBTaW5nbGUgc2xpZGUuXHJcbiAqL1xyXG5cclxuLnNsaWRlIHtcclxuICBAaW5jbHVkZSBtZWRpYSgncGhvbmUnKSB7XHJcbiAgICBoZWlnaHQ6IDI1MHB4O1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1wb3J0cmFpdCcpIHtcclxuICAgIGhlaWdodDogMzM1cHg7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZScpIHtcclxuICAgIGhlaWdodDogNDIwcHg7XHJcbiAgfVxyXG5cclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiA1MTBweDtcclxuICBwYWRkaW5nOiAyMHB4IDA7XHJcbn1cclxuXHJcblxyXG5cclxuLyoqXHJcbiAqIFNsaWRlIGJvZHkuXHJcbiAqL1xyXG5cclxuLnNsaWRlX19ib2R5IHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgYWxpZ24tY29udGVudDogY2VudGVyO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogYXV0bztcclxuICBwYWRkaW5nOiAwIDMwcHg7XHJcbiAgei1pbmRleDogMTA7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogU2xpZGUgdGl0bGUuXHJcbiAqL1xyXG5cclxuLnNsaWRlX190aXRsZSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWFyZ2luLWJvdHRvbTogMjVweDtcclxuICBwYWRkaW5nOiAwIDIwcHg7XHJcbiAgY29sb3I6ICRjb2xvci13aGl0ZS0xMDA7XHJcbiAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogU2xpZGUgaW1hZ2UuXHJcbiAqL1xyXG5cclxuLnNsaWRlX19pbWFnZSB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogMDtcclxuICByaWdodDogMDtcclxuICBib3R0b206IDA7XHJcbiAgbGVmdDogMDtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcblxyXG4gICY6OmFmdGVyIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgcmlnaHQ6IDA7XHJcbiAgICBib3R0b206IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItdGVhYmVycnktMTAwO1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICBvcGFjaXR5OiAwLjI7XHJcbiAgfVxyXG5cclxuICBpbWcge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgfVxyXG59XHJcbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIFN1Ym1lbnVcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBTdWJtZW51IGJ1dHRvbi5cclxuICovXHJcblxyXG4uc3VibWVudS1idXR0b24ge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCd0YWJsZXQtbGFuZHNjYXBlLWRvd24nKSB7XHJcbiAgICByaWdodDogLTMwcHg7XHJcbiAgICBjb2xvcjogJGNvbG9yLXdoaXRlLTEwMDtcclxuXHJcbiAgICAmLmlzLWFjdGl2ZSA+IHN2ZyB7XHJcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKC0xODBkZWcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHJpZ2h0OiAwO1xyXG5cclxuICBzdmcge1xyXG4gICAgQGluY2x1ZGUgbWVkaWEoJ2Rlc2t0b3AnKSB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcblxyXG4gICAgd2lkdGg6IDE1cHg7XHJcbiAgICBoZWlnaHQ6IDE1cHg7XHJcbiAgICBjb2xvcjogJGNvbG9yLXdoaXRlLTEwMDtcclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogU3VibWVudSBjb250YWluZXIuXHJcbiAqL1xyXG5cclxuLnN1Ym1lbnUtY29udGFpbmVyIHtcclxuICBAaW5jbHVkZSBtZWRpYSgnZGVza3RvcCcpIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KTtcclxuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgNDAwbXMgZWFzZS1vdXQsIHRyYW5zZm9ybSA0MDBtcyBlYXNlLW91dDtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICB9XHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1sYW5kc2NhcGUtZG93bicpIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIFN1Ym1lbnUuXHJcbiAqL1xyXG5cclxuLnN1Ym1lbnUge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCdkZXNrdG9wJykge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICAvL21pbi13aWR0aDogMjAwcHg7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3Itd2hpdGUtMTAwO1xyXG4gICAgY29sb3I6ICRjb2xvci1ibGFjay0xMDA7XHJcblxyXG4gIH1cclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LWxhbmRzY2FwZS1kb3duJykge1xyXG4gICAgY29sb3I6ICRjb2xvci13aGl0ZS0xMDA7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIFN1Ym1lbnUgaXRlbS5cclxuICovXHJcblxyXG4uc3VibWVudSA+IC5tZW51LWl0ZW0ge1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogU3VibWVudSBpdGVtIGxpbmsuXHJcbiAqL1xyXG5cclxuLnN1Ym1lbnUgPiAubWVudS1pdGVtID4gYSB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1wb3J0cmFpdC1kb3duJykge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgbWVkaWEoJ2Rlc2t0b3AnKSB7XHJcbiAgICBAaW5jbHVkZSBmb250KDE0cHgsIDIwcHgpO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBwYWRkaW5nOiAxNXB4IDIwcHg7XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGNvbG9yLXRlYWJlcnJ5LTcwO1xyXG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XHJcbiAgfVxyXG5cclxuICBzdmcge1xyXG4gICAgQGluY2x1ZGUgbWVkaWEoJ3RhYmxldC1sYW5kc2NhcGUtZG93bicpIHtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICByaWdodDogLTIwcHg7XHJcbiAgICB3aWR0aDogMTFweDtcclxuICAgIGhlaWdodDogMTFweDtcclxuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xyXG4gICAgdHJhbnNpdGlvbjogYWxsIDI1MG1zIGVhc2U7XHJcbiAgICBjb2xvcjogJGNvbG9yLXRlYWJlcnJ5LTEwMDtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgfVxyXG5cclxuICAmOmhvdmVyIHtcclxuICAgIHN2ZyB7XHJcbiAgICAgIHJpZ2h0OiAwO1xyXG4gICAgICBvcGFjaXR5OiAxO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJjpudGgtbGFzdC1jaGlsZCgxKSB7XHJcbiAgICBib3JkZXItYm90dG9tOiAwO1xyXG4gIH1cclxufVxyXG5cclxuLnN1Ym1lbnUgPiAuY3VycmVudC1tZW51LWl0ZW0gPiBhIHtcclxuICBAaW5jbHVkZSBtZWRpYSgndGFibGV0LXBvcnRyYWl0LWRvd24nKSB7XHJcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItdGVhYmVycnktNzA7XHJcbiAgICBjb2xvcjogJGNvbG9yLXRlYWJlcnJ5LTEwMDtcclxuICB9XHJcblxyXG4gIGJhY2tncm91bmQ6ICRjb2xvci13aGl0ZS0xMDA7XHJcblxyXG4gIHN2ZyB7XHJcbiAgICByaWdodDogMDtcclxuICAgIG9wYWNpdHk6IDE7XHJcbiAgfVxyXG59XHJcblxyXG4vLyAuc3VibWVudSA+IC5tZW51LWl0ZW06bGFzdC1jaGlsZCA+IGEge1xyXG4vLyAgIEBpbmNsdWRlIG1lZGlhKCdkZXNrdG9wJykge1xyXG4vLyAgICAgYm9yZGVyLWJvdHRvbTogMDtcclxuLy8gICB9XHJcbi8vIH1cclxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgQ29sb3JcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBDb2xvciB1dGlsaXR5IGNsYXNzZXMuXHJcbiAqL1xyXG5cclxuLy8gQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgY29sb3IgYW5kIGJhY2tncm91bmQgY29sb3IgdXRpbGl0eSBjbGFzc2VzIGJhc2VkIG9uXHJcbi8vIGV2ZXJ5IGNvbG9yIGRlZmluaXRpb24gaW4gYHNldHRpbmdzL19jb2xvci5zY3NzYC5cclxuLy9cclxuLy8gTG9vcCB0aHJvdWdoIGV2ZXJ5IGAka2V5YCBhbmQgYCRtYXBgIGluIHRoZSBgJGNvbG9yc2AgdmFyaWFibGUgbWFwIGRlZmluZWQgaW5cclxuLy8gYHNldHRpbmdzL19jb2xvci5zY3NzYC5cclxuQGVhY2ggJGtleSwgJG1hcCBpbiAkY29sb3JzIHtcclxuXHJcbiAgLy8gTG9vcCB0aHJvdWdoIGV2ZXJ5IGAkc2hhZGVgIGFuZCBgJHJnYmAgaW4gYCRtYXBgLlxyXG4gIEBlYWNoICRzaGFkZSwgJHJnYiBpbiAkbWFwIHtcclxuXHJcbiAgICAvLyBMb29wIHRocm91Z2ggZXZlcnkgYGNvbG9yYCBhbmQgYGJhY2tncm91bmQtY29sb3JgIHJ1bGVzLlxyXG4gICAgQGVhY2ggJHJ1bGUgaW4gY29sb3IsIGJhY2tncm91bmQtY29sb3Ige1xyXG5cclxuICAgICAgLyoqXHJcbiAgICAgICAqIGAjeyRydWxlfWAgI3skcmdifS0jeyRzaGFkZX0gY29sb3IgdXRpbGl0eS5cclxuICAgICAgICovXHJcblxyXG4gICAgICAuI3skcnVsZX0tI3t1bnF1b3RlKCRrZXkpfS0je3VucXVvdGUoJHNoYWRlKX0ge1xyXG4gICAgICAgICN7JHJ1bGV9OiAkcmdiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIE9iamVjdCBGaXRcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBPYmplY3QgZml0LlxyXG4gKlxyXG4gKiAxLiBGb250IGZhbWlseSBwb2x5ZmlsbCB3aXRoIChodHRwczovL2dpdGh1Yi5jb20vYmZyZWQtaXQvb2JqZWN0LWZpdC1pbWFnZXMpLlxyXG4gKi9cclxuXHJcbi8vIExvb3AgdGhyb3VnaCBldmVyeSB2YWx1ZSBmb3IgdGhlIGBvYmplY3QtZml0YCBwcm9wZXJ0eS5cclxuQGVhY2ggJHZhbHVlIGluIGZpbGwsIGNvbnRhaW4sIGNvdmVyLCBub25lLCBzY2FsZS1kb3duIHtcclxuXHJcbiAgLyoqXHJcbiAgICogYG9iamVjdC1maXRgICN7JHZhbHVlfSB1dGlsaXR5IGNsYXNzLlxyXG4gICAqL1xyXG5cclxuICAuI3skdmFsdWV9IHtcclxuICAgIGZvbnQtZmFtaWx5OiAnb2JqZWN0LWZpdDogI3skdmFsdWV9Oyc7IC8qIDEgKi9cclxuICAgIG9iamVjdC1maXQ6ICN7JHZhbHVlfTtcclxuICB9XHJcbn1cclxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgUG9zaXRpb25cclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBQb3NpdGlvbiB1dGlsaXR5IGNsYXNzLlxyXG4gKi9cclxuXHJcbkBlYWNoICR2YWx1ZSBpbiBzdGF0aWMsIHJlbGF0aXZlLCBhYnNvbHV0ZSwgZml4ZWQsIHN0aWNreSB7XHJcbiAgLiN7JHZhbHVlfSB7XHJcbiAgICBwb3NpdGlvbjogJHZhbHVlO1xyXG4gIH1cclxufVxyXG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBUZXh0XHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vKipcclxuICogRm9udCBmYW1pbHkgdXRpbGl0eSBjbGFzc2VzLlxyXG4gKi9cclxuXHJcbkBlYWNoICRrZXksICRicmVha3BvaW50IGluICRicmVha3BvaW50cyB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJGJyZWFrcG9pbnQpIHtcclxuICAgIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRmb250LWZhbWlseSB7XHJcbiAgICAgIC50ZXh0LSN7JGtleX0tI3skcHJvcGVydHl9IHtcclxuICAgICAgICBmb250LWZhbWlseTogbWFwLWdldCgkZm9udC1mYW1pbHksICRwcm9wZXJ0eSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogVGV4dCBzaXplIHV0aWxpdHkgY2xhc3Nlcy5cclxuICovXHJcblxyXG5AZWFjaCAka2V5LCAkYnJlYWtwb2ludCBpbiAkYnJlYWtwb2ludHMge1xyXG4gIEBpbmNsdWRlIG1lZGlhKCRicmVha3BvaW50KSB7XHJcbiAgICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkZm9udC1zaXplIHtcclxuICAgICAgLnRleHQtI3ska2V5fS0jeyRwcm9wZXJ0eX0ge1xyXG4gICAgICAgIEBpbmNsdWRlIHRleHQoJHByb3BlcnR5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBUZXh0IGFsaWdubWVudCB1dGlsaXR5IGNsYXNzZXMuXHJcbiAqL1xyXG5cclxuQGVhY2ggJGtleSwgJGJyZWFrcG9pbnQgaW4gJGJyZWFrcG9pbnRzIHtcclxuICBAaW5jbHVkZSBtZWRpYSgkYnJlYWtwb2ludCkge1xyXG4gICAgQGVhY2ggJGRpcmVjdGlvbiBpbiBsZWZ0LCByaWdodCwgY2VudGVyIHtcclxuICAgICAgLnRleHQtI3ska2V5fS0jeyRkaXJlY3Rpb259IHtcclxuICAgICAgICB0ZXh0LWFsaWduOiAkZGlyZWN0aW9uO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIEZvbnQgd2VpZ2h0IHV0aWxpdHkgY2xhc3Nlcy5cclxuICpcclxuICogMS4gTXVsdGlwbHkgbG9vcGVkIGludGVnZXIgYnkgMTAwIGZvciBjb3JyZWN0IGZvbnQgd2VpZ2h0IHZhbHVlLlxyXG4gKi9cclxuXHJcbkBlYWNoICRrZXksICRicmVha3BvaW50IGluICRicmVha3BvaW50cyB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJGJyZWFrcG9pbnQpIHtcclxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggOSB7XHJcbiAgICAgICRpOiAkaSAqIDEwMDsgLy8gWzFdXHJcblxyXG4gICAgICAudGV4dC0jeyRrZXl9LSN7JGl9IHtcclxuICAgICAgICBmb250LXdlaWdodDogI3skaX07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogVGV4dCB0cmFuc2Zvcm0gdWl0bGl0eSBjbGFzc2VzLlxyXG4gKi9cclxuXHJcbkBlYWNoICRrZXksICRicmVha3BvaW50IGluICRicmVha3BvaW50cyB7XHJcbiAgQGluY2x1ZGUgbWVkaWEoJGJyZWFrcG9pbnQpIHtcclxuICAgIEBlYWNoICR0cmFuc2Zvcm0gaW4gY2FwaXRhbGl6ZSwgdXBwZXJjYXNlLCBsb3dlcmNhc2UsIG5vbmUsIGZ1bGwtd2lkdGgge1xyXG4gICAgICAudGV4dC0jeyRrZXl9LSN7JHRyYW5zZm9ybX0ge1xyXG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiAkdHJhbnNmb3JtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIFZlcnRpY2FsIFJoeXRobVxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAxMCB7XHJcbiAgJGk6ICRpICogODtcclxuXHJcbiAgLnZyLSN7JGl9IHtcclxuICAgIG1hcmdpbi1ib3R0b206ICN7JGl9cHg7XHJcbiAgfVxyXG59XHJcbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIFotaW5kZXhcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBVdGlsaXR5IGNsYXNzZXMgZm9yIG1hbmlwdWxhdGluZyBzdGFja2luZyBvcmRlciBpbiBIVE1MLlxyXG4gKi9cclxuXHJcbkBlYWNoICRrZXksICR2YWx1ZSBpbiAkei1pbmRleCB7XHJcbiAgLnotaW5kZXgtI3ska2V5fSB7XHJcbiAgICB6LWluZGV4OiAkdmFsdWU7XHJcbiAgfVxyXG59XHJcbiIsIi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbi8vIFotaW5kZXhcclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8vIEEgbGltaXRlZCBhcnJheSBvZiB2YWx1ZXMgZm9yIHRoZSBgei1pbmRleGAgcHJvcGVydHkgdG8gcHJldmVudFxyXG4vLyBleGFnZ2VyYXRlZCBhbW91bnRzIGFuZCB1Z2x5IGhhY2tzLlxyXG5cclxuJHotaW5kZXg6IChcclxuICAnMCc6ICAwLFxyXG4gICcxJzogIDEwLFxyXG4gICcyJzogIDIwLFxyXG4gICczJzogIDMwLFxyXG4gICc0JzogIDQwLFxyXG4gICc1JzogIDUwLFxyXG4gICc2JzogIDYwLFxyXG4gICc3JzogIDcwLFxyXG4gICc4JzogIDgwLFxyXG4gICc5JzogIDkwLFxyXG4gICcxMCc6IDEwMFxyXG4pO1xyXG4iXX0= */
