/*
 * A partial implementation of the Ruby list functions from Compass:
 * https://github.com/Compass/compass/blob/stable/lib/compass/sass_extensions/functions/lists.rb
 */
/*
 * A partial implementation of the Ruby constants functions from Compass:
 * https://github.com/Compass/compass/blob/stable/lib/compass/sass_extensions/functions/constants.rb
 */
/*
 * A partial implementation of the Ruby display functions from Compass:
 * https://github.com/Compass/compass/blob/stable/core/lib/compass/core/sass_extensions/functions/display.rb
 */
/**
 * Collected colours.
 *
 * These are colours Agile Collective have gathered and might want to re-use
 * in other projects. Usually they would not be referenced directly, instead
 * they would be referenced in the colour based variables above.
 *
 * Your colours should be named using the 'Name that color' web service.
 *
 * @see: http://chir.ag/projects/name-that-color
 * or http://www.color-blindness.com/color-name-hue/
 */
/**
 * Site colours.
 *
 * The colours specific to this site are defined below. Avoid using any hex
 * colours here, instead use a variable referencing a hex colour defined above.
 * If your colour isn't defined yet, go to http://chir.ag/projects/name-that-color
 * and enter your hex value to find your colour name and then add it to the
 * appropriate colour section above.
 */
/**
 * $Agile Button
 */
/**
 * $ARROW
 */
/**
 * Block title extend
 */
/**
 * $CALL-TO-ACTION
 * Any call to action block get assigned a background colour based on list of favriables
 */
/**
 * Classy.scss
 * A set of useful mixins & classes for Drupal
 */
/**
 * $HLIST
 */
.block--system-user-menu .menu, .block--nav-bar .menu, .action-links, .breadcrumb {
  margin: 0;
  padding: 0;
  border: 0; }
  .block--system-user-menu .menu:after, .block--nav-bar .menu:after, .action-links:after, .breadcrumb:after {
    content: "";
    display: table;
    clear: both; }
  .block--system-user-menu .menu li, .block--nav-bar .menu li, .action-links li, .breadcrumb li {
    list-style-image: none;
    list-style-type: none;
    margin-left: 0;
    white-space: nowrap;
    display: inline;
    float: left; }

/**
 * $ISLAND
 */
.comment__content {
  display: block;
  margin-bottom: 1.4375em; }
  .comment__content:after, .field--type-taxonomy-term-reference .field__items:after, .pager:after, .site-branding:after {
    content: "";
    display: table;
    clear: both; }
  .comment__content > :last-child, .comment__content > :last-child {
    margin-bottom: 0; }

.comment__content {
  padding: 18px 1em; }

/**
 * $UNDERLINES
 */
#coffee-form a {
  background-image: none;
  background-position: 0 0;
  text-decoration: none; }

select:focus,
input:focus,
textarea:focus {
  box-shadow: compact(0 0 4px 1px rgba(255, 221, 64, 0.3), false, false, false, false, false, false, false, false, false);
  outline: 1px solid #ffdd40; }
  @media screen and (-moz-images-in-menus: 0) {
    select:focus,
    input:focus,
    textarea:focus {
      outline-offset: -8px; } }

fieldset {
  margin-left: 0;
  margin-right: 0;
  padding: 9px 1em 18px 1em;
  border-color: #009fee; }

legend {
  font-size: 18px;
  font-size: 1.125rem;
  padding: 0 0.8em;
  color: #6a7076; }

select:focus, input:focus, textarea:focus {
  outline: 0; }

img, media {
  max-width: 100%;
  height: auto;
  vertical-align: top; }
  .l-content img, .l-content media {
    border: 1px solid #000000; }
    .lt-ie9 .l-content img, .lt-ie9 .l-content media {
      max-width: none; }
  .l-content .field-name-field-description img,
  .l-content .field-name-body img, .l-content .field-name-field-description media,
  .l-content .field-name-body media {
    border: none; }

/**
 * $TABLES
 */
table {
  width: 100%;
  margin-bottom: 18px; }

th {
  padding: 0.5em 1em;
  background-color: #f2f2f2;
  color: #222222; }
  th a,
  th a.active {
    color: #222222; }
    th a img,
    th a.active img {
      margin: 2px 3px; }

td {
  padding: 0.5em 1em; }

tr.odd {
  background: #e7e7e7; }
  .page-node-edit tr.odd {
    background: #f7f7f7; }

tr.even {
  background: #f1f1f1; }
  .page-node-edit tr.even {
    background: #f7f7f7; }

/**
 * $FONT-FACE
 */
* html {
  font-size: 100%; }

html {
  font-size: 16px;
  line-height: 1.4375em; }

@font-face {
  font-family: 'HK Grotesk';
  src: url("../fonts/hkgrotesk-regular-webfont.woff2") format("woff2"), url("../fonts/hkgrotesk-regular-webfont.woff") format("woff");
  font-weight: normal;
  font-style: normal; }

@font-face {
  font-family: 'HK Grotesk';
  src: url("../fonts/hkgrotesk-italic-webfont.woff2") format("woff2"), url("../fonts/hkgrotesk-italic-webfont.woff") format("woff");
  font-weight: normal;
  font-style: italic; }

@font-face {
  font-family: 'HK Grotesk';
  src: url("../fonts/hkgrotesk-semibold-webfont.woff2") format("woff2"), url("../fonts/hkgrotesk-semibold-webfont.woff") format("woff");
  font-weight: 500;
  font-style: normal; }

@font-face {
  font-family: 'HK Grotesk';
  src: url("../fonts/hkgrotesk-bold-webfont.woff2") format("woff2"), url("../fonts/hkgrotesk-bold-webfont.woff") format("woff");
  font-weight: 700;
  font-style: normal; }

@font-face {
  font-family: 'HK Grotesk';
  src: url("../fonts/hkgrotesk-bolditalic-webfont.woff2") format("woff2"), url("../fonts/hkgrotesk-bolditalic-webfont.woff") format("woff");
  font-weight: bold;
  font-style: italic; }

/**
 * $BASE-TYPOGRAPHY
 */
body {
  font-family: 'HK Grotesk';
  color: #222222;
  -ms-font-feature-settings: "liga","dlig";
  -o-font-feature-settings: "liga","dlig";
  font-feature-settings: "liga","dlig"; }

/**
 * $LINKS
 */
a {
  color: #009fee;
  text-decoration: none; }
  a:visited {
    color: #009fee; }
  a:focus {
    color: #000; }
  a:hover {
    color: #000; }
  a:active {
    color: #55c7ff; }

p a,
span a {
  color: #009fee; }
  p a:visited,
  span a:visited {
    color: #009fee; }
  p a:focus,
  span a:focus {
    color: #000; }
  p a:hover,
  span a:hover {
    color: #000; }
  p a:active,
  span a:active {
    color: #55c7ff; }

/**
 * $HEADINGS
 */
h1, .alpha,
h2, .beta, .site-branding__name,
h3, .gamma,
h4, .delta, caption,
h5, .epsilon,
h6, .zeta {
  margin-top: 0em;
  padding-top: 0em;
  padding-bottom: 0em;
  margin-bottom: 0.2875em;
  color: #464a4e;
  font-family: "HK Grotesk", sans-serif;
  font-weight: 500; }
  h1 a,
  h1 a:visited, .alpha a,
  .alpha a:visited,
  h2 a,
  h2 a:visited, .beta a, .site-branding__name a,
  .beta a:visited, .site-branding__name a:visited,
  h3 a,
  h3 a:visited, .gamma a,
  .gamma a:visited,
  h4 a,
  h4 a:visited, .delta a, caption a,
  .delta a:visited, caption a:visited,
  h5 a,
  h5 a:visited, .epsilon a,
  .epsilon a:visited,
  h6 a,
  h6 a:visited, .zeta a,
  .zeta a:visited {
    color: #009fee;
    background-image: none;
    background-position: 0 0;
    text-decoration: none; }

h1, .alpha {
  font-size: 30px;
  font-size: 1.875rem;
  line-height: 1.15em;
  margin-top: 0.575em;
  margin-bottom: 0.575em; }

@media (min-width: 660px) {
  h1, .alpha {
    font-size: 30px;
    font-size: 1.875rem;
    line-height: 1.15em;
    margin-top: 0.575em;
    margin-bottom: 0.3833333333em; } }

h2, .beta, .site-branding__name {
  color: #6a7076;
  font-size: 34px;
  font-size: 2.125rem;
  line-height: 1.3529411765em;
  margin-top: 1.0147058824em;
  margin-bottom: 0.3382352941em; }

h3, .gamma {
  font-size: 21px;
  font-size: 1.3125rem;
  line-height: 1.6428571429em;
  margin-top: 1.0952380952em;
  margin-bottom: 0.5476190476em;
  margin-bottom: 0; }

h4, .delta, caption {
  font-size: 18px;
  font-size: 1.125rem;
  line-height: 1.2777777778em;
  margin-top: 0.6388888889em;
  margin-bottom: 0.6388888889em; }

h5, .epsilon {
  font-size: 16px;
  font-size: 1rem;
  line-height: 1.4375em;
  margin-top: 0.71875em;
  margin-bottom: 0.71875em; }

h6, .zeta {
  color: #6a7076;
  font-size: 16px;
  font-size: 1rem;
  line-height: 1.4375em;
  margin-top: 0.71875em;
  margin-bottom: 0.71875em; }

.alumni .node--landing-page-block h4 {
  margin-bottom: 0; }

/**
 * $PARAGRAPHS
 */
p,
blockquote {
  margin: 0;
  margin-top: 0em;
  padding-top: 0em;
  padding-bottom: 0em;
  margin-bottom: 1.4375em; }

p + img {
  float: left;
  margin-right: 1em; }

b, strong {
  font-weight: 500; }

/**
 * $QUOTES
 */
blockquote {
  margin-top: 0em;
  padding-top: 1.4375em;
  padding-bottom: 1.4375em;
  margin-bottom: 1.4375em;
  padding: 0 1.5em;
  border-style: solid;
  border-width: 0.0625em;
  padding: 1.375em;
  border-left-style: solid;
  border-left-width: 0.625em;
  padding-left: 0.8125em;
  font-style: italic;
  color: #064771; }
  blockquote p {
    margin: 0; }

q {
  font-style: italic; }

/**
 * $MARKS
 */
mark,
.marker {
  padding: 0.1em 0.5em;
  background: #52b1ea;
  color: #fff;
  font-size: 12px;
  font-size: 0.75rem;
  border-radius: 10px; }

strong.highlight {
  color: #008b8b; }

.field-name-body li {
  margin: 6px 0; }

/**
 * $VIEWS-ACCOMODATION-BLOCKS
 */
.block--views-accomodation-block-1 .views-row {
  min-height: 390px; }
  @media (min-width: 1260px) {
    .block--views-accomodation-block-1 .views-row:nth-child(3n+1) {
      width: 28.6370597213%;
      clear: right;
      float: left;
      margin-left: 0;
      margin-right: 7.0444104181%; }
    .block--views-accomodation-block-1 .views-row:nth-child(3n+2) {
      width: 28.6370597213%;
      clear: right;
      float: left;
      margin-right: 7.0444104181%; }
    .block--views-accomodation-block-1 .views-row:nth-child(3n+3) {
      width: 28.6370597213%;
      clear: right;
      float: right;
      margin-right: 0; } }

.accomodation-item--name {
  font-weight: 400;
  font-size: 22px;
  font-size: 1.375rem;
  line-height: 1.2;
  margin: 0.3em 0 0; }

.accomodation-item--location {
  margin-bottom: 0;
  font-size: 12px;
  font-size: 0.75rem; }

.accomodation-item--price {
  margin-bottom: 0;
  font-size: 14px;
  font-size: 0.875rem;
  font-weight: 700;
  line-height: 1.2; }

/**
 * Basic styles for block alt.
 */
.block--alt {
  background: #ececec;
  margin-bottom: 1.5em; }
  .block--alt h3 {
    background: #f2c700;
    padding-left: 1.1em;
    margin-bottom: 0; }
  .block--alt ul {
    list-style: none;
    padding: 1em 1.5em;
    margin: 0; }
  .block--alt li {
    padding-left: 0; }
    .block--alt li.pager__item--current {
      padding-left: 0.8em; }

.block--alt--filter h3 {
  background: #f2c700; }

.block--alt--search h3 {
  background: #f2c700; }

.block--alt--search label {
  background: #009fee;
  color: #fff;
  display: block;
  font-family: "HK Grotesk", sans-serif;
  font-weight: 400;
  font-size: 1.4rem;
  margin-bottom: 0;
  padding-left: 1.1em;
  line-height: 2.28571em; }

.block--alt--search .views-exposed-form .views-exposed-widget {
  float: none;
  padding: 0; }

.block--alt--search input.form-text {
  border-width: 0px 0px 1px 0px;
  border-left: 1px solid #ececec;
  height: 48px; }

.block--alt--search input.form-text:focus {
  border-bottom: 1px solid #009fee;
  border-left: 1px solid #ececec;
  box-shadow: 0 0 0 0;
  outline-offset: 0;
  outline: 0; }

.block--alt--search .views-widget {
  width: 85%;
  float: left; }

.block--alt--search .views-exposed-form .views-submit-button {
  float: left;
  overflow: hidden;
  width: 15%; }
  .block--alt--search .views-exposed-form .views-submit-button input {
    border-bottom: 1px solid #f2c700;
    background: url(../images/magnifyingglass-yellow-30.png) center center #ececec no-repeat;
    height: 48px;
    margin: 0;
    text-indent: -9999em;
    width: 100%;
    padding: 0;
    background-size: 50%; }
  .block--alt--search .views-exposed-form .views-submit-button input:hover {
    background-image: url(../images/magnifyingglass-white-30.png);
    background-color: #b3b3b3; }

/**
 * $BLOCK-ANNOUNCEMENTS
 */
.l-region--sidebar-second .view-announcements .node__title {
  font-size: 18px;
  font-size: 1.125rem;
  font-weight: 400; }

.l-region--announcements .view-announcements {
  padding: 1em 0.6em 0.6em 0.6em;
  min-height: 6em;
  position: relative; }
  @media (min-width: 550px) {
    .l-region--announcements .view-announcements {
      padding-left: 16%;
      background: #ddd url("../images/colour_shield_full.gif") no-repeat -90px center;
      background-size: 32%;
      -moz-background-size: 32%; } }
  @media (min-width: 660px) {
    .l-region--announcements .view-announcements {
      padding-left: 26%; } }
  .l-region--announcements .view-announcements a {
    color: #000000; }
  .l-region--announcements .view-announcements .field, .l-region--announcements .view-announcements .node--teaser {
    margin: 0; }
  .l-region--announcements .view-announcements .node__title {
    font-weight: 400;
    line-height: 1;
    font-size: 30px;
    font-size: 1.875rem;
    margin: 0; }
    @media (min-width: 550px) {
      .l-region--announcements .view-announcements .node__title {
        float: left;
        width: 38%; } }
  @media (min-width: 550px) {
    .l-region--announcements .view-announcements .node__content {
      float: left;
      width: 60%; } }
  .l-region--announcements .view-announcements .node--announcement--teaser {
    overflow: auto; }

/*additional styling for annoucement on accommodation node*/
.section-facilities .view-announcements .node--announcement {
  border-top: 5px solid #f2c700;
  padding-top: 1em;
  border-bottom: 5px solid #f2c700; }

#block-views-testimonials-block h3.block__title,
.block--views-cr-societies-block-2 h3.block__title {
  text-align: center; }

#block-views-testimonials-block .field-name-field-main-image img,
.block--views-cr-societies-block-2 .field-name-field-main-image img {
  padding: 30px 30px 0px; }
  .lt-ie9 #block-views-testimonials-block .field-name-field-main-image img, .lt-ie9
  .block--views-cr-societies-block-2 .field-name-field-main-image img {
    height: 230px !important; }

#block-views-testimonials-block .field-name-field-main-image,
.block--views-cr-societies-block-2 .field-name-field-main-image {
  margin: 0; }

#block-views-testimonials-block .field-name-title,
#block-views-testimonials-block .views-field-title,
.block--views-cr-societies-block-2 .field-name-title,
.block--views-cr-societies-block-2 .views-field-title {
  margin-bottom: 0px; }
  #block-views-testimonials-block .field-name-title h3,
  #block-views-testimonials-block .views-field-title h3,
  .block--views-cr-societies-block-2 .field-name-title h3,
  .block--views-cr-societies-block-2 .views-field-title h3 {
    text-align: center;
    margin-bottom: 0px;
    margin-top: -20px; }
  #block-views-testimonials-block .field-name-title a,
  #block-views-testimonials-block .views-field-title a,
  .block--views-cr-societies-block-2 .field-name-title a,
  .block--views-cr-societies-block-2 .views-field-title a {
    margin-bottom: 0px;
    background: #f2c700;
    color: black;
    font-size: 0.8em;
    margin-bottom: 10px;
    padding: 4px 0;
    margin: 0 0;
    box-shadow: 10px 0 0 #f2c700, -10px 0 0 #f2c700;
    transition: 0.2s; }
    #block-views-testimonials-block .field-name-title a:hover,
    #block-views-testimonials-block .views-field-title a:hover,
    .block--views-cr-societies-block-2 .field-name-title a:hover,
    .block--views-cr-societies-block-2 .views-field-title a:hover {
      background: #ffe259;
      box-shadow: 10px 0 0 #ffe259, -10px 0 0 #ffe259;
      color: black;
      transition: 0.2s; }

#block-views-testimonials-block .field-name-field-country-of-origin,
.block--views-cr-societies-block-2 .field-name-field-country-of-origin {
  text-align: center;
  margin-bottom: 2px;
  margin-top: 6px;
  font-size: 85%;
  font-weight: 500; }

#block-views-testimonials-block .field-name-body,
.block--views-cr-societies-block-2 .field-name-body {
  display: block;
  float: left;
  margin-bottom: 0.5em; }
  #block-views-testimonials-block .field-name-body p,
  .block--views-cr-societies-block-2 .field-name-body p {
    padding: 0 15px; }
    #block-views-testimonials-block .field-name-body p:last-of-type,
    .block--views-cr-societies-block-2 .field-name-body p:last-of-type {
      margin-bottom: 0; }
  #block-views-testimonials-block .field-name-body:before, #block-views-testimonials-block .field-name-body:after,
  .block--views-cr-societies-block-2 .field-name-body:before,
  .block--views-cr-societies-block-2 .field-name-body:after {
    content: " ";
    display: block;
    width: 35px;
    min-height: 25px;
    margin-right: 100%;
    background-image: url("../images/quote-marks.gif");
    background-position: 0% 0%;
    float: left;
    background-repeat: no-repeat;
    margin-bottom: -15px; }
  #block-views-testimonials-block .field-name-body:before,
  .block--views-cr-societies-block-2 .field-name-body:before {
    margin-left: -20px; }
  #block-views-testimonials-block .field-name-body:after,
  .block--views-cr-societies-block-2 .field-name-body:after {
    background-position: 100% 100%;
    margin-right: 0;
    margin-left: 89%;
    margin-bottom: 0;
    margin-top: -1em; }

#block-views-testimonials-block .views-field-body,
.block--views-cr-societies-block-2 .views-field-body {
  display: block;
  float: left;
  font-size: 1.2em;
  line-height: 1.6em;
  color: #777777;
  margin-bottom: 0.5em;
  margin-top: 0.5em; }

#block-views-testimonials-block .field-name-node-link,
#block-views-testimonials-block .view-footer,
.block--views-cr-societies-block-2 .field-name-node-link,
.block--views-cr-societies-block-2 .view-footer {
  width: 100%;
  clear: both;
  font-size: 14px;
  margin-top: 10px;
  text-align: center; }
  #block-views-testimonials-block .field-name-node-link a,
  #block-views-testimonials-block .view-footer a,
  .block--views-cr-societies-block-2 .field-name-node-link a,
  .block--views-cr-societies-block-2 .view-footer a {
    display: block; }

#block-views-testimonials-block .field-name-field-main-image img, .block--views-cr-societies-block-2 .field-name-field-main-image img {
  padding: 0 10px; }

/**
 * $BLOCK-CTA
 * 
 * Call To Action blocks
 */
.block--cta .block__content {
  margin: 0.7em 0; }
  .block--cta .block__content a {
    min-height: auto;
    background-image: none;
    line-height: 1.2em;
    background: #f2c700;
    color: #222222;
    display: inline-block;
    padding: 1em 1em;
    word-break: break-word;
    font-size: 0.9em;
    font-weight: 500;
    height: auto;
    transition: 0.2s; }
    .block--cta .block__content a:hover {
      background: #ffe259;
      transition: 0.2s; }
  .block--cta .block__content p, .block--cta .block__content ul {
    margin: 0;
    padding: 0;
    list-style: none; }

.block--cta--list .block__content ul a {
  padding: 5px 1em; }

.block--cta--list .block__content ul {
  padding-bottom: 0.5em; }

@media (min-width: 1120px) {
  .l-region--sidebar-first .block--cta .block__content a,
  .l-region--sidebar-second .block--cta .block__content a {
    font-size: 0.93em; } }

@media (min-width: 1260px) {
  .l-region--sidebar-first .block--cta .block__content a,
  .l-region--sidebar-second .block--cta .block__content a {
    font-size: 0.93em; } }

.l-region--curator {
  clear: both; }

.crt-grid-post-v2 .crt-post-fullname, .crt-post-v2 .crt-post-fullname {
  display: none !important; }

.crt-load-more {
  margin-bottom: 1em; }
  .crt-load-more a {
    padding: 10px !important; }
    .crt-load-more a:hover {
      background: #ffe259; }

.crt-post-v2 .crt-post-border {
  border: 0 !important; }

.linkedin-block span.ext {
  display: none !important;
  background: none !important; }

.block__map {
  background-color: transparent;
  padding: 0; }
  .block__map .block__content h3 {
    color: #697d92;
    font-size: 0.8em !important;
    font-weight: 700;
    letter-spacing: 1px;
    margin-bottom: 20PX;
    padding-top: 33px;
    padding-bottom: 10px;
    position: relative;
    /*text-transform: uppercase;*/
    text-align: center; }
    .block__map .block__content h3:before {
      background: url("../images/scallop-grey.svg");
      background-size: cover;
      content: '';
      height: 25px;
      left: 50%;
      margin-left: -11px;
      margin-top: -33px;
      position: absolute;
      width: 22px; }
  .block__map iframe {
    width: 100%; }

.block--ds-extras-standard-page-rhs .block__content > div {
  margin-bottom: 2em; }

.block--ds-extras-standard-page-rhs .block__content ul {
  margin: 0;
  padding: 0; }
  .block--ds-extras-standard-page-rhs .block__content ul li {
    list-style-type: none;
    list-style-image: none; }

.block--search {
  margin-right: 0.4em;
  margin-top: -1.5em; }
  .block--search h2, .block--search label {
    width: 0; }
  @media (min-width: 550px) {
    .block--search {
      margin-right: 3.5em;
      margin-top: 1em; } }
  @media (min-width: 660px) {
    .block--search {
      margin-right: 6em;
      margin-top: 1em; } }
  @media (min-width: 1120px) {
    .block--search {
      margin-right: 0;
      margin-top: 0.25em;
      float: right; } }

/**
 * $SHARETHIS
 *
 * Fixes the sharethis block's layout be resetting to content-box model.
 */
.block--sharethis * {
  box-sizing: content-box; }

/**
 * $USER-MENU
 */
.block--system-user-menu a {
  padding: 0 0.6em;
  border-right: 1px solid #f2c700; }

.block--system-user-menu li:first-child a {
  padding-left: 0; }

.block--system-user-menu li:last-child a {
  padding-right: 0;
  border-right: 0; }

/**
 * $NAV-BAR
 */
.block--nav-bar a {
  display: block;
  padding: 1.2em 1em;
  font-size: 16px;
  font-size: 1rem;
  text-transform: uppercase;
  background-image: none;
  background-position: 0 0;
  text-decoration: none;
  color: #fff; }
  .block--nav-bar a:hover, .block--nav-bar a:focus {
    color: #064771; }

@media (min-width: 660px) {
  .block--nav-bar a {
    font-size: 18px;
    font-size: 1.125rem;
    border-left: 1px solid #fff; }
  .block--nav-bar li:last-child a {
    border-right: 1px solid #fff; } }

/**
 * $COMMENT-WRAPPER
 */
.comment-wrapper {
  padding: 18px 1em;
  background-color: #d9e9ef; }

/**
 * $COMMENT
 */
.comment__info {
  margin-top: 18px;
  margin-bottom: 18px; }
  .comment__info .username {
    margin-bottom: 9px;
    color: #52b1ea;
    text-transform: uppercase;
    background-image: none;
    background-position: 0 0;
    text-decoration: none; }
    .comment__info .username:hover {
      text-decoration: underline; }

.comment__content {
  background-color: #fff; }

.comment__submitted {
  display: inline; }

@media (min-width: 660px) {
  .comment__info {
    float: left;
    width: 25%;
    text-align: center; }
    .comment__info .user-picture {
      width: 70%;
      margin: 0 auto 9px auto; }
    .comment__info .username {
      display: block; }
  .comment__content {
    float: right;
    width: 70%;
    margin-left: 5%;
    position: relative;
    background: #FFF; }
    .comment__content:after, .comment__content:before {
      right: 100%;
      border: solid transparent;
      content: " ";
      height: 0;
      width: 0;
      position: absolute;
      pointer-events: none; }
    .comment__content:after {
      border-color: transparent;
      border-right-color: #FFF;
      border-width: 20px;
      top: 50%;
      margin-left: -20px; }
    .comment__content:after {
      top: 20px; }
  .comment__submitted {
    display: block;
    margin-bottom: 9px; } }

/**
 * $ACCORDION
 */
.l-main .field-collection-view {
  margin: 0;
  border-bottom: 0; }
  .l-main .field-collection-view .ui-accordion-header {
    border: 0;
    margin: 0;
    font-size: 15px;
    font-size: 0.9375rem; }
  .l-main .field-collection-view .ui-accordion-header-active {
    border: 0;
    margin: 0; }
  .l-main .field-collection-view legend {
    display: none; }

/**
 * $FIELD-TAXONOMY-TERM
 */
.field--type-taxonomy-term-reference .field__item {
  float: left;
  margin-right: 0.5em; }

/**
 * $FIELD
 */
.field {
  margin-bottom: 1.4375em; }

.field-name-field-images {
  clear: both; }
  .field-name-field-images img {
    margin-bottom: 1em; }

.field .file-image {
  display: block; }

.field .field--name-field-caption {
  text-align: right;
  font-style: italic;
  font-size: 0.8em;
  color: grey;
  padding: 5px; }

span.date-display-single {
  color: #777777;
  display: block; }

.page-current-members-common-room-minutes .item-list h3:after {
  content: "\2228";
  color: #b3b3b3;
  font-size: 0.8em;
  margin-left: 1em; }

.node--cr-event .field-name-field-date-time, .node--cr-event--archived- .field-name-field-date-time, .node-type-event .field-name-field-date-time, .node--cr-event--archived-event .field-name-field-date-time {
  font-size: 1.2em;
  margin: 0; }

.node--cr-event .field-name-field-images, .node--cr-event--archived- .field-name-field-images, .node-type-event .field-name-field-images, .node--cr-event--archived-event .field-name-field-images {
  font-size: 21px;
  font-size: 1.3125rem;
  line-height: 1.6428571429em;
  margin-top: 1.0952380952em;
  margin-bottom: 0.5476190476em; }

.node-type-page .l-main .field-collection-view .ui-accordion-header {
  font-size: 1.3em; }

.node-type-page .l-main .field-collection-view .ui-widget {
  font-size: 1em; }
  .node-type-page .l-main .field-collection-view .ui-widget a {
    color: #009fee; }

.field-name-body img {
  padding: 1em; }

.page-node-394 .field-name-body img,
.page-node-540 .field-name-body img,
.page-node-539 .field-name-body img {
  padding: 0; }

.page-node-394 .field-name-body h4 img,
.page-node-540 .field-name-body h4 img,
.page-node-539 .field-name-body h4 img {
  margin-top: -0.5em; }

.field-name-field-related-document .file {
  display: block; }
  .field-name-field-related-document .file img {
    float: left !important;
    margin-left: 0 !important;
    padding: 3px 0 0 0 !important; }

/**
 * $AUTOCOMPLETE
 */
html.js input.form-autocomplete {
  background-image: url(../images/throbber-inactive.png);
  background-position: 100% center; }
  html.js input.form-autocomplete.throbbing {
    background-image: url(../images/throbber-active.gif); }

/**
 * $COLLAPSIBLE
 */
html.js fieldset.collapsible {
  padding: 0;
  border: none; }
  html.js fieldset.collapsible legend {
    width: 100%;
    padding: 0; }
  html.js fieldset.collapsible .fieldset-legend {
    padding: 0;
    background: none; }
    html.js fieldset.collapsible .fieldset-legend .summary {
      float: right; }
  html.js fieldset.collapsible .fieldset-title {
    display: block;
    padding: 0.75em;
    background-color: #f2f2f2;
    color: #009fee;
    background-image: none;
    background-position: 0 0;
    text-decoration: none; }
    html.js fieldset.collapsible .fieldset-title:hover {
      background-color: #d9e9ef;
      color: #064771; }
  html.js fieldset.collapsible .fieldset-wrapper {
    padding: 18px 1em;
    border: 1px solid #009fee; }

html.js fieldset.collapsed {
  height: 2.9em; }

/**
 * $FIELDSETS
 */
.form-wrapper {
  margin-bottom: 18px; }

.fieldset-description {
  margin-bottom: 9px;
  color: #6a7076;
  font-style: italic; }

.vertical-tabs fieldset.vertical-tabs-pane {
  padding: 18px 1em; }

fieldset {
  border: solid 1px #ddd;
  border-top: 3px solid #0074BD;
  padding: 12px;
  margin: 18px 0; }

fieldset legend {
  background: white;
  padding: 0 3px;
  margin: 0;
  font-size: 24px;
  font-weight: 300; }

html.js fieldset.collapsible .fieldset-wrapper {
  margin-bottom: 18px; }
  html.js fieldset.collapsible .fieldset-wrapper:after {
    content: "";
    display: table;
    clear: both; }

/**
 * $FILTER-TIPS
 */
.filter-wrapper {
  background-color: #fff; }

.filter-wrapper {
  border-top: 0;
  padding: 10px 2px; }

.filter-wrapper .fieldset-wrapper {
  padding: 0 6px; }

.filter-wrapper .form-item, .filter-wrapper .filter-guidelines, .filter-wrapper .filter-help {
  font-size: 0.923em;
  padding: 2px 0 0 0;
  /* LTR */ }

.filter-help,
.filter-guidelines-item {
  color: #626262; }

/**
 * $FORM-ITEM
 */
.form-item {
  color: #6a7076; }
  .form-item label {
    margin-bottom: 0.4em; }
  .form-item .form-select,
  .form-item .form-text,
  .form-item .form-textarea {
    width: 100%;
    padding: 0.6em;
    background-color: #fff;
    border: 1px solid #009fee;
    vertical-align: middle; }
  .form-item .description {
    margin-top: 0.2em;
    font-style: italic; }

.container-inline .form-select,
.container-inline .form-text,
.container-inline .form-textarea {
  width: auto; }

/* Form elements (Agile Patterns) */
.form-item {
  padding: 0;
  margin: 0 0 10px; }

.filter-wrapper .form-item, div.teaser-checkbox .form-item, .form-item .form-item {
  padding: 5px 0;
  margin: 0;
  border: 0; }

.form-type-checkbox {
  padding: 0; }

.text-format-wrapper .form-item {
  padding-bottom: 0; }

.form-item label, .exposed-filters .form-item label {
  font-weight: 300;
  margin: 0;
  padding: 0.5em 0; }

.form-item.form-type-textarea > label, .form-item.form-type-textfield > label, .form-item.form-type-checkboxes > label, .form-item.form-type-item > label, .form-item.form-type-select > label {
  font-weight: 700; }

.form-item label.option {
  text-transform: none; }

.form-item label.option input {
  vertical-align: middle; }

.form-disabled input.form-autocomplete, .form-disabled input.form-text, .form-disabled input.form-file, .form-disabled textarea.form-textarea, .form-disabled select.form-select {
  background-color: #eee;
  color: #777; }

.form-managed-file .form-file, .form-managed-file .form-submit {
  margin-left: 10px; }

input.form-autocomplete, input.form-text, input.form-file, textarea.form-textarea, select.form-select {
  padding: 5px;
  border: 2px solid #ddd;
  background: #fff;
  color: #333; }

input.form-text:focus, input.form-file:focus, textarea.form-textarea:focus, select.form-select:focus {
  color: #000;
  border-color: #ffdd40; }

.form-item.form-type-select .theme-wrapper {
  position: relative;
  display: inline-block; }
  .form-item.form-type-select .theme-wrapper select.form-select {
    padding: 0.5em 1.2em 0.4em 0.5em;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    background: #fff;
    text-indent: 0.01px;
    text-overflow: "";
    border-radius: 0;
    display: inline-block;
    cursor: pointer; }
  .form-item.form-type-select .theme-wrapper:after {
    content: '<>';
    font: 14px "Consolas", monospace;
    color: #aaa;
    -ms-transform: rotate(90deg);
    transform: rotate(90deg);
    right: 0.8em;
    top: 25%;
    padding: 0 0 2px;
    border-bottom: 1px solid #009fee;
    position: absolute;
    pointer-events: none; }
  @media screen and (-webkit-min-device-pixel-ratio: 0) {
    .form-item.form-type-select .theme-wrapper select.form-select {
      padding: 0.5em 2.5em 0.4em 0.5em; }
    .form-item.form-type-select .theme-wrapper:after {
      top: 29%; } }

.ie .form-item.form-type-select .theme-wrapper:after {
  display: none; }

@media screen and (min-width: 0\0) {
  .form-item.form-type-select .theme-wrapper:after {
    display: none; } }

.link-field-url {
  padding-left: 1em; }

/**
 * $PASSWORD-CONFIRM
 */
div.password-indicator,
div.password-confirm {
  margin-top: 0; }

div.password-indicator {
  margin-bottom: 0.4em; }

/**
 * $PASSWORD-INDICATOR
 */
.password-indicator {
  height: 0.8em;
  background: none;
  border: 1px solid #009fee; }
  .password-indicator .indicator {
    background: #e4621c; }

.password-strength-title {
  margin-bottom: 0.2em; }

/**
 * $SEARCH-FORM
 */
.search-block-form .form-text {
  background: transparent;
  border: 0;
  border-bottom: 1px solid #aaa;
  width: auto;
  padding: 0.4em 0.2em 0.1em 1em;
  height: 28px;
  width: 7em;
  font-size: 0.75em;
  margin-right: -4px; }
  .js .search-block-form .form-text {
    display: none; }
  .lt-ie9 .search-block-form .form-text {
    line-height: 22px; }
  @media (min-width: 660px) {
    .search-block-form .form-text {
      width: 14em; } }
  .search-block-form .form-text::-webkit-input-placeholder {
    color: #777777; }
  .search-block-form .form-text:-moz-placeholder {
    /* Firefox 18- */
    color: #777777; }
  .search-block-form .form-text::-moz-placeholder {
    /* Firefox 19+ */
    color: #777777; }
  .search-block-form .form-text:-ms-input-placeholder {
    color: #777777; }

.search-block-form .button {
  background: url("../images/searchicon.png") no-repeat 4px 4px;
  background-size: 78%;
  border-bottom: 1px solid rgba(242, 199, 0, 0);
  transition: compact(none, false, false, false, false, false, false, false, false, false);
  text-indent: -119988px;
  overflow: hidden;
  text-align: left;
  width: 32px;
  height: 32.7px;
  padding: 0;
  line-height: 1; }
  @media (min-width: 1120px) {
    .search-block-form .button {
      background-size: 92%;
      background-position: 3px 0px; }
      .lt-ie9 .search-block-form .button {
        background-image: url("../images/searchicon-ie.png");
        background-position: 3px 0; } }
  .search-block-form .button:hover, .search-block-form .button:active, .search-block-form .button:focus {
    outline: 0;
    background-image: url("../images/searchicon.png");
    background-position: 4px 4px;
    box-shadow: none; }
  .search-block-form .button.activated {
    background-position: 4px -38px; }
  @media (min-width: 1120px) {
    .search-block-form .button:hover, .search-block-form .button:active, .search-block-form .button:focus {
      outline: 0;
      background-image: url("../images/searchicon.png");
      background-position: 3px -51px;
      box-shadow: none; }
      .lt-ie9 .search-block-form .button:hover, .lt-ie9 .search-block-form .button:active, .lt-ie9 .search-block-form .button:focus {
        background-image: url("../images/searchicon-ie.png");
        background-position: 3px -51px; }
    .search-block-form .button.activated {
      background-position: 3px -51px; }
      .lt-ie9 .search-block-form .button.activated {
        background-image: url("../images/searchicon-ie.png");
        background-position: 3px -51px; } }

.search-block-form .button--primary {
  color: #000; }

.search-block-form input.form-text:focus, .search-block-form input.form-file:focus, .search-block-form textarea.form-textarea:focus, .search-block-form select.form-select:focus, .search-block-form input.form-text:active, .search-block-form input.form-file:active, .search-block-form textarea.form-textarea:active, .search-block-form select.form-select:active {
  background: transparent;
  color: #fff;
  outline: none;
  border-color: #fff;
  box-shadow: compact(none, false, false, false, false, false, false, false, false, false); }

.search-block-form input[type="submit"],
.search-block-form input[type="search"] {
  -webkit-appearance: none;
  border-radius: 0; }

.search-block-form .clrinput {
  font-size: 12px;
  color: #777777; }
  .search-block-form .clrinput:hover {
    color: #fff; }

.vertical-tabs ul.vertical-tabs-list li {
  background-color: #f2f2f2; }
  .vertical-tabs ul.vertical-tabs-list li a:active strong, .vertical-tabs ul.vertical-tabs-list li a:focus strong, .vertical-tabs ul.vertical-tabs-list li a:hover strong {
    color: #222222;
    text-decoration: none; }

/**
 * $ACTION-LINKS
 */
.action-links {
  margin-bottom: 18px; }
  .action-links li {
    padding-left: 16px;
    background: transparent url("../images/plus-blue.png") left center no-repeat; }
    .action-links li a {
      color: #009fee;
      background-image: none;
      background-position: 0 0;
      text-decoration: none; }
      .action-links li a:hover {
        font-weight: 700; }

/**
 * $BREADCRUMB
 */
.breadcrumb {
  display: inline-block;
  margin: 1em 0 0;
  /* Temporarily hide on Landing Pages */ }
  .breadcrumb li {
    padding-right: 0.4em;
    font-size: 13px;
    font-size: 0.8125rem; }
    .breadcrumb li:after {
      content: ">";
      padding-left: 0.4em;
      vertical-align: baseline;
      color: #b3b3b3; }
  .breadcrumb a {
    background-image: none;
    background-position: 0 0;
    text-decoration: none;
    color: #777777; }
    .breadcrumb a:hover {
      color: #a0002c; }
  .landing-page .breadcrumb {
    display: none; }

.breadcrumb + h1 {
  margin-top: 5px; }

.contextual-links {
  top: 17px; }
  .contextual-links a {
    background-image: none;
    background-position: 0 0;
    text-decoration: none; }

.contextual-links-trigger {
  width: 32px; }

header.l-header {
  position: relative;
  z-index: 100; }

.l-region--navigation {
  background-color: #f2c700; }

.responsive-menu-block-wrapper {
  display: none; }

html.mm-opened .mm-page {
  position: fixed !important;
  width: 100%; }

.mm-page {
  background-color: #ececec; }

.block--responsive-menu-horizontal-menu {
  width: 85%;
  max-width: 1355px;
  margin: 0 auto; }

.horizontal-menu {
  position: relative;
  margin-top: 0;
  margin-right: 0;
  margin-bottom: 0;
  margin-left: 0;
  padding: 0;
  list-style: none;
  font-size: 0.875em;
  border: 0;
  width: 100%;
  display: inline-table;
  line-height: 2.75em; }

.horizontal-menu > li {
  display: table-cell;
  position: relative; }

.horizontal-menu > li > a {
  font-size: 14px;
  font-weight: 500;
  text-align: center;
  padding: 0.2em 1.7em;
  letter-spacing: 0.2px;
  display: block; }
  .lt-ie9 .horizontal-menu > li > a {
    letter-spacing: normal;
    font-size: 11px; }
  @media (min-width: 1194px) {
    .horizontal-menu > li > a {
      font-size: 15px;
      padding: 0.2em 1.8em; } }
  .horizontal-menu > li > a:after {
    display: none;
    margin-top: -1.55em;
    color: #646464; }

.horizontal-menu > li > a:hover,
.horizontal-menu > li.active-trail > a {
  background: #ffe259; }

.horizontal-menu > li:hover, .horizontal-menu > li.active-trail {
  position: relative;
  background: #ffe259; }
  .horizontal-menu > li:hover:after, .horizontal-menu > li:hover:before, .horizontal-menu > li.active-trail:after, .horizontal-menu > li.active-trail:before {
    top: 100%;
    border: solid transparent;
    content: " ";
    height: 0;
    width: 0;
    position: absolute;
    pointer-events: none; }
  .horizontal-menu > li:hover:after, .horizontal-menu > li.active-trail:after {
    border-color: transparent;
    border-top-color: #ffe259;
    border-width: 12px;
    left: 50%;
    margin-left: -12px; }
  .horizontal-menu > li:hover:after, .horizontal-menu > li.active-trail:after {
    top: 99%;
    z-index: 100; }

.horizontal-menu > li:last-child:hover:after {
  display: none; }

.horizontal-menu > li ul ul {
  background-color: #fff4bf;
  left: 100%;
  width: 14.75em;
  top: 0; }

.horizontal-menu ul .fly-left ul {
  left: -13.75em; }

.horizontal-menu a {
  border: 0;
  color: #000000;
  font-size: 14px;
  font-size: 0.875rem; }
  .horizontal-menu a:hover {
    background-color: #ffe259; }

.horizontal-menu > li ul {
  position: absolute;
  display: none;
  top: 100%;
  left: 0;
  z-index: 99;
  padding-top: 0;
  padding-right: 0;
  padding-bottom: 0;
  padding-left: 0;
  box-sizing: border-box;
  width: auto;
  list-style: none;
  background-color: #f2c700;
  min-width: 13.2em; }

.horizontal-menu > li > ul {
  padding-top: 20px;
  padding-bottom: 10px; }

.horizontal-menu li.sfHover > ul,
.horizontal-menu li:hover > ul {
  display: block; }

.horizontal-menu li:hover > a {
  transition: background-color 0.25s ease; }

.horizontal-menu li li {
  float: left;
  width: 100%;
  position: relative; }

.horizontal-menu li li.expanded:hover {
  position: relative;
  background: #ffe259; }
  .horizontal-menu li li.expanded:hover:after, .horizontal-menu li li.expanded:hover:before {
    left: 100%;
    border: solid transparent;
    content: " ";
    height: 0;
    width: 0;
    position: absolute;
    pointer-events: none; }
  .horizontal-menu li li.expanded:hover:after {
    border-color: transparent;
    border-left-color: #ffe259;
    border-width: 17px;
    top: 50%;
    margin-left: -17px; }
  .horizontal-menu li li.expanded:hover:after {
    margin-left: 0 !important;
    top: 0 !important;
    left: 99.9%;
    z-index: 100; }

.horizontal-menu ul li.expanded > a:after {
  content: "\25BA";
  font-size: 9px;
  top: 11px;
  padding: 0;
  margin-top: 0;
  right: 1em;
  color: #3c3c3c;
  position: absolute; }
  .lt-ie9 .horizontal-menu ul li.expanded > a:after {
    content: ""; }

.horizontal-menu > li > li:hover > ul,
.horizontal-menu > li > li.sfHover > ul {
  display: block; }

.horizontal-menu > li li > a {
  display: block;
  position: relative;
  padding-top: 0.5em;
  padding-right: 1.5em;
  padding-bottom: 0.5em;
  padding-left: 1.5em;
  text-transform: none;
  line-height: 1.4; }

.off-canvas-wrapper {
  display: block; }

.no-js .off-canvas-wrapper {
  display: none; }

.block--responsive-menu-toggle {
  position: absolute;
  top: 8px;
  right: 17px; }
  .block--responsive-menu-toggle:after {
    color: white;
    content: 'Menu';
    font-size: 70%;
    margin: -4px 12px 0;
    position: absolute; }

.responsive-menu-toggle-icon {
  box-sizing: border-box;
  display: block;
  width: 44px;
  height: 35px;
  z-index: 4;
  margin-top: 0;
  position: relative; }

.no-js .responsive-menu-toggle-icon {
  display: none; }

.responsive-menu-toggle-icon span.label {
  display: block;
  position: absolute;
  font-size: 17px;
  text-transform: uppercase;
  top: 2px;
  left: 40px;
  color: #fff; }

.responsive-menu-toggle-icon:before,
.responsive-menu-toggle-icon:after,
.responsive-menu-toggle-icon span.icon {
  background: #fff;
  content: '';
  display: block;
  width: 26px;
  height: 3px;
  position: absolute;
  top: 0;
  left: 13px;
  border-radius: 3px; }

.responsive-menu-toggle-icon:before {
  top: 12px; }

.responsive-menu-toggle-icon span.icon {
  top: 20px; }

.responsive-menu-toggle-icon:after {
  top: 28px; }

.responsive-menu-toggle-icon:before,
.responsive-menu-toggle-icon:after,
.responsive-menu-toggle-icon span.icon {
  transition: none 0.4s ease-out 0.1s;
  transition-property: transform, top, bottom, left, opacity; }

html.mm-opening .responsive-menu-toggle-icon:before,
html.mm-opening .responsive-menu-toggle-icon:after {
  top: 14px; }

html.mm-opening .responsive-menu-toggle-icon span.icon {
  left: -25px;
  opacity: 0; }

html.mm-opening .responsive-menu-toggle-icon:before {
  -ms-transform: rotate(45deg);
  transform: rotate(45deg); }

html.mm-opening .responsive-menu-toggle-icon:after {
  -ms-transform: rotate(-45deg);
  transform: rotate(-45deg); }

#mm-blocker {
  background: transparent; }

.mm-opening #mm-blocker {
  background: rgba(0, 0, 0, 0.2);
  transition: background 1s ease 0.3s; }

.mm-opening #page {
  border-left: 1px solid #ccc; }

.mm-listview li.active {
  color: #fff; }

/**
 * $SECONDARY-MENU
 *
 * Styling for Secondary menu appearing in sidebar second
 */
.l-region--sidebar-first nav,
.l-region--sidebar-second nav {
  border-top: 4px solid #ececec;
  padding: 1em;
  position: relative;
  margin: 2em;
  padding-top: 1em; }
  .l-region--sidebar-first nav h3,
  .l-region--sidebar-second nav h3 {
    color: #b3b3b3;
    font-size: 20px;
    font-size: 1.25rem; }
  .l-region--sidebar-first nav > .menu-block-wrapper > .menu,
  .l-region--sidebar-second nav > .menu-block-wrapper > .menu {
    padding-left: 0;
    margin: 0; }

.l-region--sidebar-first .menu,
.l-region--sidebar-second .menu {
  list-style: none; }
  .l-region--sidebar-first .menu .leaf, .l-region--sidebar-first .menu .collapsed, .l-region--sidebar-first .menu .expanded,
  .l-region--sidebar-second .menu .leaf,
  .l-region--sidebar-second .menu .collapsed,
  .l-region--sidebar-second .menu .expanded {
    list-style: none; }
  .l-region--sidebar-first .menu li a,
  .l-region--sidebar-second .menu li a {
    color: black;
    display: block;
    font-weight: 500;
    margin: 0 0 0.5em;
    font-size: 90%; }
    .l-region--sidebar-first .menu li a.active, .l-region--sidebar-first .menu li a:hover,
    .l-region--sidebar-second .menu li a.active,
    .l-region--sidebar-second .menu li a:hover {
      background: #ffe259; }
  .l-region--sidebar-first .menu li .menu,
  .l-region--sidebar-second .menu li .menu {
    margin-left: 0;
    padding-left: 1.5em; }

a.active-trail {
  color: #000000; }

/**
 * $TABS
 */
ul.tabs {
  margin-bottom: 1em; }
  ul.tabs.tabs--primary {
    margin-top: 2em;
    padding: 0;
    border-bottom: 4px solid #ddd;
    margin-bottom: 0; }
    .front ul.tabs.tabs--primary, .landing-page ul.tabs.tabs--primary {
      margin-top: 0.2em;
      border-bottom: 0; }
    ul.tabs.tabs--primary li {
      display: inline;
      margin-right: 0.25em; }
      .front ul.tabs.tabs--primary li, .landing-page ul.tabs.tabs--primary li {
        margin-bottom: 0.2em; }
      ul.tabs.tabs--primary li a {
        background-color: #eaeaea;
        color: #6a7076;
        border: 0 none transparent;
        padding: 0.6em 1.5em 0.5em 1.5em;
        background-size: auto;
        transition: compact(all 0.25s ease, false, false, false, false, false, false, false, false, false); }
        ul.tabs.tabs--primary li a:hover, ul.tabs.tabs--primary li a:focus {
          background-image: linear-gradient(transparent, rgba(0, 0, 0, 0.05) 60%, rgba(0, 0, 0, 0.1));
          cursor: pointer; }
        ul.tabs.tabs--primary li a.disabled {
          background-image: none;
          cursor: not-allowed;
          opacity: 0.5; }
        ul.tabs.tabs--primary li a.active, ul.tabs.tabs--primary li a:active {
          box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15) inset, 0 0 6px rgba(0, 0, 0, 0.2) inset; }
        ul.tabs.tabs--primary li a.active {
          background-color: #ddd;
          color: #6a7076;
          box-shadow: none; }
          ul.tabs.tabs--primary li a.active:hover {
            background-image: none; }
  ul.tabs.tabs--secondary {
    margin: 0;
    padding: 0;
    padding: 0.5em 0; }
    ul.tabs.tabs--secondary li {
      list-style-type: none;
      list-style-image: none; }
    ul.tabs.tabs--secondary li {
      display: inline;
      margin-right: 0.25em; }
      ul.tabs.tabs--secondary li a {
        background-image: none;
        background-position: 0 0;
        text-decoration: none;
        color: #6a7076;
        padding: 0.25em 1em 0.25em 1em;
        background-color: #f1f1f1;
        background-size: auto;
        transition: compact(all 0.25s ease, false, false, false, false, false, false, false, false, false); }
        ul.tabs.tabs--secondary li a.active {
          background-color: #ddd;
          color: #6a7076;
          border-bottom: none; }
        ul.tabs.tabs--secondary li a:hover {
          background-image: linear-gradient(transparent, rgba(0, 0, 0, 0.05) 60%, rgba(0, 0, 0, 0.1));
          background-color: #ddd; }

/**
 * $BORDER-LIST
 */
.border-list {
  padding: 0;
  list-style: none; }
  .border-list li {
    padding-bottom: 1.4375em;
    margin-bottom: 1.4375em;
    border-bottom: 1px solid #ddd; }
    .border-list li:last-child {
      padding-bottom: 0;
      margin-bottom: 0;
      border-bottom: none; }

/**
 * $BUTTONS
 */
/* Base Button */
.button {
  background-color: #E6E6E6;
  color: rgba(0, 0, 0, 0.8);
  border: 0 none transparent;
  padding: 0.6em 1.5em 0.5em 1.5em;
  background-size: auto;
  transition: compact(all 0.25s ease, false, false, false, false, false, false, false, false, false);
  background-color: #E6E6E6;
  border: 0 none transparent;
  padding: 0.25em 1.5em 0.25em 1.5em;
  transition: compact(all 0.25s ease, false, false, false, false, false, false, false, false, false);
  display: inline-block;
  border: none;
  font-weight: 700;
  font-family: inherit;
  font-size: 100%;
  line-height: 2.2;
  vertical-align: middle;
  white-space: nowrap;
  overflow: visible;
  cursor: pointer; }
  .button:hover, .button:focus {
    background-image: linear-gradient(transparent, rgba(0, 0, 0, 0.05) 60%, rgba(0, 0, 0, 0.1));
    cursor: pointer; }
  .button.disabled {
    background-image: none;
    cursor: not-allowed;
    opacity: 0.5; }
  .button.active, .button:active {
    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15) inset, 0 0 6px rgba(0, 0, 0, 0.2) inset; }
  .button:hover, .button:focus {
    background-image: linear-gradient(transparent, rgba(0, 0, 0, 0.05) 60%, rgba(0, 0, 0, 0.1));
    cursor: pointer; }
  .button.disabled {
    background-image: none;
    cursor: not-allowed;
    opacity: 0.5; }
  .button.active, .button:active, .button:focus {
    outline: none;
    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15) inset, 0 0 6px rgba(0, 0, 0, 0.2) inset;
    background-image: none;
    background-position: 0 0;
    text-decoration: none; }
  .button::-moz-focus-inner {
    border: 0;
    padding: 0; }

/* Fill width of container */
.button--full {
  width: 100%;
  padding-right: 0;
  padding-left: 0;
  text-align: center; }

/* Inherit sizing from parent  */
.button--natural {
  vertical-align: baseline;
  font-size: inherit;
  line-height: inherit;
  height: auto;
  padding-right: 0.5em;
  padding-left: 0.5em; }

/* Button Functions */
.button--primary {
  background-color: #f2c700;
  color: #fff; }

.button--secondary {
  background-color: transparent;
  border-color: #009fee;
  border-style: solid;
  border-width: 0.0625em;
  padding: 1.375em;
  color: #009fee; }
  .button--secondary:hover {
    border-color: #6a7076;
    background-color: transparent;
    color: #6a7076; }

.button--positive {
  background-color: #009fee;
  color: #fff; }
  .button--positive:hover {
    background-color: #007dbb; }

.button--negative {
  background-color: #b33630;
  color: #fff; }
  .button--negative:hover {
    background-color: #8b2a25; }

.button--disabled,
.button--disabled:hover,
.button--disabled:active,
.button--disabled:focus {
  background-color: #ddd;
  color: #777;
  cursor: default;
  box-shadow: none; }

/* Adjacent buttons should have some space between them. */
.button + .button,
.button + a {
  margin-left: 1em; }

.cke.cke_chrome {
  box-shadow: compact(none, false, false, false, false, false, false, false, false, false);
  border-color: #009fee; }
  .cke.cke_chrome .cke_top,
  .cke.cke_chrome .cke_bottom {
    background: #f2f2f2;
    box-shadow: compact(none, false, false, false, false, false, false, false, false, false); }
  .cke.cke_chrome .cke_top {
    border-bottom-color: #009fee;
    padding: 0; }
  .cke.cke_chrome .cke_bottom {
    border-top-color: #009fee; }
  .cke.cke_chrome .cke_toolgroup,
  .cke.cke_chrome .cke_combo_button {
    padding: 0;
    margin: 0;
    border-color: #007dbb;
    border: 0;
    border-radius: 0;
    background: none; }
    .cke.cke_chrome .cke_toolgroup a.cke_button,
    .cke.cke_chrome .cke_combo_button a.cke_button {
      height: 20px;
      padding: 8px 8px; }
  .cke.cke_chrome .cke_combo_button {
    height: 24px;
    padding: 6px 8px; }
  .cke.cke_chrome .cke_toolbar_separator {
    margin-top: 9px; }

.text-format-wrapper .ckeditor_links_wrapper {
  float: left;
  padding-left: 0.5em; }

.text-format-wrapper a.ckeditor_links {
  font-size: 0.875em;
  line-height: 1.6428571429em; }

.text-format-wrapper .filter-help {
  margin-bottom: 0.5em; }
  .text-format-wrapper .filter-help p {
    padding-right: 0.5em;
    margin-bottom: 0; }
    .text-format-wrapper .filter-help p a {
      background: none;
      padding: 0; }
      .text-format-wrapper .filter-help p a:after {
        content: "?";
        font-weight: bold;
        padding: 0 0.65em;
        margin-left: 0.5em;
        background: #777777;
        color: #fff;
        border-radius: 20px;
        float: right;
        display: block;
        width: 24px;
        height: 24px; }

.text-format-wrapper .form-item {
  clear: left;
  margin-top: 18px; }
  .text-format-wrapper .form-item label {
    padding-left: 0.5em; }

#block-views-departments-block h3.block__title {
  color: #6a7076;
  font-size: 34px;
  font-size: 2.125rem;
  line-height: 1.3529411765em;
  margin-top: 1.0147058824em;
  margin-bottom: 0.3382352941em; }

#block-views-departments-block .field-name-field-department-phone-number {
  margin-bottom: 0; }

#block-views-departments-block .views-row {
  margin-bottom: 1em;
  border-top: 5px solid #f2c700; }

@media (min-width: 960px) {
  #block-views-departments-block .views-row {
    display: block;
    float: left;
    width: 45%;
    margin-right: 2em;
    height: 350px; } }

#block-views-departments-block .view-content {
  float: left; }

.feed-icon {
  background-image: none;
  background-position: 0 0;
  text-decoration: none; }

/**
 * $FOOTER
 */
.l-region--footer {
  /*@include breakpoint($small, true) {*/
  /*}*/
  font-size: 12px;
  font-size: 0.75rem;
  line-height: 1; }
  .l-region--footer .block {
    float: left;
    font-weight: 500;
    text-align: center; }
  .l-region--footer .block--block-5 {
    width: 100%;
    text-align: center;
    padding-bottom: 30px; }
  .l-region--footer .block--block-4 {
    width: 100%;
    text-align: center; }
  .l-region--footer .block--block-12 {
    width: 100%;
    text-align: center; }
    .l-region--footer .block--block-12 .footer-logo-container:before {
      content: "";
      display: inline-block;
      vertical-align: top;
      height: 100%; }
    .l-region--footer .block--block-12 .footer-logo-container p {
      display: inline-block;
      vertical-align: top;
      width: 70px;
      margin-right: 5px;
      text-align: left; }
      .l-region--footer .block--block-12 .footer-logo-container p:last-child {
        margin-right: 0; }
      .l-region--footer .block--block-12 .footer-logo-container p img {
        width: 55px; }
  .l-region--footer .block--block-8 {
    width: 30%; }
  .l-region--footer .block--block-7 {
    width: 30%; }
  .l-region--footer .block--block-6 {
    float: none;
    clear: both; }
  .l-region--footer span.ext {
    display: none; }
  @media (min-width: 960px) {
    .l-region--footer .block--block-4 {
      width: 37.9310344828%;
      float: left;
      margin-right: -100%;
      margin-left: 0;
      clear: none;
      text-align: left;
      padding-left: 10px; }
    .l-region--footer .block--block-5 {
      width: 27.5862068966%;
      float: left;
      margin-right: -100%;
      margin-left: 36.2068965517%;
      clear: none;
      text-align: center; }
    .l-region--footer .block--block-12 {
      width: 37.9310344828%;
      float: right;
      margin-left: 0;
      margin-right: 0;
      clear: none;
      text-align: right;
      height: 200px;
      padding-right: 10px; }
      .l-region--footer .block--block-12 .footer-logo-container:before {
        content: "";
        display: inline-block;
        vertical-align: top;
        height: 100%; }
      .l-region--footer .block--block-12 .footer-logo-container p {
        display: inline-block;
        vertical-align: top;
        width: 70px;
        margin-right: 5px;
        text-align: left;
        font-size: 11px; }
        .l-region--footer .block--block-12 .footer-logo-container p:last-child {
          margin-right: 0; }
        .l-region--footer .block--block-12 .footer-logo-container p img {
          width: 55px; }
    .l-region--footer .block--block-8 {
      width: 6.8965517241%;
      float: left;
      margin-right: -100%;
      margin-left: 72.4137931034%;
      clear: none; }
    .l-region--footer .block--block-7 {
      width: 6.8965517241%;
      float: right;
      margin-left: 0;
      margin-right: 0;
      clear: none; }
    .l-region--footer .block--block-6 {
      /*@include grid-span(3, 1);*/
      /*margin-top: 4em;*/
      margin-top: 2em;
      margin-bottom: 4em; }
      .l-region--footer .block--block-6 p {
        margin-bottom: 0.2em; }
    .l-region--footer .block--block-12, .l-region--footer .block--block-7, .l-region--footer .block--block-8 {
      /*padding : 0 1em;*/ } }
  .l-region--footer img {
    margin-bottom: 1em; }

.block--block-5 a.social-icon {
  width: 45px;
  height: 46px;
  display: inline-block;
  background: url("../images/social-media-sprite.svg") no-repeat;
  background-size: 110px;
  margin-right: 5px; }
  .block--block-5 a.social-icon.instagram {
    background-position: 0 -60px; }
  .block--block-5 a.social-icon.twitter {
    background-position: -65px 0; }
  .block--block-5 a.social-icon.linkedin {
    background-position: -65px -60px;
    margin-right: 0; }

.node-type-book .l-content {
  min-height: 415px;
  border-top: 4px solid #f2c700; }
  .node-type-book .l-content .node--book .links--inline {
    display: block;
    margin-bottom: 0; }

.node-type-book .book-navigation__links {
  padding-top: 20PX;
  border-top: 1PX solid #ddd;
  margin-top: 10PX;
  margin-bottom: 20px;
  height: 45px; }

/**
 * $HERO
 */
.l-region--hero {
  position: relative; }

.hero-block--image {
  position: relative;
  z-index: -1;
  border-top: 3px solid #f2c700;
  max-height: 28.125em;
  top: 0; }
  @media (min-width: 960px) {
    .hero-block--image {
      border-bottom: 4px solid #f2c700; } }
  @media (min-width: 1120px) {
    .hero-block--image {
      border-top: 0;
      overflow: hidden; } }
  .hero-block--image img {
    width: 100%; }
  .lt-ie9 .hero-block--image {
    z-index: 0; }

.hero-block--text {
  width: 100%;
  left: 0;
  bottom: 4px; }
  @media (min-width: 660px) {
    .hero-block--text {
      position: absolute;
      bottom: 0; } }
  @media (min-width: 960px) {
    .hero-block--text {
      position: absolute;
      bottom: 1.25em;
      width: 80%;
      max-width: 1260px;
      left: 10%; }
      .front .hero-block--text {
        bottom: 2.5em; } }
  .hero-block--text a {
    display: block;
    background: #010101;
    color: #fff; }
    @media (min-width: 660px) {
      .hero-block--text a {
        background-color: #000000;
        background-color: rgba(0, 0, 0, 0.6); } }
    @media (min-width: 1120px) {
      .hero-block--text a {
        background-color: #000000;
        background-color: rgba(0, 0, 0, 0.6); } }
    .hero-block--text a h3 {
      font-size: 14px;
      font-size: 0.875rem; }
      @media (min-width: 660px) {
        .hero-block--text a h3 {
          font-size: 17px;
          font-size: 1.0625rem; } }
    .hero-block--text a h3, .hero-block--text a p {
      line-height: 1.5;
      font-weight: 400;
      text-align: left;
      margin: 0;
      padding: 0.6em 0.8em;
      color: inherit; }
    .hero-block--text a p {
      font-size: 13px;
      font-size: 0.8125rem;
      display: none; }
    .hero-block--text a:hover {
      color: #f2c700; }
  @media (min-width: 960px) {
    .hero-block--text a {
      display: block;
      float: right;
      width: 35%;
      background-color: #000000;
      background-color: rgba(0, 0, 0, 0.6); }
      .hero-block--text a h3, .hero-block--text a p {
        line-height: 1.5;
        font-weight: 300;
        text-align: left;
        margin: 0; }
      .hero-block--text a p {
        font-size: 13px;
        font-size: 0.8125rem;
        display: inline-block; } }
  @media (min-width: 1120px) {
    .hero-block--text {
      bottom: 1.25em; }
      .front .hero-block--text {
        bottom: 8.125em; }
      .hero-block--text a {
        display: block;
        float: right;
        width: 30%;
        background-color: #000000;
        background-color: rgba(0, 0, 0, 0.6); } }
    @media (min-width: 1120px) and (min-width: 1260px) {
      .hero-block--text a {
        width: 25%; } }
  @media (min-width: 1120px) {
        .lt-ie9 .hero-block--text a {
          background: none;
          *zoom: 1;
          filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#99000000', endColorstr='#99000000'); }
        .hero-block--text a h3, .hero-block--text a p {
          line-height: 1.5;
          font-weight: 400;
          text-align: left;
          margin: 0;
          padding: 0.8em 0.8em 1em; }
        .hero-block--text a p {
          font-size: 13px;
          font-size: 0.8125rem; } }

/**
 * $JEDCSS
 */
/*Secondary images*/
.page-node .field-name-field-images img {
  display: block;
  margin-right: 1em;
  height: 170px;
  float: left;
  width: auto; }

.page-node .field-name-field-images#edit-field-images img {
  margin: 0;
  height: auto; }

.page-node .field-name-field-images#edit-field-images .tabledrag-handle .handle {
  height: 26px;
  width: 15px;
  margin: 0.6em 1EM 0 0; }

/**
 * $MESSAGES
 */
.messages {
  padding-left: 3.5em;
  margin-bottom: 18px;
  background-position: 1em 50%; }
  .messages ul {
    margin: 0 0 0 1.5em; }

.messages--status {
  background-color: #d6ffcb;
  color: #1a7000;
  border-top: 0;
  border-left: 5px solid #1a7000;
  border-right: 0;
  border-bottom: 0; }

.messages--warning {
  background-color: #fffecb;
  color: #ff9421;
  border-top: 0;
  border-left: 5px solid #ff9421;
  border-right: 0;
  border-bottom: 0; }

.messages--error {
  background-color: #ffdddd;
  color: #c70000;
  border-top: 0;
  border-left: 5px solid #c70000;
  border-right: 0;
  border-bottom: 0; }

/**
 * $PAGER
 */
.pager__item {
  display: block;
  float: left;
  margin: 0.1em;
  padding: 0; }

.pager__item a,
.pager__item--current,
.pager__item--ellipsis {
  display: block;
  padding: 0.5em 0.8em;
  border: 1px solid #6a7076;
  color: #6a7076;
  background-image: none;
  background-position: 0 0;
  text-decoration: none; }

.pager__item a:hover {
  background-color: #f2c700;
  border-color: #f2c700;
  color: #fff; }

.pager__item--current {
  border-color: #f2c700;
  color: #f2c700; }

.pager__item--ellipsis {
  border: none; }

/**
 * $PROGRESS
 */
.progress .bar {
  background-color: #f2f2f2;
  border-color: #6a7076;
  border-radius: 0; }

.progress .filled {
  background: #009fee; }

.search-results .search-result__info {
  display: none; }

/**
 * $SECTION-TITLE
 */
.section-title {
  padding-bottom: 0.71875em;
  margin-bottom: 1.4375em;
  border-bottom: 1px solid #bcd8e3; }

/**
 * $SIDEBAR
 */
.l-region--sidebar-second h3, .l-region--sidebar-first h3 {
  margin-top: 0;
  color: #000000;
  line-height: 1.3; }

.l-region--sidebar-second .block--alt .block__title, .l-region--sidebar-first .block--alt .block__title {
  line-height: 2.28571em; }

.l-region--sidebar-second li, .l-region--sidebar-first li {
  line-height: 1.4;
  font-size: 16px;
  font-size: 1rem; }

.l-region--sidebar-second .field--name-field-related-links, .l-region--sidebar-second .field--name-field-related-document, .l-region--sidebar-first .field--name-field-related-links, .l-region--sidebar-first .field--name-field-related-document {
  border-top: 4px solid transparent;
  padding-bottom: 1.4em; }
  .l-region--sidebar-second .field--name-field-related-links .field__label, .l-region--sidebar-second .field--name-field-related-document .field__label, .l-region--sidebar-first .field--name-field-related-links .field__label, .l-region--sidebar-first .field--name-field-related-document .field__label {
    padding: 1.2em 0;
    font-size: 20px;
    font-size: 1.25rem;
    font-family: "HK Grotesk", sans-serif;
    font-weight: 400;
    color: #777777; }
  .l-region--sidebar-second .field--name-field-related-links .field__item, .l-region--sidebar-second .field--name-field-related-document .field__item, .l-region--sidebar-first .field--name-field-related-links .field__item, .l-region--sidebar-first .field--name-field-related-document .field__item {
    line-height: 1.4;
    font-size: 16px;
    font-size: 1rem; }

.l-region--sidebar-second .field--name-field-related-document, .l-region--sidebar-first .field--name-field-related-document {
  border-top-color: #f2c700; }

.l-region--sidebar-second .field--name-field-related-links, .l-region--sidebar-first .field--name-field-related-links {
  border-top-color: #009fee; }

/**
 * $SITE-BRANDING
 */
.site-branding {
  margin-left: 60px;
  padding: 10px 5px; }
  .site-branding:before {
    background: url("../logo.svg");
    background-size: cover;
    content: '';
    height: 50px;
    margin: 1px 0 0 -55px;
    position: absolute;
    width: 40px; }

.site-branding__name,
.site-branding__logo {
  display: block;
  float: left; }

.site-branding__logo {
  width: 40px;
  margin-right: 4%;
  background-image: none;
  background-position: 0 0;
  text-decoration: none; }

.site-branding__name-wrapper {
  overflow: hidden; }

.site-branding__name {
  margin: 0;
  color: #fff;
  font-size: 20px;
  font-size: 1.25rem;
  font-weight: 400;
  background-image: none;
  background-position: 0 0;
  text-decoration: none;
  float: left; }
  @media (min-width: 660px) {
    .site-branding__name {
      width: 8em; } }
  .site-branding__name:visited {
    color: #fff; }
  .site-branding__name:hover {
    color: #fff; }

.site-branding__slogan {
  font-size: 12px;
  font-size: 0.75rem;
  clear: left;
  font-weight: 400; }

.l-header {
  background-color: #000000;
  background-color: black;
  border-bottom: 4px solid #f2c700;
  /*  height: em($heading-height) - 1em;
  .front & {
    height: em($heading-height-front) -1em;
  }*/
  /*  @include breakpoint($small) {
    height: em($heading-height - 40);
    .front & {
      height: em($heading-height-front - 40);
    }
  }
  @include breakpoint ($large, true) {
    height: em($heading-height);
    .front & {
      height: em($heading-height-front);
    }
  }*/ }
  @media (min-width: 1120px) {
    .l-header {
      border-bottom: 0; } }
  .lt-ie9 .l-header {
    background: none;
    *zoom: 1;
    filter: progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FF000000', endColorstr='#FF000000'); }

/**
 * $SOCIAL-SHARE
 */
.sharethis-buttons {
  clear: both; }
  .sharethis-buttons span {
    cursor: pointer;
    height: 40px;
    width: 55px;
    display: inline-block;
    margin: 0.2em 0.5em 0.2em 0;
    background-image: url("../images/social-icons.png"); }
    .sharethis-buttons span:hover {
      opacity: 0.8; }
  .sharethis-buttons .st_facebook_custom {
    background-position: 0 -120px; }
  .sharethis-buttons .st_twitter_custom {
    background-position: 0 -40px; }
  .sharethis-buttons .st_email_custom {
    background-position: 0 -80px; }
  .sharethis-buttons .st_pdf_custom {
    background-position: 0 0px; }

/**
 * $NODE-ACCOMMODATION
 */
.node-type-accomodation .l-content {
  border: none;
  margin-top: 0; }

.node-type-accomodation .field--name-field-main-image {
  display: block;
  float: right;
  margin: 0 0 1em 2em; }

.node-type-accomodation .field--name-field-images .field__item {
  display: block;
  float: left;
  margin: 1%;
  width: 22%; }

/* Tweak on guest room node specifically */
.page-node-539 .field-name-body img {
  display: block;
  float: left;
  margin: 1%;
  width: 30%; }

/**
 * $NODE-announcement
 */
.node-type-case-study .field--name-field-main-image {
  display: block;
  float: right;
  margin: 0 0 1em 2em; }

/**
 * $NODE-BASIC-PAGE
 */
.node--article .field--name-field-image {
  float: left;
  margin: 0 2em 1em 0; }

/**
 * $NODE-ACCOMMODATION
 */
.node-type-accomodation .field--name-field-main-image {
  display: block;
  float: right;
  margin: 0 0 1em 2em; }

/**
 * $NODE-ACCOMMODATION
 */
.node-type-accomodation .field--name-field-main-image {
  display: block;
  float: right;
  margin: 0 0 1em 2em; }

/**
 * $NODE-PERSON
 */
.node-type-person .field--name-field-main-image {
  display: block;
  float: right;
  margin: 0 0 1em 2em; }

@media (max-width: 1025px) {
  .page-node-158 .field-name-body {
    width: 100%;
    overflow-x: scroll; } }

.page-node-158 .field-name-body table p {
  margin-bottom: 1em; }

.page-node-158 .field-name-body table tr th {
  width: 12.5%;
  height: 85px;
  background-color: #222;
  color: #f2c700;
  text-align: center; }
  .page-node-158 .field-name-body table tr th a {
    color: #f2c700; }
    .page-node-158 .field-name-body table tr th a:hover {
      color: white; }
  .page-node-158 .field-name-body table tr th h3 {
    color: #f2c700;
    margin-top: 0; }

.page-node-158 .field-name-body table tr td {
  font-size: 0.9em;
  vertical-align: top a;
    vertical-align-font-size: 1.1em; }

.page-node-158 .field-name-body table thead th {
  height: 50px; }

.page-node-158 .field-name-body table thead tr:nth-of-type(2) th {
  font-weight: normal;
  background-color: #f2c700;
  color: black; }
  .page-node-158 .field-name-body table thead tr:nth-of-type(2) th a {
    color: black; }
    .page-node-158 .field-name-body table thead tr:nth-of-type(2) th a:hover {
      font-weight: bold; }

/**
 * $NODE
 */
.node--teaser {
  margin-bottom: 18px; }

.node__links {
  margin-bottom: 18px; }
  .node__links li > a {
    display: inline;
    background-image: linear-gradient(to bottom, transparent 75%, #333332 75%);
    background-repeat: repeat-x;
    text-decoration: none;
    background-size: 2px 2px;
    background-position: 0 1.1em;
    color: #222222; }
    .node__links li > a:visited {
      color: #222222; }
    .node__links li > a:hover {
      color: black; }

.has-main-image .l-content, .landing-page .l-content, .front .l-content {
  background-color: #fff;
  border-top: 4px solid #3fa033;
  padding: 0; }
  @media (min-width: 1120px) {
    .has-main-image .l-content, .landing-page .l-content, .front .l-content {
      padding: 0 2em; } }

@media (min-width: 1120px) {
  .has-main-image .has-one-sidebar .l-content {
    margin-top: -6em; } }

/**
 * $PAGE-CURRENT-MEMBERS
 */
.section-facilities .block--cta img {
  display: none; }

@media (min-width: 550px) {
  .section-facilities .block--cta {
    width: 100%;
    float: left;
    margin-left: 1em;
    margin-right: 1em; }
    .section-facilities .block--cta img {
      display: none; } }

@media (min-width: 660px) {
  .section-facilities .block--cta {
    position: relative;
    width: 45%; }
    .section-facilities .block--cta .block__content {
      padding: 0; }
    .section-facilities .block--cta p a {
      background: white !important;
      color: #000000 !important;
      padding: 0;
      height: 145px;
      overflow: hidden; }
    .section-facilities .block--cta img {
      margin-top: 0;
      margin-bottom: 0.5em;
      display: block;
      margin-left: auto;
      margin-right: auto;
      min-height: 100%;
      min-width: 100%;
      border: 0px; }
    .section-facilities .block--cta span {
      font-size: 1.1em;
      position: absolute;
      top: 0;
      width: 100%;
      left: 0;
      background: #fff;
      padding: 0.5em 0;
      border-bottom: 0;
      transition: 0.2s;
      z-index: 2; }
    .section-facilities .block--cta:hover img {
      opacity: 0.8; } }

@media (min-width: 960px) {
  .section-facilities .block--cta {
    width: 30%; } }

@media (min-width: 1120px) {
  .section-facilities .block--cta {
    width: 22%; }
    .section-facilities .block--cta p {
      font-size: 0.9em; } }

/**
 * $PAGE-GALLERY
 */
@media (min-width: 660px) and (max-width: 1120px) {
  .page-gallery .l-content.l-content {
    width: 100%;
    float: right;
    margin-left: 0;
    margin-right: 0;
    clear: none; }
  .page-gallery .l-region--sidebar-second.l-region--sidebar-second {
    width: 100%;
    float: right;
    margin-left: 0;
    margin-right: 0;
    clear: none; }
    .page-gallery .l-region--sidebar-second.l-region--sidebar-second .block {
      width: 37.9310344828%;
      clear: right;
      float: left;
      margin-left: 0;
      margin-right: 3.4482758621%; } }

/* Do this next one, please, but also then make it all brill:

.l-main.l-constrained {
    max-width: 1260px;
}

*/
.block--block-12, .block--block-7, .block--block-8 {
  text-align: center; }

.front .site-branding__slogan {
  font-size: 0.9em;
  font-weight: 400;
  letter-spacing: 0.5px;
  text-transform: initial; }

.front h1 {
  font-size: 2.1em;
  line-height: 1.4em;
  margin-top: 5px; }

@media (min-width: 550px) {
  .front .node--full {
    font-size: 1.1em;
    line-height: 1.5em; } }

.front .l-main .l-content, .front .landing-page .l-main .l-content {
  margin-bottom: 2em; }
  @media (min-width: 550px) {
    .front .l-main .l-content, .front .landing-page .l-main .l-content {
      padding: 0 1em; } }

@media (min-width: 550px) {
  .front .l-region--sidebar-first, .front .l-region--sidebar-second {
    padding: 1em 2em 0; } }

.front .l-region--sidebar-first h4, .front .l-region--sidebar-second h4 {
  margin: 0.5em 0 0; }

.front .view-news .field-name-field-main-image {
  margin-bottom: 0; }

.front .view-news h4 {
  margin-bottom: 0; }

/**
 * $PAGE-LANDING
 */
.front .l-content, .landing-page .l-content {
  position: relative; }

@media (min-width: 660px) {
  .front .l-main, .landing-page .l-main {
    width: 93%; } }

@media (min-width: 960px) {
  .front .l-main, .landing-page .l-main {
    background: transparent;
    padding: 0;
    margin: inherit auto; }
    .front .l-main .l-content, .landing-page .l-main .l-content {
      max-width: initial;
      padding: 10px 2em 0;
      width: 52%; } }

@media (min-width: 960px) {
  .landing-page .l-main,
  .front .l-main {
    width: 95%; }
  .landing-page .l-main {
    padding: 0 0; }
  .front .l-main {
    padding: 0 0;
    background: transparent; }
  .landing-page .l-main .l-highlighted-wrapper + .l-content, .front .l-main .l-highlighted-wrapper + .l-content {
    margin-top: -60px;
    border-top: 4px solid #f2c700; } }

.landing-page .l-region--hero {
  margin-top: -10em; }

@media (min-width: 1120px) {
  .landing-page .l-main {
    margin-top: 0; } }

@media (min-width: 960px) {
  .landing-page .l-region--sidebar-first {
    clear: none; } }

.front .l-region--sidebar-first, .front .l-region--sidebar-second {
  margin-bottom: 2em; }

.front .l-region--diptych-first, .front .l-region--diptych-second {
  border-top: 4px solid #3fa033;
  min-height: 300px;
  margin-bottom: 1em;
  clear: both; }

.front .l-region--diptych-first {
  /*background: url('../images/spring.jpg');*/ }

.front .l-region--diptych-second {
  border-top-color: #f2c700;
  background: #fff url("../images/Homepage-globe-full.png") no-repeat -15% center;
  background-size: compact(45% auto, false, false, false, false, false, false, false, false, false); }
  @media (min-width: 1120px) {
    .front .l-region--diptych-second {
      background-size: compact(auto, false, false, false, false, false, false, false, false, false);
      background-position: -270px center; } }
  .front .l-region--diptych-second h2 {
    font-family: Georgia, Times, "Times New Roman", serif;
    line-height: 0.5;
    font-weight: 400;
    font-size: 110px;
    font-size: 6.875rem;
    color: #000000;
    margin-top: 0; }
    @media (min-width: 380px) {
      .front .l-region--diptych-second h2 {
        float: left;
        width: 45%; } }
  .front .l-region--diptych-second em {
    font-style: initial;
    font-size: 30px;
    font-size: 1.875rem;
    padding-top: 1em; }
    @media (min-width: 380px) {
      .front .l-region--diptych-second em {
        float: right;
        width: 50%;
        margin-bottom: 2em; } }
    @media (min-width: 550px) {
      .front .l-region--diptych-second em {
        float: left;
        width: 45%;
        clear: left;
        margin-bottom: 4em; } }
    @media (min-width: 660px) {
      .front .l-region--diptych-second em {
        margin-bottom: 0; } }

@media (min-width: 1120px) {
  .front .l-content {
    width: 37.9310344828%;
    float: left;
    margin-right: -100%;
    margin-left: 0;
    clear: none; } }

.front .l-region--sidebar-first, .front .l-region--sidebar-second, .front .l-region--diptych-first, .landing-page .l-region--sidebar-first, .landing-page .l-region--sidebar-second, .landing-page .l-region--diptych-first {
  padding: 1em 2em; }
  .front .l-region--sidebar-first h3.block__title, .front .l-region--sidebar-second h3.block__title, .front .l-region--diptych-first h3.block__title, .landing-page .l-region--sidebar-first h3.block__title, .landing-page .l-region--sidebar-second h3.block__title, .landing-page .l-region--diptych-first h3.block__title {
    color: #464a4e;
    color: #697d92;
    font-size: 0.8em !important;
    font-weight: 700;
    letter-spacing: 1px;
    margin-bottom: 20PX;
    padding-top: 33px;
    padding-bottom: 10px;
    position: relative;
    /*text-transform: uppercase;*/
    text-align: center; }
    .front .l-region--sidebar-first h3.block__title:before, .front .l-region--sidebar-second h3.block__title:before, .front .l-region--diptych-first h3.block__title:before, .landing-page .l-region--sidebar-first h3.block__title:before, .landing-page .l-region--sidebar-second h3.block__title:before, .landing-page .l-region--diptych-first h3.block__title:before {
      background: url("../images/scallop-grey.svg");
      background-size: cover;
      content: '';
      height: 25px;
      left: 50%;
      margin-left: -11px;
      margin-top: -33px;
      position: absolute;
      width: 22px; }

@media (min-width: 550px) {
  .front .l-region--sidebar-first, .landing-page .l-region--sidebar-first {
    padding-right: 30px; } }

@media (min-width: 660px) {
  .front .l-region--sidebar-first, .landing-page .l-region--sidebar-first {
    float: right;
    margin-bottom: 2em;
    width: 48%; }
  .front .l-region--sidebar-second, .landing-page .l-region--sidebar-second {
    float: right;
    margin-bottom: 2em;
    width: 48%; } }

@media (min-width: 960px) {
  .front .l-content, .landing-page .l-content {
    float: left; }
  .front .l-region--sidebar-first, .landing-page .l-region--sidebar-first {
    margin-left: 1%;
    width: 23%; }
  .front .l-region--sidebar-second, .landing-page .l-region--sidebar-second {
    width: 23%; } }

.front .l-region--sidebar-first, .front .l-region--sidebar-second, .front .l-region--diptych-first {
  padding-top: 1.2em; }

.l-region--sidebar-first .view-upcoming-events .views-row {
  margin-bottom: 1.5em; }

.landing-page .view-news .views-row,
.landing-page .view-cr-events .views-row {
  margin-bottom: 1.5em; }

.landing-page .view-news .field-name-field-main-image,
.landing-page .view-cr-events .field-name-field-main-image {
  margin-bottom: 0em; }

.landing-page .view-news h4,
.landing-page .view-cr-events h4 {
  margin-top: 0em;
  margin-bottom: 0em; }

/**
 * $PAGE-PROSPECTIVE-STUDENTS
 */
/**
 * $EXPOSED FORM
 */
.views-exposed-form .views-submit-button + .views-reset-button {
  margin-left: 1em; }

/**
 * $VIEW-EVENTS
 */
.view-upcoming-events .group-left, .view-cr-events .group-left, .view-test-gallery .group-left, .view-clone-of-gallery .group-left, .view-alumni-gallery .group-left, .view-news .group-left, .view-announcements .group-left {
  width: 25%; }
  .view-upcoming-events .group-left img, .view-cr-events .group-left img, .view-test-gallery .group-left img, .view-clone-of-gallery .group-left img, .view-alumni-gallery .group-left img, .view-news .group-left img, .view-announcements .group-left img {
    width: 100%; }

.view-upcoming-events .group-right, .view-cr-events .group-right, .view-test-gallery .group-right, .view-clone-of-gallery .group-right, .view-alumni-gallery .group-right, .view-news .group-right, .view-announcements .group-right {
  width: 72%; }

.view-upcoming-events h2, .view-cr-events h2, .view-test-gallery h2, .view-clone-of-gallery h2, .view-alumni-gallery h2, .view-news h2, .view-announcements h2 {
  margin-top: 0;
  margin-bottom: 0; }

.view-upcoming-events h3, .view-cr-events h3, .view-test-gallery h3, .view-clone-of-gallery h3, .view-alumni-gallery h3, .view-news h3, .view-announcements h3 {
  line-height: 1.1em;
  margin: 0; }

.view-upcoming-events .front .views-row, .view-cr-events .front .views-row, .view-test-gallery .front .views-row, .view-clone-of-gallery .front .views-row, .view-alumni-gallery .front .views-row, .view-news .front .views-row, .view-announcements .front .views-row {
  margin-bottom: 1.25em; }

.view-upcoming-events img, .view-cr-events img, .view-test-gallery img, .view-clone-of-gallery img, .view-alumni-gallery img, .view-news img, .view-announcements img {
  margin-bottom: 1px; }

.view-upcoming-events .node--related-content h2, .view-cr-events .node--related-content h2, .view-test-gallery .node--related-content h2, .view-clone-of-gallery .node--related-content h2, .view-alumni-gallery .node--related-content h2, .view-news .node--related-content h2, .view-announcements .node--related-content h2 {
  font-size: 26px;
  font-size: 1.625rem; }

.view-upcoming-events .field-name-title, .view-upcoming-events .field-name-field-images, .view-cr-events .field-name-title, .view-cr-events .field-name-field-images, .view-test-gallery .field-name-title, .view-test-gallery .field-name-field-images, .view-clone-of-gallery .field-name-title, .view-clone-of-gallery .field-name-field-images, .view-alumni-gallery .field-name-title, .view-alumni-gallery .field-name-field-images, .view-news .field-name-title, .view-news .field-name-field-images, .view-announcements .field-name-title, .view-announcements .field-name-field-images {
  margin-bottom: 0;
  margin-top: 0; }

.view-upcoming-events .field-name-field-date-time, .view-upcoming-events .field-name-field-location, .view-upcoming-events .field--name-field-date-time, .view-upcoming-events .field--name-field-location, .view-cr-events .field-name-field-date-time, .view-cr-events .field-name-field-location, .view-cr-events .field--name-field-date-time, .view-cr-events .field--name-field-location, .view-test-gallery .field-name-field-date-time, .view-test-gallery .field-name-field-location, .view-test-gallery .field--name-field-date-time, .view-test-gallery .field--name-field-location, .view-clone-of-gallery .field-name-field-date-time, .view-clone-of-gallery .field-name-field-location, .view-clone-of-gallery .field--name-field-date-time, .view-clone-of-gallery .field--name-field-location, .view-alumni-gallery .field-name-field-date-time, .view-alumni-gallery .field-name-field-location, .view-alumni-gallery .field--name-field-date-time, .view-alumni-gallery .field--name-field-location, .view-news .field-name-field-date-time, .view-news .field-name-field-location, .view-news .field--name-field-date-time, .view-news .field--name-field-location, .view-announcements .field-name-field-date-time, .view-announcements .field-name-field-location, .view-announcements .field--name-field-date-time, .view-announcements .field--name-field-location {
  color: #777777;
  margin-bottom: 0; }

.l-content .view-test-gallery .views-row, .l-content .view-clone-of-gallery .views-row, .l-content .view-alumni-gallery .views-row {
  margin-bottom: 2.5em;
  display: block;
  float: left; }
  @media (min-width: 380px) and (max-width: 660px) {
    .l-content .view-test-gallery .views-row, .l-content .view-clone-of-gallery .views-row, .l-content .view-alumni-gallery .views-row {
      width: 48%;
      margin-left: 4%; }
      .l-content .view-test-gallery .views-row:nth-child(2n-1), .l-content .view-clone-of-gallery .views-row:nth-child(2n-1), .l-content .view-alumni-gallery .views-row:nth-child(2n-1) {
        clear: left;
        margin-left: 0; }
      .l-content .view-test-gallery .views-row h2, .l-content .view-clone-of-gallery .views-row h2, .l-content .view-alumni-gallery .views-row h2 {
        font-size: 20px;
        font-size: 1.25rem; }
      .l-content .view-test-gallery .views-row .field-name-field-date-time, .l-content .view-clone-of-gallery .views-row .field-name-field-date-time, .l-content .view-alumni-gallery .views-row .field-name-field-date-time {
        font-size: 16px;
        font-size: 1rem; } }
  @media (min-width: 660px) and (max-width: 960px) {
    .l-content .view-test-gallery .views-row, .l-content .view-clone-of-gallery .views-row, .l-content .view-alumni-gallery .views-row {
      float: left;
      width: 29%;
      margin-right: 3%; }
      .l-content .view-test-gallery .views-row:nth-child(3), .l-content .view-clone-of-gallery .views-row:nth-child(3), .l-content .view-alumni-gallery .views-row:nth-child(3) {
        clear: right;
        margin-right: 0; }
      .l-content .view-test-gallery .views-row h2, .l-content .view-clone-of-gallery .views-row h2, .l-content .view-alumni-gallery .views-row h2 {
        font-size: 20px;
        font-size: 1.25rem; } }
  @media (min-width: 960px) and (max-width: 1120px) {
    .l-content .view-test-gallery .views-row, .l-content .view-clone-of-gallery .views-row, .l-content .view-alumni-gallery .views-row {
      width: 22%;
      margin-left: 4%; }
      .l-content .view-test-gallery .views-row:nth-child(4n-3), .l-content .view-clone-of-gallery .views-row:nth-child(4n-3), .l-content .view-alumni-gallery .views-row:nth-child(4n-3) {
        clear: left;
        margin-left: 0; } }
  @media (min-width: 1120px) {
    .l-content .view-test-gallery .views-row, .l-content .view-clone-of-gallery .views-row, .l-content .view-alumni-gallery .views-row {
      width: 28%;
      margin-left: 8%; }
      .l-content .view-test-gallery .views-row:nth-child(3n-2), .l-content .view-clone-of-gallery .views-row:nth-child(3n-2), .l-content .view-alumni-gallery .views-row:nth-child(3n-2) {
        clear: left;
        margin-left: 0; } }
  .l-content .view-test-gallery .views-row img, .l-content .view-clone-of-gallery .views-row img, .l-content .view-alumni-gallery .views-row img {
    width: 100%; }

/* Lists of news and events */
.block--views-upcoming-events-block-1 h2, .block--views-upcoming-events-block-1 h3, .block--views-upcoming-events-block-1 h4, .block--views-news-block-2 h2, .block--views-news-block-2 h3, .block--views-news-block-2 h4, .view-upcoming-events h2, .view-upcoming-events h3, .view-upcoming-events h4, .view-upcoming-news h2, .view-upcoming-news h3, .view-upcoming-news h4, .view-news h2, .view-news h3, .view-news h4 {
  clear: left;
  font-size: 17px;
  font-weight: 500;
  line-height: 1.4;
  margin-top: 0; }

.block--views-upcoming-events-block-1 h3 a, .block--views-upcoming-events-block-1 h2 a, .block--views-upcoming-events-block-1 h4 a, .block--views-news-block-2 h3 a, .block--views-news-block-2 h2 a, .block--views-news-block-2 h4 a, .view-upcoming-events h3 a, .view-upcoming-events h2 a, .view-upcoming-events h4 a, .view-upcoming-news h3 a, .view-upcoming-news h2 a, .view-upcoming-news h4 a, .view-news h3 a, .view-news h2 a, .view-news h4 a {
  background: #ffe259;
  box-shadow: 5px 0 0 #ffe259, -5px 0 0 #ffe259;
  color: #000000;
  transition: 0.2s; }
  .block--views-upcoming-events-block-1 h3 a:hover, .block--views-upcoming-events-block-1 h2 a:hover, .block--views-upcoming-events-block-1 h4 a:hover, .block--views-news-block-2 h3 a:hover, .block--views-news-block-2 h2 a:hover, .block--views-news-block-2 h4 a:hover, .view-upcoming-events h3 a:hover, .view-upcoming-events h2 a:hover, .view-upcoming-events h4 a:hover, .view-upcoming-news h3 a:hover, .view-upcoming-news h2 a:hover, .view-upcoming-news h4 a:hover, .view-news h3 a:hover, .view-news h2 a:hover, .view-news h4 a:hover {
    background: #ffefa6;
    box-shadow: 5px 0 0 #ffefa6, -5px 0 0 #ffefa6;
    color: black !important;
    transition: 0.2s; }

.block--views-upcoming-events-block-1 span.date-display-single, .block--views-news-block-2 span.date-display-single, .view-upcoming-events span.date-display-single, .view-upcoming-news span.date-display-single, .view-news span.date-display-single {
  color: #000000;
  display: block;
  font-size: 0.9em;
  font-weight: 500; }

.block--views-upcoming-events-block-1 .views-field-field-location, .block--views-upcoming-events-block-1 .views-field-field-location, .block--views-upcoming-events-block-1 .view-cr-events .views-field-field-location, .block--views-news-block-2 .views-field-field-location, .block--views-news-block-2 .views-field-field-location, .block--views-news-block-2 .view-cr-events .views-field-field-location, .view-upcoming-events .views-field-field-location, .view-upcoming-events .views-field-field-location, .view-upcoming-events .view-cr-events .views-field-field-location, .view-upcoming-news .views-field-field-location, .view-upcoming-news .views-field-field-location, .view-upcoming-news .view-cr-events .views-field-field-location, .view-news .views-field-field-location, .view-news .views-field-field-location, .view-news .view-cr-events .views-field-field-location {
  color: #000000;
  display: block;
  font-size: 0.9em;
  margin-bottom: 10px;
  line-height: 1.3; }

.block--views-upcoming-events-block-1 img:hover, .block--views-news-block-2 img:hover, .view-upcoming-events img:hover, .view-upcoming-news img:hover, .view-news img:hover {
  opacity: 0.8; }

/**
 * $VIEW-FELLOWS
 */
.view-id-fellows .views-row {
  clear: both;
  width: 100%;
  margin-bottom: 1.61em;
  min-height: 1.61em; }

.view-id-fellows .views-field-field-surname .field-content, .view-id-fellows .views-field-field-prefix .field-content, .view-id-fellows .views-field-field-first-name .field-content {
  display: block;
  float: left;
  margin-right: .25em;
  font-weight: bold; }

.view-id-fellows .views-field-field-position {
  display: block;
  margin-left: 1em;
  float: left; }

.view-id-fellows .views-field-field-contact-e-mail {
  clear: both; }
  .view-id-fellows .views-field-field-contact-e-mail .views-label {
    display: inline;
    float: left;
    margin-right: 1em; }

.view-id-fellows .views-field-field-related-links {
  display: block;
  clear: both; }

.view-cr-societies .views-row .field {
  margin-bottom: 0.6em; }

/**
 * $VIEW-STAFF
 */
.view-id-people .views-row {
  margin-bottom: 1.61em; }
  .view-id-people .views-row .group-left {
    float: right;
    width: 70%; }
    .view-id-people .views-row .group-left .field {
      margin-bottom: .25em; }
    .view-id-people .views-row .group-left .field-name-field-prefix, .view-id-people .views-row .group-left .field-name-field-first-name, .view-id-people .views-row .group-left .field-name-field-surname {
      display: inline-block;
      margin-right: 0.25em; }
    .view-id-people .views-row .group-left .field-group-staff-name {
      font-weight: 700;
      font-size: 18px;
      font-size: 1.125rem; }
    @media (max-width: 660px) {
      .view-id-people .views-row .group-left .field-name-field-contact-e-mail a {
        display: block; } }
    @media (min-width: 660px) {
      .view-id-people .views-row .group-left {
        width: 76%; } }
    @media (min-width: 1120px) {
      .view-id-people .views-row .group-left {
        width: 82%; } }
  .view-id-people .views-row .group-right {
    float: left;
    width: 30%; }
    @media (min-width: 660px) {
      .view-id-people .views-row .group-right {
        width: 145px; } }
    .view-id-people .views-row .group-right .field-name-field-main-image {
      margin-right: 10px;
      margin-top: 6px;
      max-width: 135px; }
    @media (min-width: 660px) {
      .view-id-people .views-row .group-right .field-name-field-main-image {
        margin-right: 0; } }
  .view-id-people .views-row .field--name-field-prefix, .view-id-people .views-row .field--name-field-first-name, .view-id-people .views-row .field--name-field-surname {
    display: block;
    float: left;
    margin-right: .25em;
    font-weight: bold; }
  .view-id-people .views-row .field--name-field-position {
    clear: both; }

.label-inline {
  display: inline; }

.view-news .views-row,
.view-upcoming-events .views-row,
.view-cr-events .views-row {
  overflow: auto;
  zoom: 1;
  margin-bottom: 18px; }
  .view-news .views-row .news-fields-list,
  .view-upcoming-events .views-row .news-fields-list,
  .view-cr-events .views-row .news-fields-list {
    width: 100% !important; }
  .view-news .views-row .event-details,
  .view-upcoming-events .views-row .event-details,
  .view-cr-events .views-row .event-details {
    margin-bottom: 3em; }
    .view-news .views-row .event-details p,
    .view-upcoming-events .views-row .event-details p,
    .view-cr-events .views-row .event-details p {
      text-align: justify; }

.view-news .views-field-field-main-image img,
.view-upcoming-events .views-field-field-main-image img,
.view-cr-events .views-field-field-main-image img {
  float: left;
  margin-right: 2em; }

.view-news .views-field-field-location,
.view-upcoming-events .views-field-field-location,
.view-cr-events .views-field-field-location {
  color: #777777; }

.news-on-homepage .views-field-field-main-image img,
#block-views-upcoming-events-block-1 .views-field-field-main-image img {
  margin-left: 0;
  margin-right: 0; }

.node--news--full .field-name-field-main-image-non-banner,
.node--event--full .field-name-field-main-image-non-banner {
  float: right;
  margin-left: 1.5em;
  margin-bottom: 0.8em;
  border: none; }

.node--news--full img,
.node--event--full img {
  border: none; }

.node--news--full #node_event_full_group_event_details img,
.node--event--full #node_event_full_group_event_details img {
  margin-right: 5px;
  margin-left: 5px;
  float: right;
  padding: 1em;
  border: none; }

#block-views-upcoming-events-block-9 img,
#block-views-upcoming-events-block-10 img {
  float: none; }

#node_event_archived_event_group_event_details .field-name-field-main-image-non-banner img {
  float: right;
  margin-left: 0.8em;
  margin-bottom: 0.8em;
  border: none; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYnJhcmllcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2xpc3RzLnNjc3MiLCIuLi9saWJyYXJpZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19jb25zdGFudHMuc2NzcyIsIi4uL2xpYnJhcmllcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2Rpc3BsYXkuc2NzcyIsInZhcmlhYmxlcy9fY29sb3JzLnNjc3MiLCJhYnN0cmFjdGlvbnMvX2FnaWxlYnV0dG9ucy5zY3NzIiwiYWJzdHJhY3Rpb25zL19hcnJvdy5zY3NzIiwiYWJzdHJhY3Rpb25zL19ibG9jay10aXRsZS5zY3NzIiwiYWJzdHJhY3Rpb25zL19jYWxsX3RvX2FjdGlvbi5zY3NzIiwiYWJzdHJhY3Rpb25zL19jbGFzc3kuc2NzcyIsImFic3RyYWN0aW9ucy9faGxpc3Quc2NzcyIsImNvbXBvbmVudHMvYmxvY2tzL19ibG9jay11c2VyLW1lbnUuc2NzcyIsIi4uL2xpYnJhcmllcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9yZXNldC9fdXRpbGl0aWVzLnNjc3MiLCIuLi9saWJyYXJpZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NsZWFyZml4LnNjc3MiLCIuLi9saWJyYXJpZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faG9yaXpvbnRhbC1saXN0LnNjc3MiLCIuLi9saWJyYXJpZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zY3NzIiwiLi4vbGlicmFyaWVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zY3NzIiwiYWJzdHJhY3Rpb25zL19pc2xhbmQuc2NzcyIsIi4uL2xpYnJhcmllcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L192ZXJ0aWNhbF9yaHl0aG0uc2NzcyIsImNvbXBvbmVudHMvY29tbWVudHMvX2NvbW1lbnQuc2NzcyIsInZhcmlhYmxlcy9fZ3JpZC5zY3NzIiwiYWJzdHJhY3Rpb25zL191bmRlcmxpbmVzLnNjc3MiLCJiYXNlL19mb3Jtcy5zY3NzIiwiLi4vbGlicmFyaWVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zY3NzIiwiLi4vbGlicmFyaWVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JveC1zaGFkb3cuc2NzcyIsImFic3RyYWN0aW9ucy9fdHlwb2dyYXBoeS5zY3NzIiwiYmFzZS9fbWVkaWEuc2NzcyIsImJhc2UvX3RhYmxlcy5zY3NzIiwiLi4vbGlicmFyaWVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jb2xvcnMuc2NzcyIsImJhc2UvX3R5cG9ncmFwaHkuc2NzcyIsInZhcmlhYmxlcy9fdHlwb2dyYXBoeS5zY3NzIiwiLi4vbGlicmFyaWVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19mb250cy5zY3NzIiwiLi4vbGlicmFyaWVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlua3MvX2xpbmstY29sb3JzLnNjc3MiLCIuLi9saWJyYXJpZXMvY29tcGFzcy1icmVha3BvaW50L3N0eWxlc2hlZXRzL19icmVha3BvaW50LnNjc3MiLCJjb21wb25lbnRzL2Jsb2Nrcy9fYmxvY2stYWNjb21vZGF0aW9uLnNjc3MiLCIuLi9saWJyYXJpZXMvc2luZ3VsYXJpdHkvc3R5bGVzaGVldHMvc2luZ3VsYXJpdHlncy9fYXBpLnNjc3MiLCIuLi9saWJyYXJpZXMvc2luZ3VsYXJpdHkvc3R5bGVzaGVldHMvc2luZ3VsYXJpdHlncy9tYXRoL19jb2x1bW5zLnNjc3MiLCIuLi9saWJyYXJpZXMvc2luZ3VsYXJpdHkvc3R5bGVzaGVldHMvc2luZ3VsYXJpdHlncy9oZWxwZXJzL19kaXJlY3Rpb25zLnNjc3MiLCIuLi9saWJyYXJpZXMvc2luZ3VsYXJpdHkvc3R5bGVzaGVldHMvc2luZ3VsYXJpdHlncy9hcGkvX2Zsb2F0LnNjc3MiLCIuLi9saWJyYXJpZXMvc2luZ3VsYXJpdHkvc3R5bGVzaGVldHMvc2luZ3VsYXJpdHlncy9tYXRoL19ndXR0ZXJzLnNjc3MiLCJjb21wb25lbnRzL2Jsb2Nrcy9fYmxvY2stYWx0LnNjc3MiLCJjb21wb25lbnRzL2Jsb2Nrcy9fYmxvY2stYW5ub3VuY2VtZW50cy5zY3NzIiwiY29tcG9uZW50cy9ibG9ja3MvX2Jsb2NrLWNhc2Utc3R1ZGllcy5zY3NzIiwiY29tcG9uZW50cy9ibG9ja3MvX2Jsb2NrLWN0YS5zY3NzIiwiY29tcG9uZW50cy9ibG9ja3MvX2Jsb2NrLWN1cmF0b3Iuc2NzcyIsImNvbXBvbmVudHMvYmxvY2tzL19ibG9jay1saW5rZWRpbi5zY3NzIiwiY29tcG9uZW50cy9ibG9ja3MvX2Jsb2NrLW1hcC5zY3NzIiwiY29tcG9uZW50cy9ibG9ja3MvX2Jsb2NrLXJlbGF0ZWQtbGlua3MtcGFnZXMuc2NzcyIsImNvbXBvbmVudHMvYmxvY2tzL19ibG9jay1zZWFyY2guc2NzcyIsImNvbXBvbmVudHMvYmxvY2tzL19ibG9jay1zaGFyZXRoaXMuc2NzcyIsIi4uL2xpYnJhcmllcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19ib3gtc2l6aW5nLnNjc3MiLCJjb21wb25lbnRzL2Jsb2Nrcy9fbmF2LWJhci5zY3NzIiwiY29tcG9uZW50cy9jb21tZW50cy9fY29tbWVudC13cmFwcGVyLnNjc3MiLCJjb21wb25lbnRzL2ZpZWxkcy9fZmllbGQtYWNjb3JkaW9uLnNjc3MiLCJjb21wb25lbnRzL2ZpZWxkcy9fZmllbGQtdGF4b25vbXktdGVybS5zY3NzIiwiY29tcG9uZW50cy9maWVsZHMvX2ZpZWxkLnNjc3MiLCJjb21wb25lbnRzL2Zvcm1zL19hdXRvY29tcGxldGUuc2NzcyIsImNvbXBvbmVudHMvZm9ybXMvX2NvbGxhcHNpYmxlLnNjc3MiLCJjb21wb25lbnRzL2Zvcm1zL19maWVsZHNldHMuc2NzcyIsImNvbXBvbmVudHMvZm9ybXMvX2ZpbHRlci10aXBzLnNjc3MiLCJjb21wb25lbnRzL2Zvcm1zL19mb3JtLWl0ZW1zLnNjc3MiLCJjb21wb25lbnRzL2Zvcm1zL19wYXNzd29yZC1jb25maXJtLnNjc3MiLCJjb21wb25lbnRzL2Zvcm1zL19wYXNzd29yZC1pbmRpY2F0b3Iuc2NzcyIsImNvbXBvbmVudHMvZm9ybXMvX3NlYXJjaC1mb3JtLnNjc3MiLCJhYnN0cmFjdGlvbnMvX2Z1bmN0aW9ucy5zY3NzIiwiLi4vbGlicmFyaWVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3RyYW5zaXRpb24uc2NzcyIsIi4uL2xpYnJhcmllcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX3JlcGxhY2VtZW50LnNjc3MiLCJjb21wb25lbnRzL2Zvcm1zL192ZXJ0aWNhbF90YWJzLnNjc3MiLCJjb21wb25lbnRzL21lbnVzL19hY3Rpb24tbGlua3Muc2NzcyIsImNvbXBvbmVudHMvbWVudXMvX2JyZWFkY3J1bWIuc2NzcyIsImNvbXBvbmVudHMvbWVudXMvX2NvbnRleHR1YWwtbGlua3Muc2NzcyIsImNvbXBvbmVudHMvbWVudXMvX21haW4tbWVudS5zY3NzIiwiY29tcG9uZW50cy9tZW51cy9fc2Vjb25kYXJ5LnNjc3MiLCJjb21wb25lbnRzL21lbnVzL190YWJzLnNjc3MiLCJjb21wb25lbnRzL21pc2MvX2JvcmRlci1saXN0LnNjc3MiLCJjb21wb25lbnRzL21pc2MvX2J1dHRvbnMuc2NzcyIsIi4uL2xpYnJhcmllcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX25vd3JhcC5zY3NzIiwiY29tcG9uZW50cy9taXNjL19ja2VkaXRvci5zY3NzIiwiY29tcG9uZW50cy9taXNjL19jb250YWN0LnNjc3MiLCJjb21wb25lbnRzL21pc2MvX2ZlZWQtaWNvbi5zY3NzIiwiY29tcG9uZW50cy9taXNjL19mb290ZXIuc2NzcyIsIi4uL2xpYnJhcmllcy9zaW5ndWxhcml0eS9zdHlsZXNoZWV0cy9zaW5ndWxhcml0eWdzL2FwaS9faXNvbGF0aW9uLnNjc3MiLCJjb21wb25lbnRzL21pc2MvX2hhbmRib29rLnNjc3MiLCJjb21wb25lbnRzL21pc2MvX2hlcm8uc2NzcyIsIi4uL2xpYnJhcmllcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvZ2VuZXJhbC9faGFja3Muc2NzcyIsIi4uL2xpYnJhcmllcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19pbWFnZXMuc2NzcyIsImNvbXBvbmVudHMvbWlzYy9famVkLWNzcy5zY3NzIiwiY29tcG9uZW50cy9taXNjL19tZXNzYWdlcy5zY3NzIiwiY29tcG9uZW50cy9taXNjL19wYWdlci5zY3NzIiwiY29tcG9uZW50cy9taXNjL19wcm9ncmVzcy5zY3NzIiwiY29tcG9uZW50cy9taXNjL19zZWFyY2gtcmVzdWx0cy5zY3NzIiwiY29tcG9uZW50cy9taXNjL19zZWN0aW9uLXRpdGxlLnNjc3MiLCJjb21wb25lbnRzL21pc2MvX3NpZGViYXIuc2NzcyIsImNvbXBvbmVudHMvbWlzYy9fc2l0ZS1icmFuZGluZy5zY3NzIiwiY29tcG9uZW50cy9taXNjL19zb2NpYWwtc2hhcmUuc2NzcyIsImNvbXBvbmVudHMvbm9kZS9fbm9kZS1hY2NvbW1vZGF0aW9uLnNjc3MiLCJjb21wb25lbnRzL25vZGUvX25vZGUtYW5ub3VuY2VtZW50LnNjc3MiLCJjb21wb25lbnRzL25vZGUvX25vZGUtYXJ0aWNsZS5zY3NzIiwiY29tcG9uZW50cy9ub2RlL19ub2RlLWNhc2Utc3R1ZHkuc2NzcyIsImNvbXBvbmVudHMvbm9kZS9fbm9kZS1vYml0dWFyeS5zY3NzIiwiY29tcG9uZW50cy9ub2RlL19ub2RlLXBlcnNvbi5zY3NzIiwiY29tcG9uZW50cy9ub2RlL19ub2RlLXRlcm1jYXJkLnNjc3MiLCJjb21wb25lbnRzL25vZGUvX25vZGUuc2NzcyIsImNvbXBvbmVudHMvcGFnZS9fcGFnZS1jdXJyZW50LW1lbWJlcnMuc2NzcyIsImNvbXBvbmVudHMvcGFnZS9fcGFnZS1mYWNpbGl0aWVzLnNjc3MiLCJjb21wb25lbnRzL3BhZ2UvX3BhZ2UtZ2FsbGVyeS5zY3NzIiwiY29tcG9uZW50cy9wYWdlL19wYWdlLWhvbWVwYWdlLnNjc3MiLCJjb21wb25lbnRzL3BhZ2UvX3BhZ2UtbGFuZGluZy5zY3NzIiwiLi4vbGlicmFyaWVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JhY2tncm91bmQtc2l6ZS5zY3NzIiwiY29tcG9uZW50cy9wYWdlL19wYWdlLXByb3NwZWN0aXZlLXN0dWRlbnRzLnNjc3MiLCJjb21wb25lbnRzL3ZpZXdzL19leHBvc2VkLWZvcm0uc2NzcyIsImNvbXBvbmVudHMvdmlld3MvX3ZpZXctZXZlbnRzLnNjc3MiLCJjb21wb25lbnRzL3ZpZXdzL192aWV3LWZlbGxvd3Muc2NzcyIsImNvbXBvbmVudHMvdmlld3MvX3ZpZXctc29jaWV0aWVzLnNjc3MiLCJjb21wb25lbnRzL3ZpZXdzL192aWV3LXN0YWZmLnNjc3MiLCJjb21wb25lbnRzL3ZpZXdzL192aWV3cy1uZXdzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FDSEg7OztHQUdHO0FDSEg7OztHQUdHO0FDSEg7Ozs7Ozs7Ozs7O0dBV0c7QUE0Q0g7Ozs7Ozs7O0dBUUc7QUMvREg7O0dBRUc7QUNGSDs7R0FFRztBQ0ZIOztHQUVHO0FDRkg7OztHQUdHO0FDSEg7OztHQUdHO0FDSEg7O0dBRUc7QUNDSDtFQzhERSxVQUFVO0VBQ1YsV0FBVztFQUNYLFVBQVUsRUY5RFg7RUNGRDtJRVVNLFlBQVk7SUFDWixlQUFlO0lBQ2YsWUFBWSxFQUNiO0VDMkNIO0lDekRBLHVCQUF3QjtJQUN4QixzQkFBd0I7SUFDeEIsZUFBcUI7SURvQ3JCLG9CQUFvQjtJRTNCcEIsZ0JBQWdCO0lBQ2hCLFlBQWMsRUY4QzBDOztBRzVEMUQ7O0dBRUc7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QUFtQjtNQUNuQixnQkFBZ0I7TUFDaEIsaUJBQWlCLEVBQ2xCO0lBQ0Q7TUFDRTtRQUNJLGdCQUFnQixFQUNqQixFQUFBO0VBL0NYO0lBbURRLGVBQWU7SUFDZixZQUFZO0lBQ1osb0JBQW9CO0lBQ2xCLGtCQUFrQixFQUN2QjtFQUNEO0lBQ00sWUFBWSxFQUNqQjs7QUFJTDtFQUNFLGdCQUFnQixFQUNqQjs7QUNsRUQ7OztFQUlFLGVBQWU7RUFDYixRQUFRO0VBQ1Isb0JBQW9CLEVBV3RCO0VBakJGOzs7SUFRSyx1QkFBdUIsRUFDdkI7RUFUTDs7O0lBV0ssbUJBQW1CLEVBSW5CO0lBSEE7OztNQUNFLG9CQUFvQixFQUNyQjs7QUFNSjs7O0VBQ0MsWUFBWTtFQUNULGtCQUFrQixFQUNyQjs7QUFFRjs7O0VBQ0MsZUFBZSxFQUNmOztBQUdGOztFQUlHLGVBQWU7RUFDZixnQkFBZ0IsRUFDaEI7O0FBT0Y7O0VBQ0csYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixxQkFBcUI7RUFDckIsYUFBYSxFQUlmOztBQVZGOztFQWdCRyxhQUFhLEVBQ2Q7O0FBakJGOztFQW9CSSxrQkFBa0I7RUFDbEIsaUJBQWlCO0VBQ2pCLGFBQWE7RUFDYixhQUFhO0VBQ2IsYUFBYSxFQUNkOztBQXlCRDs7RUFDQyxZQUFZLEVBQ1o7O0FBRUg7RUFHSSxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLHFCQUFxQjtFQUNyQixhQUFhLEVBQ2IiLCJmaWxlIjoic3R5bGVzLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgbGlzdCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuICogaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2xpc3RzLnJiXG4gKi9cblxuXG4vLyBjb21wYWN0IGlzIHBhcnQgb2YgbGlic2Fzc1xuXG5AZnVuY3Rpb24gLWNvbXBhc3MtbnRoKCRsaXN0LCAkcGxhY2UpIHtcbiAgLy8gWWVwLCBTYXNzLWxpc3RzIGFyZSAxLWluZGV4ZWQuXG4gIEBpZiAkcGxhY2UgPT0gXCJmaXJzdFwiIHtcbiAgICAkcGxhY2U6IDE7XG4gIH1cbiAgQGlmICRwbGFjZSA9PSBcImxhc3RcIiB7XG4gICAgJHBsYWNlOiBsZW5ndGgoJGxpc3QpO1xuICB9XG4gIEByZXR1cm4gbnRoKCRsaXN0LCAkcGxhY2UpO1xufVxuXG4vLyBjb21wYXNzX2xpc3QgYW5kIGNvbXBhc3Nfc3BhY2VfbGlzdCBjYW4ndCBiZSBpbXBsZW1lbnRlZCBpbiBzYXNzIHNjcmlwdFxuXG5AZnVuY3Rpb24gLWNvbXBhc3MtbGlzdC1zaXplKCRsaXN0KSB7XG4gIEByZXR1cm4gbGVuZ3RoKCRsaXN0KTtcbn1cblxuQGZ1bmN0aW9uIC1jb21wYXNzLXNsaWNlKCRsaXN0LCAkc3RhcnQsICRlbmQ6IGZhbHNlKSB7XG4gIEBpZiAkZW5kID09IGZhbHNlIHtcbiAgICAkZW5kOiBsZW5ndGgoJGxpc3QpO1xuICB9XG4gICRmdWxsOiBudGgoJGxpc3QsICRzdGFydCk7XG4gIEBmb3IgJGkgZnJvbSAkc3RhcnQgKyAxIHRocm91Z2ggJGVuZCB7XG4gICAgJGZ1bGw6ICRmdWxsLCBudGgoJGxpc3QsICRpKTtcbiAgfVxuICBAcmV0dXJuICRmdWxsO1xufVxuXG5AZnVuY3Rpb24gcmVqZWN0KCRsaXN0LCAkcmVqZWN0MSwgJHJlamVjdDI6bnVsbCwgJHJlamVjdDM6bnVsbCwgJHJlamVjdDQ6bnVsbCwgJHJlamVjdDU6bnVsbCwgJHJlamVjdDY6bnVsbCwgJHJlamVjdDc6bnVsbCwgJHJlamVjdDg6bnVsbCwgJHJlamVjdDk6bnVsbCkge1xuICAkcmVqZWN0czogJHJlamVjdDEsICRyZWplY3QyLCAkcmVqZWN0MywgJHJlamVjdDQsICRyZWplY3Q1LCAkcmVqZWN0NiwgJHJlamVjdDcsICRyZWplY3Q4LCAkcmVqZWN0OTtcblxuICAkZnVsbDogZmFsc2U7XG4gIEBlYWNoICRpdGVtIGluICRsaXN0IHtcbiAgICBAaWYgaW5kZXgoJHJlamVjdHMsICRpdGVtKSB7fVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiAkZnVsbCB7XG4gICAgICAgICRmdWxsOiAkZnVsbCwgJGl0ZW07XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmdWxsOiAkaXRlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQHJldHVybiAkZnVsbDtcbn1cbiIsIi8qXG4gKiBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY29uc3RhbnRzIGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4gKiBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvY29uc3RhbnRzLnJiXG4gKi9cblxuQGZ1bmN0aW9uIG9wcG9zaXRlLXBvc2l0aW9uKCRmcm9tKSB7XG4gICAgQGlmICgkZnJvbSA9PSB0b3ApIHtcbiAgICAgICAgQHJldHVybiBib3R0b207XG4gICAgfSBAZWxzZSBpZiAoJGZyb20gPT0gYm90dG9tKSB7XG4gICAgICAgIEByZXR1cm4gdG9wO1xuICAgIH0gQGVsc2UgaWYgKCRmcm9tID09IGxlZnQpIHtcbiAgICAgICAgQHJldHVybiByaWdodDtcbiAgICB9IEBlbHNlIGlmICgkZnJvbSA9PSByaWdodCkge1xuICAgICAgICBAcmV0dXJuIGxlZnQ7XG4gICAgfSBAZWxzZSBpZiAoJGZyb20gPT0gY2VudGVyKSB7XG4gICAgICAgIEByZXR1cm4gY2VudGVyO1xuICAgIH1cbn1cbiIsIi8qXG4gKiBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgZGlzcGxheSBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuICogaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9jb3JlL2xpYi9jb21wYXNzL2NvcmUvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9kaXNwbGF5LnJiXG4gKi9cblxuQGZ1bmN0aW9uIGVsZW1lbnRzLW9mLXR5cGUoJHR5cGUpe1xuICAgIEBpZiAoJHR5cGUgPT0gYmxvY2spe1xuICAgICAgICBAcmV0dXJuIGFkZHJlc3MsIGFydGljbGUsIGFzaWRlLCBibG9ja3F1b3RlLCBjZW50ZXIsIGRpciwgZGl2LCBkZCwgZGV0YWlscywgZGwsIGR0LCBmaWVsZHNldCwgZmlnY2FwdGlvbiwgZmlndXJlLCBmb3JtLCBmb290ZXIsIGZyYW1lc2V0LCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBociwgaGVhZGVyLCBoZ3JvdXAsIGlzaW5kZXgsIG1haW4sIG1lbnUsIG5hdiwgbm9mcmFtZXMsIG5vc2NyaXB0LCBvbCwgcCwgcHJlLCBzZWN0aW9uLCBzdW1tYXJ5LCB1bDtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBpbmxpbmUpe1xuICAgICAgICBAcmV0dXJuIGEsIGFiYnIsIGFjcm9ueW0sIGF1ZGlvLCBiLCBiYXNlZm9udCwgYmRvLCBiaWcsIGJyLCBjYW52YXMsIGNpdGUsIGNvZGUsIGNvbW1hbmQsIGRhdGFsaXN0LCBkZm4sIGVtLCBlbWJlZCwgZm9udCwgaSwgaW1nLCBpbnB1dCwga2V5Z2VuLCBrYmQsIGxhYmVsLCBtYXJrLCBtZXRlciwgb3V0cHV0LCBwcm9ncmVzcywgcSwgcnAsIHJ0LCBydWJ5LCBzLCBzYW1wLCBzZWxlY3QsIHNtYWxsLCBzcGFuLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHRleHRhcmVhLCB0aW1lLCB0dCwgdSwgdmFyLCB2aWRlbywgd2JyO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IGlubGluZS1ibG9jayl7XG4gICAgICAgIEByZXR1cm4gaW1nO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlKXtcbiAgICAgICAgQHJldHVybiB0YWJsZTtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBsaXN0LWl0ZW0pe1xuICAgICAgICBAcmV0dXJuIGxpO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlLXJvdy1ncm91cCl7XG4gICAgICAgIEByZXR1cm4gdGJvZHk7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGFibGUtaGVhZGVyLWdyb3VwKXtcbiAgICAgICAgQHJldHVybiB0aGVhZDtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZS1mb290ZXItZ3JvdXApe1xuICAgICAgICBAcmV0dXJuIHRmb290O1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlLXJvdyl7XG4gICAgICAgIEByZXR1cm4gdHI7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGFibGUtY2VsbCl7XG4gICAgICAgIEByZXR1cm4gdGgsIHRkO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IGh0bWw1LWJsb2NrKXtcbiAgICAgICAgQHJldHVybiBhcnRpY2xlLCBhc2lkZSwgZGV0YWlscywgZmlnY2FwdGlvbiwgZmlndXJlLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBtYWluLCBtZW51LCBuYXYsIHNlY3Rpb24sIHN1bW1hcnk7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gaHRtbDUtaW5saW5lKXtcbiAgICAgICAgQHJldHVybiBhdWRpbywgY2FudmFzLCBjb21tYW5kLCBkYXRhbGlzdCwgZW1iZWQsIGtleWdlbiwgbWFyaywgbWV0ZXIsIG91dHB1dCwgcHJvZ3Jlc3MsIHJwLCBydCwgcnVieSwgdGltZSwgdmlkZW8sIHdicjtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBodG1sNSl7XG4gICAgICAgIEByZXR1cm4gYXJ0aWNsZSwgYXNpZGUsIGF1ZGlvLCBjYW52YXMsIGNvbW1hbmQsIGRhdGFsaXN0LCBkZXRhaWxzLCBlbWJlZCwgZmlnY2FwdGlvbiwgZmlndXJlLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBrZXlnZW4sIG1haW4sIG1hcmssIG1lbnUsIG1ldGVyLCBuYXYsIG91dHB1dCwgcHJvZ3Jlc3MsIHJwLCBydCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSwgdGltZSwgdmlkZW8sIHdicjtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0ZXh0LWlucHV0KXtcbiAgICAgICAgQHJldHVybiBpbnB1dCwgdGV4dGFyZWE7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBDb2xsZWN0ZWQgY29sb3Vycy5cbiAqXG4gKiBUaGVzZSBhcmUgY29sb3VycyBBZ2lsZSBDb2xsZWN0aXZlIGhhdmUgZ2F0aGVyZWQgYW5kIG1pZ2h0IHdhbnQgdG8gcmUtdXNlXG4gKiBpbiBvdGhlciBwcm9qZWN0cy4gVXN1YWxseSB0aGV5IHdvdWxkIG5vdCBiZSByZWZlcmVuY2VkIGRpcmVjdGx5LCBpbnN0ZWFkXG4gKiB0aGV5IHdvdWxkIGJlIHJlZmVyZW5jZWQgaW4gdGhlIGNvbG91ciBiYXNlZCB2YXJpYWJsZXMgYWJvdmUuXG4gKlxuICogWW91ciBjb2xvdXJzIHNob3VsZCBiZSBuYW1lZCB1c2luZyB0aGUgJ05hbWUgdGhhdCBjb2xvcicgd2ViIHNlcnZpY2UuXG4gKlxuICogQHNlZTogaHR0cDovL2NoaXIuYWcvcHJvamVjdHMvbmFtZS10aGF0LWNvbG9yXG4gKiBvciBodHRwOi8vd3d3LmNvbG9yLWJsaW5kbmVzcy5jb20vY29sb3ItbmFtZS1odWUvXG4gKi9cblxuLy8gQmxhY2suXG4kY29sb3ItYmxhY2s6ICMwMDAwMDA7XG5cbi8vIEJsdWVzLlxuJGNvbG9yLWJvdHRpY2VsbGk6ICNkOWU5ZWY7XG4kY29sb3ItcGljdG9uLWJsdWU6ICM1MmIxZWE7XG4kY29sb3ItbG9jaG1hcmE6ICMwNzdkYzM7XG4kY29sb3ItdGVhbC1ibHVlOiAjMDY0NzcxO1xuJGNvbG9yLWJvc3Rvbi1ibHVlOiAjM2I3ZmM0O1xuJGNvbG9yLWRlZXAtc2t5LWJsdWU6IHJnYigwLDE1OSwyMzgpO1xuJGNvbG9yLWx5bmNoOiAjNjk3ZDkyO1xuXG4vLyBPcmFuZ2VzLlxuJGNvbG9yLWhvdC1jaW5uYW1vbjogI2U0NjIxYztcbiRjb2xvci10YWNhbzogI2VmYTQ3YjtcblxuLy8gR3JlZW5zLlxuJGNvbG9yLWFwcGxlOiAjNGE5OTNlO1xuJGNvbG9yLWxhLXBhbG1hOiByZ2IoNjMsMTYwLDUxKTtcbiRjb2xvci10cm9waWNhbC1yYWluLWZvcmVzdDogcmdiKDAsMTIwLDkyKTtcbiRjb2xvci1zZWEtZ3JlZW46ICMwMDhiOGI7XG5cbi8vIFJlZHMuXG4kY29sb3Itd2VsbC1yZWFkOiAjYjMzNjMwO1xuJGNvbG9yLWNhcm1pbmU6IHJnYigxNjAsMCw0NCk7XG5cbi8vIFllbGxvd3MuXG4kY29sb3Itd2F0dGxlOiAjZDZkMjJlO1xuJGNvbG9yLWdvbGRlbi1wb3BweTogcmdiKDI0MiwxOTksMCk7XG4kbGluYWNyZS15ZWxsb3c6ICNmMmM3MDA7XG5cbi8vIEdyZXlzLlxuJGNvbG9yLWFsdG86ICNkZGQ7XG4kY29sb3ItbmV2YWRhOiAjNmE3MDc2O1xuJGNvbG9yLW1pbmUtc2hhZnQ6ICMyMjIyMjI7XG4kY29sb3ItZ3JleTogcmdiKDExOSwxMTksMTE5KTtcbiRjb2xvci1kYXJrLWdyZXk6IHJnYigxNzksMTc5LDE3OSk7XG4kY29sb3Itd2hpdGUtc21va2U6ICNlY2VjZWM7XG5cbi8vIFdoaXRlcy5cbiRjb2xvci13aGl0ZTogI2ZmZjtcblxuLyoqXG4gKiBTaXRlIGNvbG91cnMuXG4gKlxuICogVGhlIGNvbG91cnMgc3BlY2lmaWMgdG8gdGhpcyBzaXRlIGFyZSBkZWZpbmVkIGJlbG93LiBBdm9pZCB1c2luZyBhbnkgaGV4XG4gKiBjb2xvdXJzIGhlcmUsIGluc3RlYWQgdXNlIGEgdmFyaWFibGUgcmVmZXJlbmNpbmcgYSBoZXggY29sb3VyIGRlZmluZWQgYWJvdmUuXG4gKiBJZiB5b3VyIGNvbG91ciBpc24ndCBkZWZpbmVkIHlldCwgZ28gdG8gaHR0cDovL2NoaXIuYWcvcHJvamVjdHMvbmFtZS10aGF0LWNvbG9yXG4gKiBhbmQgZW50ZXIgeW91ciBoZXggdmFsdWUgdG8gZmluZCB5b3VyIGNvbG91ciBuYW1lIGFuZCB0aGVuIGFkZCBpdCB0byB0aGVcbiAqIGFwcHJvcHJpYXRlIGNvbG91ciBzZWN0aW9uIGFib3ZlLlxuICovXG5cbi8vIEFjY2VudCAxIC0gVGhpcyBpcyBmb3IgdGhlIG1lbnUgYmFyIGFuZCB0aGUgZm9vdGVyIGFuZCBhZGQgc3BsYXNoZXMgaGVyZSBhbmQgdGhlcmUuXG4kYWNjZW50LTE6ICRjb2xvci1nb2xkZW4tcG9wcHk7XG4kYWNjZW50LTEtbGlnaHRlcjogdGludCgkYWNjZW50LTEsIDUwJSk7XG5cbi8vIEFjY2VudCAyIC0gVGhlIHNlY29uZGFyeSBjb2xvdXIgb2YgdGhlIHNpdGUuXG4kYWNjZW50LTI6ICRjb2xvci1kZWVwLXNreS1ibHVlO1xuJGFjY2VudC0yLWxpZ2h0ZXI6IHRpbnQoJGFjY2VudC0yLCAzNSUpO1xuXG4vLyBBY2NlbnQgMyAtIFRoZSB0ZXJ0aWFyeSBjb2xvdXIgb2YgdGhlIHNpdGUuXG4kYWNjZW50LTM6ICRjb2xvci1jYXJtaW5lO1xuXG4vLyBBY2NlbnQgNCAtIEJsYWNrLlxuJGFjY2VudC00OiAkY29sb3ItYmxhY2s7XG5cbi8vIEdsb2JhbHNcbiRib2R5LWNvcHktY29sb3I6ICRjb2xvci1taW5lLXNoYWZ0O1xuJGJhc2UtY29sb3I6IHJnYmEoICRhY2NlbnQtNCwgMC45ICk7IC8vIFRoaXMgaXMgdGhlIHNpdGUgaGVhZGVyXG4kdGV4dC1vdmVyLWJhc2UtY29sb3I6ICNGRkY7XG4kbGluay1jb2xvcjogJGFjY2VudC0yO1xuJGxpbmstaG92ZXItY29sb3I6ICRjb2xvci1sYS1wYWxtYTtcbiR3YXJuaW5nLWNvbG9yOiAkY29sb3ItaG90LWNpbm5hbW9uO1xuJG5lZ2F0aXZlLWNvbG9yOiAkY29sb3Itd2VsbC1yZWFkO1xuJG1haW4tbWVudS1iZy1jb2xvcjogJGNvbG9yLWdvbGRlbi1wb3BweTtcbiRtYWluLW1lbnUtYmctaG92ZXItY29sb3I6IHRpbnQoJGNvbG9yLWdvbGRlbi1wb3BweSwgNzAlKTtcblxuIC8vIEZvcm1zXG4kZm9ybS1kZXNjcmlwdGlvbi1jb2xvcjogbGlnaHRlbigkYm9keS1jb3B5LWNvbG9yLCAyNSUpO1xuJGJvcmRlci1jb2xvcjogJGFjY2VudC0yOyAvLyBTZWUgU3R5bGUgRWxlbWVudHMgZm9yIHVzYWdlLlxuJGJveC1iYWNrZ3JvdW5kLWNvbG9yOiB0aW50KCRhY2NlbnQtNCwgOTUlKTtcbiRib3gtYnV0dG9uLWJhY2tncm91bmQtY29sb3I6IHRpbnQoJGFjY2VudC00LCA5NyUpOyAgLy8gVGhpcyBpcyB0aGUgYmcgZm9yIFNlYXJjaCBhbmQgYXV0b2NvbXBsZXRlIOKAmEdv4oCZIGJ1dHRvbnNcbiRib3gtYnV0dG9uLWhvdmVyLWJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQtMTtcbiRib3gtZHJvcGRvd24tYmFja2dyb3VuZC1jb2xvcjogdGludCgkYWNjZW50LTEsIDUwJSk7IC8vIFRoZSBkb3duIGFycm93IG9uIGZvcm0gZHJvcGRvd25zXG4kYm94LWRyb3Bkb3duLWhvdmVyLWJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQtMTtcblxuLy8gUGFnZSBiYWNrZ3JvdW5kIGNvbG91ci5cbiRwYWdlX2JhY2tncm91bmQ6ICNmZmZmZmY7XG5cbi8vIEZvciBwb3NpdGl2ZSBhY3Rpb25zLCBzdWNoIGFzIHN1Ym1pdCBidXR0b25zLlxuJHBvc2l0aXZlOiAkYWNjZW50LTI7XG4kcG9zaXRpdmUtbGlnaHRlcjogJGFjY2VudC0yLWxpZ2h0ZXI7XG4kdGV4dC1vdmVyLXBvc2l0aXZlLWNvbG9yOiAjZmZmO1xuIiwiLyoqXG4gKiAkQWdpbGUgQnV0dG9uXG4gKi9cbkBtaXhpbiBhZ2lsZS1idXR0b24oJHN0eWxlOiBwbGFpbiwgJHNpemU6IG5vcm1hbCwgJGJhY2tncm91bmQtY29sb3I6ICNFNkU2RTYsICRjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjgpKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yO1xuICBjb2xvcjogJGNvbG9yO1xuICBib3JkZXI6IDAgbm9uZSB0cmFuc3BhcmVudDtcbiAgcGFkZGluZzogMC42ZW0gMS41ZW0gMC41ZW0gMS41ZW07XG4gIGJhY2tncm91bmQtc2l6ZTogYXV0bztcblxuICBAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCAwLjI1cyBlYXNlKTtcblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodHJhbnNwYXJlbnQsIHJnYmEoMCwgMCwgMCwgMC4wNSkgNjAlLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuICAmLmRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgb3BhY2l0eTogMC41O1xuICB9XG4gICYuYWN0aXZlLCAmOmFjdGl2ZSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMXB4IHJnYmEoMCwgMCwgMCwgMC4xNSkgaW5zZXQsIDAgMCA2cHggcmdiYSgwLCAwLCAwLCAwLjIpIGluc2V0O1xuICB9XG5cbiAgQGlmICRzdHlsZSA9PSBcInByaW1hcnlcIiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhc2UtY29sb3I7XG4gICAgY29sb3I6ICNGRkY7XG4gIH1cbiAgQGlmICRzdHlsZSA9PSBcInBvc2l0aXZlXCIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRwb3NpdGl2ZTtcbiAgICBjb2xvcjogI0ZGRjtcbiAgfVxuICBAaWYgJHN0eWxlID09IFwibmVnYXRpdmVcIiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG5lZ2F0aXZlO1xuICAgIGNvbG9yOiAjRkZGO1xuICB9XG4gIEBpZiAkc3R5bGUgPT0gXCJkYXJrXCIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRkYXJrLWJhY2tncm91bmQ7XG4gICAgY29sb3I6ICR0ZXh0LW92ZXItZGFyay1iYWNrZ3JvdW5kO1xuICB9XG4gIEBpZiAkc2l6ZSA9PSBcImxhcmdlXCIge1xuICAgIGZvbnQtc2l6ZTogMS4zZW07XG4gIH1cbiAgQGlmICRzaXplID09IFwic21hbGxcIiB7XG4gICAgZm9udC1zaXplOiAwLjhlbTtcbiAgfVxuXG59XG4iLCIvKipcbiAqICRBUlJPV1xuICovXG5AbWl4aW4gYXJyb3coJHBvc2l0aW9uLCAkc2l6ZSwgJGNvbG9yLCAkYm9yZGVyLXNpemU6IDAsICRib3JkZXItY29sb3I6IHRyYW5zcGFyZW50KSB7XG4gIC8vIEJveCB3ZSdyZSBhZGRpbmcgdGhlIGFycm93IHRvLlxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQ6ICRjb2xvcjtcbiAgQGlmICRib3JkZXItc2l6ZSAhPSAwIHtcbiAgICBib3JkZXI6ICRib3JkZXItc2l6ZSBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICB9XG5cbiAgLy8gU3dhcCB0aGUgcG9zaXRpb24gYXJvdW5kIHRvIHRoZSBwb3NpdGlvbiB3ZSBhY3R1YWxseSBuZWVkLlxuICAkY2VudGVyLXBvc2l0aW9uOiBsZWZ0O1xuICBAaWYgJHBvc2l0aW9uID09IHRvcCB7XG4gICAgJHBvc2l0aW9uOiBib3R0b207XG4gIH0gQGVsc2UgaWYgJHBvc2l0aW9uID09IHJpZ2h0ICB7XG4gICAgJHBvc2l0aW9uOiBsZWZ0O1xuICAgICRjZW50ZXItcG9zaXRpb246IHRvcDtcbiAgfSBAZWxzZSBpZiAkcG9zaXRpb24gPT0gYm90dG9tICB7XG4gICAgJHBvc2l0aW9uOiB0b3A7XG4gIH0gQGVsc2UgaWYgJHBvc2l0aW9uID09IGxlZnQgIHtcbiAgICAkcG9zaXRpb246IHJpZ2h0O1xuICAgICRjZW50ZXItcG9zaXRpb246IHRvcDtcbiAgfVxuXG4gIC8vIE1haW4gYXJyb3cgYW5kIGJvcmRlciBhcnJvdy5cbiAgQGlmICRib3JkZXItc2l6ZSA9PSAwIHtcbiAgICAmOmFmdGVyLCAmOmJlZm9yZSB7XG4gICAgICAjeyRwb3NpdGlvbn06IDEwMCU7XG4gICAgICBib3JkZXI6IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgY29udGVudDogXCIgXCI7XG4gICAgICBoZWlnaHQ6IDA7XG4gICAgICB3aWR0aDogMDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJjphZnRlciwgJjpiZWZvcmUge1xuICAgICAgI3skcG9zaXRpb259OiAxMDAlO1xuICAgICAgYm9yZGVyOiBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgaGVpZ2h0OiAwO1xuICAgICAgd2lkdGg6IDA7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB9XG4gIH1cblxuICAvLyBNYWluIEFycm93XG4gICY6YWZ0ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLSN7JHBvc2l0aW9ufS1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogJHNpemU7XG4gICAgI3skY2VudGVyLXBvc2l0aW9ufTogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiAtJHNpemU7XG4gIH1cblxuICAvLyBCb3JkZXIgYXJyb3cuXG4gIEBpZiAkYm9yZGVyLXNpemUgIT0gMCB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci0jeyRwb3NpdGlvbn0tY29sb3I6ICRib3JkZXItY29sb3I7XG4gICAgICBib3JkZXItd2lkdGg6ICRzaXplICsgcm91bmQoKCRib3JkZXItc2l6ZSAqIDEuNDE0MjEzNTYpKTtcbiAgICAgICN7JGNlbnRlci1wb3NpdGlvbn06IDUwJTtcbiAgICAgIG1hcmdpbi1sZWZ0OiAtKHJvdW5kKCgkc2l6ZSArICgkYm9yZGVyLXNpemUgKiAxLjQxNDIxMzU2KSkpKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8qKlxuICogQmxvY2sgdGl0bGUgZXh0ZW5kXG4gKi9cbiVibG9jay10aXRsZSB7XG4gIGNvbG9yOiAkY29sb3ItbHluY2g7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xuICBmb250LXdlaWdodDogc2VtaS1ib2xkO1xuICBsZXR0ZXItc3BhY2luZzogMXB4O1xuICBtYXJnaW4tYm90dG9tOiAxLjJlbTtcbiAgcGFkZGluZy1ib3R0b206IDEwcHg7XG5cbn1cbiIsIi8qKlxuICogJENBTEwtVE8tQUNUSU9OXG4gKiBBbnkgY2FsbCB0byBhY3Rpb24gYmxvY2sgZ2V0IGFzc2lnbmVkIGEgYmFja2dyb3VuZCBjb2xvdXIgYmFzZWQgb24gbGlzdCBvZiBmYXZyaWFibGVzXG4gKi9cblxuLy8gRGVmaW5lIGFycmF5IG9mIGNvbG91cnMgdG8gYmUgdXNlZCBmb3IgYmxvY2sgYmFja2dyb3VuZCBieSBkZWZhdWx0LlxuLy8gVGhlc2UgY2FuIGJlIGNoYW5nZWQgZWFzaWx5IHdoZW4gY2FsbGluZyB0aGUgbWl4aW5cblxuQG1peGluIGN0YS1jb2xvdXJzKCRiZy1jb2xvdXJzLi4uKSB7XG4gIC8vICRiZy1jb2xvdXJzOiAkY29sb3ItZGVlcC1za3ktYmx1ZSwgJGNvbG9yLXRyb3BpY2FsLXJhaW4tZm9yZXN0LCAkY29sb3ItZGFyay1ncmV5LCAkY29sb3ItY2FybWluZSwgJGNvbG9yLWdvbGRlbi1wb3BweSwgJGNvbG9yLWxhLXBhbG1hO1xuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkYmctY29sb3Vycykge1xuICAgIC5ibG9jay0tY3RhOm50aC1jaGlsZCgje2xlbmd0aCgkYmctY29sb3Vycyl9bisjeyRpfSkgLmJsb2NrX19jb250ZW50IGEge1xuICAgICAgYmFja2dyb3VuZDogbnRoKCRiZy1jb2xvdXJzLCAkaSk7XG4gICAgICBAaWYgbnRoKCRiZy1jb2xvdXJzLCAkaSkgPT0gJGNvbG9yLWdvbGRlbi1wb3BweSB7XG4gICAgICAgICAgY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8qKlxuICogQ2xhc3N5LnNjc3NcbiAqIEEgc2V0IG9mIHVzZWZ1bCBtaXhpbnMgJiBjbGFzc2VzIGZvciBEcnVwYWxcbiAqL1xuXG5AbWl4aW4gc3RyaXAtbGlzdCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgbGkge1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiBub25lO1xuICB9XG59XG4iLCIvKipcbiAqICRITElTVFxuICovXG4laGxpc3Qge1xuICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QoZmFsc2UpO1xufVxuIiwiLyoqXG4gKiAkVVNFUi1NRU5VXG4gKi9cbi5ibG9jay0tc3lzdGVtLXVzZXItbWVudSB7XG4gIC5tZW51IHtcbiAgICBAZXh0ZW5kICVobGlzdDtcbiAgfVxuICBhIHtcbiAgICBwYWRkaW5nOiAwIDAuNmVtO1xuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICRhY2NlbnQtMTtcbiAgfVxuICBsaTpmaXJzdC1jaGlsZCBhIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gIH1cbiAgbGk6bGFzdC1jaGlsZCBhIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIGJvcmRlci1yaWdodDogMDtcbiAgfVxufVxuIiwiLy8gQmFzZWQgb24gW0VyaWMgTWV5ZXIncyByZXNldCAyLjBdKGh0dHA6Ly9tZXllcndlYi5jb20vZXJpYy90b29scy9jc3MvcmVzZXQvaW5kZXguaHRtbClcbi8vIEdsb2JhbCByZXNldCBydWxlcy5cbi8vIEZvciBtb3JlIHNwZWNpZmljIHJlc2V0cywgdXNlIHRoZSByZXNldCBtaXhpbnMgcHJvdmlkZWQgYmVsb3dcbkBtaXhpbiBnbG9iYWwtcmVzZXQge1xuICBodG1sLCBib2R5LCBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCwgXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIC8vIFVubGlrZSBFcmljJ3Mgb3JpZ2luYWwgcmVzZXQsIHdlIHJlc2V0IHRoZSBodG1sIGVsZW1lbnQgdG8gYmUgY29tcGF0aWJsZVxuICAvLyB3aXRoIHRoZSB2ZXJ0aWNhbCByaHl0aG0gbWl4aW5zLlxuICBodG1sIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib2R5OyB9XG4gIG9sLCB1bCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtbGlzdC1zdHlsZTsgfVxuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGU7IH1cbiAgY2FwdGlvbiwgdGgsIHRkIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZS1jZWxsOyB9XG4gIHEsIGJsb2NrcXVvdGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXF1b3RhdGlvbjsgfVxuICBhIGltZyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlcjsgfVxuICBAaW5jbHVkZSByZXNldC1odG1sNTsgfVxuXG4vLyBSZXNldCBhbGwgZWxlbWVudHMgd2l0aGluIHNvbWUgc2VsZWN0b3Igc2NvcGUuIFRvIHJlc2V0IHRoZSBzZWxlY3RvciBpdHNlbGYsXG4vLyBtaXhpbiB0aGUgYXBwcm9wcmlhdGUgcmVzZXQgbWl4aW4gZm9yIHRoYXQgZWxlbWVudCB0eXBlIGFzIHdlbGwuIFRoaXMgY291bGQgYmVcbi8vIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBzdHlsZSBhIHBhcnQgb2YgeW91ciBwYWdlIGluIGEgZHJhbWF0aWNhbGx5IGRpZmZlcmVudCB3YXkuXG5AbWl4aW4gbmVzdGVkLXJlc2V0IHtcbiAgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbiAgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxuICBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuICBiLCB1LCBpLCBjZW50ZXIsXG4gIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXG4gIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxuICB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbiAgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsIFxuICBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIFxuICBtZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSxcbiAgdGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gICAgQGluY2x1ZGUgcmVzZXQtZm9udDsgfVxuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGU7IH1cbiAgY2FwdGlvbiwgdGgsIHRkIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZS1jZWxsOyB9XG4gIHEsIGJsb2NrcXVvdGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXF1b3RhdGlvbjsgfVxuICBhIGltZyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlcjsgfSB9XG5cbi8vIFJlc2V0IHRoZSBib3ggbW9kZWwgbWVhc3VyZW1lbnRzLlxuQG1peGluIHJlc2V0LWJveC1tb2RlbCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiAwOyB9XG5cbi8vIFJlc2V0IHRoZSBmb250IGFuZCB2ZXJ0aWNhbCBhbGlnbm1lbnQuXG5AbWl4aW4gcmVzZXQtZm9udCB7XG4gIGZvbnQ6IGluaGVyaXQ7XG4gIGZvbnQtc2l6ZTogMTAwJTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyB9XG5cbi8vIFJlc2V0cyB0aGUgb3V0bGluZSB3aGVuIGZvY3VzLlxuLy8gRm9yIGFjY2Vzc2liaWxpdHkgeW91IG5lZWQgdG8gYXBwbHkgc29tZSBzdHlsaW5nIGluIGl0cyBwbGFjZS5cbkBtaXhpbiByZXNldC1mb2N1cyB7XG4gIG91dGxpbmU6IDA7IH1cblxuLy8gUmVzZXQgYSBib2R5IGVsZW1lbnQuXG5AbWl4aW4gcmVzZXQtYm9keSB7XG4gIGxpbmUtaGVpZ2h0OiAxOyB9XG5cbi8vIFJlc2V0IHRoZSBsaXN0IHN0eWxlIG9mIGFuIGVsZW1lbnQuXG5AbWl4aW4gcmVzZXQtbGlzdC1zdHlsZSB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7IH1cblxuLy8gUmVzZXQgYSB0YWJsZVxuQG1peGluIHJlc2V0LXRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7IH1cblxuLy8gUmVzZXQgYSB0YWJsZSBjZWxsIChgdGhgLCBgdGRgKVxuQG1peGluIHJlc2V0LXRhYmxlLWNlbGwge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XG5cbi8vIFJlc2V0IGEgcXVvdGF0aW9uIChgcWAsIGBibG9ja3F1b3RlYClcbkBtaXhpbiByZXNldC1xdW90YXRpb24ge1xuICBxdW90ZXM6IG5vbmU7XG4gICY6YmVmb3JlLCAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiOyBcbiAgICBjb250ZW50OiBub25lOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBib3JkZXIuXG5AbWl4aW4gcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlciB7XG4gIGJvcmRlcjogbm9uZTsgfVxuXG4vLyBVbnJlY29nbml6ZWQgZWxlbWVudHMgYXJlIGRpc3BsYXllZCBpbmxpbmUuXG4vLyBUaGlzIHJlc2V0IHByb3ZpZGVzIGEgYmFzaWMgcmVzZXQgZm9yIGJsb2NrIGh0bWw1IGVsZW1lbnRzXG4vLyBzbyB0aGV5IGFyZSByZW5kZXJlZCBjb3JyZWN0bHkgaW4gYnJvd3NlcnMgdGhhdCBkb24ndCByZWNvZ25pemUgdGhlbVxuLy8gYW5kIHJlc2V0IGluIGJyb3dzZXJzIHRoYXQgaGF2ZSBkZWZhdWx0IHN0eWxlcyBmb3IgdGhlbS5cbkBtaXhpbiByZXNldC1odG1sNSB7XG4gICN7ZWxlbWVudHMtb2YtdHlwZShodG1sNS1ibG9jayl9IHtcbiAgICBkaXNwbGF5OiBibG9jazsgfSB9XG5cbi8vIFJlc2V0cyB0aGUgZGlzcGxheSBvZiBpbmxpbmUgYW5kIGJsb2NrIGVsZW1lbnRzIHRvIHRoZWlyIGRlZmF1bHQgZGlzcGxheVxuLy8gYWNjb3JkaW5nIHRvIHRoZWlyIHRhZyB0eXBlLiBFbGVtZW50cyB0aGF0IGhhdmUgYSBkZWZhdWx0IGRpc3BsYXkgdGhhdCB2YXJpZXMgYWNyb3NzXG4vLyB2ZXJzaW9ucyBvZiBodG1sIG9yIGJyb3dzZXIgYXJlIG5vdCBoYW5kbGVkIGhlcmUsIGJ1dCB0aGlzIGNvdmVycyB0aGUgOTAlIHVzZSBjYXNlLlxuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgLy8gVHVybiBvZmYgdGhlIGRpc3BsYXkgZm9yIGJvdGggb2YgdGhlc2UgY2xhc3Nlc1xuLy8gICAgIC51bnJlZ2lzdGVyZWQtb25seSwgLnJlZ2lzdGVyZWQtb25seVxuLy8gICAgICAgZGlzcGxheTogbm9uZVxuLy8gICAgIC8vIE5vdyB0dXJuIG9ubHkgb25lIG9mIHRoZW0gYmFjayBvbiBkZXBlbmRpbmcgb24gc29tZSBvdGhlciBjb250ZXh0LlxuLy8gICAgIGJvZHkucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIucmVnaXN0ZXJlZC1vbmx5XCIpXG4vLyAgICAgYm9keS51bnJlZ2lzdGVyZWRcbi8vICAgICAgICtyZXNldC1kaXNwbGF5KFwiLnVucmVnaXN0ZXJlZC1vbmx5XCIpXG5AbWl4aW4gcmVzZXQtZGlzcGxheSgkc2VsZWN0b3I6IFwiXCIsICRpbXBvcnRhbnQ6IGZhbHNlKSB7XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJpbmxpbmVcIiksICRzZWxlY3Rvcil9IHtcbiAgICBAaWYgJGltcG9ydGFudCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZTsgfSB9XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJibG9ja1wiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTW9kZXJuIENsZWFyZml4IE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBjbGVhcmZpeCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2NsZWFyZml4IGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCA9PSB0cnVlIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnY2xlYXJmaXgnKSB7XG4gICAgICBAaW5jbHVkZSBjbGVhcmZpeChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgfVxufSIsIi8vIEhvcml6b250YWwgbGlzdCBsYXlvdXQgbW9kdWxlLlxuLy9cbi8vIEVhc3kgbW9kZSB1c2luZyBzaW1wbGUgZGVzY2VuZGFudCBsaSBzZWxlY3RvcnM6XG4vL1xuLy8gICB1bC5uYXZcbi8vICAgICAraG9yaXpvbnRhbC1saXN0XG4vL1xuLy8gQWR2YW5jZWQgbW9kZTpcbi8vIElmIHlvdSBuZWVkIHRvIHRhcmdldCB0aGUgbGlzdCBpdGVtcyB1c2luZyBhIGRpZmZlcmVudCBzZWxlY3RvciB0aGVuIHVzZVxuLy8gK2hvcml6b250YWwtbGlzdC1jb250YWluZXIgb24geW91ciB1bC9vbCBhbmQgK2hvcml6b250YWwtbGlzdC1pdGVtIG9uIHlvdXIgbGkuXG4vLyBUaGlzIG1heSBoZWxwIHdoZW4gd29ya2luZyBvbiBsYXlvdXRzIGludm9sdmluZyBuZXN0ZWQgbGlzdHMuIEZvciBleGFtcGxlOlxuLy9cbi8vICAgdWwubmF2XG4vLyAgICAgK2hvcml6b250YWwtbGlzdC1jb250YWluZXJcbi8vICAgICA+IGxpXG4vLyAgICAgICAraG9yaXpvbnRhbC1saXN0LWl0ZW1cblxuQGltcG9ydCBcImJ1bGxldHNcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL3Jlc2V0XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvZmxvYXRcIjtcblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IHNlbGVjdG9yIHRoYXQgdGFyZ2V0IGEgdWwgb3Igb2wgdGhhdCBpcyBtZWFudFxuLy8gdG8gaGF2ZSBhIGhvcml6b250YWwgbGF5b3V0LiBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuQG1peGluIGhvcml6b250YWwtbGlzdC1jb250YWluZXIge1xuICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gIEBpbmNsdWRlIGNsZWFyZml4OyB9XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBsaSBzZWxlY3RvciB0aGF0IGlzIG1lYW50IHRvIHBhcnRpY2lwYXRlIGluIGEgaG9yaXpvbnRhbCBsYXlvdXQuXG4vLyBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuLy9cbi8vIDpsYXN0LWNoaWxkIGlzIG5vdCBmdWxseSBzdXBwb3J0ZWRcbi8vIHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Nzcy9jb250ZW50cy5odG1sI3QyOSBmb3IgdGhlIHN1cHBvcnQgbWF0cml4XG4vL1xuLy8gSUU4IGlnbm9yZXMgcnVsZXMgdGhhdCBhcmUgaW5jbHVkZWQgb24gdGhlIHNhbWUgbGluZSBhcyA6bGFzdC1jaGlsZFxuLy8gc2VlIGh0dHA6Ly93d3cucmljaGFyZHNjYXJyb3R0LmNvLnVrL3Bvc3RzL3ZpZXcvaWU4LWxhc3QtY2hpbGQtYnVnIGZvciBkZXRhaWxzXG4vL1xuLy8gU2V0dGluZyBgJHBhZGRpbmdgIHRvIGBmYWxzZWAgZGlzYWJsZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiBsaXN0IGVsZW1lbnRzXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0LWl0ZW0oJHBhZGRpbmc6IDRweCwgJGRpcmVjdGlvbjogbGVmdCkge1xuICBAaW5jbHVkZSBuby1idWxsZXQ7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIEBpbmNsdWRlIGZsb2F0KCRkaXJlY3Rpb24pO1xuICBAaWYgJHBhZGRpbmcge1xuICAgIHBhZGRpbmc6IHtcbiAgICAgIGxlZnQ6ICRwYWRkaW5nO1xuICAgICAgcmlnaHQ6ICRwYWRkaW5nO1xuICAgIH1cbiAgICAmOmZpcnN0LWNoaWxkLCAmLmZpcnN0IHsgcGFkZGluZy0jeyRkaXJlY3Rpb259OiAwOyB9XG4gICAgJjpsYXN0LWNoaWxkIHsgcGFkZGluZy0je29wcG9zaXRlLXBvc2l0aW9uKCRkaXJlY3Rpb24pfTogMDsgfVxuICAgICYubGFzdCB7IHBhZGRpbmctI3tvcHBvc2l0ZS1wb3NpdGlvbigkZGlyZWN0aW9uKX06IDA7IH1cbiAgfVxufVxuXG4vLyBBIGxpc3Qob2wsdWwpIHRoYXQgaXMgbGF5ZWQgb3V0IHN1Y2ggdGhhdCB0aGUgZWxlbWVudHMgYXJlIGZsb2F0ZWQgbGVmdCBhbmQgd29uJ3Qgd3JhcC5cbi8vIFRoaXMgaXMgbm90IGFuIGlubGluZSBsaXN0LlxuLy9cbi8vIFNldHRpbmcgYCRwYWRkaW5nYCB0byBgZmFsc2VgIGRpc2FibGVzIHRoZSBwYWRkaW5nIGJldHdlZW4gbGlzdCBlbGVtZW50c1xuQG1peGluIGhvcml6b250YWwtbGlzdCgkcGFkZGluZzogNHB4LCAkZGlyZWN0aW9uOiBsZWZ0KSB7XG4gIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1jb250YWluZXI7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtaXRlbSgkcGFkZGluZywgJGRpcmVjdGlvbik7IH0gfVxuIiwiLy8gVHVybiBvZmYgdGhlIGJ1bGxldCBmb3IgYW4gZWxlbWVudCBvZiBhIGxpc3RcbkBtaXhpbiBuby1idWxsZXQge1xuICBsaXN0LXN0eWxlLWltYWdlIDogbm9uZTtcbiAgbGlzdC1zdHlsZS10eXBlICA6IG5vbmU7XG4gIG1hcmdpbi1sZWZ0ICAgICAgOiAwO1xufVxuXG4vLyB0dXJucyBvZmYgdGhlIGJ1bGxldHMgZm9yIGFuIGVudGlyZSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0cyB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGxpIHsgQGluY2x1ZGUgbm8tYnVsbGV0OyB9XG59XG5cbi8vIE1ha2UgYSBsaXN0KHVsL29sKSBoYXZlIGFuIGltYWdlIGJ1bGxldC5cbi8vXG4vLyBUaGUgbWl4aW4gc2hvdWxkIGJlIHVzZWQgbGlrZSB0aGlzIGZvciBhbiBpY29uIHRoYXQgaXMgNXg3OlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIsIDVweCwgN3B4KVxuLy9cbi8vIEFkZGl0aW9uYWxseSwgaWYgdGhlIGltYWdlIGRpbWVuc2lvbnMgYXJlIG5vdCBwcm92aWRlZCxcbi8vIFRoZSBpbWFnZSBkaW1lbnNpb25zIHdpbGwgYmUgZXh0cmFjdGVkIGZyb20gdGhlIGltYWdlIGl0c2VsZi5cbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiKVxuLy9cbkBtaXhpbiBwcmV0dHktYnVsbGV0cygkYnVsbGV0LWljb24sICR3aWR0aDogaW1hZ2Utd2lkdGgoJGJ1bGxldC1pY29uKSwgJGhlaWdodDogaW1hZ2UtaGVpZ2h0KCRidWxsZXQtaWNvbiksICRsaW5lLWhlaWdodDogMThweCwgJHBhZGRpbmc6IDE0cHgpIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIGxpIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgIGJhY2tncm91bmQ6IGltYWdlLXVybCgkYnVsbGV0LWljb24pIG5vLXJlcGVhdCAoJHBhZGRpbmcgLSAkd2lkdGgpIC8gMiAoJGxpbmUtaGVpZ2h0IC0gJGhlaWdodCkgLyAyO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgfVxufVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6bGVmdCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtbGVmdCB7XG4gIEBpbmNsdWRlIGZsb2F0KGxlZnQpOyB9XG5cbi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OnJpZ2h0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1yaWdodCB7XG4gIEBpbmNsdWRlIGZsb2F0KHJpZ2h0KTsgfVxuXG4vLyBEaXJlY3Rpb24gaW5kZXBlbmRlbnQgZmxvYXQgbWl4aW4gdGhhdCBmaXhlcyB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdCgkc2lkZTogbGVmdCkge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGZsb2F0OiB1bnF1b3RlKCRzaWRlKTsgfVxuXG4vLyBSZXNldHMgZmxvYXRlZCBlbGVtZW50cyBiYWNrIHRvIHRoZWlyIGRlZmF1bHQgb2YgYGZsb2F0OiBub25lYCBhbmQgZGVmYXVsdHNcbi8vIHRvIGBkaXNwbGF5OiBibG9ja2AgdW5sZXNzIHlvdSBwYXNzIGBpbmxpbmVgIGFzIGFuIGFyZ3VtZW50XG4vL1xuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgYm9keS5ob21lcGFnZVxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArZmxvYXQtbGVmdFxuLy8gICAgIGJvZHkuc2lnbnVwXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtyZXNldC1mbG9hdFxuQG1peGluIHJlc2V0LWZsb2F0KCRkaXNwbGF5OiBibG9jaykge1xuICBmbG9hdDogbm9uZTtcbiAgZGlzcGxheTogJGRpc3BsYXk7IH0iLCIvKipcbiAqICRJU0xBTkRcbiAqL1xuJWlzbGFuZCxcbiVpc2xldCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBAaW5jbHVkZSBtYXJnaW4tdHJhaWxlcigxKTtcbiAgQGluY2x1ZGUgY2xlYXJmaXgodHJ1ZSk7XG5cbiAgJiA+IDpsYXN0LWNoaWxkLFxuICAmID4gOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuJWlzbGFuZCB7XG4gIHBhZGRpbmc6ICR2ZXJ0LXNwYWNpbmctdW5pdCAkaG9yei1zcGFjaW5nLXVuaXQ7XG59XG5cbiVpc2xldCB7XG4gIG1hcmdpbi1ib3R0b206ICR2ZXJ0LXNwYWNpbmctdW5pdCAvIDI7XG4gIHBhZGRpbmc6ICgkdmVydC1zcGFjaW5nLXVuaXQgLyAyKSAoJGhvcnotc3BhY2luZy11bml0IC8gMik7XG59XG4iLCJAaW1wb3J0IFwiLi4vbGF5b3V0L2dyaWQtYmFja2dyb3VuZFwiO1xuXG4vLyBUaGUgYmFzZSBmb250IHNpemUuXG4kYmFzZS1mb250LXNpemU6IDE2cHggIWRlZmF1bHQ7XG5cbi8vIFRoZSBiYXNlIGxpbmUgaGVpZ2h0IGRldGVybWluZXMgdGhlIGJhc2ljIHVuaXQgb2YgdmVydGljYWwgcmh5dGhtLlxuJGJhc2UtbGluZS1oZWlnaHQ6IDI0cHggIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgZGVmYXVsdCBib3JkZXIgc3R5bGUgZm9yIHJoeXRobSBib3JkZXJzLlxuJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZTogc29saWQgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4kYnJvd3Nlci1kZWZhdWx0LWZvbnQtc2l6ZTogMTZweDtcblxuLy8gU2V0IHRvIGZhbHNlIGlmIHlvdSB3YW50IHRvIHVzZSBhYnNvbHV0ZSBwaXhlbHMgaW4gc2l6aW5nIHlvdXIgdHlwb2dyYXBoeS5cbiRyZWxhdGl2ZS1mb250LXNpemluZzogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gQWxsb3dzIHRoZSBgYWRqdXN0LWZvbnQtc2l6ZS10b2AgbWl4aW4gYW5kIHRoZSBgbGluZXMtZm9yLWZvbnQtc2l6ZWAgZnVuY3Rpb25cbi8vIHRvIHJvdW5kIHRoZSBsaW5lIGhlaWdodCB0byB0aGUgbmVhcmVzdCBoYWxmIGxpbmUgaGVpZ2h0IGluc3RlYWQgb2YgdGhlXG4vLyBuZWFyZXN0IGludGVncmFsIGxpbmUgaGVpZ2h0IHRvIGF2b2lkIGxhcmdlIHNwYWNpbmcgYmV0d2VlbiBsaW5lcy5cbiRyb3VuZC10by1uZWFyZXN0LWhhbGYtbGluZTogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIEVuc3VyZSB0aGVyZSBpcyBhdCBsZWFzdCB0aGlzIG1hbnkgcGl4ZWxzXG4vLyBvZiB2ZXJ0aWNhbCBwYWRkaW5nIGFib3ZlIGFuZCBiZWxvdyB0aGUgdGV4dC5cbiRtaW4tbGluZS1wYWRkaW5nOiAycHggIWRlZmF1bHQ7XG5cbi8vICRiYXNlLWZvbnQtc2l6ZSBidXQgaW4geW91ciBvdXRwdXQgdW5pdCBvZiBjaG9pY2UuXG4vLyBEZWZhdWx0cyB0byAxZW0gd2hlbiBgJHJlbGF0aXZlLWZvbnQtc2l6aW5nYCBpcyB0cnVlLlxuJGZvbnQtdW5pdDogaWYoJHJlbGF0aXZlLWZvbnQtc2l6aW5nLCAxZW0sICRiYXNlLWZvbnQtc2l6ZSkgIWRlZmF1bHQ7XG5cbi8vIFRoZSBiYXNpYyB1bml0IG9mIGZvbnQgcmh5dGhtLlxuJGJhc2Utcmh5dGhtLXVuaXQ6ICRiYXNlLWxpbmUtaGVpZ2h0IC8gJGJhc2UtZm9udC1zaXplICogJGZvbnQtdW5pdDtcblxuLy8gVGhlIGxlYWRlciBpcyB0aGUgYW1vdW50IG9mIHdoaXRlc3BhY2UgaW4gYSBsaW5lLlxuLy8gSXQgbWlnaHQgYmUgdXNlZnVsIGluIHlvdXIgY2FsY3VsYXRpb25zLlxuJGJhc2UtbGVhZGVyOiAoJGJhc2UtbGluZS1oZWlnaHQgLSAkYmFzZS1mb250LXNpemUpICogJGZvbnQtdW5pdCAvICRiYXNlLWZvbnQtc2l6ZTtcblxuLy8gVGhlIGhhbGYtbGVhZGVyIGlzIHRoZSBhbW91bnQgb2Ygd2hpdGVzcGFjZSBhYm92ZSBhbmQgYmVsb3cgYSBsaW5lLlxuLy8gSXQgbWlnaHQgYmUgdXNlZnVsIGluIHlvdXIgY2FsY3VsYXRpb25zLlxuJGJhc2UtaGFsZi1sZWFkZXI6ICRiYXNlLWxlYWRlciAvIDI7XG5cbi8vIFRydWUgaWYgYSBudW1iZXIgaGFzIGEgcmVsYXRpdmUgdW5pdC5cbkBmdW5jdGlvbiByZWxhdGl2ZS11bml0KCRudW1iZXIpIHtcbiAgQHJldHVybiB1bml0KCRudW1iZXIpID09IFwiJVwiIG9yIHVuaXQoJG51bWJlcikgPT0gXCJlbVwiIG9yIHVuaXQoJG51bWJlcikgPT0gXCJyZW1cIlxufVxuXG4vLyBUcnVlIGlmIGEgbnVtYmVyIGhhcyBhbiBhYnNvbHV0ZSB1bml0LlxuQGZ1bmN0aW9uIGFic29sdXRlLXVuaXQoJG51bWJlcikge1xuICBAcmV0dXJuIG5vdChyZWxhdGl2ZS11bml0KCRudW1iZXIpIG9yIHVuaXRsZXNzKCRudW1iZXIpKTtcbn1cblxuQGlmICRyZWxhdGl2ZS1mb250LXNpemluZyBhbmQgbm90KHJlbGF0aXZlLXVuaXQoJGZvbnQtdW5pdCkpIHtcbiAgQHdhcm4gXCIkcmVsYXRpdmUtZm9udC1zaXppbmcgaXMgdHJ1ZSBidXQgJGZvbnQtdW5pdCBpcyBzZXQgdG8gI3skZm9udC11bml0fSB3aGljaCBpcyBub3QgYSByZWxhdGl2ZSB1bml0LlwiO1xufVxuXG4vLyBFc3RhYmxpc2hlcyBhIGZvbnQgYmFzZWxpbmUgZm9yIHRoZSBnaXZlbiBmb250LXNpemUuXG5AbWl4aW4gZXN0YWJsaXNoLWJhc2VsaW5lKCRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICAvLyBJRSA2IHJlZnVzZXMgdG8gcmVzaXplIGZvbnRzIHNldCBpbiBwaXhlbHMgYW5kIGl0IHdlaXJkbHkgcmVzaXplcyBmb250c1xuICAvLyB3aG9zZSByb290IGlzIHNldCBpbiBlbXMuIFNvIHdlIHNldCB0aGUgcm9vdCBmb250IHNpemUgaW4gcGVyY2VudGFnZXMgb2ZcbiAgLy8gdGhlIGRlZmF1bHQgZm9udCBzaXplLlxuICAqIGh0bWwge1xuICAgIGZvbnQtc2l6ZTogMTAwJSAqICgkZm9udC1zaXplIC8gJGJyb3dzZXItZGVmYXVsdC1mb250LXNpemUpO1xuICB9XG4gIGh0bWwge1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcbiAgICBAaW5jbHVkZSBhZGp1c3QtbGVhZGluZy10bygxLCBpZigkcmVsYXRpdmUtZm9udC1zaXppbmcsICRmb250LXNpemUsICRiYXNlLWZvbnQtc2l6ZSkpO1xuICB9XG59XG5cbi8vIFJlc2V0cyB0aGUgbGluZS1oZWlnaHQgdG8gMSB2ZXJ0aWNhbCByaHl0aG0gdW5pdC5cbi8vIERvZXMgbm90IHdvcmsgb24gZWxlbWVudHMgd2hvc2UgZm9udC1zaXplIGlzIGRpZmZlcmVudCBmcm9tICRiYXNlLWZvbnQtc2l6ZS5cbi8vXG4vLyBAZGVwcmVjYXRlZCBUaGlzIG1peGluIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCByZWxlYXNlLlxuLy8gUGxlYXNlIHVzZSB0aGUgYGFkanVzdC1sZWFkaW5nLXRvYCBtaXhpbiBpbnN0ZWFkLlxuQG1peGluIHJlc2V0LWJhc2VsaW5lIHtcbiAgQGluY2x1ZGUgYWRqdXN0LWxlYWRpbmctdG8oMSwgaWYoJHJlbGF0aXZlLWZvbnQtc2l6aW5nLCAkYmFzZS1mb250LXNpemUsICRiYXNlLWZvbnQtc2l6ZSkpO1xufVxuXG4vLyBTaG93IGEgYmFja2dyb3VuZCBpbWFnZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlYnVnIHlvdXIgYWxpZ25tZW50cy5cbi8vIEluY2x1ZGUgdGhlICRpbWcgYXJndW1lbnQgaWYgeW91IHdvdWxkIHJhdGhlciB1c2UgeW91ciBvd24gaW1hZ2UgdGhhbiB0aGVcbi8vIENvbXBhc3MgZGVmYXVsdCBncmFkaWVudCBpbWFnZS5cbkBtaXhpbiBkZWJ1Zy12ZXJ0aWNhbC1hbGlnbm1lbnQoJGltZzogZmFsc2UpIHtcbiAgQGlmICRpbWcge1xuICAgIGJhY2tncm91bmQ6IGltYWdlLXVybCgkaW1nKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgYmFzZWxpbmUtZ3JpZC1iYWNrZ3JvdW5kKCRiYXNlLXJoeXRobS11bml0KTtcbiAgfVxufVxuXG4vLyBBZGp1c3QgYSBibG9jayB0byBoYXZlIGEgZGlmZmVyZW50IGZvbnQgc2l6ZSBhbmQgbGluZSBoZWlnaHQgdG8gbWFpbnRhaW4gdGhlXG4vLyByaHl0aG0uICRsaW5lcyBzcGVjaWZpZXMgaG93IG1hbnkgbXVsdGlwbGVzIG9mIHRoZSBiYXNlbGluZSByaHl0aG0gZWFjaCBsaW5lXG4vLyBvZiB0aGlzIGZvbnQgc2hvdWxkIHVzZSB1cC4gSXQgZG9lcyBub3QgaGF2ZSB0byBiZSBhbiBpbnRlZ2VyLCBidXQgaXRcbi8vIGRlZmF1bHRzIHRvIHRoZSBzbWFsbGVzdCBpbnRlZ2VyIHRoYXQgaXMgbGFyZ2UgZW5vdWdoIHRvIGZpdCB0aGUgZm9udC5cbi8vIFVzZSAkZnJvbS1zaXplIHRvIGFkanVzdCBmcm9tIGEgZm9udC1zaXplIG90aGVyIHRoYW4gdGhlIGJhc2UgZm9udC1zaXplLlxuQG1peGluIGFkanVzdC1mb250LXNpemUtdG8oJHRvLXNpemUsICRsaW5lczogbGluZXMtZm9yLWZvbnQtc2l6ZSgkdG8tc2l6ZSksICRmcm9tLXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBAaWYgbm90KCRyZWxhdGl2ZS1mb250LXNpemluZykgYW5kICRmcm9tLXNpemUgIT0gJGJhc2UtZm9udC1zaXplIHtcbiAgICBAd2FybiBcIiRyZWxhdGl2ZS1mb250LXNpemluZyBpcyBmYWxzZSBidXQgYSByZWxhdGl2ZSBmb250IHNpemUgd2FzIHBhc3NlZCB0byBhZGp1c3QtZm9udC1zaXplLXRvXCI7XG4gIH1cbiAgZm9udC1zaXplOiAkZm9udC11bml0ICogJHRvLXNpemUgLyAkZnJvbS1zaXplO1xuICBAaW5jbHVkZSBhZGp1c3QtbGVhZGluZy10bygkbGluZXMsIGlmKCRyZWxhdGl2ZS1mb250LXNpemluZywgJHRvLXNpemUsICRiYXNlLWZvbnQtc2l6ZSkpO1xufVxuXG4vLyBBZGp1c3QgYSBibG9jayB0byBoYXZlIGRpZmZlcmVudCBsaW5lIGhlaWdodCB0byBtYWludGFpbiB0aGUgcmh5dGhtLlxuLy8gJGxpbmVzIHNwZWNpZmllcyBob3cgbWFueSBtdWx0aXBsZXMgb2YgdGhlIGJhc2VsaW5lIHJoeXRobSBlYWNoIGxpbmUgb2YgdGhpc1xuLy8gZm9udCBzaG91bGQgdXNlIHVwLiBJdCBkb2VzIG5vdCBoYXZlIHRvIGJlIGFuIGludGVnZXIsIGJ1dCBpdCBkZWZhdWx0cyB0byB0aGVcbi8vIHNtYWxsZXN0IGludGVnZXIgdGhhdCBpcyBsYXJnZSBlbm91Z2ggdG8gZml0IHRoZSBmb250LlxuQG1peGluIGFkanVzdC1sZWFkaW5nLXRvKCRsaW5lcywgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplKSB7XG4gIGxpbmUtaGVpZ2h0OiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTtcbn1cblxuLy8gQ2FsY3VsYXRlIHJoeXRobSB1bml0cy5cbkBmdW5jdGlvbiByaHl0aG0oXG4gICRsaW5lczogMSxcbiAgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLFxuICAkb2Zmc2V0OiAwXG4pIHtcbiAgQGlmIG5vdCgkcmVsYXRpdmUtZm9udC1zaXppbmcpIGFuZCAkZm9udC1zaXplICE9ICRiYXNlLWZvbnQtc2l6ZSB7XG4gICAgQHdhcm4gXCIkcmVsYXRpdmUtZm9udC1zaXppbmcgaXMgZmFsc2UgYnV0IGEgcmVsYXRpdmUgZm9udCBzaXplIHdhcyBwYXNzZWQgdG8gdGhlIHJoeXRobSBmdW5jdGlvblwiO1xuICB9XG4gICRyaHl0aG06ICRmb250LXVuaXQgKiAoJGxpbmVzICogJGJhc2UtbGluZS1oZWlnaHQgLSAkb2Zmc2V0KSAvICRmb250LXNpemU7XG4gIC8vIFJvdW5kIHRoZSBwaXhlbHMgZG93biB0byBuZWFyZXN0IGludGVnZXIuXG4gIEBpZiB1bml0KCRyaHl0aG0pID09IHB4IHtcbiAgICAkcmh5dGhtOiBmbG9vcigkcmh5dGhtKTtcbiAgfVxuICBAcmV0dXJuICRyaHl0aG07XG59XG5cbi8vIENhbGN1bGF0ZSB0aGUgbWluaW11bSBtdWx0aXBsZSBvZiByaHl0aG0gdW5pdHMgbmVlZGVkIHRvIGNvbnRhaW4gdGhlIGZvbnQtc2l6ZS5cbkBmdW5jdGlvbiBsaW5lcy1mb3ItZm9udC1zaXplKCRmb250LXNpemUpIHtcbiAgJGxpbmVzOiBpZigkcm91bmQtdG8tbmVhcmVzdC1oYWxmLWxpbmUsXG4gICAgICAgICAgICAgIGNlaWwoMiAqICRmb250LXNpemUgLyAkYmFzZS1saW5lLWhlaWdodCkgLyAyLFxuICAgICAgICAgICAgICBjZWlsKCRmb250LXNpemUgLyAkYmFzZS1saW5lLWhlaWdodCkpO1xuICBAaWYgJGxpbmVzICogJGJhc2UtbGluZS1oZWlnaHQgLSAkZm9udC1zaXplIDwgJG1pbi1saW5lLXBhZGRpbmcgKiAyIHtcbiAgICAkbGluZXM6ICRsaW5lcyArIGlmKCRyb3VuZC10by1uZWFyZXN0LWhhbGYtbGluZSwgMC41LCAxKTtcbiAgfVxuICBAcmV0dXJuICRsaW5lcztcbn1cblxuLy8gQXBwbHkgbGVhZGluZyB3aGl0ZXNwYWNlLiBUaGUgJHByb3BlcnR5IGNhbiBiZSBtYXJnaW4gb3IgcGFkZGluZy5cbkBtaXhpbiBsZWFkZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRwcm9wZXJ0eTogbWFyZ2luKSB7XG4gICN7JHByb3BlcnR5fS10b3A6IHJoeXRobSgkbGluZXMsICRmb250LXNpemUpO1xufVxuXG4vLyBBcHBseSBsZWFkaW5nIHdoaXRlc3BhY2UgYXMgcGFkZGluZy5cbkBtaXhpbiBwYWRkaW5nLWxlYWRlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBwYWRkaW5nLXRvcDogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7XG59XG5cbi8vIEFwcGx5IGxlYWRpbmcgd2hpdGVzcGFjZSBhcyBtYXJnaW4uXG5AbWl4aW4gbWFyZ2luLWxlYWRlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBtYXJnaW4tdG9wOiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTtcbn1cblxuLy8gQXBwbHkgdHJhaWxpbmcgd2hpdGVzcGFjZS4gVGhlICRwcm9wZXJ0eSBjYW4gYmUgbWFyZ2luIG9yIHBhZGRpbmcuXG5AbWl4aW4gdHJhaWxlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJHByb3BlcnR5OiBtYXJnaW4pIHtcbiAgI3skcHJvcGVydHl9LWJvdHRvbTogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7XG59XG5cbi8vIEFwcGx5IHRyYWlsaW5nIHdoaXRlc3BhY2UgYXMgcGFkZGluZy5cbkBtaXhpbiBwYWRkaW5nLXRyYWlsZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgcGFkZGluZy1ib3R0b206IHJoeXRobSgkbGluZXMsICRmb250LXNpemUpO1xufVxuXG4vLyBBcHBseSB0cmFpbGluZyB3aGl0ZXNwYWNlIGFzIG1hcmdpbi5cbkBtaXhpbiBtYXJnaW4tdHJhaWxlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBtYXJnaW4tYm90dG9tOiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTtcbn1cblxuLy8gU2hvcnRoYW5kIG1peGluIHRvIGFwcGx5IHdoaXRlc3BhY2UgZm9yIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgYW5kIHBhZGRpbmcuXG5AbWl4aW4gcmh5dGhtKCRsZWFkZXI6IDAsICRwYWRkaW5nLWxlYWRlcjogMCwgJHBhZGRpbmctdHJhaWxlcjogMCwgJHRyYWlsZXI6IDAsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBAaW5jbHVkZSBsZWFkZXIoJGxlYWRlciwgJGZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIHBhZGRpbmctbGVhZGVyKCRwYWRkaW5nLWxlYWRlciwgJGZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIHBhZGRpbmctdHJhaWxlcigkcGFkZGluZy10cmFpbGVyLCAkZm9udC1zaXplKTtcbiAgQGluY2x1ZGUgdHJhaWxlcigkdHJhaWxlciwgJGZvbnQtc2l6ZSk7XG59XG5cbi8vIEFwcGx5IGEgYm9yZGVyIGFuZCB3aGl0ZXNwYWNlIHRvIGFueSBzaWRlIHdpdGhvdXQgZGVzdHJveWluZyB0aGUgdmVydGljYWxcbi8vIHJoeXRobS4gVGhlIHdoaXRlc3BhY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhlIHdpZHRoIG9mIHRoZSBib3JkZXIuXG5AbWl4aW4gYXBwbHktc2lkZS1yaHl0aG0tYm9yZGVyKCRzaWRlLCAkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGlmIG5vdCgkcmVsYXRpdmUtZm9udC1zaXppbmcpIGFuZCAkZm9udC1zaXplICE9ICRiYXNlLWZvbnQtc2l6ZSB7XG4gICAgQHdhcm4gXCIkcmVsYXRpdmUtZm9udC1zaXppbmcgaXMgZmFsc2UgYnV0IGEgcmVsYXRpdmUgZm9udCBzaXplIHdhcyBwYXNzZWQgdG8gYXBwbHktc2lkZS1yaHl0aG0tYm9yZGVyXCI7XG4gIH1cbiAgYm9yZGVyLSN7JHNpZGV9OiB7XG4gICAgc3R5bGU6ICRib3JkZXItc3R5bGU7XG4gICAgd2lkdGg6ICRmb250LXVuaXQgKiAkd2lkdGggLyAkZm9udC1zaXplO1xuICB9O1xuICBwYWRkaW5nLSN7JHNpZGV9OiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplLCAkb2Zmc2V0OiAkd2lkdGgpO1xufVxuXG4vLyBBcHBseSBib3JkZXJzIGFuZCB3aGl0ZXNwYWNlIGVxdWFsbHkgdG8gYWxsIHNpZGVzLlxuQG1peGluIHJoeXRobS1ib3JkZXJzKCR3aWR0aDogMXB4LCAkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZTogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZSkge1xuICBAaWYgbm90KCRyZWxhdGl2ZS1mb250LXNpemluZykgYW5kICRmb250LXNpemUgIT0gJGJhc2UtZm9udC1zaXplIHtcbiAgICBAd2FybiBcIiRyZWxhdGl2ZS1mb250LXNpemluZyBpcyBmYWxzZSBidXQgYSByZWxhdGl2ZSBmb250IHNpemUgd2FzIHBhc3NlZCB0byByaHl0aG0tYm9yZGVyc1wiO1xuICB9XG4gIGJvcmRlcjoge1xuICAgIHN0eWxlOiAkYm9yZGVyLXN0eWxlO1xuICAgIHdpZHRoOiAkZm9udC11bml0ICogJHdpZHRoIC8gJGZvbnQtc2l6ZTtcbiAgfTtcbiAgcGFkZGluZzogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSwgJG9mZnNldDogJHdpZHRoKTtcbn1cblxuLy8gQXBwbHkgYSBsZWFkaW5nIGJvcmRlci5cbkBtaXhpbiBsZWFkaW5nLWJvcmRlcigkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGluY2x1ZGUgYXBwbHktc2lkZS1yaHl0aG0tYm9yZGVyKHRvcCwgJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpO1xufVxuXG4vLyBBcHBseSBhIHRyYWlsaW5nIGJvcmRlci5cbkBtaXhpbiB0cmFpbGluZy1ib3JkZXIoJHdpZHRoOiAxcHgsICRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlOiAkZGVmYXVsdC1yaHl0aG0tYm9yZGVyLXN0eWxlKSB7XG4gIEBpbmNsdWRlIGFwcGx5LXNpZGUtcmh5dGhtLWJvcmRlcihib3R0b20sICR3aWR0aCwgJGxpbmVzLCAkZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlKTtcbn1cblxuLy8gQXBwbHkgYm90aCBsZWFkaW5nIGFuZCB0cmFpbGluZyBib3JkZXJzLlxuQG1peGluIGhvcml6b250YWwtYm9yZGVycygkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGluY2x1ZGUgbGVhZGluZy1ib3JkZXIoJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpO1xuICBAaW5jbHVkZSB0cmFpbGluZy1ib3JkZXIoJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpO1xufVxuXG4vLyBBbGlhcyBmb3IgYGhvcml6b250YWwtYm9yZGVyc2AgbWl4aW4uXG5AbWl4aW4gaC1ib3JkZXJzKCR3aWR0aDogMXB4LCAkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZTogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZSkge1xuICBAaW5jbHVkZSBob3Jpem9udGFsLWJvcmRlcnMoJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpO1xufVxuIiwiLyoqXG4gKiAkQ09NTUVOVFxuICovXG4uY29tbWVudF9faW5mbyB7XG4gIG1hcmdpbi10b3A6ICR2ZXJ0LXNwYWNpbmctdW5pdDtcbiAgbWFyZ2luLWJvdHRvbTogJHZlcnQtc3BhY2luZy11bml0O1xuXG4gIC51c2VybmFtZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogJHZlcnQtc3BhY2luZy11bml0IC8gMjtcblxuICAgIGNvbG9yOiAkY29sb3ItcGljdG9uLWJsdWU7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBAaW5jbHVkZSBub3VuZGVybGluZSgpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG4gIH1cbn1cblxuLmNvbW1lbnRfX2NvbnRlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXG4gIEBleHRlbmQgJWlzbGFuZDtcbn1cblxuLmNvbW1lbnRfX3N1Ym1pdHRlZCB7XG4gIGRpc3BsYXk6IGlubGluZTtcbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtLCB0cnVlKSB7XG4gIC5jb21tZW50X19pbmZvIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICB3aWR0aDogMjUlO1xuXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgLnVzZXItcGljdHVyZSB7XG4gICAgICB3aWR0aDogNzAlO1xuICAgICAgbWFyZ2luOiAwIGF1dG8gKCR2ZXJ0LXNwYWNpbmctdW5pdCAvIDIpIGF1dG87XG4gICAgfVxuICAgIC51c2VybmFtZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cblxuICAuY29tbWVudF9fY29udGVudCB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIHdpZHRoOiA3MCU7XG4gICAgbWFyZ2luLWxlZnQ6IDUlO1xuXG4gICAgQGluY2x1ZGUgYXJyb3cobGVmdCwgMjBweCwgI0ZGRik7XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgIHRvcDogMjBweDtcbiAgICB9XG4gIH1cblxuICAuY29tbWVudF9fc3VibWl0dGVkIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tYm90dG9tOiAkdmVydC1zcGFjaW5nLXVuaXQgLyAyO1xuICB9XG59XG4iLCJAaW1wb3J0IFwiYnJlYWtwb2ludFwiO1xuQGltcG9ydCBcInNpbmd1bGFyaXR5Z3NcIjtcblxuLy8gU2V0IGNvbnNpc3RlbnQgdmVydGljYWwgYW5kIGhvcml6b250YWwgc3BhY2luZyB1bml0cy5cbiR2ZXJ0LXNwYWNpbmctdW5pdDogMThweDtcbiRob3J6LXNwYWNpbmctdW5pdDogMWVtO1xuXG4kc21hbGxlc3Q6IDM4MHB4O1xuJHNtYWxsOiA1NTBweDtcbiRtZWRpdW06IDY2MHB4O1xuJGF2ZXJhZ2U6IDk2MHB4O1xuJGxhcmdlOiAxMTIwcHg7XG4kbGFyZ2VyOiAxMjYwcHg7XG5cblxuJGdyaWRzOiAxO1xuQGluY2x1ZGUgYWRkLWdyaWQoMTAgYXQgJG1lZGl1bSk7XG5AaW5jbHVkZSBhZGQtZ3V0dGVyKDEvMik7XG4iLCIvKipcbiAqICRVTkRFUkxJTkVTXG4gKi9cblxuLy8gQnkgZGVmYXVsdCB0aGUgdW5kZXJsaW5lZCBsaW5rcyB3aWxsIGJlIHRoZSBib2R5IGNvcHkgY29sb3VyLiBZb3UgbWF5XG4vLyB3YW50IHRvIGNoYW5nZSB0aGlzIGluIHlvdXIgY29sb3JzLnNjc3MgdmFyaWFibGVzIHBhcnRpYWwuXG4kdW5kZXJsaW5lZC1saW5rcy1jb2xvcjogJGJvZHktY29weS1jb2xvciAhZGVmYXVsdDtcbiR1bmRlcmxpbmVkLWxpbmtzLWhvdmVyLWNvbG9yOiBkYXJrZW4oJGJvZHktY29weS1jb2xvciwgMTUlKSAhZGVmYXVsdDtcblxuLy8gQSBtaXhpbiBmb3IgdW5kZXJsaW5pbmcgbGlua3MuXG5AbWl4aW4gdW5kZXJsaW5lKCkge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCB0cmFuc3BhcmVudCA3NSUsICMzMzMzMzIgNzUlKTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGJhY2tncm91bmQtc2l6ZTogMnB4IDJweDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAxLjFlbTtcbiAgY29sb3I6ICR1bmRlcmxpbmVkLWxpbmtzLWNvbG9yO1xuICAmOnZpc2l0ZWQge1xuICAgIGNvbG9yOiAkdW5kZXJsaW5lZC1saW5rcy1jb2xvcjtcbiAgfVxuICAmOmhvdmVyIHtcbiAgICBjb2xvcjogJHVuZGVybGluZWQtbGlua3MtaG92ZXItY29sb3I7XG4gIH1cbn1cblxuLy8gUmVtb3ZlcyB0aGUgdW5kZXJsaW5lIGNvZGUuXG5AbWl4aW4gbm91bmRlcmxpbmUoKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDAgMDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4vLyBFeGNsdWRlIHRoZSBjb2ZmZWUgbW9kdWxlLlxuI2NvZmZlZS1mb3JtIGEge1xuICBAaW5jbHVkZSBub3VuZGVybGluZSgpO1xufVxuIiwic2VsZWN0LFxuaW5wdXQsXG50ZXh0YXJlYSB7XG4gICY6Zm9jdXMge1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3coMCAwIDRweCAxcHggcmdiYShsaWdodGVuKCRhY2NlbnQtMSwgMTUlKSwgMC4zKSk7XG4gICAgb3V0bGluZTogMXB4IHNvbGlkIGxpZ2h0ZW4oJGFjY2VudC0xLCAxNSUpO1xuICAgIC8vIEZpcmVmb3ggcGxhY2VzIHRoZSBvdXRsaW5lIG91dHNpZGUgdGhlIGJveC1zaGFkb3cgc28gd2UgbW92ZSB0aGUgb2Zmc2V0XG4gICAgLy8gdG8gYmFjayBpbnNpZGUgdXNpbmcgYSBtZWRpYSBxdWVyeSBoYWNrIHRvIHRhcmdldCBGRiAzLjYrLlxuICAgIEBtZWRpYSBzY3JlZW4gYW5kICgtbW96LWltYWdlcy1pbi1tZW51czogMCkge1xuICAgICAgb3V0bGluZS1vZmZzZXQ6IC04cHg7XG4gICAgfVxuICB9XG59XG5cbmZpZWxkc2V0IHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIG1hcmdpbi1yaWdodDogMDtcbiAgcGFkZGluZzogKCR2ZXJ0LXNwYWNpbmctdW5pdCAvIDIpICRob3J6LXNwYWNpbmctdW5pdCAkdmVydC1zcGFjaW5nLXVuaXQgJGhvcnotc3BhY2luZy11bml0O1xuICBib3JkZXItY29sb3I6ICRib3JkZXItY29sb3I7XG59XG5cbmxlZ2VuZCB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgxOHB4KTtcbiAgcGFkZGluZzogMCAwLjhlbTtcbiAgY29sb3I6ICRjb2xvci1uZXZhZGE7XG59XG5cbnNlbGVjdDpmb2N1cywgaW5wdXQ6Zm9jdXMsIHRleHRhcmVhOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAwO1xuICB9IiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCIvLyBAZG9jIG9mZlxuLy8gVGhlc2UgZGVmYXVsdHMgbWFrZSB0aGUgYXJndW1lbnRzIG9wdGlvbmFsIGZvciB0aGlzIG1peGluXG4vLyBJZiB5b3UgbGlrZSwgc2V0IGRpZmZlcmVudCBkZWZhdWx0cyBiZWZvcmUgaW1wb3J0aW5nLlxuLy8gQGRvYyBvblxuXG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cblxuLy8gVGhlIGRlZmF1bHQgY29sb3IgZm9yIGJveCBzaGFkb3dzXG4kZGVmYXVsdC1ib3gtc2hhZG93LWNvbG9yOiAjMzMzMzMzICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBob3Jpem9udGFsIG9mZnNldC4gUG9zaXRpdmUgaXMgdG8gdGhlIHJpZ2h0LlxuJGRlZmF1bHQtYm94LXNoYWRvdy1oLW9mZnNldDogMHB4ICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCB2ZXJ0aWNhbCBvZmZzZXQuIFBvc2l0aXZlIGlzIGRvd24uXG4kZGVmYXVsdC1ib3gtc2hhZG93LXYtb2Zmc2V0OiAwcHggIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IGJsdXIgbGVuZ3RoLlxuJGRlZmF1bHQtYm94LXNoYWRvdy1ibHVyOiA1cHggIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHNwcmVhZCBsZW5ndGguXG4kZGVmYXVsdC1ib3gtc2hhZG93LXNwcmVhZCA6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBzaGFkb3cgaW5zZXQ6IGluc2V0IG9yIGZhbHNlIChmb3Igc3RhbmRhcmQgc2hhZG93KS5cbiRkZWZhdWx0LWJveC1zaGFkb3ctaW5zZXQgOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gUHJvdmlkZXMgY3Jvc3MtYnJvd3NlciBmb3IgV2Via2l0LCBHZWNrbywgYW5kIENTUzMgYm94IHNoYWRvd3Mgd2hlbiBvbmUgb3IgbW9yZSBib3hcbi8vIHNoYWRvd3MgYXJlIG5lZWRlZC5cbi8vIEVhY2ggc2hhZG93IGFyZ3VtZW50IHNob3VsZCBhZGhlcmUgdG8gdGhlIHN0YW5kYXJkIGNzczMgc3ludGF4IGZvciB0aGVcbi8vIGJveC1zaGFkb3cgcHJvcGVydHkuXG5AbWl4aW4gYm94LXNoYWRvdyhcbiAgJHNoYWRvdy0xIDogZGVmYXVsdCxcbiAgJHNoYWRvdy0yIDogZmFsc2UsXG4gICRzaGFkb3ctMyA6IGZhbHNlLFxuICAkc2hhZG93LTQgOiBmYWxzZSxcbiAgJHNoYWRvdy01IDogZmFsc2UsXG4gICRzaGFkb3ctNiA6IGZhbHNlLFxuICAkc2hhZG93LTcgOiBmYWxzZSxcbiAgJHNoYWRvdy04IDogZmFsc2UsXG4gICRzaGFkb3ctOSA6IGZhbHNlLFxuICAkc2hhZG93LTEwOiBmYWxzZVxuKSB7XG4gIEBpZiAkc2hhZG93LTEgPT0gZGVmYXVsdCB7XG4gICAgJHNoYWRvdy0xIDogLWNvbXBhc3Mtc3BhY2UtbGlzdChjb21wYWN0KGlmKCRkZWZhdWx0LWJveC1zaGFkb3ctaW5zZXQsIGluc2V0LCBmYWxzZSksICRkZWZhdWx0LWJveC1zaGFkb3ctaC1vZmZzZXQsICRkZWZhdWx0LWJveC1zaGFkb3ctdi1vZmZzZXQsICRkZWZhdWx0LWJveC1zaGFkb3ctYmx1ciwgJGRlZmF1bHQtYm94LXNoYWRvdy1zcHJlYWQsICRkZWZhdWx0LWJveC1zaGFkb3ctY29sb3IpKTtcbiAgfVxuICAkc2hhZG93IDogY29tcGFjdCgkc2hhZG93LTEsICRzaGFkb3ctMiwgJHNoYWRvdy0zLCAkc2hhZG93LTQsICRzaGFkb3ctNSwgJHNoYWRvdy02LCAkc2hhZG93LTcsICRzaGFkb3ctOCwgJHNoYWRvdy05LCAkc2hhZG93LTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1zaGFkb3csICRzaGFkb3csXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBQcm92aWRlcyBhIHNpbmdsZSBjcm9zcy1icm93c2VyIENTUyBib3ggc2hhZG93IGZvciBXZWJraXQsIEdlY2tvLCBhbmQgQ1NTMy5cbi8vIEluY2x1ZGVzIGRlZmF1bHQgYXJndW1lbnRzIGZvciBjb2xvciwgaG9yaXpvbnRhbCBvZmZzZXQsIHZlcnRpY2FsIG9mZnNldCwgYmx1ciBsZW5ndGgsIHNwcmVhZCBsZW5ndGgsIGFuZCBpbnNldC5cbkBtaXhpbiBzaW5nbGUtYm94LXNoYWRvdyhcbiAgJGNvbG9yICA6ICRkZWZhdWx0LWJveC1zaGFkb3ctY29sb3IsXG4gICRob2ZmICAgOiAkZGVmYXVsdC1ib3gtc2hhZG93LWgtb2Zmc2V0LFxuICAkdm9mZiAgIDogJGRlZmF1bHQtYm94LXNoYWRvdy12LW9mZnNldCxcbiAgJGJsdXIgICA6ICRkZWZhdWx0LWJveC1zaGFkb3ctYmx1cixcbiAgJHNwcmVhZCA6ICRkZWZhdWx0LWJveC1zaGFkb3ctc3ByZWFkLFxuICAkaW5zZXQgIDogJGRlZmF1bHQtYm94LXNoYWRvdy1pbnNldFxuKSB7XG4gIEBpZiBub3QgKCRpbnNldCA9PSB0cnVlIG9yICRpbnNldCA9PSBmYWxzZSBvciAkaW5zZXQgPT0gaW5zZXQpIHtcbiAgICBAd2FybiBcIiRpbnNldCBleHBlY3RlZCB0byBiZSB0cnVlIG9yIHRoZSBpbnNldCBrZXl3b3JkLiBHb3QgI3skaW5zZXR9IGluc3RlYWQuIFVzaW5nOiBpbnNldFwiO1xuICB9XG5cbiAgQGlmICRjb2xvciA9PSBub25lIHtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KG5vbmUpO1xuICB9IEBlbHNlIHtcbiAgICAkZnVsbCAgIDogJGhvZmYgJHZvZmY7XG4gICAgQGlmICRibHVyICAgeyAkZnVsbDogJGZ1bGwgJGJsdXI7ICAgfVxuICAgIEBpZiAkc3ByZWFkIHsgJGZ1bGw6ICRmdWxsICRzcHJlYWQ7IH1cbiAgICBAaWYgJGNvbG9yICB7ICRmdWxsOiAkZnVsbCAkY29sb3I7ICB9XG4gICAgQGlmICRpbnNldCAgeyAkZnVsbDogaW5zZXQgJGZ1bGw7ICAgfVxuICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJGZ1bGwpO1xuICB9XG59XG4iLCIvLyBVc2UgUkVNcyB3aXRoIGEgcGl4ZWwgZmFsbGJhY2sgZm9yIGZvbnQgc2l6aW5nLlxuQG1peGluIGZvbnQtc2l6ZSgkZm9udC1zaXplKXtcbiAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICBmb250LXNpemU6ICgkZm9udC1zaXplIC8gJGJhc2UtZm9udC1zaXplKSoxcmVtO1xufVxuIiwiaW1nLCBtZWRpYSB7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAubC1jb250ZW50ICYge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvci1ibGFjaztcbiAgICAubHQtaWU5ICYge1xuICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgIH1cbiAgfVxuICAubC1jb250ZW50IC5maWVsZC1uYW1lLWZpZWxkLWRlc2NyaXB0aW9uICYsXG4gIC5sLWNvbnRlbnQgLmZpZWxkLW5hbWUtYm9keSAmIHtcbiAgXHRib3JkZXI6IG5vbmU7XG4gIH1cbn1cbiIsIi8qKlxuICogJFRBQkxFU1xuICovXG50YWJsZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiAkdmVydC1zcGFjaW5nLXVuaXQ7XG59XG5cbnRoIHtcbiAgcGFkZGluZzogMC41ZW0gMWVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYm94LWJhY2tncm91bmQtY29sb3I7XG4gIGNvbG9yOiAkY29sb3ItbWluZS1zaGFmdDtcblxuICBhLFxuICBhLmFjdGl2ZSB7XG4gICAgY29sb3I6ICRjb2xvci1taW5lLXNoYWZ0O1xuXG4gICAgaW1nIHtcbiAgICAgIG1hcmdpbjogMnB4IDNweDtcbiAgICB9XG4gIH1cbn1cbnRkIHtcbiAgcGFkZGluZzogMC41ZW0gMWVtO1xufVxuXG50ci5vZGQge1xuICBiYWNrZ3JvdW5kOiBsaWdodGVuKCRjb2xvci1hbHRvLCA0JSk7XG4gIC5wYWdlLW5vZGUtZWRpdCAmIHtcbiAgICBiYWNrZ3JvdW5kOiBsaWdodGVuKCRjb2xvci1hbHRvLCAxMCUpO1xuICB9XG59XG50ci5ldmVuIHtcbiAgYmFja2dyb3VuZDogbGlnaHRlbigkY29sb3ItYWx0bywgOCUpO1xuICAucGFnZS1ub2RlLWVkaXQgJiB7XG4gICAgYmFja2dyb3VuZDogbGlnaHRlbigkY29sb3ItYWx0bywgMTAlKTtcbiAgfVxufVxuXG5jYXB0aW9uIHtcbiAgQGV4dGVuZCAuZGVsdGE7XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbXBhc3MgRXh0ZW5zaW9uIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRpbnQgYW5kIFNoYWRlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgndGludCBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gbWl4KHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEx1bWFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGx1bWEoJGNvbG9yKSB7XG4gIEByZXR1cm4gKHJlZCgkY29sb3IpICogLjI5OSkgKyAoZ3JlZW4oJGNvbG9yKSAqIC41ODcpICsgKGJsdWUoJGNvbG9yKSAqIC4xMTQpO1xufVxuXG5AZnVuY3Rpb24gbHVtYS1ndGUoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAaWYgbHVtYSgkY29sb3IxKSA+PSBsdW1hKCRjb2xvcjIpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGx1bWEtbHRlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPD0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWRpZmYoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAcmV0dXJuIGx1bWEoJGNvbG9yMSkgLSBsdW1hKCRjb2xvcjIpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFN0YWNrc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc3RhY2soJG1haW4sICRzZWNvbmRhcnksICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgnY29sb3Igc3RhY2sgYW1vdW50cycpO1xuICB9XG4gIEBlbHNlIGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMSB7XG4gICAgJGFtb3VudHM6IG50aCgkYW1vdW50cywgMSk7XG4gIH1cblxuICAkc3RhY2s6ICRtYWluO1xuXG4gIEBlYWNoICRhbW91bnQgaW4gJGFtb3VudHMge1xuICAgICRzdGFjazogam9pbigkc3RhY2ssIG1peCgkc2Vjb25kYXJ5LCBudGgoJHN0YWNrLCAxKSwgJGFtb3VudCkpO1xuICB9XG5cbiAgQHJldHVybiAkc3RhY2s7XG59XG5cbi8vIFRpbnQgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPiAwIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiBzaGFkZS1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkYW1vdW50cyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gVGludC9TaGFkZSBTdGFja1xuQGZ1bmN0aW9uIHRpbnQtc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICAkY29sb3JzOiAoKTtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMCB7XG4gICAgJGFtb3VudHM6IHRvb2xraXQtZ2V0KCd0aW50IHNoYWRlIGFtb3VudHMnKTtcbiAgfVxuICAkbGVuZ3RoOiBsZW5ndGgoJGFtb3VudHMpO1xuXG4gIC8vIFNoYWRlc1xuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCBzaGFkZSgkY29sb3IsIG50aCgkYW1vdW50cywgJGkpKSk7XG4gIH1cblxuICAvLyBCYXNlXG4gICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCAkY29sb3IpO1xuXG4gIC8vIFRpbnRzXG4gIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJGxlbmd0aCAtIDEge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCB0aW50KCRjb2xvciwgbnRoKCRhbW91bnRzLCAkbGVuZ3RoIC0gJGkpKSk7XG4gIH1cblxuICBAcmV0dXJuICRjb2xvcnM7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3IgU2NhbGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBjb2xvci1zY2FsZSgkbWFpbiwgJHNlY29uZGFyeSwgJHN0ZXBzOiBudWxsKSB7XG4gICRzdGVwczogaWYoJHN0ZXBzICE9IG51bGwsICRzdGVwcywgdG9vbGtpdC1nZXQoJ2NvbG9yIHNjYWxlIHN0ZXBzJykpO1xuXG4gICRsaXN0OiAkbWFpbjtcblxuICAkcmVkMTogcmVkKCRtYWluKTtcbiAgJHJlZDI6IHJlZCgkc2Vjb25kYXJ5KTtcbiAgJHJlZC1kaWZmOiAoKCRyZWQxIC0gJHJlZDIpIC8gKCgkc3RlcHMgLSAxKSkpO1xuXG4gICRodWUxOiBodWUoJG1haW4pO1xuICAkaHVlMjogaHVlKCRzZWNvbmRhcnkpO1xuICBAaWYgKCRodWUyICsgMzU5IC0gJGh1ZTEpIDwgYWJzKCRodWUxIC0gJGh1ZTIpIHtcbiAgICAkaHVlMjogJGh1ZTIgKyAzNTk7XG4gIH1cbiAgJGh1ZS1kaWZmOiAoJGh1ZTIgLSAkaHVlMSkgLyAoJHN0ZXBzIC0gMSk7XG5cbiAgJHNhdDE6IHNhdHVyYXRpb24oJG1haW4pO1xuICAkc2F0Mjogc2F0dXJhdGlvbigkc2Vjb25kYXJ5KTtcbiAgJHNhdC1kaWZmOiAwO1xuICBAaWYgJHNhdDEgPiAkc2F0MiB7XG4gICAgJHNhdC1kaWZmOiAoJHNhdDIgLSAkc2F0MSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRzYXQtZGlmZjogKCRzYXQxIC0gJHNhdDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGx0ZTE6IGxpZ2h0bmVzcygkbWFpbik7XG4gICRsdGUyOiBsaWdodG5lc3MoJHNlY29uZGFyeSk7XG4gICRsdGUtZGlmZjogMDtcbiAgQGlmICRsdGUxID4gJGx0ZTIge1xuICAgICRsdGUtZGlmZjogKCRsdGUyIC0gJGx0ZTEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMSAtICRsdGUyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRhbHAxOiBhbHBoYSgkbWFpbik7XG4gICRhbHAyOiBhbHBoYSgkc2Vjb25kYXJ5KTtcbiAgJGFscC1kaWZmOiAwO1xuICBAaWYgJGFscDEgPiAkYWxwMiB7XG4gICAgJGFscC1kaWZmOiAoJGFscDIgLSAkYWxwMSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRhbHAtZGlmZjogKCRhbHAxIC0gJGFscDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGh1ZS1ob2xkOiAkaHVlMTtcbiAgJHNhdC1ob2xkOiAkc2F0MTtcbiAgJGx0ZS1ob2xkOiAkbHRlMTtcbiAgJGFscC1ob2xkOiAkYWxwMTtcbiAgJGNvbG9yLWhvbGQ6IDA7XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkc3RlcHMge1xuICAgICRodWUtaG9sZDogJGh1ZS1ob2xkICsgJGh1ZS1kaWZmO1xuICAgICRzYXQtaG9sZDogJHNhdC1ob2xkICsgJHNhdC1kaWZmO1xuICAgICRsdGUtaG9sZDogJGx0ZS1ob2xkICsgJGx0ZS1kaWZmO1xuICAgICRhbHAtaG9sZDogJGFscC1ob2xkICsgJGFscC1kaWZmO1xuXG4gICAgJGNvbG9yLWhvbGQ6IGhzbGEoJGh1ZS1ob2xkLCAkc2F0LWhvbGQsICRsdGUtaG9sZCwgJGFscC1ob2xkKTtcbiAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkY29sb3ItaG9sZCk7XG4gIH1cblxuICBAcmV0dXJuICRsaXN0O1xufVxuXG4iLCJAaW1wb3J0IFwiYnJlYWtwb2ludFwiO1xuXG4vKipcbiAqICRGT05ULUZBQ0VcbiAqL1xuQGluY2x1ZGUgZXN0YWJsaXNoLWJhc2VsaW5lKCRiYXNlLWZvbnQtc2l6ZSk7XG5cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnSEsgR3JvdGVzayc7XG4gIHNyYzogdXJsKCcuLi9mb250cy9oa2dyb3Rlc2stcmVndWxhci13ZWJmb250LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLFxuICAgICAgICAgdXJsKCcuLi9mb250cy9oa2dyb3Rlc2stcmVndWxhci13ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnSEsgR3JvdGVzayc7XG4gIHNyYzogdXJsKCcuLi9mb250cy9oa2dyb3Rlc2staXRhbGljLXdlYmZvbnQud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksXG4gICAgICAgICB1cmwoJy4uL2ZvbnRzL2hrZ3JvdGVzay1pdGFsaWMtd2ViZm9udC53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiB9XG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdISyBHcm90ZXNrJztcbiAgc3JjOiB1cmwoJy4uL2ZvbnRzL2hrZ3JvdGVzay1zZW1pYm9sZC13ZWJmb250LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLFxuICAgICAgICAgdXJsKCcuLi9mb250cy9oa2dyb3Rlc2stc2VtaWJvbGQtd2ViZm9udC53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ0hLIEdyb3Rlc2snO1xuICBzcmM6IHVybCgnLi4vZm9udHMvaGtncm90ZXNrLWJvbGQtd2ViZm9udC53b2ZmMicpIGZvcm1hdCgnd29mZjInKSxcbiAgICAgICAgIHVybCgnLi4vZm9udHMvaGtncm90ZXNrLWJvbGQtd2ViZm9udC53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ0hLIEdyb3Rlc2snO1xuIHNyYzogdXJsKCcuLi9mb250cy9oa2dyb3Rlc2stYm9sZGl0YWxpYy13ZWJmb250LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLFxuICAgICAgICAgdXJsKCcuLi9mb250cy9oa2dyb3Rlc2stYm9sZGl0YWxpYy13ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLyoqXG4gKiAkQkFTRS1UWVBPR1JBUEhZXG4gKi9cbmJvZHkge1xuICBmb250LWZhbWlseTogJ0hLIEdyb3Rlc2snO1xuICBjb2xvcjogJGJvZHktY29weS1jb2xvcjtcbiAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcztcbn1cblxuXG5cbi8qKlxuICogJExJTktTXG4gKi9cbmEge1xuICBAaW5jbHVkZSBsaW5rLWNvbG9ycygkbGluay1jb2xvciwgIzAwMCwgbGlnaHRlbigkbGluay1jb2xvciwgMjAlKSwgJGxpbmstY29sb3IsICMwMDApO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbnAgYSxcbnNwYW4gYSB7XG4gIC8vIEFkZCB0aGUgc3ZlbHQgdW5kZXJsaW5lcy4gTm90ZSB0aGF0IGJlY2F1c2UgdGhpcyBlZmZlY3QgdXNlcyBhIGJhY2tncm91bmRcbiAgLy8gZ3JhZGllbnQgYW5kIHdpbGwgYXBwbHkgdG8gbWFueSBpbmxpbmUgbGlua3MgYWNyb3NzIHRoZSBzaXRlIHlvdSBtaWdodCB3YW50XG4gIC8vIHRvIHJlbW92ZSB0aGlzLiBUaGVyZSBpcyBhbHNvIGEgY29ycmVzcG9uZGluZyBub3VuZGVybGluZSgpIG1peGluIHRvIHJlbW92ZVxuICAvLyB0aGUgdW5kZXJsaW5lIGlmIG5lZWRlZCBmcm9tIGVsZW1lbnRzIHRoYXQgc2hvdWxkbid0IGhhdmUgaXQuXG4gIC8vIEBpbmNsdWRlIHVuZGVybGluZSgpO1xuICBAaW5jbHVkZSBsaW5rLWNvbG9ycygkbGluay1jb2xvciwgIzAwMCwgbGlnaHRlbigkbGluay1jb2xvciwgMjAlKSwgJGxpbmstY29sb3IsICMwMDApO1xufVxuXG4vKipcbiAqICRIRUFESU5HU1xuICovXG5oMSwgLmFscGhhLFxuaDIsIC5iZXRhLFxuaDMsIC5nYW1tYSxcbmg0LCAuZGVsdGEsXG5oNSwgLmVwc2lsb24sXG5oNiwgLnpldGEge1xuICBAaW5jbHVkZSByaHl0aG0oMCwgMCwgMCwgMC4yKTtcbiAgY29sb3I6IGRhcmtlbigkY29sb3ItbmV2YWRhLCAxNSUpO1xuICBmb250LWZhbWlseTogJGhlYWRpbmctZm9udDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcblxuICBhLFxuICBhOnZpc2l0ZWQge1xuICAgIGNvbG9yOiAkbGluay1jb2xvcjtcbiAgICBAaW5jbHVkZSBub3VuZGVybGluZSgpO1xuICB9XG4gIGE6aG92ZXIge1xuICB9XG59XG5cbmgxLCAuYWxwaGEge1xuICAkaDEtZm9udC1zaXplOiAzMHB4O1xuICBAaW5jbHVkZSBmb250LXNpemUoJGgxLWZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIGFkanVzdC1sZWFkaW5nLXRvKGxpbmVzLWZvci1mb250LXNpemUoJGgxLWZvbnQtc2l6ZSksICRoMS1mb250LXNpemUpO1xuICBAaW5jbHVkZSBsZWFkZXIoMC43NSwgJGgxLWZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIHRyYWlsZXIoMC43NSwgJGgxLWZvbnQtc2l6ZSk7XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bSwgdHJ1ZSkge1xuICBoMSwgLmFscGhhIHtcbiAgICAkaDEtZm9udC1zaXplOiAzMHB4O1xuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaDEtZm9udC1zaXplKTtcbiAgICBAaW5jbHVkZSBhZGp1c3QtbGVhZGluZy10byhsaW5lcy1mb3ItZm9udC1zaXplKCRoMS1mb250LXNpemUpLCAkaDEtZm9udC1zaXplKTtcbiAgICBAaW5jbHVkZSBsZWFkZXIoMC43NSwgJGgxLWZvbnQtc2l6ZSk7XG4gICAgQGluY2x1ZGUgdHJhaWxlcigwLjUsICRoMS1mb250LXNpemUpO1xuICB9XG59XG5cbmgyLCAuYmV0YSB7XG4gICRoMi1mb250LXNpemU6IDM0cHg7XG4gIGNvbG9yOiAkY29sb3ItbmV2YWRhO1xuICBAaW5jbHVkZSBmb250LXNpemUoJGgyLWZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIGFkanVzdC1sZWFkaW5nLXRvKGxpbmVzLWZvci1mb250LXNpemUoJGgyLWZvbnQtc2l6ZSksICRoMi1mb250LXNpemUpO1xuICBAaW5jbHVkZSBsZWFkZXIoMS41LCAkaDItZm9udC1zaXplKTtcbiAgQGluY2x1ZGUgdHJhaWxlcigwLjUsICRoMi1mb250LXNpemUpO1xufVxuaDMsIC5nYW1tYSB7XG4gICRoMy1mb250LXNpemU6IDIxcHg7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaDMtZm9udC1zaXplKTtcbiAgQGluY2x1ZGUgYWRqdXN0LWxlYWRpbmctdG8obGluZXMtZm9yLWZvbnQtc2l6ZSgkaDMtZm9udC1zaXplKSwgJGgzLWZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIGxlYWRlcigxLCAkaDMtZm9udC1zaXplKTtcbiAgQGluY2x1ZGUgdHJhaWxlcigwLjUsICRoMy1mb250LXNpemUpO1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuaDQsIC5kZWx0YSB7XG4gICRoNC1mb250LXNpemU6IDE4cHg7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaDQtZm9udC1zaXplKTtcbiAgQGluY2x1ZGUgYWRqdXN0LWxlYWRpbmctdG8obGluZXMtZm9yLWZvbnQtc2l6ZSgkaDQtZm9udC1zaXplKSwgJGg0LWZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIGxlYWRlcigwLjUsICRoNC1mb250LXNpemUpO1xuICBAaW5jbHVkZSB0cmFpbGVyKDAuNSwgJGg0LWZvbnQtc2l6ZSk7XG59XG5oNSwgLmVwc2lsb257XG4gICRoNS1mb250LXNpemU6IDE2cHg7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaDUtZm9udC1zaXplKTtcbiAgQGluY2x1ZGUgYWRqdXN0LWxlYWRpbmctdG8obGluZXMtZm9yLWZvbnQtc2l6ZSgkaDUtZm9udC1zaXplKSwgJGg1LWZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIGxlYWRlcigwLjUsICRoNS1mb250LXNpemUpO1xuICBAaW5jbHVkZSB0cmFpbGVyKDAuNSwgJGg1LWZvbnQtc2l6ZSk7XG59XG5oNiwgLnpldGEge1xuICAkaDYtZm9udC1zaXplOiAxNnB4O1xuICBjb2xvcjogJGNvbG9yLW5ldmFkYTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKCRoNi1mb250LXNpemUpO1xuICBAaW5jbHVkZSBhZGp1c3QtbGVhZGluZy10byhsaW5lcy1mb3ItZm9udC1zaXplKCRoNi1mb250LXNpemUpLCAkaDYtZm9udC1zaXplKTtcbiAgQGluY2x1ZGUgbGVhZGVyKDAuNSwgJGg2LWZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIHRyYWlsZXIoMC41LCAkaDYtZm9udC1zaXplKTtcbn1cblxuLmFsdW1uaSB7XG4gIC5ub2RlLS1sYW5kaW5nLXBhZ2UtYmxvY2sge1xuICAgIGg0IHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuICB9XG5cbn1cblxuLyoqXG4gKiAkUEFSQUdSQVBIU1xuICovXG5wLFxuJXAge1xuICBtYXJnaW46IDA7XG4gIEBpbmNsdWRlIHJoeXRobSgwLCAwLCAwLCAxKTtcbn1cbnAgKyBpbWcge1xuICBmbG9hdDogbGVmdDtcbiAgbWFyZ2luLXJpZ2h0OiAkaG9yei1zcGFjaW5nLXVuaXQ7XG59XG5cbmIsIHN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG4vKipcbiAqICRRVU9URVNcbiAqL1xuYmxvY2txdW90ZSB7XG4gIEBleHRlbmQgJXA7XG4gIEBpbmNsdWRlIHJoeXRobSgwLCAxLCAxLCAxKTtcbiAgcGFkZGluZzogMCAxLjVlbTtcblxuICBAaW5jbHVkZSByaHl0aG0tYm9yZGVycygxcHgpO1xuICBAaW5jbHVkZSBhcHBseS1zaWRlLXJoeXRobS1ib3JkZXIobGVmdCwgMTBweCk7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgY29sb3I6ICRjb2xvci10ZWFsLWJsdWU7XG5cbiAgcCB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG59XG5cbnEge1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi8qKlxuICogJE1BUktTXG4gKi9cbm1hcmssXG4ubWFya2VyIHtcbiAgcGFkZGluZzogMC4xZW0gMC41ZW07XG5cbiAgYmFja2dyb3VuZDogJGNvbG9yLXBpY3Rvbi1ibHVlO1xuXG4gIGNvbG9yOiAjZmZmO1xuICBAaW5jbHVkZSBmb250LXNpemUoMTJweCk7XG5cbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygxMHB4KTtcbn1cblxuc3Ryb25nLmhpZ2hsaWdodCB7XG4gIGNvbG9yOiAkY29sb3Itc2VhLWdyZWVuO1xufVxuXG4uZmllbGQtbmFtZS1ib2R5IGxpIHtcbiAgbWFyZ2luOiA2cHggMDtcbn1cbiIsIlxuJGhlYWRpbmctZm9udDogJ0hLIEdyb3Rlc2snLCBzYW5zLXNlcmlmO1xuXG4kYmFzZS1mb250LXNpemU6IDE2cHg7XG4kYmFzZS1saW5lLWhlaWdodDogMjNweDsgLy8gVXNpbmcgdGhlIGdvbGRlbiByYXRpbyAxLjYxODAzMzk5LlxuJHJvdW5kLXRvLW5lYXJlc3QtaGFsZi1saW5lOiB0cnVlO1xuXG4kaGVhZGluZy1mb250OiAkaGVhZGluZy1mb250O1xuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBFbmFibGUgbGlnYXR1cmVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBlbmFibGUtbGlnYXR1cmVzKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnbGlnYXR1cmUgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnZW5hYmxlIGxpZ2F0dXJlcycpIHtcbiAgICAgIEBpbmNsdWRlIGVuYWJsZS1saWdhdHVyZXM7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2E9MSwgZGxpZz0xXCI7XG4gICAgLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW1zLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtby1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiBcImxpZ2FcIixcImRsaWdcIjtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZvbnQgRmFjZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZm9udC1mYWNlKCRuYW1lLCAkZmlsZXMsICR3ZWlnaHQ6IG51bGwsICRzdHlsZTogbnVsbCwgJGlubGluZS13b2ZmOiBudWxsKSB7XG4gICR3ZWlnaHQ6IGlmKCR3ZWlnaHQgIT0gbnVsbCwgJHdlaWdodCwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSB3ZWlnaHQnKSk7XG4gICRzdHlsZTogaWYoJHN0eWxlICE9IG51bGwsICRzdHlsZSwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSBzdHlsZScpKTtcbiAgJGlubGluZS13b2ZmOiBpZigkaW5saW5lLXdvZmYgIT0gbnVsbCwgJGlubGluZS13b2ZmLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIGlubGluZSB3b2ZmJykpO1xuXG4gICRmb250LXN0YWNrOiAoKTtcbiAgJGZvbnQtc3JjOiAnJztcbiAgJGVvdDogZmFsc2U7XG4gICRmb250LWV4dGVuc2lvbnM6ICgnZW90JzogJ2VtYmVkZGVkLW9wZW50eXBlJywgJ3dvZmYyJzogJ3dvZmYyJywgJ3dvZmYnOiAnd29mZicsICd0dGYnOiAndHJ1ZXR5cGUnLCAnc3ZnJzogJ3N2ZycpO1xuXG4gIEBlYWNoICRleHQsICRmb3JtYXQgaW4gJGZvbnQtZXh0ZW5zaW9ucyB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRmaWxlcywgJGV4dCkge1xuICAgICAgQGlmIGZ1bmN0aW9uLWV4aXN0cyhpbmxpbmUtZm9udC1maWxlcykgYW5kICRpbmxpbmUtd29mZiA9PSB0cnVlIGFuZCAoJGV4dCA9PSAnd29mZicgb3IgJGV4dCA9PSAnd29mZjInKSB7XG4gICAgICAgICRmb250LXNyYzogaW5saW5lLWZvbnQtZmlsZXMobWFwLWdldCgkZmlsZXMsICRleHQpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmIGZ1bmN0aW9uLWV4aXN0cyhmb250LXVybCkge1xuICAgICAgICAkZm9udC1zcmM6IGZvbnQtdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpICsgJyNpZWZpeCcpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZm9udC1zcmM6IHVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgQGlmICRleHQgPT0gJ2VvdCcge1xuICAgICAgICAgICRlb3Q6ICRmb250LXNyYztcbiAgICAgICAgICAkZm9udC1zcmM6IHVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAkZm9udC1zdGFjazogYXBwZW5kKCRmb250LXN0YWNrLCAkZm9udC1zcmMsICdjb21tYScpO1xuICAgIH1cblxuICB9XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRuYW1lO1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcbiAgICBAaWYgJGVvdCB7XG4gICAgICBzcmM6ICRlb3Q7XG4gICAgfVxuICAgIEBpZiBsZW5ndGgoJGZvbnQtc3RhY2spID4gMCB7XG4gICAgICBzcmM6ICRmb250LXN0YWNrO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEljb24gRm9udFxuLy8gRnJvbSBodHRwOi8vaWNvbW9vbi5pb1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaWNvbi1mb250KCRmb250LXN0YWNrLCAkc3BlYWs6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHNwZWFrOiBpZigkc3BlYWsgIT0gbnVsbCwgJHNwZWFrLCB0b29sa2l0LWdldCgnaWNvbiBmb250IHNwZWFrJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1zdGFjaztcbiAgQGlmICRzcGVhayA9PSBmYWxzZSB7XG4gICAgc3BlYWs6IG5vbmU7XG4gIH1cbiAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gaWNvbi1mb250LS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaWNvbiBmb250IGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCAge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpY29uIGZvbnQgY29yZScpIHtcbiAgICAgIEBpbmNsdWRlIGljb24tZm9udC0tY29yZShmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICBsaW5lLWhlaWdodDogMTtcblxuICAgIEBpbmNsdWRlIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZCk7XG5cbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWRlIEluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBjb250ZW50LWZhZGUtaW4oJGR1cmF0aW9uOiBudWxsLCAkbG9hZGluZzogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZHVyYXRpb246IGlmKCRkdXJhdGlvbiAhPSBudWxsLCAkZHVyYXRpb24sIHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykpO1xuICAkbG9hZGluZzogaWYoJGxvYWRpbmcgIT0gbnVsbCwgJGxvYWRpbmcsIHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kID09IHRydWUgYW5kICRkdXJhdGlvbiA9PSB0b29sa2l0LWdldCgnZmFkZSBpbiBkdXJhdGlvbicpIGFuZCAkbG9hZGluZyA9PSB0b29sa2l0LWdldCgnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJykge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdjb250ZW50IGZhZGUgaW4nKSB7XG4gICAgICBAaW5jbHVkZSBjb250ZW50LWZhZGUtaW4oJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBAaWYgbm90IG1peGluLWV4aXN0cygnc2luZ2xlLXRyYW5zaXRpb24nKSB7XG4gICAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgJGR1cmF0aW9uO1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIHNpbmdsZS10cmFuc2l0aW9uKG9wYWNpdHkgJGR1cmF0aW9uKTtcbiAgICB9XG5cbiAgICAjeyRsb2FkaW5nfSAmIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLyBTZXQgYWxsIHRoZSBjb2xvcnMgZm9yIGEgbGluayB3aXRoIG9uZSBtaXhpbiBjYWxsLlxuLy8gT3JkZXIgb2YgYXJndW1lbnRzIGlzOlxuLy9cbi8vIDEuIG5vcm1hbFxuLy8gMi4gaG92ZXJcbi8vIDMuIGFjdGl2ZVxuLy8gNC4gdmlzaXRlZFxuLy8gNS4gZm9jdXNcbi8vXG4vLyBUaG9zZSBzdGF0ZXMgbm90IHNwZWNpZmllZCB3aWxsIGluaGVyaXQuXG4vLyBNaXhpbiB0byBhbiBhbmNob3IgbGluayBsaWtlIHNvOlxuLy8gICAgIGFcbi8vICAgICAgICtsaW5rLWNvbG9ycygjMDBjLCAjMGNjLCAjYzBjLCAjY2NjLCAjY2MwKVxuXG5AbWl4aW4gbGluay1jb2xvcnMoJG5vcm1hbCwgJGhvdmVyOiBmYWxzZSwgJGFjdGl2ZTogZmFsc2UsICR2aXNpdGVkOiBmYWxzZSwgJGZvY3VzOiBmYWxzZSkge1xuICBjb2xvcjogJG5vcm1hbDtcbiAgQGlmICR2aXNpdGVkIHtcbiAgICAmOnZpc2l0ZWQge1xuICAgICAgY29sb3I6ICR2aXNpdGVkOyB9IH1cbiAgQGlmICRmb2N1cyB7XG4gICAgJjpmb2N1cyB7XG4gICAgICBjb2xvcjogJGZvY3VzOyB9IH1cbiAgQGlmICRob3ZlciB7XG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogJGhvdmVyOyB9IH1cbiAgQGlmICRhY3RpdmUge1xuICAgICY6YWN0aXZlIHtcbiAgICAgIGNvbG9yOiAkYWN0aXZlOyB9IH0gfVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IEZlYXR1cmVzXG4kYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhOiAgICAgIGFsbCAhZGVmYXVsdDtcbiRicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZTogICAgbWluLXdpZHRoICFkZWZhdWx0O1xuJGJyZWFrcG9pbnQtZGVmYXVsdC1wYWlyOiAgICAgICB3aWR0aCAhZGVmYXVsdDtcblxuLy8gRGVmYXVsdCBUcmFuc2Zvcm1zXG4kYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGw6ICAgIGZhbHNlICFkZWZhdWx0O1xuJGJyZWFrcG9pbnQtdG8tZW1zOiAgICAgICAgICAgICBmYWxzZSAhZGVmYXVsdDtcbiRicmVha3BvaW50LXJlc29sdXRpb25zOiAgICAgICAgdHJ1ZSAhZGVmYXVsdDtcblxuLy8gRGVmYXVsdCBObyBRdWVyeSBPcHRpb25zXG4kYnJlYWtwb2ludC1uby1xdWVyaWVzOiAgICAgICAgIGZhbHNlICFkZWZhdWx0O1xuJGJyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gRGVmdGF1bHQgQmFzZSBGb250IFNpemVcbiRicmVha3BvaW50LWJhc2UtZm9udC1zaXplOiAgICAgMTZweCAhZGVmYXVsdDtcblxuLy8gTGVnYWN5IFN5bnRheCBTdXBwb3J0XG4kYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4OiAgICAgIGZhbHNlICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCAnYnJlYWtwb2ludC9jb250ZXh0JztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvaGVscGVycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L3BhcnNlcnMnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9uby1xdWVyeSc7XG5cbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcmVzcG9uZC10byc7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICAvLyBSZXNldCBjb250ZXh0c1xuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcblxuICAkYnJlYWtwb2ludDogYnJlYWtwb2ludCgkcXVlcnksIGZhbHNlKTtcblxuICAkcXVlcnktc3RyaW5nOiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnknKTtcbiAgJHF1ZXJ5LWZhbGxiYWNrOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnZmFsbGJhY2snKTtcblxuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnY29udGV4dCBob2xkZXInKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnkgY291bnQnKSAhZ2xvYmFsO1xuXG4gIC8vIEFsbG93IGZvciBhbiBhcy1uZWVkZWQgb3ZlcnJpZGUgb3IgdXNhZ2Ugb2Ygbm8gcXVlcnkgZmFsbGJhY2suXG4gIEBpZiAkbm8tcXVlcnkgIT0gZmFsc2Uge1xuICAgICRxdWVyeS1mYWxsYmFjazogJG5vLXF1ZXJ5O1xuICB9XG5cbiAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJ25vLXF1ZXJ5JywgJHF1ZXJ5LWZhbGxiYWNrKTtcbiAgfVxuXG4gIC8vIFByaW50IE91dCBRdWVyeSBTdHJpbmdcbiAgQGlmIG5vdCAkYnJlYWtwb2ludC1uby1xdWVyaWVzIHtcbiAgICBAbWVkaWEgI3skcXVlcnktc3RyaW5nfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICBAaWYgJGJyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzICE9IGZhbHNlIG9yICRicmVha3BvaW50LW5vLXF1ZXJpZXMgPT0gdHJ1ZSB7XG5cbiAgICAkdHlwZTogdHlwZS1vZigkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MpO1xuICAgICRwcmludDogZmFsc2U7XG5cbiAgICBAaWYgKCR0eXBlID09ICdib29sJykge1xuICAgICAgJHByaW50OiB0cnVlO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gJGJyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzIHtcbiAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ2xpc3QnKSB7XG4gICAgICBAZWFjaCAkd3JhcHBlciBpbiAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3Mge1xuICAgICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09ICR3cmFwcGVyIHtcbiAgICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXcml0ZSBGYWxsYmFja1xuICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSBhbmQgKCRwcmludCA9PSB0cnVlKSB7XG4gICAgICAkdHlwZS1mYWxsYmFjazogdHlwZS1vZigkcXVlcnktZmFsbGJhY2spO1xuXG4gICAgICBAaWYgKCR0eXBlLWZhbGxiYWNrICE9ICdib29sJykge1xuICAgICAgICAjeyRxdWVyeS1mYWxsYmFja30gJiB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG59XG5cblxuQG1peGluIG1xKCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8qKlxuICogJFZJRVdTLUFDQ09NT0RBVElPTi1CTE9DS1NcbiAqL1xuLmJsb2NrLS12aWV3cy1hY2NvbW9kYXRpb24tYmxvY2stMSB7XG4gIC52aWV3cy1yb3cge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxhcmdlciwgdHJ1ZSkge1xuICAgICAgQGluY2x1ZGUgbGF5b3V0KDEgMSAxKSB7XG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggMyB7XG4gICAgICAgICAgJjpudGgtY2hpbGQoM24rI3skaX0pIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGdyaWQtc3BhbigxLCAkaSwgJGd1dHRlcjogMC4yNDU5ODkzMDUsICRvdXRwdXRfc3R5bGU6IFwiZmxvYXRcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIG1pbi1oZWlnaHQ6IDM5MHB4O1xuICB9XG59XG5cbi5hY2NvbW9kYXRpb24taXRlbS0tbmFtZSB7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgyMnB4KTtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgbWFyZ2luOiAwLjNlbSAwIDA7XG59XG4uYWNjb21vZGF0aW9uLWl0ZW0tLWxvY2F0aW9uIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgQGluY2x1ZGUgZm9udC1zaXplKDEycHgpO1xufVxuLmFjY29tb2RhdGlvbi1pdGVtLS1wcmljZSB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgxNHB4KTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cbiIsIkBpbXBvcnQgXCJhcGkvZmxvYXRcIjtcbkBpbXBvcnQgXCJhcGkvaXNvbGF0aW9uXCI7XG5AaW1wb3J0IFwiYXBpL2NhbGNcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBNYXN0ZXIgR3JpZCBTcGFuIG1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBncmlkLXNwYW4oJHNwYW4sICRsb2NhdGlvbjogMSwgJGdyaWQ6IG51bGwsICRndXR0ZXI6IG51bGwsICRvdXRwdXQtc3R5bGU6IG51bGwsICRndXR0ZXItc3R5bGU6IG51bGwsICRvcHRpb25zOiBudWxsKSB7XG5cbiAgQGlmICRvdXRwdXQtc3R5bGUgPT0gbnVsbCB7XG4gICAgJG91dHB1dC1zdHlsZTogc2dzLWdldCgnb3V0cHV0Jyk7XG4gIH1cblxuICAkR3JpZDogZmluZC1ncmlkKCRncmlkKTtcbiAgJEd1dHRlcjogZmluZC1ndXR0ZXIoJGd1dHRlcik7XG4gICRTdHlsZTogZmluZC1ndXR0ZXItc3R5bGUoJGd1dHRlci1zdHlsZSk7XG5cbiAgJFN0YXJ0LVJvdzogc3RhcnQtcm93KCRsb2NhdGlvbik7XG4gICRFbmQtUm93OiBlbmQtcm93KCRzcGFuLCAkbG9jYXRpb24sICRHcmlkKTtcblxuICAkRml4ZWQtR3V0dGVyOiBmaXhlZC1ndXR0ZXIoJEdyaWQsICRHdXR0ZXIsICRTdHlsZSk7XG4gICRTcGxpdC1HdXR0ZXI6IGluZGV4KCRTdHlsZSwgJ3NwbGl0Jyk7XG4gICRHdXR0ZXItUHJvcGVydHk6IGd1dHRlci1wcm9wZXJ0eSgkR3JpZCwgJEd1dHRlciwgJFN0eWxlKTtcblxuICAkRGlyZWN0aW9uOiBzZ3MtZ2V0KCdkaXJlY3Rpb24nKTtcbiAgJEZyb206IGlmKCRvcHRpb25zIGFuZCB0eXBlLW9mKCRvcHRpb25zKSA9PSAnbWFwJywgaWYobWFwLWdldCgkb3B0aW9ucywgJ2Zyb20nKSwgbWFwLWdldCgkb3B0aW9ucywgJ2Zyb20nKSwgJERpcmVjdGlvbiksICREaXJlY3Rpb24pO1xuICAkRnJvbTogaWYoJEZyb20gPT0gJ2x0cicgb3IgJEZyb20gPT0gJ3J0bCcsIG5hbWVkLWRpcmVjdGlvbigkRnJvbSksICRGcm9tKTtcblxuICAkSG9sZGVyOiAoKTtcbiAgQGVhY2ggJGssICR2IGluICRvcHRpb25zIHtcbiAgICAkSG9sZGVyOiBpZigkayA9PSAnZnJvbScsICRIb2xkZXIsIG1hcC1tZXJnZSgkSG9sZGVyLCAoJGs6ICR2KSkpO1xuICB9XG4gICRvcHRpb25zOiBpZihsZW5ndGgoJEhvbGRlcikgPiAwLCAkSG9sZGVyLCBudWxsKTtcblxuICAkU3Bhbi1NYXA6IChcbiAgICAnc3Bhbic6ICRzcGFuLFxuICAgICdsb2NhdGlvbic6ICRsb2NhdGlvbixcbiAgICAnZ3JpZCc6ICRHcmlkLFxuICAgICdndXR0ZXInOiAkR3V0dGVyLFxuICAgICdzdHlsZSc6ICRTdHlsZSxcbiAgICAnc3RhcnQgcm93JzogJFN0YXJ0LVJvdyxcbiAgICAnZW5kIHJvdyc6ICRFbmQtUm93LFxuICAgICdmaXhlZCBndXR0ZXInOiAkRml4ZWQtR3V0dGVyLFxuICAgICdzcGxpdCBndXR0ZXInOiAkU3BsaXQtR3V0dGVyLFxuICAgICdndXR0ZXIgcHJvcGVydHknOiAkR3V0dGVyLVByb3BlcnR5LFxuICAgICdvcHRpb25zJzogJG9wdGlvbnNcbiAgKTtcblxuICBAaWYgc2dzLWdldCgnZGVidWcnKSAhPSBmYWxzZSB7XG4gICAgLXNncy1zcGFuLXNldHRpbmdzOiBpbnNwZWN0KCRTcGFuLU1hcCk7XG4gIH1cblxuXG4gIEBpZiBmdW5jdGlvbi1leGlzdHMoJ291dHB1dC0jeyRvdXRwdXQtc3R5bGV9Jykge1xuICAgICRMZWZ0OiAoKTtcbiAgICAkUmlnaHQ6ICgpO1xuXG4gICAgQGlmICREaXJlY3Rpb24gPT0gJ2JvdGgnIG9yICRGcm9tID09ICdsZWZ0JyBvciAoJERpcmVjdGlvbiA9PSAncnRsJyBhbmQgJEZyb20gPT0gJ29wcG9zaXRlJykge1xuICAgICAgJExlZnQ6IGNhbGwoJ291dHB1dC0jeyRvdXRwdXQtc3R5bGV9JywgbWFwLW1lcmdlKCRTcGFuLU1hcCwgKCdkaXJlY3Rpb24nOiBsZWZ0KSkpO1xuICAgIH1cblxuICAgIEBpZiAkRGlyZWN0aW9uID09ICdib3RoJyBvciAkRnJvbSA9PSAncmlnaHQnIG9yICgkRGlyZWN0aW9uID09ICdsdHInIGFuZCAkRnJvbSA9PSAnb3Bwb3NpdGUnKSB7XG4gICAgICAkUmlnaHQ6IGNhbGwoJ291dHB1dC0jeyRvdXRwdXQtc3R5bGV9JywgbWFwLW1lcmdlKCRTcGFuLU1hcCwgKCdkaXJlY3Rpb24nOiByaWdodCkpKTtcbiAgICB9XG5cbiAgICAkTGVmdC1LZXlzOiBtYXAta2V5cygkTGVmdCk7XG4gICAgJFJpZ2h0LUtleXM6IG1hcC1rZXlzKCRSaWdodCk7XG4gICAgJEV4Y2x1ZGU6ICgpO1xuXG4gICAgQGVhY2ggJGtleSBpbiAkTGVmdC1LZXlzIHtcbiAgICAgIEBpZiBpbmRleCgkUmlnaHQtS2V5cywgJGtleSkge1xuICAgICAgICBAaWYgbWFwLWdldCgkUmlnaHQsICRrZXkpID09IG1hcC1nZXQoJExlZnQsICRrZXkpIHtcbiAgICAgICAgICAkRXhjbHVkZTogYXBwZW5kKCRFeGNsdWRlLCAka2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFsd2F5cyB0cnkgYW5kIHByaW50IHRoZSBMZWZ0IHZhbHVlXG4gICAgQGluY2x1ZGUgZ3JpZC1zcGFuLWJ1aWxkLWV4Y2x1ZGUoJExlZnQsICRFeGNsdWRlLCBmYWxzZSk7XG5cbiAgICAvLyBJZiBEaXJlY3Rpb24gaXMgQm90aCBvciBSVEwsIGFkZCB0aGUgUlRMIGF0dHJpYnV0ZSBzZWxlY3RvclxuICAgIEBpZiAkRGlyZWN0aW9uID09ICdib3RoJyBvciAkRGlyZWN0aW9uID09ICdydGwnIHtcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgIEBpbmNsdWRlIGdyaWQtc3Bhbi1idWlsZC1leGNsdWRlKCRSaWdodCwgJEV4Y2x1ZGUsIHRydWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBncmlkLXNwYW4tYnVpbGQtZXhjbHVkZSgkUmlnaHQsICRFeGNsdWRlLCB0cnVlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiVGhlcmUgZG9lc24ndCBhcHBlYXIgdG8gYmUgYW4gb3V0cHV0IHN0eWxlIG5hbWVkIGAjeyRvdXRwdXQtc3R5bGV9YC4gUGxlYXNlIGVuc3VyZSB0aGF0IHRoZSBmdW5jdGlvbiBgb3V0cHV0LSN7JG91dHB1dC1zdHlsZX1gIGFuZCB0aGF0IHRoZSBvdXRwdXQgc3R5bGUgYCN7JG91dHB1dC1zdHlsZX1gIGFyZSBib3RoIGF2YWlsYWJsZSBiZWZvcmUgdHJ5aW5nIHRvIHVzZSB0aGVtLlwiO1xuICB9XG59XG5cbkBtaXhpbiBncmlkLXNwYW4tYnVpbGQoJHByb3BlcnR5LCAkdmFsdWUpIHtcbiAgQGlmIHR5cGUtb2YoJHZhbHVlKSAhPSAnbWFwJyB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBlYWNoICRwcmVmaXgsICR2YWwgaW4gJHZhbHVlIHtcbiAgICAgICN7JHByb3BlcnR5fTogJHZhbDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGdyaWQtc3Bhbi1idWlsZC1leGNsdWRlKCRwcm9wZXJ0aWVzLCAkZGVsdGEsICRleGNsdWRlOiBmYWxzZSkge1xuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkcHJvcGVydGllcyB7XG4gICAgQGlmICRleGNsdWRlIHtcbiAgICAgIEBpZiBub3QgaW5kZXgoJGRlbHRhLCAkcHJvcGVydHkpIHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1zcGFuLWJ1aWxkKCRwcm9wZXJ0eSwgJHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1zcGFuLWJ1aWxkKCRwcm9wZXJ0eSwgJHZhbHVlKTtcbiAgICB9XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZpbmQgd2lkdGgsIGluIHBlcmNlbnRhZ2VzLCBvZiB0aGUgY29sdW1uIHNwYW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGNvbHVtbi1zcGFuKCRzcGFuLCAkbG9jYXRpb24sICRncmlkOiBudWxsLCAkZ3V0dGVyOiBudWxsLCAkZ3V0dGVyLXN0eWxlOiBudWxsKSB7XG4gIC8vIEZpbmQgdGhlIGdyaWQgYW5kIGd1dHRlcnNcbiAgJGdyaWQ6IGZpbmQtZ3JpZCgkZ3JpZCk7XG4gICRndXR0ZXI6IGZpbmQtZ3V0dGVyKCRndXR0ZXIpO1xuICAkZ3V0dGVyLXN0eWxlOiBmaW5kLWd1dHRlci1zdHlsZSgkZ3V0dGVyLXN0eWxlKTtcblxuICBAaWYgZml4ZWQtZ3V0dGVyKCRncmlkLCAkZ3V0dGVyLCAkZ3V0dGVyLXN0eWxlKSB7XG4gICAgJGd1dHRlcjogMDtcbiAgfVxuXG4gIC8vIEBkZWJ1ZyAkZ3JpZDtcbiAgLy8gQGRlYnVnICRndXR0ZXI7XG5cbiAgLy8gQ29tYmluZSB0aGUgZ3JpZCBhbmQgZ3V0dGVyc1xuICAkZ3JpZC1hbmQtZ3V0dGVyczogY29sdW1uLXN1bSgkZ3JpZCwgJGd1dHRlciwgJGd1dHRlci1zdHlsZSk7XG5cbiAgLy8gQGRlYnVnICRncmlkLWFuZC1ndXR0ZXJzO1xuXG4gIC8vIEVxdWFsIHdpZHRoIGdyaWQgYXJlIGVhc3khIERlYWwgd2l0aCB0aGVtIVxuICBAaWYgdHlwZS1vZigkZ3JpZCkgPT0gJ251bWJlcicgb3IgbGVuZ3RoKCRncmlkKSA9PSAxIHtcbiAgICAkc3Bhbi1hbmQtZ3V0dGVyczogJHNwYW4gKyAkZ3V0dGVyICogKCRzcGFuIC0gMSk7XG4gICAgQHJldHVybiAkc3Bhbi1hbmQtZ3V0dGVycyAvICRncmlkLWFuZC1ndXR0ZXJzICogMTAwJTtcbiAgfVxuICAvLyBBc3ltbWV0cmljIGxpc3RzIGFyZSBoYXJkZXIsIHNvIHdlJ3JlIGdvaW5nIHRvIHRyZWF0IHRoZW0gYXMgdGhlaXIgb3duIGdyaWRcbiAgQGVsc2UgaWYgdHlwZS1vZigkZ3JpZCkgPT0gJ2xpc3QnIG9yIGxlbmd0aCgkZ3JpZCkgPiAxIHtcbiAgICAkc3Bhbi1hbmQtZ3V0dGVyczogMDtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSBhbmQgJHNwYW4gPj0gMSB7XG4gICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRzcGFuIHtcbiAgICAgICAgJHNwYW4tYW5kLWd1dHRlcnM6ICRzcGFuLWFuZC1ndXR0ZXJzICsgbnRoKCRncmlkLCAkaSkgKyAkZ3V0dGVyO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkdG90YWw6ICRsb2NhdGlvbiArICRzcGFuIC0gMTtcbiAgICAgIEBpZiAkdG90YWwgIT0gMCB7XG4gICAgICAgIEBmb3IgJGkgZnJvbSAkbG9jYXRpb24gdGhyb3VnaCAkdG90YWwge1xuICAgICAgICAgICRzcGFuLWFuZC1ndXR0ZXJzOiAkc3Bhbi1hbmQtZ3V0dGVycyArIG50aCgkZ3JpZCwgJGkpICsgJGd1dHRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAkc3Bhbi1hbmQtZ3V0dGVyczogJHNwYW4tYW5kLWd1dHRlcnMgLSAkZ3V0dGVyO1xuXG4gICAgQHJldHVybiAkc3Bhbi1hbmQtZ3V0dGVycyAvICRncmlkLWFuZC1ndXR0ZXJzICogMTAwJTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJDYW4ndCBmaW5kIGEgd29ya2luZyBzZXQgb2YgZ3JpZCEgVGhhdCdzIHRlcnJpYmxlIVwiO1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGaW5kIHRoZSB0b3RhbCBzdW0gb2YgdGhlIGdyaWRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGNvbHVtbi1zdW0oJGdyaWQsICRndXR0ZXIsICRndXR0ZXItc3R5bGUpIHtcbiAgJHNwbGl0OiBpZihpbmRleCgkZ3V0dGVyLXN0eWxlLCAnc3BsaXQnKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gIEBpZiB0eXBlLW9mKCRncmlkKSA9PSAnbnVtYmVyJyBvciBsZW5ndGgoJGdyaWQpID09IDEge1xuICAgIEBpZiAkc3BsaXQge1xuICAgICAgQHJldHVybiBudGgoJGdyaWQsIDEpICsgKChjb2x1bW4tY291bnQobnRoKCRncmlkLCAxKSkpICogbnRoKCRndXR0ZXIsIDEpKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBudGgoJGdyaWQsIDEpICsgKChjb2x1bW4tY291bnQobnRoKCRncmlkLCAxKSkgLSAxKSAqIG50aCgkZ3V0dGVyLCAxKSk7XG4gICAgfVxuXG4gIH1cbiAgQGVsc2UgaWYgdHlwZS1vZigkZ3JpZCkgPT0gJ2xpc3QnIHtcbiAgICAkc3VtOiAwO1xuICAgIEBlYWNoICRjb2x1bW4gaW4gJGdyaWQge1xuICAgICAgJHN1bTogJHN1bSArIG50aCgkY29sdW1uLCAxKTtcbiAgICB9XG4gICAgQGlmICRzcGxpdCB7XG4gICAgICAkc3VtOiAkc3VtICsgKGNvbHVtbi1jb3VudCgkZ3JpZCkpICogbnRoKCRndXR0ZXIsIDEpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkc3VtOiAkc3VtICsgKGNvbHVtbi1jb3VudCgkZ3JpZCkgLSAxKSAqIG50aCgkZ3V0dGVyLCAxKTtcbiAgICB9XG4gICAgQHJldHVybiAkc3VtO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRmluZCB0aGUgbnVtYmVyIG9mIGdyaWRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGNvbHVtbi1jb3VudCgkZ3JpZCkge1xuICBAaWYgdHlwZS1vZigkZ3JpZCkgPT0gJ251bWJlcicge1xuICAgIEByZXR1cm4gJGdyaWQ7XG4gIH1cbiAgQGlmIHR5cGUtb2YoJGdyaWQpID09ICdsaXN0JyB7XG4gICAgQGlmIGxlbmd0aCgkZ3JpZCkgPT0gMSB7XG4gICAgICBAcmV0dXJuIG50aCgkZ3JpZCwgMSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEByZXR1cm4gbGVuZ3RoKCRncmlkKTtcbiAgICB9XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZpbmQgT3Bwb3NpdGUgRGlyZWN0aW9uXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBvcHBvc2l0ZS1kaXJlY3Rpb24oJGRpcikge1xuICBAaWYgJGRpciA9PSAnbGVmdCcge1xuICAgIEByZXR1cm4gcmlnaHQ7XG4gIH1cbiAgQGVsc2UgaWYgICRkaXIgPT0gJ3JpZ2h0JyB7XG4gICAgQHJldHVybiBsZWZ0O1xuICB9XG4gIEBlbHNlIGlmICRkaXIgPT0gJ2x0cicge1xuICAgIEByZXR1cm4gcnRsO1xuICB9XG4gIEBlbHNlIGlmICRkaXIgPT0gJ3J0bCcge1xuICAgIEByZXR1cm4gbHRyO1xuICB9XG4gIEBlbHNlIGlmICRkaXIgPT0gJ3RvcCcge1xuICAgIEByZXR1cm4gYm90dG9tO1xuICB9XG4gIEBlbHNlIGlmICRkaXIgPT0gJ2JvdHRvbScge1xuICAgIEByZXR1cm4gdG9wO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIiN7JGRpcn0gaXMgbm90IGEgZGlyZWN0aW9uISBNYWtlIHN1cmUgeW91ciBkaXJlY3Rpb24gaXMgYWxsIGxvd2VyY2FzZSFcIjtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRmluZCBEaXJlY3Rpb24gTmFtZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gbmFtZWQtZGlyZWN0aW9uKCRkaXIpIHtcbiAgQGlmICRkaXIgPT0gJ2x0cicge1xuICAgIEByZXR1cm4gbGVmdDtcbiAgfVxuICBAZWxzZSBpZiAkZGlyID09ICdydGwnIHtcbiAgICBAcmV0dXJuIHJpZ2h0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIiN7JGRpcn0gaXMgbm90IGEgdmFsaWQgSFRNTCBkaXJlY3Rpb24hIE1ha2Ugc3VyZSB5b3UgYXJlIHVzaW5nIGEgdmFsaWQgSFRNTCBkaXJlY3Rpb25cIjtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59IiwiQGZ1bmN0aW9uIG91dHB1dC1mbG9hdCgkU3Bhbi1NYXApIHtcbiAgLy8gU2V0IHVwIExlZnQvUmlnaHQgbWFwc1xuICAkUmV0dXJuOiAoKTtcblxuICAkU3BhbjogbWFwLWdldCgkU3Bhbi1NYXAsICdzcGFuJyk7XG4gICRMb2NhdGlvbjogbWFwLWdldCgkU3Bhbi1NYXAsICdsb2NhdGlvbicpO1xuXG4gICRHcmlkOiBtYXAtZ2V0KCRTcGFuLU1hcCwgJ2dyaWQnKTtcbiAgJEd1dHRlcjogbWFwLWdldCgkU3Bhbi1NYXAsICdndXR0ZXInKTtcbiAgJFN0eWxlOiBtYXAtZ2V0KCRTcGFuLU1hcCwgJ3N0eWxlJyk7XG5cbiAgJFN0YXJ0LVJvdzogbWFwLWdldCgkU3Bhbi1NYXAsICdzdGFydCByb3cnKTtcbiAgJEVuZC1Sb3c6IG1hcC1nZXQoJFNwYW4tTWFwLCAnZW5kIHJvdycpO1xuXG4gICRGaXhlZC1HdXR0ZXI6IG1hcC1nZXQoJFNwYW4tTWFwLCAnZml4ZWQgZ3V0dGVyJyk7XG4gICRTcGxpdC1HdXR0ZXI6IG1hcC1nZXQoJFNwYW4tTWFwLCAnc3BsaXQgZ3V0dGVyJyk7XG4gICRHdXR0ZXItUHJvcGVydHk6IG1hcC1nZXQoJFNwYW4tTWFwLCAnZ3V0dGVyIHByb3BlcnR5Jyk7XG5cbiAgJERpcmVjdGlvbjogbWFwLWdldCgkU3Bhbi1NYXAsICdkaXJlY3Rpb24nKTtcbiAgJE9wdGlvbnM6IG1hcC1nZXQoJFNwYW4tTWFwLCAnb3B0aW9ucycpO1xuXG4gIEBpZiAkU3RhcnQtUm93IHtcbiAgICAkTG9jYXRpb246IDE7XG4gIH1cbiAgQGVsc2UgaWYgJEVuZC1Sb3cge1xuICAgICRMb2NhdGlvbjogY29sdW1uLWNvdW50KCRHcmlkKSAtICRTcGFuICsgMTtcbiAgfVxuXG4gICRXaWR0aDogY29sdW1uLXNwYW4oJFNwYW4sICRMb2NhdGlvbiwgJEdyaWQsICRHdXR0ZXIsICRTdHlsZSk7XG4gICRNYXJnaW4tU3BhbjogY29sdW1uLXNwYW4oKCRMb2NhdGlvbiAtIDEpLCAxLCAkR3JpZCwgJEd1dHRlciwgJFN0eWxlKTtcbiAgJEd1dHRlci1TcGFuOiBndXR0ZXItc3BhbigkR3V0dGVyLCAkR3JpZCk7XG5cbiAgLy8gQmFja3dhcmRzIENvbXBhdGliaWxpdHkgZm9yIE9wdGlvbnNcbiAgQGlmIHR5cGUtb2YoJE9wdGlvbnMpICE9ICdtYXAnIGFuZCAkT3B0aW9ucyAhPSBudWxsIHtcbiAgICAkT3B0aW9uczogKCdjbGVhcic6IHVucXVvdGUobnRoKCRPcHRpb25zLCAxKSkpO1xuICB9XG5cbiAgJERpcjogJERpcmVjdGlvbjtcbiAgJE9wcDogb3Bwb3NpdGUtZGlyZWN0aW9uKCREaXIpO1xuXG4gICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJ3dpZHRoJzogJFdpZHRoKSk7XG4gICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJ2NsZWFyJzogJE9wcCkpO1xuXG4gIEBpZiAoJEVuZC1Sb3cpIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCdmbG9hdCc6ICRPcHApKTtcblxuICAgIEBpZiAkU3BsaXQtR3V0dGVyIGFuZCBub3QgJEZpeGVkLUd1dHRlciB7XG4gICAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCcjeyRHdXR0ZXItUHJvcGVydHl9LSN7JERpcn0nOiAwKSk7XG4gICAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCcjeyRHdXR0ZXItUHJvcGVydHl9LSN7JE9wcH0nOiAkR3V0dGVyLVNwYW4gLyAyKSk7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCAkRml4ZWQtR3V0dGVyIHtcbiAgICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJyN7JEd1dHRlci1Qcm9wZXJ0eX0tI3skT3BwfSc6IDApKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJ2Zsb2F0JzogJERpcikpO1xuXG4gICAgQGlmICRTcGxpdC1HdXR0ZXIgYW5kIG5vdCAkRml4ZWQtR3V0dGVyIHtcbiAgICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJyN7JEd1dHRlci1Qcm9wZXJ0eX0tI3skRGlyfSc6ICRHdXR0ZXItU3BhbiAvIDIpKTtcbiAgICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJyN7JEd1dHRlci1Qcm9wZXJ0eX0tI3skT3BwfSc6ICRHdXR0ZXItU3BhbiAvIDIpKTtcbiAgICB9XG4gICAgQGVsc2UgaWYgbm90ICRGaXhlZC1HdXR0ZXIge1xuICAgICAgQGlmICRTdGFydC1Sb3cge1xuICAgICAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCcjeyRHdXR0ZXItUHJvcGVydHl9LSN7JERpcn0nOiAwKSk7XG4gICAgICB9XG4gICAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCcjeyRHdXR0ZXItUHJvcGVydHl9LSN7JE9wcH0nOiAkR3V0dGVyLVNwYW4pKTtcbiAgICB9XG4gIH1cbiAgLy8gSWYgb3B0aW9ucyBhcmUgc2V0LCB3ZSBtZXJnZSB0aGVtIGluIVxuICBAaWYgKCRPcHRpb25zKSB7XG4gICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICRPcHRpb25zKTtcbiAgfVxuXG4gIC8vIElmIENMZWFyIGlzbid0IGFscmVhZHkgYXZhaWxhYmxlLCBzZXQgaXQhXG4gIEBpZiBub3QgbWFwLWhhcy1rZXkoJFJldHVybiwgJ2NsZWFyJykge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJ2NsZWFyJzogbm9uZSkpO1xuICB9XG5cbiAgLy8gTGVmdCBGaXhlZCBHdXR0ZXJzXG4gIEBpZiAkRml4ZWQtR3V0dGVyIHtcbiAgICBAaWYgaW5kZXgoJFN0eWxlLCAnc3BsaXQnKSB7XG4gICAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCcjeyRHdXR0ZXItUHJvcGVydHl9LSN7JERpcn0nOiAkR3V0dGVyLVNwYW4gLyAyKSk7XG4gICAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCcjeyRHdXR0ZXItUHJvcGVydHl9LSN7JE9wcH0nOiAkR3V0dGVyLVNwYW4gLyAyKSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiBub3QgJEVuZC1Sb3cge1xuICAgICAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCcjeyRHdXR0ZXItUHJvcGVydHl9LSN7JE9wcH0nOiAkR3V0dGVyLVNwYW4pKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgnI3skR3V0dGVyLVByb3BlcnR5fS0jeyRPcHB9JzogMCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJFJldHVybjtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIYXBweSBTeW50YXggZm9yIEZsb2F0XG4vL1xuLy8gTWFrZXMgd29ya2luZyB3aXRoIEZsb2F0IGVhc2llciwgYXMgaXQgYWxsb3dzIHlvdSB0byB3YWxrIHRoZSBncmlkIGZvciBzeW1tZXRyaWMgZ3JpZHMgYW5kIGVhc3kgYXBwbHlpbmcgb2YgJ2xhc3QnIGFuZCAnZmlyc3QnLCBhcyB3ZWxsIGFzIGF1dG9tYXRpY2FsbHkgYnVpbGRpbmcgdGhlIHZlcmJvc2UgZ3JpZC1zcGFuIG1peGluIGNhbGxcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGZsb2F0LXNwYW4oJFNwYW4sICRMb2NhdGlvbjogZmFsc2UsICRncmlkOiBmYWxzZSwgJGd1dHRlcjogZmFsc2UsICRndXR0ZXItc3R5bGU6IGZhbHNlLCAkZnJvbTogZmFsc2UpIHtcbiAgJGdyaWQ6IGZpbmQtZ3JpZCgkZ3JpZCk7XG4gICRndXR0ZXI6IGZpbmQtZ3V0dGVyKCRndXR0ZXIpO1xuICAkcm93OiBmYWxzZTtcblxuICAkT3B0aW9uczogaWYoJGZyb20sICgnZnJvbSc6ICRmcm9tKSwgbnVsbCk7XG5cbiAgLy8gV29ya2luZyBhcm91bmQgU0FTUyB0cmVhdGluZyBhIG51bWJlciBsaWtlIGEgbGlzdCB3aXRoIG9uZSBlbGVtZW50XG4gIEBpZiB0eXBlLW9mKCRncmlkKSA9PSAnbGlzdCcgYW5kIGxlbmd0aCgkZ3JpZCkgPT0gMSB7XG4gICAgJGdyaWQ6IG50aCgkZ3JpZCwgMSk7XG4gIH1cblxuICAvLyBXb3JraW5nIHdpdGggYSBzeW1tZXRyaWMgZ3JpZFxuICBAaWYgdHlwZS1vZigkZ3JpZCkgPT0gJ251bWJlcicge1xuICAgIC8vIFNwZWNpYWwgdHJlYXRtZW50IGZvciBub24tbnVtZXJpYyBsb2NhdGlvblxuICAgIEBpZiB0eXBlLW9mKCRMb2NhdGlvbikgIT0gJ251bWJlcicge1xuICAgICAgQGlmICRMb2NhdGlvbiA9PSAnbGFzdCcgb3IgJExvY2F0aW9uID09ICdvbWVnYScge1xuICAgICAgICAkTG9jYXRpb246ICRncmlkIC0gJFNwYW4gKyAxO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBAaWYgJExvY2F0aW9uID09ICdmaXJzdCcgb3IgJExvY2F0aW9uID09ICdhbHBoYScge1xuICAgICAgICAgICRyb3c6IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgJExvY2F0aW9uOiAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGdyaWQtc3BhbigkU3BhbiwgJExvY2F0aW9uLCAkZ3JpZCwgJGd1dHRlciwgJ2Zsb2F0JywgJGd1dHRlci1zdHlsZSwgJE9wdGlvbnMpO1xuXG4gICAgQGlmICRyb3cge1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG4gIC8vIFdvcmtpbmcgd2l0aCBhbiBhc3ltbWV0cmljIGdyaWQsIHNob3VsZCBoYXZlIGxvY2F0aW9uIHByb3ZpZGVkXG4gIEBlbHNlIGlmIHR5cGUtb2YoJGdyaWQpID09ICdsaXN0JyBhbmQgJExvY2F0aW9uICE9IGZhbHNlIHtcbiAgICBAaW5jbHVkZSBncmlkLXNwYW4oJFNwYW4sICRMb2NhdGlvbiwgJGdyaWQsICRndXR0ZXIsICdmbG9hdCcsICRndXR0ZXItc3R5bGUsICRPcHRpb25zKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gJ0FzeW1tZXRyaWMgR3JpZHMgbmVlZCBhIExvY2F0aW9uIHZhbHVlIGFzIHdlbGwgYXMgYSBzcGFuIHZhbHVlIGluIG9yZGVyIHRvIGtub3cgd2hlcmUgb24gdGhlIGdyaWQgeW91IGFyZSEgUGxlYXNlIGluY2x1ZGUgYSBsb2NhdGlvbiB2YWx1ZSEnO1xuICB9XG59XG4iLCJAZnVuY3Rpb24gZ3V0dGVyLXNwYW4oJGd1dHRlcjogZmFsc2UsICRncmlkOiBmYWxzZSwgJGd1dHRlci1zdHlsZTogZmFsc2UpIHtcblxuICAvLyBGaW5kIHRoZSBjb2x1bW5zIGFuZCBndXR0ZXJzXG4gICRncmlkOiBmaW5kLWdyaWQoJGdyaWQpO1xuICAkZ3V0dGVyOiBmaW5kLWd1dHRlcigkZ3V0dGVyKTtcbiAgJGd1dHRlci1zdHlsZTogZmluZC1ndXR0ZXItc3R5bGUoJGd1dHRlci1zdHlsZSk7XG5cbiAgQGlmIGZpeGVkLWd1dHRlcigkZ3JpZCwgJGd1dHRlciwgJGd1dHRlci1zdHlsZSkge1xuICAgIEByZXR1cm4gbnRoKCRndXR0ZXIsIDEpO1xuICB9XG5cbiAgLy8gQ29tYmluZSB0aGUgY29sdW1ucyBhbmQgZ3V0dGVyc1xuICAkZ3JpZC1hbmQtZ3V0dGVyczogY29sdW1uLXN1bSgkZ3JpZCwgJGd1dHRlciwgJGd1dHRlci1zdHlsZSk7XG5cbiAgQHJldHVybiAobnRoKCRndXR0ZXIsIDEpIC8gJGdyaWQtYW5kLWd1dHRlcnMpICogMTAwJVxufSIsIi8qKlxuICogQmFzaWMgc3R5bGVzIGZvciBibG9jayBhbHQuXG4gKi9cbi5ibG9jay0tYWx0IHtcblxuICBiYWNrZ3JvdW5kOiAkY29sb3Itd2hpdGUtc21va2U7XG4gIG1hcmdpbi1ib3R0b206IDEuNWVtO1xuXG4gIGgzIHtcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItZ29sZGVuLXBvcHB5O1xuICAgIHBhZGRpbmctbGVmdDogMS4xZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gIHVsIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIHBhZGRpbmc6IDFlbSAxLjVlbTtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICBsaSB7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICYucGFnZXJfX2l0ZW0tLWN1cnJlbnR7XG5cbiAgICAgIHBhZGRpbmctbGVmdDogMC44ZW07XG4gICAgfVxuICB9XG5cbn1cblxuLmJsb2NrLS1hbHQtLWZpbHRlciB7XG5cbiAgaDMge1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci1nb2xkZW4tcG9wcHk7XG4gIH1cblxuXG59XG5cbi5ibG9jay0tYWx0LS1zZWFyY2gge1xuXG4gIGgzIHtcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItZ29sZGVuLXBvcHB5O1xuICB9XG5cbiAgbGFiZWwge1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci1kZWVwLXNreS1ibHVlO1xuICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC1mYW1pbHk6ICRoZWFkaW5nLWZvbnQ7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIHBhZGRpbmctbGVmdDogMS4xZW07XG4gICAgbGluZS1oZWlnaHQ6IDIuMjg1NzFlbTtcblxuICB9XG5cbiAgLnZpZXdzLWV4cG9zZWQtZm9ybSAudmlld3MtZXhwb3NlZC13aWRnZXQge1xuICAgIGZsb2F0OiBub25lO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICBpbnB1dC5mb3JtLXRleHQge1xuICAgIGJvcmRlci13aWR0aDogMHB4IDBweCAxcHggMHB4O1xuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgJGNvbG9yLXdoaXRlLXNtb2tlO1xuICAgIGhlaWdodDogNDhweDtcbiAgfVxuXG4gIGlucHV0LmZvcm0tdGV4dDpmb2N1cyB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjb2xvci1kZWVwLXNreS1ibHVlO1xuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgJGNvbG9yLXdoaXRlLXNtb2tlO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDA7XG4gICAgb3V0bGluZS1vZmZzZXQ6IDA7XG4gICAgb3V0bGluZTogMDtcbiAgfVxuXG4gIC52aWV3cy13aWRnZXQge1xuICAgIHdpZHRoOiA4NSU7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gIH1cblxuICAudmlld3MtZXhwb3NlZC1mb3JtIC52aWV3cy1zdWJtaXQtYnV0dG9uIHtcblxuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgd2lkdGg6IDE1JTtcblxuICAgIGlucHV0IHtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkY29sb3ItZ29sZGVuLXBvcHB5O1xuXG4gICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL21hZ25pZnlpbmdnbGFzcy15ZWxsb3ctMzAucG5nKSBjZW50ZXIgY2VudGVyICRjb2xvci13aGl0ZS1zbW9rZSBuby1yZXBlYXQ7XG4gICAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgICBtYXJnaW46IDA7XG4gICAgICB0ZXh0LWluZGVudDogLTk5OTllbTtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogNTAlO1xuICAgIH1cbiAgICBpbnB1dDpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1hZ2VzL21hZ25pZnlpbmdnbGFzcy13aGl0ZS0zMC5wbmcpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWRhcmstZ3JleTtcbiAgICB9XG4gIH1cblxufVxuXG4iLCIvKipcbiAqICRCTE9DSy1BTk5PVU5DRU1FTlRTXG4gKi9cbi5sLXJlZ2lvbi0tc2lkZWJhci1zZWNvbmQge1xuICAudmlldy1hbm5vdW5jZW1lbnRzIHtcbiAgICAubm9kZV9fdGl0bGUge1xuICAgICAgQGluY2x1ZGUgZm9udC1zaXplKDE4cHgpO1xuICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICB9XG4gIH1cbn1cbi5sLXJlZ2lvbi0tYW5ub3VuY2VtZW50cyB7XG4gIC52aWV3LWFubm91bmNlbWVudHMge1xuICAgIHBhZGRpbmc6IDFlbSAwLjZlbSAwLjZlbSAwLjZlbTtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbCkge1xuICAgICAgcGFkZGluZy1sZWZ0OiAxNiU7XG4gICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItYWx0byB1cmwoJy4uL2ltYWdlcy9jb2xvdXJfc2hpZWxkX2Z1bGwuZ2lmJykgbm8tcmVwZWF0IC05MHB4IGNlbnRlcjtcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogMzIlO1xuICAgICAgLW1vei1iYWNrZ3JvdW5kLXNpemU6IDMyJTtcbiAgICB9XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtKSB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDI2JTtcbiAgICB9XG4gICAgbWluLWhlaWdodDogNmVtO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBhIHtcbiAgICAgIGNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgfVxuICAgIC5maWVsZCwgLm5vZGUtLXRlYXNlciB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuICAgIC5ub2RlX190aXRsZSB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbCkge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgd2lkdGg6IDM4JTtcbiAgICAgIH1cbiAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgzMHB4KTtcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIFxuICAgIH1cbiAgICAubm9kZV9fY29udGVudCB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbCkge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgd2lkdGg6IDYwJTtcbiAgICAgIH1cbiAgICB9XG4gICAgLm5vZGUtLWFubm91bmNlbWVudC0tdGVhc2VyIHtcbiAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIH1cbiAgfVxufVxuXG4vKmFkZGl0aW9uYWwgc3R5bGluZyBmb3IgYW5ub3VjZW1lbnQgb24gYWNjb21tb2RhdGlvbiBub2RlKi9cbi5zZWN0aW9uLWZhY2lsaXRpZXN7XG4gIC52aWV3LWFubm91bmNlbWVudHN7XG4gICAgLm5vZGUtLWFubm91bmNlbWVudHtcbiAgICAgIGJvcmRlci10b3A6IDVweCBzb2xpZCAkY29sb3ItZ29sZGVuLXBvcHB5O1xuICAgICAgcGFkZGluZy10b3A6IDFlbTtcbiAgICAgIGJvcmRlci1ib3R0b206IDVweCBzb2xpZCAkY29sb3ItZ29sZGVuLXBvcHB5O1xuICAgIH1cbiAgfVxuXG59IiwiI2Jsb2NrLXZpZXdzLXRlc3RpbW9uaWFscy1ibG9jayxcbi5ibG9jay0tdmlld3MtY3Itc29jaWV0aWVzLWJsb2NrLTJ7XG4gIGgzLmJsb2NrX190aXRsZSB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG4gIC5maWVsZC1uYW1lLWZpZWxkLW1haW4taW1hZ2UgaW1nIHtcbiAgICBwYWRkaW5nOiAzMHB4IDMwcHggMHB4O1xuICAgIC5sdC1pZTkgJiB7XG4gICAgICBoZWlnaHQ6IDIzMHB4IWltcG9ydGFudDtcbiAgICB9XG4gIH1cbiAgLmZpZWxkLW5hbWUtZmllbGQtbWFpbi1pbWFnZSB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG4gIC5maWVsZC1uYW1lLXRpdGxlLFxuICAudmlld3MtZmllbGQtdGl0bGUge1xuICAgIGgzIHtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIG1hcmdpbi1ib3R0b206IDBweDtcbiAgICAgIG1hcmdpbi10b3A6IC0yMHB4O1xuICAgIH1cbiAgICBtYXJnaW4tYm90dG9tOiAwcHg7XG4gICAgYSB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwcHg7XG4gICAgICBiYWNrZ3JvdW5kOiAkbGluYWNyZS15ZWxsb3c7XG4gICAgICBjb2xvcjogYmxhY2s7XG4gICAgICBmb250LXNpemU6IDAuOGVtO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgIHBhZGRpbmc6IDRweCAwO1xuICAgICAgbWFyZ2luOiAwIDA7XG4gICAgICBib3gtc2hhZG93OiAxMHB4IDAgMCAkbGluYWNyZS15ZWxsb3csIC0xMHB4IDAgMCAkbGluYWNyZS15ZWxsb3c7XG4gICAgICB0cmFuc2l0aW9uOiAwLjJzO1xuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpZ2h0ZW4oJGxpbmFjcmUteWVsbG93LDIwJSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDEwcHggMCAwIGxpZ2h0ZW4oJGxpbmFjcmUteWVsbG93LDIwJSksIC0xMHB4IDAgMCBsaWdodGVuKCRsaW5hY3JlLXllbGxvdywyMCUpO1xuICAgICAgICBjb2xvcjogYmxhY2s7XG4gICAgICAgIHRyYW5zaXRpb246IDAuMnM7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5maWVsZC1uYW1lLWZpZWxkLWNvdW50cnktb2Ytb3JpZ2luIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogMnB4O1xuICAgIG1hcmdpbi10b3A6IDZweDtcbiAgICBmb250LXNpemU6IDg1JTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICB9XG4gIC5maWVsZC1uYW1lLWJvZHkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xuICAgIHAge1xuICAgICAgcGFkZGluZzogMCAxNXB4O1xuICAgICAgJjpsYXN0LW9mLXR5cGUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgfVxuICAgIH1cbiAgICAmOmJlZm9yZSxcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB3aWR0aDogMzVweDtcbiAgICAgIG1pbi1oZWlnaHQ6IDI1cHg7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDEwMCU7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy4uL2ltYWdlcy9xdW90ZS1tYXJrcy5naWYnKTtcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAlIDAlO1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgbWFyZ2luLWJvdHRvbTogLTE1cHg7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAtMjBweDtcbiAgICB9XG4gICAgJjphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAlIDEwMCU7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICBtYXJnaW4tbGVmdDogODklO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgIG1hcmdpbi10b3A6IC0xZW07XG4gICAgfVxuICB9XG4gIC52aWV3cy1maWVsZC1ib2R5IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNmVtO1xuICAgIGNvbG9yOiAkY29sb3ItZ3JleTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcbiAgICBtYXJnaW4tdG9wOiAwLjVlbTtcbiAgICAvLyBwIHtcbiAgICAvLyAgIHBhZGRpbmc6IDAgNDBweDtcbiAgICAvLyAgICY6bGFzdC1vZi10eXBlIHtcbiAgICAvLyAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAvLyAgIH1cbiAgICAvLyB9XG4gIH1cbiAgLmZpZWxkLW5hbWUtbm9kZS1saW5rLFxuICAudmlldy1mb290ZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBhIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxufVxuXG4jYmxvY2stdmlld3MtdGVzdGltb25pYWxzLWJsb2NrIC5maWVsZC1uYW1lLWZpZWxkLW1haW4taW1hZ2UgaW1nLCAuYmxvY2stLXZpZXdzLWNyLXNvY2lldGllcy1ibG9jay0yIC5maWVsZC1uYW1lLWZpZWxkLW1haW4taW1hZ2UgaW1nIHtcbiAgcGFkZGluZzogMCAxMHB4OyBcbn1cblxuIiwiLyoqXG4gKiAkQkxPQ0stQ1RBXG4gKiBcbiAqIENhbGwgVG8gQWN0aW9uIGJsb2Nrc1xuICovXG5cbi5ibG9jay0tY3RhIC5ibG9ja19fY29udGVudCB7XG4gIG1hcmdpbjogMC43ZW0gMDtcbiAgYSB7XG4gICAgbWluLWhlaWdodDogYXV0bztcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjJlbTtcbiAgICBiYWNrZ3JvdW5kOiAkbGluYWNyZS15ZWxsb3c7XG4gICAgY29sb3I6ICMyMjIyMjI7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBhZGRpbmc6IDFlbSAxZW07XG4gICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgICBmb250LXNpemU6IDAuOWVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIHRyYW5zaXRpb246IDAuMnM7XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiBsaWdodGVuKCRsaW5hY3JlLXllbGxvdywyMCUpO1xuICAgICAgdHJhbnNpdGlvbjogMC4ycztcbiAgICB9ICBcbiAgfVxuICBwLCB1bCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgfVxufVxuLmwtY29udGVudCB7XG4gIC8vQGluY2x1ZGUgY3RhLWNvbG91cnMoJGNvbG9yLWRlZXAtc2t5LWJsdWUsICRjb2xvci10cm9waWNhbC1yYWluLWZvcmVzdCwgJGNvbG9yLWRhcmstZ3JleSwgJGNvbG9yLWNhcm1pbmUsICRjb2xvci1nb2xkZW4tcG9wcHksICRjb2xvci1sYS1wYWxtYSk7XG59XG5cbi5sLXJlZ2lvbi0tc2lkZWJhci1maXJzdCB7XG4gIC8vQGluY2x1ZGUgY3RhLWNvbG91cnMoJGNvbG9yLWdvbGRlbi1wb3BweSwgJGNvbG9yLWRlZXAtc2t5LWJsdWUsICRjb2xvci1jYXJtaW5lLCAkY29sb3ItbGEtcGFsbWEsICRjb2xvci1ncmV5KTtcbn1cbi5sLXJlZ2lvbi0tc2lkZWJhci1zZWNvbmQge1xuICAvL0BpbmNsdWRlIGN0YS1jb2xvdXJzKCRjb2xvci10cm9waWNhbC1yYWluLWZvcmVzdCwgJGNvbG9yLWdyZXksICRjb2xvci1nb2xkZW4tcG9wcHksICRjb2xvci1jYXJtaW5lKTtcbn1cblxuLy8gSWYgdGhlIENhbGwgdG8gQWN0aW9uIGJsb2NrIGNvbnRhaW5zIGEgbGlzdCBvZiBsaW5rcywgaGVscCBkaXNwbGF5IG5pY2VseVxuLmJsb2NrLS1jdGEtLWxpc3QgLmJsb2NrX19jb250ZW50IHtcbiAgYSB7XG5cbiAgICAmOmhvdmVyIHtcblxuICAgIH1cbiAgfVxuICB1bCBhIHtcbiAgICBwYWRkaW5nOiA1cHggMWVtO1xuICB9XG4gIHVsIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMC41ZW07XG4gIH1cbn1cblxuLy8gdGFyZ2V0aW5nIHNwZWNpZmljIGJsb2NrcyB3aXRoIGxvbmcgd29yZHMhLy9cblxuLmwtcmVnaW9uLS1zaWRlYmFyLWZpcnN0LFxuLmwtcmVnaW9uLS1zaWRlYmFyLXNlY29uZHtcbiAgICAgIC5ibG9jay0tY3RhIC5ibG9ja19fY29udGVudHtcbiAgICAgICAgYXtcbiAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbGFyZ2UsIHRydWUpe1xuICAgICAgICAgIGZvbnQtc2l6ZTogMC45M2VtO1xuICAgICAgICAgIH1cbiAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbGFyZ2VyLCB0cnVlKXtcbiAgICAgICAgICBmb250LXNpemU6IDAuOTNlbTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICB9XG59IiwiXG4ubC1yZWdpb24tLWN1cmF0b3Ige1xuICBjbGVhcjogYm90aDtcbn1cblxuLmNydC1ncmlkLXBvc3QtdjIgLmNydC1wb3N0LWZ1bGxuYW1lLCAuY3J0LXBvc3QtdjIgLmNydC1wb3N0LWZ1bGxuYW1lIHtcbiAgZGlzcGxheTogbm9uZSFpbXBvcnRhbnQ7XG59XG5cbi5jcnQtbG9hZC1tb3JlIHtcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICBhIHtcbiAgXHRwYWRkaW5nOiAxMHB4ICFpbXBvcnRhbnQ7XG4gIFx0Jjpob3ZlciB7XG4gIFx0ICBiYWNrZ3JvdW5kOiBsaWdodGVuKCRsaW5hY3JlLXllbGxvdywyMCUpO1xuICBcdH1cbiAgfVxufVxuXG4uY3J0LXBvc3QtdjIgLmNydC1wb3N0LWJvcmRlciB7XG4gYm9yZGVyOiAwICFpbXBvcnRhbnQ7XG59IiwiLmxpbmtlZGluLWJsb2NrIHtcblx0c3Bhbi5leHQge1xuXHRcdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcblx0XHQgIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcblx0fVxufVxuXG4iLCIuYmxvY2tfX21hcCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBwYWRkaW5nOiAwO1xuICAuYmxvY2tfX2NvbnRlbnQgaDMge1xuICAgICAgY29sb3I6ICM2OTdkOTI7XG4gICAgICBmb250LXNpemU6IDAuOGVtICFpbXBvcnRhbnQ7XG4gICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IDFweDtcbiAgICAgIG1hcmdpbi1ib3R0b206IDIwUFg7XG4gICAgICBwYWRkaW5nLXRvcDogMzNweDtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgLyp0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyovXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHVybCgnLi4vaW1hZ2VzL3NjYWxsb3AtZ3JleS5zdmcnKTtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIGhlaWdodDogMjVweDtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICBtYXJnaW4tbGVmdDogLTExcHg7XG4gICAgICAgIG1hcmdpbi10b3A6IC0zM3B4O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHdpZHRoOiAyMnB4O1xuICAgICAgfVxuICB9XG4gIGlmcmFtZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn1cbiIsIi5ibG9jay0tZHMtZXh0cmFzLXN0YW5kYXJkLXBhZ2UtcmhzIHtcbiAgLmJsb2NrX19jb250ZW50IHtcbiAgICA+IGRpdiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAyZW07XG4gICAgfVxuICAgIHVsIHtcbiAgICAgIEBpbmNsdWRlIHN0cmlwLWxpc3Q7XG4gICAgfVxuICB9XG59XG4iLCIuYmxvY2stLXNlYXJjaCB7XG4gIG1hcmdpbi1yaWdodDogMC40ZW07XG4gIG1hcmdpbi10b3A6IC0xLjVlbTtcblxuICAvLyBGaW5uLCAwNC8wOC8yMDE0XG4gIC8vIFRoaXMgaXMgYSBsaXR0bGUgaGFja3kgdGVtcG9yYXJ5IGZpeCB0byB0aGUgc2VhcmNoIGJveCBwdXNoaW5nIHRoZVxuICAvLyByZXNwb25zaXZlIGNvbnRhaW5lciBvdXQgYW5kIGFsbG93aW5nIGhvcnppbnRhbCBzY3JvbGwgYXQgNDAwcHguXG4gIC8vIFByb2JhYmx5IGJldHRlciBhY2hpZXZlZCB3aXRoIHRoIGVqcyB0aGF0IGRvZXMgdGhlIHNsaWR5IHNlYXJjaCByZXZlYWwuXG4gIC8vIEB0b2RvIC0gcmVmYWN0b3IgaXMgbmVlZGVkLlxuICBoMiwgbGFiZWwge1xuICAgIHdpZHRoOiAwO1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwpIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDMuNWVtO1xuICAgIG1hcmdpbi10b3A6IDFlbTtcbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bSkge1xuICAgIG1hcmdpbi1yaWdodDogNmVtO1xuICAgIG1hcmdpbi10b3A6IDFlbTtcbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxhcmdlLCB0cnVlKSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIG1hcmdpbi10b3A6IDAuMjVlbTtcbiAgICBmbG9hdDogcmlnaHQ7XG4gIH1cbn0iLCIvKipcbiAqICRTSEFSRVRISVNcbiAqXG4gKiBGaXhlcyB0aGUgc2hhcmV0aGlzIGJsb2NrJ3MgbGF5b3V0IGJlIHJlc2V0dGluZyB0byBjb250ZW50LWJveCBtb2RlbC5cbiAqL1xuLmJsb2NrLS1zaGFyZXRoaXMgKiB7XG4gIEBpbmNsdWRlIGJveC1zaXppbmcoY29udGVudC1ib3gpO1xufVxuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBDaGFuZ2UgdGhlIGJveCBtb2RlbCBmb3IgTW96aWxsYSwgV2Via2l0LCBJRTggYW5kIHRoZSBmdXR1cmVcbi8vXG4vLyBAcGFyYW0gJGJzXG4vLyAgIFsgY29udGVudC1ib3ggfCBib3JkZXItYm94IF1cblxuQG1peGluIGJveC1zaXppbmcoJGJzKSB7XG4gICRiczogdW5xdW90ZSgkYnMpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LXNpemluZywgJGJzLFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cbiIsIi8qKlxuICogJE5BVi1CQVJcbiAqL1xuLmJsb2NrLS1uYXYtYmFyIHtcbiAgLm1lbnUge1xuICAgIEBleHRlbmQgJWhsaXN0O1xuICB9XG5cbiAgYSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogMS4yZW0gMWVtO1xuXG4gICAgQGluY2x1ZGUgZm9udC1zaXplKDE2cHgpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgQGluY2x1ZGUgbm91bmRlcmxpbmUoKTtcbiAgICBjb2xvcjogI2ZmZjtcblxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICBjb2xvcjogJGNvbG9yLXRlYWwtYmx1ZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0sIHRydWUpIHtcbiAgICBhIHtcbiAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgxOHB4KTtcbiAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2ZmZjtcbiAgICB9XG4gICAgbGk6bGFzdC1jaGlsZCBhIHtcbiAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNmZmY7XG4gICAgfVxuICB9XG59XG4iLCIvKipcbiAqICRDT01NRU5ULVdSQVBQRVJcbiAqL1xuLmNvbW1lbnQtd3JhcHBlciB7XG4gIHBhZGRpbmc6ICR2ZXJ0LXNwYWNpbmctdW5pdCAkaG9yei1zcGFjaW5nLXVuaXQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ib3R0aWNlbGxpO1xufVxuIiwiLyoqXG4gKiAkQUNDT1JESU9OXG4gKi9cbi5sLW1haW4gLmZpZWxkLWNvbGxlY3Rpb24tdmlldyB7XG4gIG1hcmdpbjogMDtcbiAgYm9yZGVyLWJvdHRvbTogMDtcbiAgLnVpLWFjY29yZGlvbi1oZWFkZXIge1xuICAgIGJvcmRlcjogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgQGluY2x1ZGUgZm9udC1zaXplKDE1cHgpO1xuICB9XG4gIC51aS1hY2NvcmRpb24taGVhZGVyLWFjdGl2ZSB7XG4gICAgYm9yZGVyOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuICBsZWdlbmQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiIsIi8qKlxuICogJEZJRUxELVRBWE9OT01ZLVRFUk1cbiAqL1xuLmZpZWxkLS10eXBlLXRheG9ub215LXRlcm0tcmVmZXJlbmNlIHtcbiAgLmZpZWxkX19pdGVtcyB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXgodHJ1ZSk7XG4gIH1cbiAgLmZpZWxkX19pdGVtIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xuICB9XG59XG4iLCIvKipcbiAqICRGSUVMRFxuICovXG4uZmllbGQge1xuICBAaW5jbHVkZSB0cmFpbGVyKDEpO1xufVxuXG4vLyBJbWFnZSB0aHVtYm5haWwgZ2FsbGVyeSBjb250YWluZXJzXG4uZmllbGQtbmFtZS1maWVsZC1pbWFnZXMge1xuICBjbGVhcjogYm90aDtcbiAgaW1nIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gIH1cbn1cbi5maWVsZCB7XG5cdC5maWxlLWltYWdlIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0fVxuXHQuZmllbGQtLW5hbWUtZmllbGQtY2FwdGlvbiB7XG5cdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGZvbnQtc2l6ZTogMC44ZW07XG4gICAgY29sb3I6IGdyZXk7XG4gICAgcGFkZGluZzogNXB4O1xuXG5cdH1cbn1cblxuXG5cbnNwYW4uZGF0ZS1kaXNwbGF5LXNpbmdsZXtcblx0Y29sb3I6ICRjb2xvci1ncmV5O1xuXHRkaXNwbGF5OiBibG9jaztcbn1cblxuLnBhZ2UtY3VycmVudC1tZW1iZXJzLWNvbW1vbi1yb29tLW1pbnV0ZXN7XG5cdC5pdGVtLWxpc3QgaDN7XG5cdFx0JjphZnRlcntcblx0XHRcdGNvbnRlbnQ6IFwiXFwyMjI4XCI7XG5cdFx0XHRjb2xvcjogJGNvbG9yLWRhcmstZ3JleTtcblx0XHRcdGZvbnQtc2l6ZTogMC44ZW07XG5cdFx0XHRtYXJnaW4tbGVmdDogMWVtO1xuXHRcdH1cblx0fVxufVxuXG4vL2RhdGUgZGlzcGxheSBpbiBldmVudHMgYW5kIGNyIGV2ZW50cyBub2Rlc1xuLm5vZGUtLWNyLWV2ZW50LCAubm9kZS0tY3ItZXZlbnQtLWFyY2hpdmVkLSwubm9kZS10eXBlLWV2ZW50LCAubm9kZS0tY3ItZXZlbnQtLWFyY2hpdmVkLWV2ZW50e1xuXHQuZmllbGQtbmFtZS1maWVsZC1kYXRlLXRpbWV7XG5cdFx0Zm9udC1zaXplOiAxLjJlbTtcblx0XHRtYXJnaW46IDA7XG5cdH1cblx0LmZpZWxkLW5hbWUtZmllbGQtaW1hZ2Vze1xuXHRcdCAgJGgzLWZvbnQtc2l6ZTogMjFweDtcblx0XHQgIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaDMtZm9udC1zaXplKTtcblx0XHQgIEBpbmNsdWRlIGFkanVzdC1sZWFkaW5nLXRvKGxpbmVzLWZvci1mb250LXNpemUoJGgzLWZvbnQtc2l6ZSksICRoMy1mb250LXNpemUpO1xuXHRcdCAgQGluY2x1ZGUgbGVhZGVyKDEsICRoMy1mb250LXNpemUpO1xuXHRcdCAgQGluY2x1ZGUgdHJhaWxlcigwLjUsICRoMy1mb250LXNpemUpO1xuXHR9XG59XG5cbi8vZml4aW5nIGZvbnQgc2l6ZXMgb24gYWNjb3JkaW9uc1xuLm5vZGUtdHlwZS1wYWdle1xuXHQubC1tYWluIC5maWVsZC1jb2xsZWN0aW9uLXZpZXd7XG5cdFx0IC51aS1hY2NvcmRpb24taGVhZGVye1xuXHRcdGZvbnQtc2l6ZTogMS4zZW07XG5cdFx0fVxuXHRcdC51aS13aWRnZXR7XG5cdFx0XHRmb250LXNpemU6IDFlbTtcblx0XHRcdGF7XG5cdFx0XHRcdGNvbG9yOiAkbGluay1jb2xvcjtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLy8gcGFkZGluZyBvbiBpbWFnZXMgaW4gdGhlIGJvZHlcbi5maWVsZC1uYW1lLWJvZHl7XG5cdGltZ3tcblx0XHRwYWRkaW5nOiAxZW07XG5cdH1cbn1cbi8vb3ZlcnJpZGluZyBzcGVjaWZpYyBsaWJyYXJ5IHBhZ2UtY3VycmVudC1tZW1iZXJzLWNvbW1vbi1yb29tLW1pbnV0ZXNcbi5wYWdlLW5vZGUtMzk0IC8qbGlicmFyeSByZXNvdXJjZXMqLyxcbi5wYWdlLW5vZGUtNTQwIC8qZmluZGluZyByZXNvdXJjZXMgLSBsaWJyYXJ5Ki8sXG4ucGFnZS1ub2RlLTUzOSAvKmd1ZXN0cm9vbSBwYWdlKi97XG5cdFx0LmZpZWxkLW5hbWUtYm9keXtcblx0XHRcdGltZ3tcblx0XHRcdFx0cGFkZGluZzogMDtcblx0XHRcdH1cblx0XHRcdGg0IGltZyB7XG5cdFx0XHRcdG1hcmdpbi10b3A6IC0wLjVlbTtcblx0XHR9XG5cdH1cbn1cblxuLy8gcmVsYXRlZCBkb2N1bWVudHMgZGlzcGxheS8vXG4uZmllbGQtbmFtZS1maWVsZC1yZWxhdGVkLWRvY3VtZW50e1xuXHQuZmlsZXtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRpbWcge1xuXHRcdFx0IGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7XG5cdFx0XHQgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDtcblx0XHRcdCBwYWRkaW5nOiAzcHggMCAwIDAgIWltcG9ydGFudDtcblx0XHR9XG5cdH1cbn1cbiIsIi8qKlxuICogJEFVVE9DT01QTEVURVxuICovXG5odG1sLmpzIGlucHV0LmZvcm0tYXV0b2NvbXBsZXRlIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltYWdlcy90aHJvYmJlci1pbmFjdGl2ZS5wbmcpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAlIGNlbnRlcjtcbiAgJi50aHJvYmJpbmcge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWFnZXMvdGhyb2JiZXItYWN0aXZlLmdpZik7XG4gIH1cbn1cbiIsIi8qKlxuICogJENPTExBUFNJQkxFXG4gKi9cbmh0bWwuanMgZmllbGRzZXQuY29sbGFwc2libGUgeyAvLyBPdmVyc3BlY2lmaWVkXG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogbm9uZTtcblxuICBsZWdlbmQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgLmZpZWxkc2V0LWxlZ2VuZCB7XG4gICAgcGFkZGluZzogMDtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuXG4gICAgLnN1bW1hcnkge1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgIH1cbiAgfVxuICAuZmllbGRzZXQtdGl0bGUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6IDAuNzVlbTtcblxuICAgIGJhY2tncm91bmQtY29sb3I6ICRib3gtYmFja2dyb3VuZC1jb2xvcjtcblxuICAgIGNvbG9yOiAkbGluay1jb2xvcjtcbiAgICBAaW5jbHVkZSBub3VuZGVybGluZSgpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYm90dGljZWxsaTtcbiAgICAgIGNvbG9yOiAkY29sb3ItdGVhbC1ibHVlO1xuICAgIH1cbiAgfVxuICAuZmllbGRzZXQtd3JhcHBlciB7XG4gICAgcGFkZGluZzogJHZlcnQtc3BhY2luZy11bml0ICRob3J6LXNwYWNpbmctdW5pdDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICB9XG59XG5cbmh0bWwuanMgZmllbGRzZXQuY29sbGFwc2VkIHsgLy8gT3ZlcnNwZWNpZmllZFxuICBoZWlnaHQ6IDIuOWVtOyAvLyBwYWRkaW5nLXRvcCArIHBhZGRpbmctYm90dG9tICsgbGluZS1oZWlnaHRcbn1cbiIsIi8qKlxuICogJEZJRUxEU0VUU1xuICovXG4uZm9ybS13cmFwcGVyIHtcbiAgbWFyZ2luLWJvdHRvbTogJHZlcnQtc3BhY2luZy11bml0O1xufVxuXG4uZmllbGRzZXQtZGVzY3JpcHRpb24ge1xuICBtYXJnaW4tYm90dG9tOiAkdmVydC1zcGFjaW5nLXVuaXQgLyAyO1xuICBjb2xvcjogJGNvbG9yLW5ldmFkYTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4udmVydGljYWwtdGFicyBmaWVsZHNldC52ZXJ0aWNhbC10YWJzLXBhbmUge1xuICBwYWRkaW5nOiAkdmVydC1zcGFjaW5nLXVuaXQgJGhvcnotc3BhY2luZy11bml0O1xufVxuXG5maWVsZHNldCB7XG4gIGJvcmRlcjogc29saWQgMXB4ICNkZGQ7XG4gIGJvcmRlci10b3A6IDNweCBzb2xpZCAjMDA3NEJEO1xuICBwYWRkaW5nOiAxMnB4O1xuICBtYXJnaW46IDE4cHggMDtcbn1cblxuZmllbGRzZXQgbGVnZW5kIHtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIHBhZGRpbmc6IDAgM3B4O1xuICBtYXJnaW46IDA7XG4gIGZvbnQtc2l6ZTogMjRweDtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbn1cblxuaHRtbC5qcyBmaWVsZHNldC5jb2xsYXBzaWJsZSAuZmllbGRzZXQtd3JhcHBlciB7XG4gIEBpbmNsdWRlIGNsZWFyZml4KCk7XG4gIG1hcmdpbi1ib3R0b206ICR2ZXJ0LXNwYWNpbmctdW5pdDtcbn0iLCIvKipcbiAqICRGSUxURVItVElQU1xuICovXG4uZmlsdGVyLXdyYXBwZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuXG4uZmlsdGVyLXdyYXBwZXIge1xuICBib3JkZXItdG9wOiAwO1xuICBwYWRkaW5nOiAxMHB4IDJweDtcbn1cblxuLmZpbHRlci13cmFwcGVyIC5maWVsZHNldC13cmFwcGVyIHtcbiAgcGFkZGluZzogMCA2cHg7XG59XG5cbi5maWx0ZXItd3JhcHBlciAuZm9ybS1pdGVtLCAuZmlsdGVyLXdyYXBwZXIgLmZpbHRlci1ndWlkZWxpbmVzLCAuZmlsdGVyLXdyYXBwZXIgLmZpbHRlci1oZWxwIHtcbiAgZm9udC1zaXplOiAwLjkyM2VtO1xuICBwYWRkaW5nOiAycHggMCAwIDA7IC8qIExUUiAqL1xufVxuXG4uZmlsdGVyLWhlbHAsXG4uZmlsdGVyLWd1aWRlbGluZXMtaXRlbSB7XG4gIGNvbG9yOiAkZm9ybS1kZXNjcmlwdGlvbi1jb2xvcjtcbn1cbiIsIi8qKlxuICogJEZPUk0tSVRFTVxuICovXG4uZm9ybS1pdGVtIHtcbiAgY29sb3I6ICRjb2xvci1uZXZhZGE7XG5cbiAgbGFiZWwge1xuICAgIG1hcmdpbi1ib3R0b206IDAuNGVtO1xuICB9XG4gIC5mb3JtLXNlbGVjdCxcbiAgLmZvcm0tdGV4dCxcbiAgLmZvcm0tdGV4dGFyZWEge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDAuNmVtO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcbi8vICAgIGNvbG9yOiAkY29sb3ItbmV2YWRhO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIH1cbiAgLmRlc2NyaXB0aW9uIHtcbiAgICBtYXJnaW4tdG9wOiAwLjJlbTtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIH1cbn1cblxuLmNvbnRhaW5lci1pbmxpbmUge1xuICAuZm9ybS1zZWxlY3QsXG4gIC5mb3JtLXRleHQsXG4gIC5mb3JtLXRleHRhcmVhIHtcbiAgICB3aWR0aDogYXV0bztcbiAgfVxufVxuXG4vKiBGb3JtIGVsZW1lbnRzIChBZ2lsZSBQYXR0ZXJucykgKi9cblxuLmZvcm0taXRlbSB7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMCAwIDEwcHg7XG59XG5cbi5maWx0ZXItd3JhcHBlciAuZm9ybS1pdGVtLCBkaXYudGVhc2VyLWNoZWNrYm94IC5mb3JtLWl0ZW0sIC5mb3JtLWl0ZW0gLmZvcm0taXRlbSB7XG4gIHBhZGRpbmc6IDVweCAwO1xuICBtYXJnaW46IDA7XG4gIGJvcmRlcjogMDtcbn1cblxuLmZvcm0tdHlwZS1jaGVja2JveCB7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi50ZXh0LWZvcm1hdC13cmFwcGVyIC5mb3JtLWl0ZW0ge1xuICBwYWRkaW5nLWJvdHRvbTogMDtcbn1cblxuLmZvcm0taXRlbSBsYWJlbCwgLmV4cG9zZWQtZmlsdGVycyAuZm9ybS1pdGVtIGxhYmVsIHtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwLjVlbSAwO1xufVxuXG4vLyBNYWtlIHRoZSBsYWJlbCBib2xkIGZvciBzb21lIGl0ZW1zLlxuLmZvcm0taXRlbSB7XG4gICYuZm9ybS10eXBlLXRleHRhcmVhLFxuICAmLmZvcm0tdHlwZS10ZXh0ZmllbGQsXG4gICYuZm9ybS10eXBlLWNoZWNrYm94ZXMsXG4gICYuZm9ybS10eXBlLWl0ZW0sXG4gICYuZm9ybS10eXBlLXNlbGVjdCB7XG4gICAgPiBsYWJlbCB7XG4gICAgICBmb250LXdlaWdodDogNzAwO1xuICAgIH1cbiAgfVxufVxuXG4uZm9ybS1pdGVtIGxhYmVsLm9wdGlvbiB7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuXG4uZm9ybS1pdGVtIGxhYmVsLm9wdGlvbiBpbnB1dCB7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5mb3JtLWRpc2FibGVkIGlucHV0LmZvcm0tYXV0b2NvbXBsZXRlLCAuZm9ybS1kaXNhYmxlZCBpbnB1dC5mb3JtLXRleHQsIC5mb3JtLWRpc2FibGVkIGlucHV0LmZvcm0tZmlsZSwgLmZvcm0tZGlzYWJsZWQgdGV4dGFyZWEuZm9ybS10ZXh0YXJlYSwgLmZvcm0tZGlzYWJsZWQgc2VsZWN0LmZvcm0tc2VsZWN0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTtcbiAgY29sb3I6ICM3Nzc7XG59XG5cbi5mb3JtLW1hbmFnZWQtZmlsZSAuZm9ybS1maWxlLCAuZm9ybS1tYW5hZ2VkLWZpbGUgLmZvcm0tc3VibWl0IHtcbiAgbWFyZ2luLWxlZnQ6IDEwcHg7XG59XG5cbmlucHV0LmZvcm0tYXV0b2NvbXBsZXRlLCBpbnB1dC5mb3JtLXRleHQsIGlucHV0LmZvcm0tZmlsZSwgdGV4dGFyZWEuZm9ybS10ZXh0YXJlYSwgc2VsZWN0LmZvcm0tc2VsZWN0IHtcbiAgcGFkZGluZzogNXB4O1xuICBib3JkZXI6IDJweCBzb2xpZCAjZGRkO1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBjb2xvcjogIzMzMztcbn1cblxuaW5wdXQuZm9ybS10ZXh0OmZvY3VzLCBpbnB1dC5mb3JtLWZpbGU6Zm9jdXMsIHRleHRhcmVhLmZvcm0tdGV4dGFyZWE6Zm9jdXMsIHNlbGVjdC5mb3JtLXNlbGVjdDpmb2N1cyB7XG4gIGNvbG9yOiAjMDAwO1xuICBib3JkZXItY29sb3I6IGxpZ2h0ZW4oJGFjY2VudC0xLCAxNSUpO1xufVxuXG4vLyBDdXN0b20gc2VsZWN0IHdpZGdldHMuIEV4cGVyaW1lbnRhbCBzdHVmZi4gV29ya3MgbmljZWx5IHdpdGggd2Via2l0IGFuZFxuLy8gRmlyZWZveCBidXQgSUUgaXMgYSBuby1nbyBzbyB3ZSBkaXNhYmxlIGl0IGFmdGVyd2FyZHMuXG4uZm9ybS1pdGVtLmZvcm0tdHlwZS1zZWxlY3Qge1xuICAudGhlbWUtd3JhcHBlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBzZWxlY3QuZm9ybS1zZWxlY3Qge1xuICAgICAgcGFkZGluZzogMC41ZW0gMS4yZW0gMC40ZW0gMC41ZW07XG4gICAgICAvLyBSZW1vdmUgYnJvd3NlciBzdHlsaW5nLlxuICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgICB0ZXh0LWluZGVudDogMC4wMXB4O1xuICAgICAgdGV4dC1vdmVyZmxvdzogXCJcIjtcbiAgICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCk7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJzw+JztcbiAgICAgIGZvbnQ6IDE0cHggXCJDb25zb2xhc1wiLCBtb25vc3BhY2U7XG4gICAgICBjb2xvcjogI2FhYTtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICAgICAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG4gICAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICAgICAgcmlnaHQ6IDAuOGVtO1xuICAgICAgdG9wOiAyNSU7XG4gICAgICBwYWRkaW5nOiAwIDAgMnB4O1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB9XG4gICAgLy8gRm9yIHdlYmtpdC5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAwKSB7XG4gICAgICBzZWxlY3QuZm9ybS1zZWxlY3Qge1xuICAgICAgICBwYWRkaW5nOiAwLjVlbSAyLjVlbSAwLjRlbSAwLjVlbTtcbiAgICAgIH1cbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICB0b3A6IDI5JTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gRGlzYWJsZSB0aGlzIGZvciBJRSB1c2luZyBjb25kaXRpb25hbCBzdHlsZXMuXG4uaWUgLmZvcm0taXRlbS5mb3JtLXR5cGUtc2VsZWN0IHtcbiAgLnRoZW1lLXdyYXBwZXIge1xuICAgICY6YWZ0ZXIge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLy8gSUUgMTArIGRvZXNuJ3Qgc3VwcG9ydCBjb25kaXRpb25hbHMgc28gd2UgbmVlZCB0aGlzIGhhY2suXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAwXFwwKSB7XG4gIC5mb3JtLWl0ZW0uZm9ybS10eXBlLXNlbGVjdCB7XG4gICAgLnRoZW1lLXdyYXBwZXIge1xuICAgICAgJjphZnRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5saW5rLWZpZWxkLXVybCB7XG4gIHBhZGRpbmctbGVmdDogJGhvcnotc3BhY2luZy11bml0O1xufVxuIiwiLyoqXG4gKiAkUEFTU1dPUkQtQ09ORklSTVxuICovXG5kaXYucGFzc3dvcmQtaW5kaWNhdG9yLFxuZGl2LnBhc3N3b3JkLWNvbmZpcm0ge1xuICBtYXJnaW4tdG9wOiAwO1xufVxuXG5kaXYucGFzc3dvcmQtaW5kaWNhdG9yIHtcbiAgbWFyZ2luLWJvdHRvbTogMC40ZW07XG59XG4iLCIvKipcbiAqICRQQVNTV09SRC1JTkRJQ0FUT1JcbiAqL1xuLnBhc3N3b3JkLWluZGljYXRvciB7XG4gIGhlaWdodDogMC44ZW07XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG5cbiAgLmluZGljYXRvciB7XG4gICAgYmFja2dyb3VuZDogJHdhcm5pbmctY29sb3I7XG4gIH1cbn1cblxuLnBhc3N3b3JkLXN0cmVuZ3RoLXRpdGxlIHtcbiAgbWFyZ2luLWJvdHRvbTogMC4yZW07XG59XG4iLCIvKipcbiAqICRTRUFSQ0gtRk9STVxuICovXG4uc2VhcmNoLWJsb2NrLWZvcm0ge1xuICAuZm9ybS10ZXh0IHtcbiAgICAuanMgJiB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IDA7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNhYWE7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgcGFkZGluZzogMC40ZW0gMC4yZW0gMC4xZW0gMWVtO1xuICAgIGhlaWdodDogMjhweDtcbiAgICB3aWR0aDogN2VtO1xuICAgIGZvbnQtc2l6ZTogZW0oMTJweCk7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNHB4O1xuICAgIC5sdC1pZTkgJiB7XG4gICAgICBsaW5lLWhlaWdodDogMjJweDtcbiAgICB9XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtKSB7XG4gICAgICB3aWR0aDogMTRlbTtcbiAgICB9XG4gICAgJjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgICBjb2xvcjogJGNvbG9yLWdyZXk7XG4gICAgfVxuXG4gICAgJjotbW96LXBsYWNlaG9sZGVyIHsgLyogRmlyZWZveCAxOC0gKi9cbiAgICAgIGNvbG9yOiAkY29sb3ItZ3JleTtcbiAgICB9XG5cbiAgICAmOjotbW96LXBsYWNlaG9sZGVyIHsgIC8qIEZpcmVmb3ggMTkrICovXG4gICAgICBjb2xvcjogJGNvbG9yLWdyZXk7XG4gICAgfVxuICAgICY6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICAgIGNvbG9yOiAkY29sb3ItZ3JleTtcbiAgICB9XG4gIH1cbiAgJjpmb2N1cyB7XG4gIH1cbiAgLmJ1dHRvbiB7XG4gICAgYmFja2dyb3VuZDogdXJsKCcuLi9pbWFnZXMvc2VhcmNoaWNvbi5wbmcnKSBuby1yZXBlYXQgNHB4IDRweDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDc4JTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyNDIsIDE5OSwgMCwgMCk7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbihub25lKTtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRsYXJnZSwgdHJ1ZSkge1xuICAgICAgYmFja2dyb3VuZC1zaXplOiA5MiU7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAzcHggMHB4O1xuICAgICAgLmx0LWllOSAmIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcuLi9pbWFnZXMvc2VhcmNoaWNvbi1pZS5wbmcnKTtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogM3B4IDA7XG4gICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIGhpZGUtdGV4dCgpO1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzIuN3B4O1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgJjpob3ZlcixcbiAgICAmOmFjdGl2ZSxcbiAgICAmOmZvY3VzIHtcbiAgICAgIG91dGxpbmU6IDA7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy4uL2ltYWdlcy9zZWFyY2hpY29uLnBuZycpO1xuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNHB4IDRweDtcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgfVxuICAgICYuYWN0aXZhdGVkIHtcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDRweCAtMzhweDtcbiAgICB9XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbGFyZ2UsIHRydWUpIHtcbiAgICAgICY6aG92ZXIsXG4gICAgICAmOmFjdGl2ZSxcbiAgICAgICY6Zm9jdXMge1xuICAgICAgICBvdXRsaW5lOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy4uL2ltYWdlcy9zZWFyY2hpY29uLnBuZycpO1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAzcHggLTUxcHg7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIC5sdC1pZTkgJiB7XG4gICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcuLi9pbWFnZXMvc2VhcmNoaWNvbi1pZS5wbmcnKTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAzcHggLTUxcHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICYuYWN0aXZhdGVkIHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogM3B4IC01MXB4O1xuICAgICAgICAubHQtaWU5ICYge1xuICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vaW1hZ2VzL3NlYXJjaGljb24taWUucG5nJyk7XG4gICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogM3B4IC01MXB4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5idXR0b24tLXByaW1hcnkge1xuICAgIGNvbG9yOiAjMDAwO1xuICB9XG4gIGlucHV0LmZvcm0tdGV4dDpmb2N1cywgaW5wdXQuZm9ybS1maWxlOmZvY3VzLCB0ZXh0YXJlYS5mb3JtLXRleHRhcmVhOmZvY3VzLCBzZWxlY3QuZm9ybS1zZWxlY3Q6Zm9jdXMsICBpbnB1dC5mb3JtLXRleHQ6YWN0aXZlLCBpbnB1dC5mb3JtLWZpbGU6YWN0aXZlLCB0ZXh0YXJlYS5mb3JtLXRleHRhcmVhOmFjdGl2ZSwgc2VsZWN0LmZvcm0tc2VsZWN0OmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3JkZXItY29sb3I6ICNmZmY7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdyhub25lKTtcbiAgfVxuICBpbnB1dFt0eXBlPVwic3VibWl0XCJdLFxuICBpbnB1dFt0eXBlPVwic2VhcmNoXCJdIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygwKTtcbiAgfVxuICAuY2xyaW5wdXQge1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBjb2xvcjogJGNvbG9yLWdyZXk7XG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogI2ZmZjtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIENvbnZlcnQgcGl4ZWxzIHRvIGVtcyBiYXNlZCBvbiBhIGNvbnRleHQgdmFsdWUgKGJhc2UgZm9udCBzaXplIGlzIGRlZmF1bHQpLlxuQGZ1bmN0aW9uIGVtKCRwaXhlbHMsICRjb250ZXh0OiAkYmFzZS1mb250LXNpemUpIHtcbiAgQHJldHVybiAjeyRwaXhlbHMvJGNvbnRleHR9ZW1cbn0iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIENTUyBUcmFuc2l0aW9uc1xuLy8gQ3VycmVudGx5IG9ubHkgd29ya3MgaW4gV2Via2l0LlxuLy9cbi8vICogZXhwZWN0ZWQgaW4gQ1NTMywgRmlyZUZveCAzLjYvNyBhbmQgT3BlcmEgUHJlc3RvIDIuM1xuLy8gKiBXZSdsbCBiZSBwcmVwYXJlZC5cbi8vXG4vLyBJbmNsdWRpbmcgdGhpcyBzdWJtb2R1bGUgc2V0cyBmb2xsb3dpbmcgZGVmYXVsdHMgZm9yIHRoZSBtaXhpbnM6XG4vL1xuLy8gICAgICRkZWZhdWx0LXRyYW5zaXRpb24tcHJvcGVydHkgOiBhbGxcbi8vICAgICAkZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uIDogMXNcbi8vICAgICAkZGVmYXVsdC10cmFuc2l0aW9uLWZ1bmN0aW9uIDogZmFsc2Vcbi8vICAgICAkZGVmYXVsdC10cmFuc2l0aW9uLWRlbGF5ICAgIDogZmFsc2Vcbi8vXG4vLyBPdmVycmlkZSB0aGVtIGlmIHlvdSBsaWtlLiBUaW1pbmctZnVuY3Rpb24gYW5kIGRlbGF5IGFyZSBzZXQgdG8gZmFsc2UgZm9yIGJyb3dzZXIgZGVmYXVsdHMgKGVhc2UsIDBzKS5cblxuJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogYWxsICFkZWZhdWx0O1xuXG4kZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAxcyAhZGVmYXVsdDtcblxuJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbjogZmFsc2UgIWRlZmF1bHQ7XG5cbiRkZWZhdWx0LXRyYW5zaXRpb24tZGVsYXk6IGZhbHNlICFkZWZhdWx0O1xuXG4kdHJhbnNpdGlvbmFibGUtcHJlZml4ZWQtdmFsdWVzOiB0cmFuc2Zvcm0sIHRyYW5zZm9ybS1vcmlnaW4gIWRlZmF1bHQ7XG5cbi8vIE9uZSBvciBtb3JlIHByb3BlcnRpZXMgdG8gdHJhbnNpdGlvblxuLy9cbi8vICogZm9yIG11bHRpcGxlLCB1c2UgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdFxuLy8gKiBhbHNvIGFjY2VwdHMgXCJhbGxcIiBvciBcIm5vbmVcIlxuXG5AbWl4aW4gdHJhbnNpdGlvbi1wcm9wZXJ0eSgkcHJvcGVydHktMTogJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eSxcbiAgJHByb3BlcnR5LTIgOiBmYWxzZSxcbiAgJHByb3BlcnR5LTMgOiBmYWxzZSxcbiAgJHByb3BlcnR5LTQgOiBmYWxzZSxcbiAgJHByb3BlcnR5LTUgOiBmYWxzZSxcbiAgJHByb3BlcnR5LTYgOiBmYWxzZSxcbiAgJHByb3BlcnR5LTcgOiBmYWxzZSxcbiAgJHByb3BlcnR5LTggOiBmYWxzZSxcbiAgJHByb3BlcnR5LTkgOiBmYWxzZSxcbiAgJHByb3BlcnR5LTEwOiBmYWxzZVxuKSB7XG4gIEBpZiB0eXBlLW9mKCRwcm9wZXJ0eS0xKSA9PSBzdHJpbmcgeyAkcHJvcGVydHktMTogdW5xdW90ZSgkcHJvcGVydHktMSk7IH1cbiAgJHByb3BlcnRpZXM6IGNvbXBhY3QoJHByb3BlcnR5LTEsICRwcm9wZXJ0eS0yLCAkcHJvcGVydHktMywgJHByb3BlcnR5LTQsICRwcm9wZXJ0eS01LCAkcHJvcGVydHktNiwgJHByb3BlcnR5LTcsICRwcm9wZXJ0eS04LCAkcHJvcGVydHktOSwgJHByb3BlcnR5LTEwKTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5IDogcHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oLXdlYmtpdCwgJHByb3BlcnRpZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgICAgICAgIC1tb3otdHJhbnNpdGlvbi1wcm9wZXJ0eSA6IHByZWZpeGVkLWZvci10cmFuc2l0aW9uKC1tb3osICAgICRwcm9wZXJ0aWVzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgICAgICAgIC1vLXRyYW5zaXRpb24tcHJvcGVydHkgOiBwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigtbywgICAgICAkcHJvcGVydGllcyk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uLXByb3BlcnR5IDogJHByb3BlcnRpZXM7XG59XG5cbi8vIE9uZSBvciBtb3JlIGR1cmF0aW9ucyBpbiBzZWNvbmRzXG4vL1xuLy8gKiBmb3IgbXVsdGlwbGUsIHVzZSBhIGNvbW1hLWRlbGltaXRlZCBsaXN0XG4vLyAqIHRoZXNlIGR1cmF0aW9ucyB3aWxsIGFmZmVjdCB0aGUgcHJvcGVydGllcyBpbiB0aGUgc2FtZSBsaXN0IHBvc2l0aW9uXG5cbkBtaXhpbiB0cmFuc2l0aW9uLWR1cmF0aW9uKCRkdXJhdGlvbi0xOiAkZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uLFxuICAkZHVyYXRpb24tMiA6IGZhbHNlLFxuICAkZHVyYXRpb24tMyA6IGZhbHNlLFxuICAkZHVyYXRpb24tNCA6IGZhbHNlLFxuICAkZHVyYXRpb24tNSA6IGZhbHNlLFxuICAkZHVyYXRpb24tNiA6IGZhbHNlLFxuICAkZHVyYXRpb24tNyA6IGZhbHNlLFxuICAkZHVyYXRpb24tOCA6IGZhbHNlLFxuICAkZHVyYXRpb24tOSA6IGZhbHNlLFxuICAkZHVyYXRpb24tMTA6IGZhbHNlXG4pIHtcbiAgQGlmIHR5cGUtb2YoJGR1cmF0aW9uLTEpID09IHN0cmluZyB7ICRkdXJhdGlvbi0xOiB1bnF1b3RlKCRkdXJhdGlvbi0xKTsgfVxuICAkZHVyYXRpb25zOiBjb21wYWN0KCRkdXJhdGlvbi0xLCAkZHVyYXRpb24tMiwgJGR1cmF0aW9uLTMsICRkdXJhdGlvbi00LCAkZHVyYXRpb24tNSwgJGR1cmF0aW9uLTYsICRkdXJhdGlvbi03LCAkZHVyYXRpb24tOCwgJGR1cmF0aW9uLTksICRkdXJhdGlvbi0xMCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0cmFuc2l0aW9uLWR1cmF0aW9uLCAkZHVyYXRpb25zLFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIE9uZSBvciBtb3JlIHRpbWluZyBmdW5jdGlvbnNcbi8vXG4vLyAqIFsgZWFzZSB8IGxpbmVhciB8IGVhc2UtaW4gfCBlYXNlLW91dCB8IGVhc2UtaW4tb3V0IHwgY3ViaWMtYmV6aWVyKHgxLCB5MSwgeDIsIHkyKV1cbi8vICogRm9yIG11bHRpcGxlLCB1c2UgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdFxuLy8gKiBUaGVzZSBmdW5jdGlvbnMgd2lsbCBlZmZlY3QgdGhlIHByb3BlcnRpZXMgaW4gdGhlIHNhbWUgbGlzdCBwb3NpdGlvblxuXG5AbWl4aW4gdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24oJGZ1bmN0aW9uLTE6ICRkZWZhdWx0LXRyYW5zaXRpb24tZnVuY3Rpb24sXG4gICRmdW5jdGlvbi0yIDogZmFsc2UsXG4gICRmdW5jdGlvbi0zIDogZmFsc2UsXG4gICRmdW5jdGlvbi00IDogZmFsc2UsXG4gICRmdW5jdGlvbi01IDogZmFsc2UsXG4gICRmdW5jdGlvbi02IDogZmFsc2UsXG4gICRmdW5jdGlvbi03IDogZmFsc2UsXG4gICRmdW5jdGlvbi04IDogZmFsc2UsXG4gICRmdW5jdGlvbi05IDogZmFsc2UsXG4gICRmdW5jdGlvbi0xMDogZmFsc2Vcbikge1xuICAkZnVuY3Rpb24tMTogdW5xdW90ZSgkZnVuY3Rpb24tMSk7XG4gICRmdW5jdGlvbnM6IGNvbXBhY3QoJGZ1bmN0aW9uLTEsICRmdW5jdGlvbi0yLCAkZnVuY3Rpb24tMywgJGZ1bmN0aW9uLTQsICRmdW5jdGlvbi01LCAkZnVuY3Rpb24tNiwgJGZ1bmN0aW9uLTcsICRmdW5jdGlvbi04LCAkZnVuY3Rpb24tOSwgJGZ1bmN0aW9uLTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uLCAkZnVuY3Rpb25zLFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIE9uZSBvciBtb3JlIHRyYW5zaXRpb24tZGVsYXlzIGluIHNlY29uZHNcbi8vXG4vLyAqIGZvciBtdWx0aXBsZSwgdXNlIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Rcbi8vICogdGhlc2UgZGVsYXlzIHdpbGwgZWZmZWN0IHRoZSBwcm9wZXJ0aWVzIGluIHRoZSBzYW1lIGxpc3QgcG9zaXRpb25cblxuQG1peGluIHRyYW5zaXRpb24tZGVsYXkoJGRlbGF5LTE6ICRkZWZhdWx0LXRyYW5zaXRpb24tZGVsYXksXG4gICRkZWxheS0yIDogZmFsc2UsXG4gICRkZWxheS0zIDogZmFsc2UsXG4gICRkZWxheS00IDogZmFsc2UsXG4gICRkZWxheS01IDogZmFsc2UsXG4gICRkZWxheS02IDogZmFsc2UsXG4gICRkZWxheS03IDogZmFsc2UsXG4gICRkZWxheS04IDogZmFsc2UsXG4gICRkZWxheS05IDogZmFsc2UsXG4gICRkZWxheS0xMDogZmFsc2Vcbikge1xuICBAaWYgdHlwZS1vZigkZGVsYXktMSkgPT0gc3RyaW5nIHsgJGRlbGF5LTE6IHVucXVvdGUoJGRlbGF5LTEpOyB9XG4gICRkZWxheXM6IGNvbXBhY3QoJGRlbGF5LTEsICRkZWxheS0yLCAkZGVsYXktMywgJGRlbGF5LTQsICRkZWxheS01LCAkZGVsYXktNiwgJGRlbGF5LTcsICRkZWxheS04LCAkZGVsYXktOSwgJGRlbGF5LTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zaXRpb24tZGVsYXksICRkZWxheXMsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gVHJhbnNpdGlvbiBhbGwtaW4tb25lIHNob3J0aGFuZFxuXG5AbWl4aW4gc2luZ2xlLXRyYW5zaXRpb24oXG4gICRwcm9wZXJ0eTogJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eSxcbiAgJGR1cmF0aW9uOiAkZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uLFxuICAkZnVuY3Rpb246ICRkZWZhdWx0LXRyYW5zaXRpb24tZnVuY3Rpb24sXG4gICRkZWxheTogJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheVxuKSB7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oY29tcGFjdCgkcHJvcGVydHkgJGR1cmF0aW9uICRmdW5jdGlvbiAkZGVsYXkpKTtcbn1cblxuQG1peGluIHRyYW5zaXRpb24oXG4gICR0cmFuc2l0aW9uLTEgOiBkZWZhdWx0LFxuICAkdHJhbnNpdGlvbi0yIDogZmFsc2UsXG4gICR0cmFuc2l0aW9uLTMgOiBmYWxzZSxcbiAgJHRyYW5zaXRpb24tNCA6IGZhbHNlLFxuICAkdHJhbnNpdGlvbi01IDogZmFsc2UsXG4gICR0cmFuc2l0aW9uLTYgOiBmYWxzZSxcbiAgJHRyYW5zaXRpb24tNyA6IGZhbHNlLFxuICAkdHJhbnNpdGlvbi04IDogZmFsc2UsXG4gICR0cmFuc2l0aW9uLTkgOiBmYWxzZSxcbiAgJHRyYW5zaXRpb24tMTA6IGZhbHNlXG4pIHtcbiAgQGlmICR0cmFuc2l0aW9uLTEgPT0gZGVmYXVsdCB7XG4gICAgJHRyYW5zaXRpb24tMSA6IGNvbXBhY3QoJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eSAkZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uICRkZWZhdWx0LXRyYW5zaXRpb24tZnVuY3Rpb24gJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheSk7XG4gIH1cbiAgJHRyYW5zaXRpb25zOiBmYWxzZTtcbiAgQGlmIHR5cGUtb2YoJHRyYW5zaXRpb24tMSkgPT0gbGlzdCBhbmQgdHlwZS1vZihudGgoJHRyYW5zaXRpb24tMSwxKSkgPT0gbGlzdCB7XG4gICAgJHRyYW5zaXRpb25zOiBqb2luKCR0cmFuc2l0aW9uLTEsIGNvbXBhY3QoJHRyYW5zaXRpb24tMiwgJHRyYW5zaXRpb24tMywgJHRyYW5zaXRpb24tNCwgJHRyYW5zaXRpb24tNSwgJHRyYW5zaXRpb24tNiwgJHRyYW5zaXRpb24tNywgJHRyYW5zaXRpb24tOCwgJHRyYW5zaXRpb24tOSwgJHRyYW5zaXRpb24tMTApLCBjb21tYSk7XG4gIH0gQGVsc2Uge1xuICAgICR0cmFuc2l0aW9ucyA6IGNvbXBhY3QoJHRyYW5zaXRpb24tMSwgJHRyYW5zaXRpb24tMiwgJHRyYW5zaXRpb24tMywgJHRyYW5zaXRpb24tNCwgJHRyYW5zaXRpb24tNSwgJHRyYW5zaXRpb24tNiwgJHRyYW5zaXRpb24tNywgJHRyYW5zaXRpb24tOCwgJHRyYW5zaXRpb24tOSwgJHRyYW5zaXRpb24tMTApO1xuICB9XG4gICRkZWxheXM6IGNvbW1hLWxpc3QoKTtcbiAgJGhhcy1kZWxheXM6IGZhbHNlO1xuICAkd2Via2l0LXZhbHVlOiBjb21tYS1saXN0KCk7XG4gICRtb3otdmFsdWU6IGNvbW1hLWxpc3QoKTtcbiAgJG8tdmFsdWU6IGNvbW1hLWxpc3QoKTtcblxuICAvLyBUaGlzIGJsb2NrIGNhbiBiZSBtYWRlIGNvbnNpZGVyYWJseSBzaW1wbGVyIGF0IHRoZSBwb2ludCBpbiB0aW1lIHRoYXRcbiAgLy8gd2Ugbm8gbG9uZ2VyIG5lZWQgdG8gZGVhbCB3aXRoIHRoZSBkaWZmZXJlbmNlcyBpbiBob3cgZGVsYXlzIGFyZSB0cmVhdGVkLlxuICBAZWFjaCAkdHJhbnNpdGlvbiBpbiAkdHJhbnNpdGlvbnMge1xuICAgIC8vIEV4dHJhY3QgdGhlIHZhbHVlcyBmcm9tIHRoZSBsaXN0XG4gICAgLy8gKHRoaXMgd291bGQgYmUgY2xlYW5lciBpZiBudGggdG9vayBhIDNyZCBhcmd1bWVudCB0byBwcm92aWRlIGEgZGVmYXVsdCB2YWx1ZSkuXG4gICAgJHByb3BlcnR5OiBudGgoJHRyYW5zaXRpb24sIDEpO1xuICAgICRkdXJhdGlvbjogZmFsc2U7XG4gICAgJHRpbWluZy1mdW5jdGlvbjogZmFsc2U7XG4gICAgJGRlbGF5OiBmYWxzZTtcbiAgICBAaWYgbGVuZ3RoKCR0cmFuc2l0aW9uKSA+IDEgeyAkZHVyYXRpb246ICAgICAgICBudGgoJHRyYW5zaXRpb24sIDIpOyB9XG4gICAgQGlmIGxlbmd0aCgkdHJhbnNpdGlvbikgPiAyIHsgJHRpbWluZy1mdW5jdGlvbjogbnRoKCR0cmFuc2l0aW9uLCAzKTsgfVxuICAgIEBpZiBsZW5ndGgoJHRyYW5zaXRpb24pID4gMyB7ICRkZWxheTogICAgICAgICAgIG50aCgkdHJhbnNpdGlvbiwgNCk7ICRoYXMtZGVsYXlzOiB0cnVlOyB9XG5cbiAgICAvLyBJZiBhIGRlbGF5IGlzIHByb3ZpZGVkIHdpdGhvdXQgYSB0aW1pbmcgZnVuY3Rpb25cbiAgICBAaWYgaXMtdGltZSgkdGltaW5nLWZ1bmN0aW9uKSBhbmQgbm90ICRkZWxheSB7ICRkZWxheTogJHRpbWluZy1mdW5jdGlvbjsgJHRpbWluZy1mdW5jdGlvbjogZmFsc2U7ICRoYXMtZGVsYXlzOiB0cnVlOyB9XG5cbiAgICAvLyBLZWVwIGEgbGlzdCBvZiBkZWxheXMgaW4gY2FzZSBvbmUgaXMgc3BlY2lmaWVkXG4gICAgJGRlbGF5czogYXBwZW5kKCRkZWxheXMsIGlmKCRkZWxheSwgJGRlbGF5LCAwcykpO1xuXG4gICAgJHdlYmtpdC12YWx1ZTogYXBwZW5kKCR3ZWJraXQtdmFsdWUsIGNvbXBhY3QocHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oLXdlYmtpdCwgJHByb3BlcnR5KSAkZHVyYXRpb24gJHRpbWluZy1mdW5jdGlvbikpO1xuICAgICAgICRtb3otdmFsdWU6IGFwcGVuZCggICAkbW96LXZhbHVlLCBjb21wYWN0KHByZWZpeGVkLWZvci10cmFuc2l0aW9uKCAgIC1tb3osICRwcm9wZXJ0eSkgJGR1cmF0aW9uICR0aW1pbmctZnVuY3Rpb24gJGRlbGF5KSk7XG4gICAgICAgICAkby12YWx1ZTogYXBwZW5kKCAgICAgJG8tdmFsdWUsIGNvbXBhY3QocHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oICAgICAtbywgJHByb3BlcnR5KSAkZHVyYXRpb24gJHRpbWluZy1mdW5jdGlvbiAkZGVsYXkpKTtcbiAgfVxuXG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbiA6ICR3ZWJraXQtdmFsdWU7XG4gICAgLy8gb2xkIHdlYmtpdCBkb2Vzbid0IHN1cHBvcnQgdGhlIGRlbGF5IHBhcmFtZXRlciBpbiB0aGUgc2hvcnRoYW5kIHNvIHdlIHByb2dyZXNzaXZlbHkgZW5oYW5jZSBpdC5cbiAgICBAaWYgJGhhcy1kZWxheXMgICAgICAgICAgICAgICAgICAgICAgIHsgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5IDogJGRlbGF5czsgICAgICAgfSB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgICAgICAgIC1tb3otdHJhbnNpdGlvbiA6ICRtb3otdmFsdWU7ICAgIH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAgICAgICAtby10cmFuc2l0aW9uIDogJG8tdmFsdWU7ICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb24gOiAkdHJhbnNpdGlvbnM7XG59XG5cbi8vIGNvZXJjZSBhIGxpc3QgdG8gYmUgY29tbWEgZGVsaW1pdGVkIG9yIG1ha2UgYSBuZXcsIGVtcHR5IGNvbW1hIGRlbGltaXRlZCBsaXN0LlxuQGZ1bmN0aW9uIGNvbW1hLWxpc3QoJGxpc3Q6ICgpKSB7XG4gIEByZXR1cm4gam9pbigoKSwgJGxpc3QsIGNvbW1hKTtcbn1cblxuLy8gUmV0dXJucyBgJHByb3BlcnR5YCB3aXRoIHRoZSBnaXZlbiBwcmVmaXggaWYgaXQgaXMgZm91bmQgaW4gYCR0cmFuc2l0aW9uYWJsZS1wcmVmaXhlZC12YWx1ZXNgLlxuQGZ1bmN0aW9uIHByZWZpeGVkLWZvci10cmFuc2l0aW9uKCRwcmVmaXgsICRwcm9wZXJ0eSkge1xuICBAaWYgdHlwZS1vZigkcHJvcGVydHkpID09IGxpc3Qge1xuICAgICRuZXctbGlzdDogY29tbWEtbGlzdCgpO1xuICAgIEBlYWNoICR2IGluICRwcm9wZXJ0eSB7XG4gICAgICAkbmV3LWxpc3Q6IGFwcGVuZCgkbmV3LWxpc3QsIHByZWZpeGVkLWZvci10cmFuc2l0aW9uKCRwcmVmaXgsICR2KSk7XG4gICAgfVxuICAgIEByZXR1cm4gJG5ldy1saXN0O1xuICB9IEBlbHNlIHtcbiAgICBAaWYgaW5kZXgoJHRyYW5zaXRpb25hYmxlLXByZWZpeGVkLXZhbHVlcywgJHByb3BlcnR5KSB7XG4gICAgICBAcmV0dXJuICN7JHByZWZpeH0tI3skcHJvcGVydHl9O1xuICAgIH0gQGVsc2Uge1xuICAgICAgQHJldHVybiAkcHJvcGVydHk7XG4gICAgfVxuICB9XG59XG5cbi8vIENoZWNrcyBpZiB0aGUgdmFsdWUgZ2l2ZW4gaXMgYSB1bml0IG9mIHRpbWUuXG5AZnVuY3Rpb24gaXMtdGltZSgkdmFsdWUpIHtcbiAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSBudW1iZXIge1xuICAgIEByZXR1cm4gbm90KG5vdChpbmRleChzIG1zLCB1bml0KCR2YWx1ZSkpKSk7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIi8vIEluZGljYXRlcyB0aGUgZGlyZWN0aW9uIHlvdSBwcmVmZXIgdG8gbW92ZSB5b3VyIHRleHRcbi8vIHdoZW4gaGlkaW5nIGl0LlxuLy9cbi8vIGBsZWZ0YCBpcyBtb3JlIHJvYnVzdCwgZXNwZWNpYWxseSBpbiBvbGRlciBicm93c2Vycy5cbi8vIGByaWdodGAgc2VlbXMgaGF2ZSBiZXR0ZXIgcnVudGltZSBwZXJmb3JtYW5jZS5cbiRoaWRlLXRleHQtZGlyZWN0aW9uOiBsZWZ0ICFkZWZhdWx0O1xuXG4vLyBIaWRlcyBodG1sIHRleHQgYW5kIHJlcGxhY2VzIGl0IHdpdGggYW4gaW1hZ2UuXG4vLyBJZiB5b3UgdXNlIHRoaXMgb24gYW4gaW5saW5lIGVsZW1lbnQsIHlvdSB3aWxsIG5lZWQgdG8gY2hhbmdlIHRoZSBkaXNwbGF5IHRvIGJsb2NrIG9yIGlubGluZS1ibG9jay5cbi8vIEFsc28sIGlmIHRoZSBzaXplIG9mIHRoZSBpbWFnZSBkaWZmZXJzIHNpZ25pZmljYW50bHkgZnJvbSB0aGUgZm9udCBzaXplLCB5b3UnbGwgbmVlZCB0byBzZXQgdGhlIHdpZHRoIGFuZC9vciBoZWlnaHQuXG4vL1xuLy8gUGFyYW1ldGVyczpcbi8vXG4vLyAqIGBpbWdgIC0tIHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gdGhlIHByb2plY3QgaW1hZ2UgZGlyZWN0b3J5IHRvIHRoZSBpbWFnZSwgb3IgYSB1cmwgbGl0ZXJhbC5cbi8vICogYHhgIC0tIHRoZSB4IHBvc2l0aW9uIG9mIHRoZSBiYWNrZ3JvdW5kIGltYWdlLlxuLy8gKiBgeWAgLS0gdGhlIHkgcG9zaXRpb24gb2YgdGhlIGJhY2tncm91bmQgaW1hZ2UuXG5AbWl4aW4gcmVwbGFjZS10ZXh0KCRpbWcsICR4OiA1MCUsICR5OiA1MCUpIHtcbiAgQGluY2x1ZGUgaGlkZS10ZXh0O1xuICBiYWNrZ3JvdW5kOiB7XG4gICAgQGlmIGlzLXVybCgkaW1nKSB7XG4gICAgICBpbWFnZTogJGltZztcbiAgICB9IEBlbHNlIHtcbiAgICAgIGltYWdlOiBpbWFnZS11cmwoJGltZyk7XG4gICAgfVxuICAgIHJlcGVhdDogbm8tcmVwZWF0O1xuICAgIHBvc2l0aW9uOiAkeCAkeTtcbiAgfTtcbn1cblxuLy8gTGlrZSB0aGUgYHJlcGxhY2UtdGV4dGAgbWl4aW4sIGJ1dCBhbHNvIHNldHMgdGhlIHdpZHRoXG4vLyBhbmQgaGVpZ2h0IG9mIHRoZSBlbGVtZW50IGFjY29yZGluZyB0aGUgZGltZW5zaW9ucyBvZiB0aGUgaW1hZ2UuXG4vL1xuLy8gSWYgeW91IHNldCBgJGlubGluZWAgdG8gdHJ1ZSwgdGhlbiBhbiBpbmxpbmUgaW1hZ2UgKGRhdGEgdXJpKSB3aWxsIGJlIHVzZWQuXG5AbWl4aW4gcmVwbGFjZS10ZXh0LXdpdGgtZGltZW5zaW9ucygkaW1nLCAkeDogNTAlLCAkeTogNTAlLCAkaW5saW5lOiBmYWxzZSkge1xuICBAaW5jbHVkZSByZXBsYWNlLXRleHQoaWYoJGlubGluZSwgaW5saW5lLWltYWdlKCRpbWcpLCAkaW1nKSwgJHgsICR5KTtcbiAgd2lkdGg6IGltYWdlLXdpZHRoKCRpbWcpO1xuICBoZWlnaHQ6IGltYWdlLWhlaWdodCgkaW1nKTtcbn1cblxuLy8gSGlkZXMgdGV4dCBpbiBhbiBlbGVtZW50IHNvIHlvdSBjYW4gc2VlIHRoZSBiYWNrZ3JvdW5kLlxuLy9cbi8vIFRoZSBkaXJlY3Rpb24gaW5kaWNhdGVzIGhvdyB0aGUgdGV4dCBzaG91bGQgYmUgbW92ZWQgb3V0IG9mIHZpZXcuXG4vL1xuLy8gU2VlIGAkaGlkZS10ZXh0LWRpcmVjdGlvbmAgZm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIHRvIHNldCB0aGlzIGdsb2JhbGx5XG4vLyBmb3IgeW91ciBhcHBsaWNhdGlvbi5cbkBtaXhpbiBoaWRlLXRleHQoJGRpcmVjdGlvbjogJGhpZGUtdGV4dC1kaXJlY3Rpb24pIHtcbiAgQGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgJGFwcHJveGltYXRlLWVtLXZhbHVlOiAxMnB4IC8gMWVtO1xuICAgICR3aWRlci10aGFuLWFueS1zY3JlZW46IC05OTk5ZW07XG4gICAgdGV4dC1pbmRlbnQ6ICR3aWRlci10aGFuLWFueS1zY3JlZW4gKiAkYXBwcm94aW1hdGUtZW0tdmFsdWU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB9IEBlbHNlIHtcbiAgICAvLyBzbGlnaHRseSB3aWRlciB0aGFuIHRoZSBib3ggcHJldmVudHMgaXNzdWVzIHdpdGggaW5saW5lLWJsb2NrIGVsZW1lbnRzXG4gICAgdGV4dC1pbmRlbnQ6IDExMCU7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG59XG5cbi8vIEhpZGVzIHRleHQgaW4gYW4gZWxlbWVudCBieSBzcXVpc2hpbmcgdGhlIHRleHQgaW50byBvYmxpdmlvbi5cbi8vIFVzZSB0aGlzIGlmIHlvdSBuZWVkIHRvIGhpZGUgdGV4dCBjb250YWluZWQgaW4gYW4gaW5saW5lIGVsZW1lbnRcbi8vIGJ1dCBzdGlsbCBoYXZlIGl0IHJlYWQgYnkgYSBzY3JlZW4gcmVhZGVyLlxuQG1peGluIHNxdWlzaC10ZXh0IHtcbiAgZm9udDogMC8wIHNlcmlmO1xuICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xufVxuIiwiLnZlcnRpY2FsLXRhYnMge1xuICB1bC52ZXJ0aWNhbC10YWJzLWxpc3Qge1xuICAgIGxpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRib3gtYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgIGEge1xuICAgICAgICAmOmFjdGl2ZSxcbiAgICAgICAgJjpmb2N1cyxcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgc3Ryb25nIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYm9keS1jb3B5LWNvbG9yO1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdHJvbmcge1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvKipcbiAqICRBQ1RJT04tTElOS1NcbiAqL1xuLmFjdGlvbi1saW5rcyB7XG4gIEBleHRlbmQgJWhsaXN0O1xuICBtYXJnaW4tYm90dG9tOiAkdmVydC1zcGFjaW5nLXVuaXQ7XG5cbiAgbGkge1xuICAgIHBhZGRpbmctbGVmdDogMTZweDtcblxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCgnLi4vaW1hZ2VzL3BsdXMtYmx1ZS5wbmcnKSBsZWZ0IGNlbnRlciBuby1yZXBlYXQ7XG5cbiAgICBhIHtcbiAgICAgIGNvbG9yOiAkbGluay1jb2xvcjtcbiAgICAgIEBpbmNsdWRlIG5vdW5kZXJsaW5lKCk7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4iLCIvKipcbiAqICRCUkVBRENSVU1CXG4gKi9cbi5icmVhZGNydW1iIHtcbiAgQGV4dGVuZCAlaGxpc3Q7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luOiAxZW0gMCAwO1xuXG4gIGxpIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjRlbTtcbiAgICBAaW5jbHVkZSBmb250LXNpemUoMTNweCk7XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiPlwiO1xuICAgICAgcGFkZGluZy1sZWZ0OiAwLjRlbTtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgICAgIGNvbG9yOiAkY29sb3ItZGFyay1ncmV5XG4gICAgfVxuLy8gICAgJjpsYXN0LWNoaWxkOmFmdGVyIHtcbi8vICAgICAgY29udGVudDogXCJcIjtcbi8vICAgIH1cbiAgfVxuXG4gIGEge1xuICAgIEBpbmNsdWRlIG5vdW5kZXJsaW5lKCk7XG4gICAgQGluY2x1ZGUgbGluay1jb2xvcnMoJGNvbG9yLWdyZXksICRjb2xvci1jYXJtaW5lKTtcbiAgfVxuXG4gIC8qIFRlbXBvcmFyaWx5IGhpZGUgb24gTGFuZGluZyBQYWdlcyAqL1xuICAubGFuZGluZy1wYWdlICYge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLmJyZWFkY3J1bWIgKyBoMSB7XG4gIG1hcmdpbi10b3A6IDVweDtcbn0iLCIuY29udGV4dHVhbC1saW5rcyB7XG4gIHRvcDogMTdweDtcbiAgYSB7XG4gICAgQGluY2x1ZGUgbm91bmRlcmxpbmUoKTtcbiAgfVxufVxuXG4uY29udGV4dHVhbC1saW5rcy10cmlnZ2VyIHtcbiAgd2lkdGg6IDMycHg7XG59XG4iLCJoZWFkZXIubC1oZWFkZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDEwMDtcbn1cblxuLy8gUmVnaW9uIHN0eWxpbmcuXG4ubC1yZWdpb24tLW5hdmlnYXRpb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWFpbi1tZW51LWJnLWNvbG9yO1xufVxuXG4ucmVzcG9uc2l2ZS1tZW51LWJsb2NrLXdyYXBwZXIge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG5odG1sLm1tLW9wZW5lZCAubW0tcGFnZSB7XG4gIHBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50O1xuICB3aWR0aDogMTAwJTtcbn1cblxuLm1tLXBhZ2Uge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3Itd2hpdGUtc21va2U7XG59XG5cbi5ibG9jay0tcmVzcG9uc2l2ZS1tZW51LWhvcml6b250YWwtbWVudSB7XG4gIHdpZHRoOiA4NSU7XG4gIG1heC13aWR0aDogMTM1NXB4O1xuICBtYXJnaW46IDAgYXV0bztcbn1cblxuJG1lbnUtaXRlbS13aWR0aDogMTQuNzVlbTtcblxuLmhvcml6b250YWwtbWVudSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBtYXJnaW4tbGVmdDogMDtcbiAgcGFkZGluZzogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgZm9udC1zaXplOiAwLjg3NWVtO1xuICBib3JkZXI6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBpbmxpbmUtdGFibGU7XG4gIGxpbmUtaGVpZ2h0OiAyLjc1ZW07XG59XG5cbi5ob3Jpem9udGFsLW1lbnUgPiBsaSB7XG4gIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLy8gRmlyc3QgbGV2ZWwgaXRlbXMuXG4uaG9yaXpvbnRhbC1tZW51ID4gbGkgPiBhIHtcbiAgZm9udC1zaXplOiAxNHB4OyAvLyAxM3B4IGNhdXNpbmcgbGluZS1icmVhayBpc3N1ZSBpbiBDaHJvbWUuXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZzogMC4yZW0gMS43ZW07XG4gIGxldHRlci1zcGFjaW5nOiAwLjJweDtcbiAgLmx0LWllOSAmIHtcbiAgICBsZXR0ZXItc3BhY2luZzogbm9ybWFsO1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgfVxuICBkaXNwbGF5OiBibG9jaztcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgxMTk0cHgpIHtcbiAgICBmb250LXNpemU6IDE1cHg7XG4gICAgcGFkZGluZzogMC4yZW0gMS44ZW07XG4gIH1cbiAgJjphZnRlciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBtYXJnaW4tdG9wOiAtMS41NWVtO1xuICAgIGNvbG9yOiB0aW50KCRib2R5LWNvcHktY29sb3IsIDMwJSk7XG4gIH1cbn1cblxuLmhvcml6b250YWwtbWVudSA+IGxpID4gYTpob3Zlcixcbi5ob3Jpem9udGFsLW1lbnUgPiBsaS5hY3RpdmUtdHJhaWwgPiBhIHtcbiAgYmFja2dyb3VuZDogbGlnaHRlbigkbGluYWNyZS15ZWxsb3csIDIwJSk7XG59XG5cbi5ob3Jpem9udGFsLW1lbnUgPiBsaSB7XG4gICY6aG92ZXIsICYuYWN0aXZlLXRyYWlsIHtcbiAgICBAaW5jbHVkZSBhcnJvdyhib3R0b20sIDEycHgsIGxpZ2h0ZW4oJGxpbmFjcmUteWVsbG93LCAyMCUpKTtcbiAgICAmOmFmdGVyIHtcbiAgICAgIHRvcDogOTklO1xuICAgICAgei1pbmRleDogMTAwO1xuICAgIH1cbiAgfVxuICAmOmxhc3QtY2hpbGQge1xuICAgICY6aG92ZXIge1xuICAgICAgJjphZnRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cblxuLmhvcml6b250YWwtbWVudSA+IGxpIHVsIHVsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRlbigkbGluYWNyZS15ZWxsb3csIDQwJSk7XG4gIGxlZnQ6IDEwMCU7XG4gIHdpZHRoOiAkbWVudS1pdGVtLXdpZHRoO1xuICB0b3A6IDA7XG59XG5cbi5ob3Jpem9udGFsLW1lbnUgdWwgLmZseS1sZWZ0IHVsIHtcbiAgbGVmdDogLTEzLjc1ZW07XG59XG5cbi5ob3Jpem9udGFsLW1lbnUgYSB7XG4gIGJvcmRlcjogMDtcbiAgY29sb3I6ICRjb2xvci1ibGFjaztcbiAgQGluY2x1ZGUgZm9udC1zaXplKDE0cHgpO1xuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKCRsaW5hY3JlLXllbGxvdywgMjAlKTtcbiAgfVxufVxuXG4uaG9yaXpvbnRhbC1tZW51ID4gbGkgdWwge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHRvcDogMTAwJTtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogOTk7XG4gIHBhZGRpbmctdG9wOiAwO1xuICBwYWRkaW5nLXJpZ2h0OiAwO1xuICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB3aWR0aDogYXV0bztcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJG1haW4tbWVudS1iZy1jb2xvcjtcbiAgbWluLXdpZHRoOiAxMy4yZW07XG59XG5cbi5ob3Jpem9udGFsLW1lbnUgPiBsaSA+IHVsIHtcbiAgcGFkZGluZy10b3A6IDIwcHg7XG4gIHBhZGRpbmctYm90dG9tOiAxMHB4O1xufVxuXG4uaG9yaXpvbnRhbC1tZW51IGxpLnNmSG92ZXIgPiB1bCxcbi5ob3Jpem9udGFsLW1lbnUgbGk6aG92ZXIgPiB1bCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uaG9yaXpvbnRhbC1tZW51IGxpOmhvdmVyID4gYSB7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4yNXMgZWFzZTtcbn1cblxuLmhvcml6b250YWwtbWVudSBsaSBsaSB7XG4gIGZsb2F0OiBsZWZ0O1xuICB3aWR0aDogMTAwJTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4vLyBQbGFjZXMgYW4gYXJyb3cgdG8gdGhlIHJpZ2h0IG9mIGEgaG92ZXJlZCBzdWIgaXRlbS5cbi5ob3Jpem9udGFsLW1lbnUgbGkgbGkuZXhwYW5kZWQ6aG92ZXIge1xuICBAaW5jbHVkZSBhcnJvdyhyaWdodCwgMTdweCwgbGlnaHRlbigkbGluYWNyZS15ZWxsb3csIDIwJSkpO1xuICAmOmFmdGVyIHtcbiAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50O1xuICAgIHRvcDogMCAhaW1wb3J0YW50O1xuICAgIGxlZnQ6IDk5LjklO1xuICAgIHotaW5kZXg6IDEwMDtcbiAgfVxufVxuXG4vLyBQbGFjZXMgYSBibGFjayBhcnJvdyBhZnRlciBpdGVtcyB3aGljaCBoYXZlIGNoaWxkcmVuLlxuLmhvcml6b250YWwtbWVudSB1bCBsaS5leHBhbmRlZCA+IGE6YWZ0ZXIge1xuICBjb250ZW50OiBcIlxcMjVCQVwiO1xuICBmb250LXNpemU6IDlweDtcbiAgdG9wOiAxMXB4O1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW4tdG9wOiAwO1xuICByaWdodDogMWVtO1xuICBjb2xvcjogbGlnaHRlbigkYm9keS1jb3B5LWNvbG9yLCAxMCUpO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIC8vIEhpZGUgdGhlc2UgdHJpYW5nbGVzIG9uIElFOCBhcyBpdCBjYW4ndCBkaXNwbGF5XG4gIC8vIHRoZW0gcHJvcGVybHkuXG4gIC5sdC1pZTkgJiB7XG4gICAgY29udGVudDogXCJcIjtcbiAgfVxufVxuXG4uaG9yaXpvbnRhbC1tZW51ID4gbGkgPiBsaTpob3ZlciA+IHVsLFxuLmhvcml6b250YWwtbWVudSA+IGxpID4gbGkuc2ZIb3ZlciA+IHVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5ob3Jpem9udGFsLW1lbnUgPiBsaSBsaSA+IGEge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLXRvcDogMC41ZW07XG4gIHBhZGRpbmctcmlnaHQ6IDEuNWVtO1xuICBwYWRkaW5nLWJvdHRvbTogMC41ZW07XG4gIHBhZGRpbmctbGVmdDogMS41ZW07XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICBsaW5lLWhlaWdodDogMS40O1xufVxuXG4ub2ZmLWNhbnZhcy13cmFwcGVyIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5uby1qcyAub2ZmLWNhbnZhcy13cmFwcGVyIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLmJsb2NrLS1yZXNwb25zaXZlLW1lbnUtdG9nZ2xlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDhweDtcbiAgcmlnaHQ6IDE3cHg7XG4gICY6YWZ0ZXIge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBjb250ZW50OiAnTWVudSc7XG4gICAgZm9udC1zaXplOiA3MCU7XG4gICAgbWFyZ2luOiAtNHB4IDEycHggMDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cbn1cblxuLnJlc3BvbnNpdmUtbWVudS10b2dnbGUtaWNvbiB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogNDRweDtcbiAgaGVpZ2h0OiAzNXB4O1xuICB6LWluZGV4OiA0O1xuICBtYXJnaW4tdG9wOiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5uby1qcyAucmVzcG9uc2l2ZS1tZW51LXRvZ2dsZS1pY29uIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLnJlc3BvbnNpdmUtbWVudS10b2dnbGUtaWNvbiBzcGFuLmxhYmVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZm9udC1zaXplOiAxN3B4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB0b3A6IDJweDtcbiAgbGVmdDogNDBweDtcbiAgY29sb3I6ICNmZmY7XG59XG5cbi5yZXNwb25zaXZlLW1lbnUtdG9nZ2xlLWljb246YmVmb3JlLFxuLnJlc3BvbnNpdmUtbWVudS10b2dnbGUtaWNvbjphZnRlcixcbi5yZXNwb25zaXZlLW1lbnUtdG9nZ2xlLWljb24gc3Bhbi5pY29uIHtcbiAgYmFja2dyb3VuZDogI2ZmZjtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMjZweDtcbiAgaGVpZ2h0OiAzcHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAxM3B4O1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG59XG5cbi5yZXNwb25zaXZlLW1lbnUtdG9nZ2xlLWljb246YmVmb3JlIHtcbiAgdG9wOiAxMnB4O1xufVxuXG4ucmVzcG9uc2l2ZS1tZW51LXRvZ2dsZS1pY29uIHNwYW4uaWNvbiB7XG4gIHRvcDogMjBweDtcbn1cblxuLnJlc3BvbnNpdmUtbWVudS10b2dnbGUtaWNvbjphZnRlciB7XG4gIHRvcDogMjhweDtcbn1cblxuLnJlc3BvbnNpdmUtbWVudS10b2dnbGUtaWNvbjpiZWZvcmUsXG4ucmVzcG9uc2l2ZS1tZW51LXRvZ2dsZS1pY29uOmFmdGVyLFxuLnJlc3BvbnNpdmUtbWVudS10b2dnbGUtaWNvbiBzcGFuLmljb24ge1xuICB0cmFuc2l0aW9uOiBub25lIDAuNHMgZWFzZS1vdXQgMC4xcztcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogLXdlYmtpdC10cmFuc2Zvcm0sIHRvcCwgYm90dG9tLCBsZWZ0LCBvcGFjaXR5O1xuICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm0sIHRvcCwgYm90dG9tLCBsZWZ0LCBvcGFjaXR5O1xufVxuXG5odG1sLm1tLW9wZW5pbmcgLnJlc3BvbnNpdmUtbWVudS10b2dnbGUtaWNvbjpiZWZvcmUsXG5odG1sLm1tLW9wZW5pbmcgLnJlc3BvbnNpdmUtbWVudS10b2dnbGUtaWNvbjphZnRlciB7XG4gIHRvcDogMTRweDtcbn1cblxuaHRtbC5tbS1vcGVuaW5nIC5yZXNwb25zaXZlLW1lbnUtdG9nZ2xlLWljb24gc3Bhbi5pY29uIHtcbiAgbGVmdDogLTI1cHg7XG4gIG9wYWNpdHk6IDA7XG59XG5cbmh0bWwubW0tb3BlbmluZyAucmVzcG9uc2l2ZS1tZW51LXRvZ2dsZS1pY29uOmJlZm9yZSB7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG59XG5cbmh0bWwubW0tb3BlbmluZyAucmVzcG9uc2l2ZS1tZW51LXRvZ2dsZS1pY29uOmFmdGVyIHtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xuICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTtcbiAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTtcbn1cblxuI21tLWJsb2NrZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDApO1xufVxuLm1tLW9wZW5pbmcgI21tLWJsb2NrZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMik7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMXMgZWFzZSAwLjNzO1xufVxuLm1tLW9wZW5pbmcgI3BhZ2Uge1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNjY2M7XG59XG5cbi5tbS1saXN0dmlldyB7XG4gIGxpLmFjdGl2ZSB7XG4gICAgY29sb3I6ICNmZmY7XG4gIH1cbn1cblxuIiwiLyoqXG4gKiAkU0VDT05EQVJZLU1FTlVcbiAqXG4gKiBTdHlsaW5nIGZvciBTZWNvbmRhcnkgbWVudSBhcHBlYXJpbmcgaW4gc2lkZWJhciBzZWNvbmRcbiAqL1xuLmwtcmVnaW9uLS1zaWRlYmFyLWZpcnN0LFxuLmwtcmVnaW9uLS1zaWRlYmFyLXNlY29uZCB7XG4gIG5hdiB7XG4gICAgYm9yZGVyLXRvcDogNHB4IHNvbGlkICRjb2xvci13aGl0ZS1zbW9rZTtcbiAgICBwYWRkaW5nOiAxZW07XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1hcmdpbjogMmVtO1xuICAgIHBhZGRpbmctdG9wOiAxZW07XG4gICAgJjphZnRlciB7XG5cbiAgICB9XG4gICAgaDMge1xuICAgICAgY29sb3I6ICRjb2xvci1kYXJrLWdyZXk7XG4gICAgICBAaW5jbHVkZSBmb250LXNpemUoMjBweCk7XG4gICAgfVxuICAgID4gLm1lbnUtYmxvY2std3JhcHBlciA+IC5tZW51IHtcbiAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgIG1hcmdpbjogMDtcbiAgICB9XG4gIH1cbiAgLm1lbnUge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgLmxlYWYsIC5jb2xsYXBzZWQsIC5leHBhbmRlZCB7XG4gICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIH1cbiAgICBsaSB7XG4gICAgICBhIHtcbiAgICAgICAgY29sb3I6IGJsYWNrO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgbWFyZ2luOiAwIDAgMC41ZW07XG4gICAgICAgIGZvbnQtc2l6ZTogOTAlO1xuICAgICAgICAmLmFjdGl2ZSwgJjpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZDogbGlnaHRlbigkbGluYWNyZS15ZWxsb3csMjAlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAgIC5tZW51IHtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDEuNWVtO1xuICAgICAgICAgIGEge1xuICAgICAgICAgIFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5hLmFjdGl2ZS10cmFpbCB7XG4gIGNvbG9yOiAkY29sb3ItYmxhY2s7XG59XG4iLCIvKipcbiAqICRUQUJTXG4gKi9cblxuLy8gTWFya3VwIGdlbmVyYXRlZCBieSB0aGVtZV9tZW51X2xvY2FsX3Rhc2tzKClcbnVsLnRhYnMge1xuICBtYXJnaW4tYm90dG9tOiAxZW07XG4gIC8vIFRhYnMgbGV2ZWwgMS5cbiAgJi50YWJzLS1wcmltYXJ5IHtcbiAgICBtYXJnaW4tdG9wOiAyZW07XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXItYm90dG9tOiA0cHggc29saWQgJGNvbG9yLWFsdG87XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAuZnJvbnQgJiwgLmxhbmRpbmctcGFnZSAmIHtcbi8vICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuLy8gICAgICB0b3A6IC0xNzBweDtcbiAgICAgIG1hcmdpbi10b3A6IDAuMmVtO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMDtcbiAgICB9XG4gICAgbGkge1xuICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwLjI1ZW07XG4gICAgICAuZnJvbnQgJiwgLmxhbmRpbmctcGFnZSAmIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC4yZW07XG4gICAgICB9XG4gICAgICBhIHtcbiAgICAgICAgQGluY2x1ZGUgYWdpbGUtYnV0dG9uKHBsYWluLCBub3JtYWwsIGxpZ2h0ZW4oJGNvbG9yLWFsdG8sIDUlKSwgJGNvbG9yLW5ldmFkYSk7XG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYWx0bztcbiAgICAgICAgICBjb2xvcjogJGNvbG9yLW5ldmFkYTtcbiAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgJi50YWJzLS1zZWNvbmRhcnkge1xuICAgIEBpbmNsdWRlIHN0cmlwLWxpc3Q7XG4gICAgcGFkZGluZzogMC41ZW0gMDtcbiAgICBsaSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDAuMjVlbTtcbiAgICAgIGEge1xuICAgICAgICBAaW5jbHVkZSBub3VuZGVybGluZSgpO1xuICAgICAgICBjb2xvcjogJGNvbG9yLW5ldmFkYTtcbiAgICAgICAgcGFkZGluZzogMC4yNWVtIDFlbSAwLjI1ZW0gMWVtO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKCRjb2xvci1hbHRvLCA4JSk7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogYXV0bztcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwgMC4yNXMgZWFzZSk7XG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYWx0bztcbiAgICAgICAgICBjb2xvcjogJGNvbG9yLW5ldmFkYTtcbiAgICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICB9XG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0cmFuc3BhcmVudCwgcmdiYSgwLCAwLCAwLCAwLjA1KSA2MCUsIHJnYmEoMCwgMCwgMCwgMC4xKSk7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWFsdG87XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8qKlxuICogJEJPUkRFUi1MSVNUXG4gKi9cbi5ib3JkZXItbGlzdCB7XG4gIHBhZGRpbmc6IDA7XG5cbiAgbGlzdC1zdHlsZTogbm9uZTtcblxuICBsaSB7XG4gICAgQGluY2x1ZGUgcGFkZGluZy10cmFpbGVyKDEpO1xuICAgIEBpbmNsdWRlIHRyYWlsZXIoMSk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjb2xvci1hbHRvO1xuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgfVxuICB9XG59XG4iLCIvKipcbiAqICRCVVRUT05TXG4gKi9cblxuLyogQmFzZSBCdXR0b24gKi9cbi5idXR0b24ge1xuICBAaW5jbHVkZSBhZ2lsZS1idXR0b24oKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0U2RTZFNjtcbiAgYm9yZGVyOiAwIG5vbmUgdHJhbnNwYXJlbnQ7XG4gIHBhZGRpbmc6IDAuMjVlbSAxLjVlbSAwLjI1ZW0gMS41ZW07XG5cbiAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwgMC4yNXMgZWFzZSk7XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50LCByZ2JhKDAsIDAsIDAsIDAuMDUpIDYwJSwgcmdiYSgwLCAwLCAwLCAwLjEpKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgJi5kaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgfVxuICAmLmFjdGl2ZSxcbiAgJjphY3RpdmUsXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMXB4IHJnYmEoMCwgMCwgMCwgMC4xNSkgaW5zZXQsIDAgMCA2cHggcmdiYSgwLCAwLCAwLCAwLjIpIGluc2V0O1xuICAgIEBpbmNsdWRlIG5vdW5kZXJsaW5lKCk7XG4gIH1cblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgYm9yZGVyOiBub25lO1xuXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBmb250LXNpemU6IDEwMCU7XG4gIGxpbmUtaGVpZ2h0OiAyLjI7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIEBpbmNsdWRlIG5vd3JhcDtcblxuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICY6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgIGJvcmRlcjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG59XG5cbi8qIEZpbGwgd2lkdGggb2YgY29udGFpbmVyICovXG4uYnV0dG9uLS1mdWxsIHtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmctcmlnaHQ6IDA7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4vKiBJbmhlcml0IHNpemluZyBmcm9tIHBhcmVudCAgKi9cbi5idXR0b24tLW5hdHVyYWwge1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gIGhlaWdodDogYXV0bztcbiAgcGFkZGluZy1yaWdodDogMC41ZW07XG4gIHBhZGRpbmctbGVmdDogMC41ZW07XG59XG5cbi8qIEJ1dHRvbiBGdW5jdGlvbnMgKi9cbi5idXR0b24tLXByaW1hcnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWNjZW50LTE7XG4gIGNvbG9yOiAjZmZmO1xufVxuXG4uYnV0dG9uLS1zZWNvbmRhcnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLWNvbG9yOiAkYWNjZW50LTI7XG4gIEBpbmNsdWRlIHJoeXRobS1ib3JkZXJzKDFweCk7XG4gIGNvbG9yOiAkYWNjZW50LTI7XG5cbiAgJjpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItbmV2YWRhO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGNvbG9yOiAkY29sb3ItbmV2YWRhO1xuICB9XG59XG5cbi5idXR0b24tLXBvc2l0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHBvc2l0aXZlO1xuICBjb2xvcjogJHRleHQtb3Zlci1wb3NpdGl2ZS1jb2xvcjtcbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKCRwb3NpdGl2ZSwgMTAlKTtcbiAgfVxufVxuXG4uYnV0dG9uLS1uZWdhdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRuZWdhdGl2ZS1jb2xvcjtcbiAgY29sb3I6ICNmZmY7XG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbigkbmVnYXRpdmUtY29sb3IsIDEwJSk7XG4gIH1cbn1cblxuLmJ1dHRvbi0tZGlzYWJsZWQsXG4uYnV0dG9uLS1kaXNhYmxlZDpob3Zlcixcbi5idXR0b24tLWRpc2FibGVkOmFjdGl2ZSxcbi5idXR0b24tLWRpc2FibGVkOmZvY3VzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RkZDtcbiAgY29sb3I6ICM3Nzc7XG4gIGN1cnNvcjogZGVmYXVsdDtcbiAgYm94LXNoYWRvdzogbm9uZTtcbn1cblxuLyogQWRqYWNlbnQgYnV0dG9ucyBzaG91bGQgaGF2ZSBzb21lIHNwYWNlIGJldHdlZW4gdGhlbS4gKi9cbi5idXR0b24gKyAuYnV0dG9uLFxuLmJ1dHRvbiArIGEge1xuICBtYXJnaW4tbGVmdDogMWVtO1xufVxuIiwiLy8gV2hlbiByZW1lbWJlcmluZyB3aGV0aGVyIG9yIG5vdCB0aGVyZSdzIGEgaHlwaGVuIGluIHdoaXRlLXNwYWNlIGlzIHRvbyBoYXJkXG5AbWl4aW4gbm93cmFwIHsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuIiwiLmNrZS5ja2VfY2hyb21lIHtcbiAgQGluY2x1ZGUgYm94LXNoYWRvdyhub25lKTtcbiAgYm9yZGVyLWNvbG9yOiAkYm9yZGVyLWNvbG9yO1xuICAuY2tlX3RvcCxcbiAgLmNrZV9ib3R0b20ge1xuICAgIGJhY2tncm91bmQ6ICRib3gtYmFja2dyb3VuZC1jb2xvcjtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KG5vbmUpO1xuICB9XG4gIC5ja2VfdG9wIHtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkYm9yZGVyLWNvbG9yO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgLmNrZV9ib3R0b20ge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRib3JkZXItY29sb3I7XG4gIH1cbiAgLmNrZV90b29sZ3JvdXAsXG4gIC5ja2VfY29tYm9fYnV0dG9uIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBib3JkZXItY29sb3I6IGRhcmtlbigkYm9yZGVyLWNvbG9yLCAxMCUpO1xuICAgIGJvcmRlcjogMDtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDApO1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgYS5ja2VfYnV0dG9uIHtcbiAgICAgIGhlaWdodDogMjBweDtcbiAgICAgIHBhZGRpbmc6IDhweCA4cHg7XG4gICAgfVxuICB9XG4gIC5ja2VfY29tYm9fYnV0dG9uIHtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgcGFkZGluZzogNnB4IDhweDtcbiAgfVxuICAuY2tlX3Rvb2xiYXJfc2VwYXJhdG9yIHtcbiAgICBtYXJnaW4tdG9wOiA5cHg7XG4gIH1cbn1cblxuLnRleHQtZm9ybWF0LXdyYXBwZXIge1xuICAuY2tlZGl0b3JfbGlua3Nfd3JhcHBlciB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgcGFkZGluZy1sZWZ0OiAkaG9yei1zcGFjaW5nLXVuaXQgLyAyO1xuICB9XG4gIGEuY2tlZGl0b3JfbGlua3Mge1xuLy8gICAgQGluY2x1ZGUgdW5kZXJsaW5lKCk7XG4gICAgQGluY2x1ZGUgYWRqdXN0LWZvbnQtc2l6ZS10bygxNHB4KTtcbiAgfVxuICAuZmlsdGVyLWhlbHAge1xuICAgIG1hcmdpbi1ib3R0b206ICRob3J6LXNwYWNpbmctdW5pdCAvIDI7XG4gICAgcCB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkaG9yei1zcGFjaW5nLXVuaXQgLyAyO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgIGEge1xuLy8gICAgICAgIEBpbmNsdWRlIHVuZGVybGluZSgpO1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiBcIj9cIjtcbiAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICBwYWRkaW5nOiAwIDAuNjVlbTtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogJGhvcnotc3BhY2luZy11bml0IC8gMjtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItZ3JleTtcbiAgICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDIwcHgpO1xuICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLmZvcm0taXRlbSB7XG4gICAgY2xlYXI6IGxlZnQ7XG4gICAgbWFyZ2luLXRvcDogJHZlcnQtc3BhY2luZy11bml0O1xuICAgIGxhYmVsIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJGhvcnotc3BhY2luZy11bml0IC8gMjtcbiAgICB9XG4gIH1cbn1cbiIsIiNibG9jay12aWV3cy1kZXBhcnRtZW50cy1ibG9ja3tcblx0aDMuYmxvY2tfX3RpdGxle1xuXHRcdCAgJGgyLWZvbnQtc2l6ZTogMzRweDtcblx0XHQgIGNvbG9yOiAkY29sb3ItbmV2YWRhO1xuXHRcdCAgQGluY2x1ZGUgZm9udC1zaXplKCRoMi1mb250LXNpemUpO1xuXHRcdCAgQGluY2x1ZGUgYWRqdXN0LWxlYWRpbmctdG8obGluZXMtZm9yLWZvbnQtc2l6ZSgkaDItZm9udC1zaXplKSwgJGgyLWZvbnQtc2l6ZSk7XG5cdFx0ICBAaW5jbHVkZSBsZWFkZXIoMS41LCAkaDItZm9udC1zaXplKTtcblx0XHQgIEBpbmNsdWRlIHRyYWlsZXIoMC41LCAkaDItZm9udC1zaXplKTtcblxuXHR9XG5cdC5maWVsZC1uYW1lLWZpZWxkLWRlcGFydG1lbnQtcGhvbmUtbnVtYmVye1xuXHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdH1cblx0LnZpZXdzLXJvd3tcblx0XHRtYXJnaW4tYm90dG9tOiAxZW07XG5cdFx0Ym9yZGVyLXRvcDogNXB4IHNvbGlkICRjb2xvci1nb2xkZW4tcG9wcHk7XG5cdH1cblx0QG1lZGlhIChtaW4td2lkdGg6ICRhdmVyYWdlKXtcblx0XHQudmlld3Mtcm93e1xuXHRcdCAgIGRpc3BsYXk6IGJsb2NrO1xuXHRcdCAgICBmbG9hdDogbGVmdDtcblx0XHQgICAgd2lkdGg6IDQ1JTtcblx0XHQgICAgbWFyZ2luLXJpZ2h0OiAyZW07XG5cdFx0ICAgIGhlaWdodDogMzUwcHg7XG5cdFx0fVxuXHR9XG5cdFx0LnZpZXctY29udGVudHtcblx0XHRmbG9hdDpsZWZ0O1xuXHR9XG59IiwiLmZlZWQtaWNvbiB7XG4gIEBpbmNsdWRlIG5vdW5kZXJsaW5lKCk7XG59XG4iLCIvKipcbiAqICRGT09URVJcbiAqL1xuXG4ubC1yZWdpb24tLWZvb3RlciB7XG4gIC8qQGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwsIHRydWUpIHsqL1xuICAgIC5ibG9jayB7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuICAgIC5ibG9jay0tYmxvY2stNSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAzMHB4O1xuICAgIH1cbiAgICAuYmxvY2stLWJsb2NrLTQge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuICAgIC5ibG9jay0tYmxvY2stMTIge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAgIC5mb290ZXItbG9nby1jb250YWluZXIge1xuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIH1cbiAgICAgICAgcCB7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgICAgICAgd2lkdGg6IDcwcHg7XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICB3aWR0aDogNTVweDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH1cbiAgICAuYmxvY2stLWJsb2NrLTgge1xuICAgICAgd2lkdGg6IDMwJTtcbiAgICB9XG4gICAgLmJsb2NrLS1ibG9jay03IHtcbiAgICAgIHdpZHRoOiAzMCU7XG4gICAgfVxuICAgIC5ibG9jay0tYmxvY2stNiB7XG4gICAgICBmbG9hdDogbm9uZTtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgLyp9Ki9cblxuICBzcGFuLmV4dCB7XG4gICAgZGlzcGxheTogbm9uZVxuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYXZlcmFnZSwgdHJ1ZSkge1xuICAgIC5ibG9jay0tYmxvY2stNCB7XG4gICAgICBAaW5jbHVkZSBncmlkLXNwYW4oNCwgMSk7XG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuXG4gICAgfVxuICAgIC5ibG9jay0tYmxvY2stNSB7XG4gICAgICBAaW5jbHVkZSBncmlkLXNwYW4oMywgNC41KTtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG4gICAgLmJsb2NrLS1ibG9jay0xMiB7XG4gICAgICBAaW5jbHVkZSBncmlkLXNwYW4oNCwgNylcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgaGVpZ2h0OiAyMDBweDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG5cbiAgICAgIC5mb290ZXItbG9nby1jb250YWluZXIge1xuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIH1cbiAgICAgICAgcCB7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgICAgICAgd2lkdGg6IDcwcHg7XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICBmb250LXNpemU6IDExcHg7XG5cbiAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgd2lkdGg6IDU1cHg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICB9XG4gICAgLmJsb2NrLS1ibG9jay04IHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtc3BhbigxLCA4KVxuICAgIH1cbiAgICAuYmxvY2stLWJsb2NrLTcge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1zcGFuKDEsIDEwKVxuICAgIH1cbiAgICAuYmxvY2stLWJsb2NrLTYge1xuICAgICAgLypAaW5jbHVkZSBncmlkLXNwYW4oMywgMSk7Ki9cbiAgICAgIC8qbWFyZ2luLXRvcDogNGVtOyovXG4gICAgICBtYXJnaW4tdG9wOiAyZW07XG4gICAgICBtYXJnaW4tYm90dG9tOiA0ZW07XG4gICAgICBwIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC4yZW07XG4gICAgICB9XG4gICAgfVxuICAgIC5ibG9jay0tYmxvY2stMTIsIC5ibG9jay0tYmxvY2stNywgLmJsb2NrLS1ibG9jay04IHtcbiAgICAgIC8qcGFkZGluZyA6IDAgMWVtOyovXG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgxMnB4KTtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgaW1nIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gIH1cbn1cblxuLmJsb2NrLS1ibG9jay01IHtcbiAgYS5zb2NpYWwtaWNvbiB7XG4gICAgd2lkdGg6IDQ1cHg7XG4gICAgaGVpZ2h0OiA0NnB4O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBiYWNrZ3JvdW5kOiB1cmwoJy4uL2ltYWdlcy9zb2NpYWwtbWVkaWEtc3ByaXRlLnN2ZycpIG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDExMHB4O1xuICAgIG1hcmdpbi1yaWdodDogNXB4O1xuXG4gICAgJi5pbnN0YWdyYW0ge1xuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtNjBweDtcbiAgICB9XG4gICAgJi50d2l0dGVyIHtcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC02NXB4IDA7XG4gICAgfVxuICAgICYubGlua2VkaW4ge1xuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY1cHggLTYwcHg7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgfVxuXG4gIH1cbn1cbiIsIkBmdW5jdGlvbiBvdXRwdXQtaXNvbGF0aW9uKCRTcGFuLU1hcCkge1xuICAvLyBTZXQgdXAgTGVmdC9SaWdodCBtYXBzXG4gICRSZXR1cm46ICgpO1xuXG4gICRTcGFuOiBtYXAtZ2V0KCRTcGFuLU1hcCwgJ3NwYW4nKTtcbiAgJExvY2F0aW9uOiBtYXAtZ2V0KCRTcGFuLU1hcCwgJ2xvY2F0aW9uJyk7XG5cbiAgJEdyaWQ6IG1hcC1nZXQoJFNwYW4tTWFwLCAnZ3JpZCcpO1xuICAkR3V0dGVyOiBtYXAtZ2V0KCRTcGFuLU1hcCwgJ2d1dHRlcicpO1xuICAkU3R5bGU6IG1hcC1nZXQoJFNwYW4tTWFwLCAnc3R5bGUnKTtcblxuICAkU3RhcnQtUm93OiBtYXAtZ2V0KCRTcGFuLU1hcCwgJ3N0YXJ0IHJvdycpO1xuICAkRW5kLVJvdzogbWFwLWdldCgkU3Bhbi1NYXAsICdlbmQgcm93Jyk7XG5cbiAgJEZpeGVkLUd1dHRlcjogbWFwLWdldCgkU3Bhbi1NYXAsICdmaXhlZCBndXR0ZXInKTtcbiAgJFNwbGl0LUd1dHRlcjogbWFwLWdldCgkU3Bhbi1NYXAsICdzcGxpdCBndXR0ZXInKTtcbiAgJEd1dHRlci1Qcm9wZXJ0eTogbWFwLWdldCgkU3Bhbi1NYXAsICdndXR0ZXIgcHJvcGVydHknKTtcblxuICAkRGlyZWN0aW9uOiBtYXAtZ2V0KCRTcGFuLU1hcCwgJ2RpcmVjdGlvbicpO1xuICAkT3B0aW9uczogbWFwLWdldCgkU3Bhbi1NYXAsICdvcHRpb25zJyk7XG5cbiAgJFdpZHRoOiBjb2x1bW4tc3BhbigkU3BhbiwgJExvY2F0aW9uLCAkR3JpZCwgJEd1dHRlciwgJFN0eWxlKTtcbiAgJE1hcmdpbi1TcGFuOiBjb2x1bW4tc3BhbigoJExvY2F0aW9uIC0gMSksIDEsICRHcmlkLCAkR3V0dGVyLCAkU3R5bGUpO1xuICAkR3V0dGVyLVNwYW46IGd1dHRlci1zcGFuKCRHdXR0ZXIsICRHcmlkKTtcblxuICAvLyBCYWNrd2FyZHMgQ29tcGF0aWJpbGl0eSBmb3IgT3B0aW9uc1xuICBAaWYgdHlwZS1vZigkT3B0aW9ucykgIT0gJ21hcCcgYW5kICRPcHRpb25zICE9IG51bGwge1xuICAgICRPcHRpb25zOiAoJ2NsZWFyJzogdW5xdW90ZShudGgoJE9wdGlvbnMsIDEpKSk7XG4gIH1cblxuICAkRGlyOiAkRGlyZWN0aW9uO1xuICAkT3BwOiBvcHBvc2l0ZS1kaXJlY3Rpb24oJERpcik7XG5cbiAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgnd2lkdGgnOiAkV2lkdGgpKTtcblxuICBAaWYgKCRFbmQtUm93KSB7XG4gICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgnZmxvYXQnOiAkT3BwKSk7XG4gICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgnbWFyZ2luLSN7JERpcn0nOiAwKSk7XG5cbiAgICBAaWYgJFNwbGl0LUd1dHRlciBhbmQgbm90ICRGaXhlZC1HdXR0ZXIge1xuICAgICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgnI3skR3V0dGVyLVByb3BlcnR5fS0jeyRPcHB9JzogJEd1dHRlci1TcGFuIC8gMikpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCdtYXJnaW4tI3skT3BwfSc6IDApKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJ2Zsb2F0JzogJERpcikpO1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJ21hcmdpbi0jeyRPcHB9JzogLTEwMCUpKTtcblxuICAgIEBpZiAkU3RhcnQtUm93IHtcbiAgICAgIEBpZiAkU3BsaXQtR3V0dGVyIGFuZCBub3QgJEZpeGVkLUd1dHRlciB7XG4gICAgICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJ21hcmdpbi0jeyREaXJ9JzogJEd1dHRlci1TcGFuIC8gMikpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgbm90ICRGaXhlZC1HdXR0ZXIge1xuICAgICAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCdtYXJnaW4tI3skRGlyfSc6IDApKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmICRTcGxpdC1HdXR0ZXIgYW5kIG5vdCAkRml4ZWQtR3V0dGVyIHtcbiAgICAgICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgnbWFyZ2luLSN7JERpcn0nOiAkTWFyZ2luLVNwYW4gKyAkR3V0dGVyLVNwYW4gKyAkR3V0dGVyLVNwYW4gLyAyKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSBpZiBub3QgJEZpeGVkLUd1dHRlciB7XG4gICAgICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJ21hcmdpbi0jeyREaXJ9JzogJE1hcmdpbi1TcGFuICsgJEd1dHRlci1TcGFuKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJ21hcmdpbi0jeyREaXJ9JzogJE1hcmdpbi1TcGFuKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vIElmIG9wdGlvbnMgYXJlIHNldCwgd2UgbWVyZ2UgdGhlbSBpbiFcbiAgQGlmICgkT3B0aW9ucykge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAkT3B0aW9ucyk7XG4gIH1cblxuICAvLyBJZiBDTGVhciBpc24ndCBhbHJlYWR5IGF2YWlsYWJsZSwgc2V0IGl0IVxuICBAaWYgbm90IG1hcC1oYXMta2V5KCRSZXR1cm4sICdjbGVhcicpIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCdjbGVhcic6IG5vbmUpKTtcbiAgfVxuXG4gIC8vIExlZnQgRml4ZWQgR3V0dGVyc1xuICBAaWYgJEZpeGVkLUd1dHRlciB7XG4gICAgQGlmIGluZGV4KCRTdHlsZSwgJ3NwbGl0Jykge1xuICAgICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgnI3skR3V0dGVyLVByb3BlcnR5fS0jeyREaXJ9JzogJEd1dHRlci1TcGFuIC8gMikpO1xuICAgICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgnI3skR3V0dGVyLVByb3BlcnR5fS0jeyRPcHB9JzogJEd1dHRlci1TcGFuIC8gMikpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgbm90ICRFbmQtUm93IHtcbiAgICAgICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgnI3skR3V0dGVyLVByb3BlcnR5fS0jeyRPcHB9JzogJEd1dHRlci1TcGFuKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJyN7JEd1dHRlci1Qcm9wZXJ0eX0tI3skT3BwfSc6IDApKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRSZXR1cm47XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSGFwcHkgU3ludGF4IGZvciBJc29sYXRpb25cbi8vXG4vLyBNYWtlcyB3b3JraW5nIHdpdGggSXNvbGF0aW9uIGVhc2llciwgYXMgaXQgbW92ZXMgQ2xlYXIgdG8gYSAxc3QgY2xhc3MgY2l0aXplbiBvZiB0aGUgbWl4aW4sIGFuZCBhdXRvbWF0aWNhbGx5IGJ1aWxkcyB0aGUgdmVyYm9zZSBncmlkLXNwYW4gbWl4aW4gY2FsbFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaXNvbGF0aW9uLXNwYW4oJFNwYW4sICRMb2NhdGlvbiwgJGNsZWFyOiBmYWxzZSwgJGdyaWQ6IGZhbHNlLCAkZ3V0dGVyOiBmYWxzZSwgJGd1dHRlci1zdHlsZTogZmFsc2UsICRmcm9tOiBmYWxzZSkge1xuICAkT3B0aW9uczogKCk7XG4gIEBpZiAkY2xlYXIge1xuICAgICRPcHRpb25zOiBtYXAtbWVyZ2UoJE9wdGlvbnMsICgnY2xlYXInOiB1bnF1b3RlKCRjbGVhcikpKTtcbiAgfVxuICBAaWYgJGZyb20ge1xuICAgICRPcHRpb25zOiBtYXAtbWVyZ2UoJE9wdGlvbnMsICgnZnJvbSc6ICRmcm9tKSk7XG4gIH1cblxuICAkT3B0aW9uczogaWYobGVuZ3RoKCRPcHRpb25zKSA+IDAsICRPcHRpb25zLCBudWxsKTtcbiAgQGluY2x1ZGUgZ3JpZC1zcGFuKCRTcGFuLCAkTG9jYXRpb24sICRncmlkLCAkZ3V0dGVyLCAnaXNvbGF0aW9uJywgJGd1dHRlci1zdHlsZSwgJE9wdGlvbnMpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEhhcHB5IFN5bnRheCBvZiBBc3ltbWV0cmljIEdyaWRzXG4vL1xuLy8gTWFrZXMgd29ya2luZyB3aXRoIGFzeW1tZXRyaWMgZ3JpZHMgZWFzaWVyIVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYXN5bW1ldHJpYy1zcGFuKCRMb2NhdGlvbiwgJFNwYW46IGZhbHNlLCAkZ3JpZDogZmFsc2UsICRndXR0ZXI6IGZhbHNlLCAkZ3V0dGVyLXN0eWxlOiBmYWxzZSwgJGZyb206IGZhbHNlLCAkb3V0cHV0LXN0eWxlOiBmYWxzZSkge1xuXG4gICRTcGFuOiBpZigkU3BhbiAhPSBmYWxzZSwgJFNwYW4sIDEpO1xuICAkb3V0cHV0LXN0eWxlOiBpZigkb3V0cHV0LXN0eWxlICE9IGZhbHNlLCAkb3V0cHV0LXN0eWxlLCBzZ3MtZ2V0KCdhc3ltbWV0cmljIG91dHB1dCcpKTtcblxuICAkT3B0aW9uczogKCk7XG4gIEBpZiAkZnJvbSB7XG4gICAgJE9wdGlvbnM6IG1hcC1tZXJnZSgkT3B0aW9ucywgKCdmcm9tJzogJGZyb20pKTtcbiAgfVxuICAkT3B0aW9uczogaWYobGVuZ3RoKCRPcHRpb25zKSA+IDAsICRPcHRpb25zLCBudWxsKTtcblxuICBAaW5jbHVkZSBncmlkLXNwYW4oJFNwYW4sICRMb2NhdGlvbiwgJGdyaWQsICRndXR0ZXIsICRvdXRwdXQtc3R5bGUsICRndXR0ZXItc3R5bGUsICRPcHRpb25zKTtcbn0iLCIubm9kZS10eXBlLWJvb2t7XG4gIC5sLWNvbnRlbnR7XG5cdG1pbi1oZWlnaHQ6IDQxNXB4O1xuXHRib3JkZXItdG9wOiA0cHggc29saWQgJGNvbG9yLWdvbGRlbi1wb3BweTtcbiAgLm5vZGUtLWJvb2sgLmxpbmtzLS1pbmxpbmUge1xuXHRkaXNwbGF5OiBibG9jaztcblx0bWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuLmJvb2stbmF2aWdhdGlvbl9fbGlua3Mge1xuICBwYWRkaW5nLXRvcDogMjBQWDtcbiAgYm9yZGVyLXRvcDogMVBYIHNvbGlkICRjb2xvci1hbHRvIDtcbiAgbWFyZ2luLXRvcDogMTBQWDtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgaGVpZ2h0OiA0NXB4O1xuICB9XG59IiwiLyoqXG4gKiAkSEVST1xuICovXG4ubC1yZWdpb24tLWhlcm8ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4vLyAgbWluLWhlaWdodDogZW0oMTY1cHgpO1xufVxuLmhlcm8tYmxvY2stLWltYWdlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAtMTtcbiAgYm9yZGVyLXRvcDogM3B4IHNvbGlkICRjb2xvci1nb2xkZW4tcG9wcHk7XG4gIG1heC1oZWlnaHQ6IGVtKDQ1MHB4KTtcbiAgdG9wOiAwO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYXZlcmFnZSkge1xuICAgIGJvcmRlci1ib3R0b206IDRweCBzb2xpZCAkY29sb3ItZ29sZGVuLXBvcHB5O1xuICAgIH1cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRsYXJnZSkge1xuICAgIGJvcmRlci10b3A6IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG5cbiAgaW1nIHtcbiAgIHdpZHRoOiAxMDAlO1xuICB9XG4gIC5sdC1pZTkgJiB7XG4gICAgei1pbmRleDogMDtcbiAgfVxufVxuXG5cbi5oZXJvLWJsb2NrLS10ZXh0IHtcbiAgd2lkdGg6IDEwMCU7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogNHB4O1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0pIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAwO1xuICB9XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGF2ZXJhZ2UsIHRydWUpIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiBlbSgkaGVhZGluZy1oZWlnaHQgLSAxMjApO1xuICAgIC5mcm9udCAmIHtcbiAgICAgIGJvdHRvbTogZW0oJGhlYWRpbmctaGVpZ2h0LWZyb250IC0gMTAwKTtcbiAgICB9XG4gICAgd2lkdGg6IDgwJTtcbiAgICBtYXgtd2lkdGg6IDEyNjBweDtcbiAgICBsZWZ0OiAxMCU7XG4gICAgLy90b3A6IGVtKDUwcHgpO1xuICB9XG4gIGEge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIC8vYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkIHJnYmEoJGNvbG9yLWdvbGRlbi1wb3BweSwgMC45KTtcbiAgICAvL2JvcmRlci10b3A6IDNweCBzb2xpZCByZ2JhKCRjb2xvci1nb2xkZW4tcG9wcHksIDAuOSk7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxLDEsMSwxKTtcbiAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bSwgdHJ1ZSkge1xuICAgICAgLy9ib3JkZXItYm90dG9tOiAzcHggc29saWQgcmdiYSgkY29sb3ItZ29sZGVuLXBvcHB5LCAwLjkpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkY29sb3ItYmxhY2ssIDAuNik7XG4gICAgfVxuICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRsYXJnZSwgdHJ1ZSkge1xuICAgICAgLy9ib3JkZXI6IDNweCBzb2xpZCByZ2JhKCRjb2xvci1nb2xkZW4tcG9wcHksIDAuOSk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvci1ibGFjaywgMC42KTtcbiAgICB9XG4gICAgXG4gICAgaDMge1xuICAgICAgQGluY2x1ZGUgZm9udC1zaXplKDE0cHgpO1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtLCB0cnVlKSB7XG4gICAgICAgIC8vIEZpbm46IDA1LzA4LzIwMTQgLSByZWR1Y2VkIGZvbnQgc2l6ZSBmcm9tIDIxIHRvIDE3IHRvIHN0b3Agb3ZlcmxhcCBvZiBoZXJvLiBcbiAgICAgICAgQGluY2x1ZGUgZm9udC1zaXplKDE3cHgpO1xuICAgICAgfVxuICAgIH1cbiAgICBoMywgcCB7XG4gICAgICAvL2NvbG9yOiB3aGl0ZTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIHBhZGRpbmc6IDAuNmVtIDAuOGVtO1xuICAgICAgY29sb3I6IGluaGVyaXQ7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtLCB0cnVlKSB7XG4gICAgICAgIC8vY29sb3I6IHdoaXRlO1xuICAgICAgfVxuICAgIH1cbiAgICBwIHtcbiAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgxM3B4KTtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICBcbiAgICB9XG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogJGNvbG9yLWdvbGRlbi1wb3BweTtcbiAgICB9XG4gIH1cblxuXG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYXZlcmFnZSwgdHJ1ZSkge1xuICAgIGEge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICB3aWR0aDogMzUlO1xuICAgICAgLy9ib3JkZXI6IDNweCBzb2xpZCByZ2JhKCRjb2xvci1nb2xkZW4tcG9wcHksIDAuOSk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvci1ibGFjaywgMC42KTtcbiAgICAgIGgzLCBwIHtcbiAgICAgICAgLy9jb2xvcjogI2ZmZjtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBcbiAgICAgIH1cbiAgICAgIHAge1xuICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoMTNweCk7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbGFyZ2UsIHRydWUpIHtcbiAgICBib3R0b206IGVtKCRoZWFkaW5nLWhlaWdodCAtIDEyMCk7XG4gICAgLmZyb250ICYge1xuICAgICAgYm90dG9tOiBlbSgkaGVhZGluZy1oZWlnaHQtZnJvbnQgLSAxMCk7XG4gICAgfSAgICBcbiAgICBhIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgd2lkdGg6IDMwJTtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxhcmdlcikge1xuICAgICAgICB3aWR0aDogMjUlO1xuICAgICAgfVxuICAgICAgLy9ib3JkZXI6IDNweCBzb2xpZCByZ2JhKCRjb2xvci1nb2xkZW4tcG9wcHksIDAuOSk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYmxhY2s7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvci1ibGFjaywgMC42KTtcbiAgICAgIC5sdC1pZTkgJiB7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgIEBpbmNsdWRlIGZpbHRlci1ncmFkaWVudChyZ2JhKCRjb2xvci1ibGFjaywgMC42KSwgcmdiYSgkY29sb3ItYmxhY2ssIDAuNikpO1xuICAgICAgfVxuICAgICAgaDMsIHAge1xuICAgICAgICAvL2NvbG9yOiAjZmZmO1xuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDAuOGVtIDAuOGVtIDFlbTtcbiAgICAgIH1cbiAgICAgIHAge1xuICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoMTNweCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJAaW1wb3J0IFwiLi4vLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGUgYHpvb21gIGFwcHJvYWNoIGdlbmVyYXRlcyBsZXNzIENTUyBidXQgZG9lcyBub3QgdmFsaWRhdGUuXG4vLyBTZXQgdGhpcyB0byBgYmxvY2tgIHRvIHVzZSB0aGUgZGlzcGxheS1wcm9wZXJ0eSB0byBoYWNrIHRoZVxuLy8gZWxlbWVudCB0byBnYWluIGxheW91dC5cbiRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2g6IHpvb20gIWRlZmF1bHQ7XG5cbi8vIFRoaXMgbWl4aW4gY2F1c2VzIGFuIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIHNlbGVjdG9yXG4vLyB0byBnYWluIHRoZSBcImhhc0xheW91dFwiIHByb3BlcnR5IGluIGludGVybmV0IGV4cGxvcmVyLlxuLy8gTW9yZSBpbmZvcm1hdGlvbiBvbiBbaGFzTGF5b3V0XShodHRwOi8vcmVmZXJlbmNlLnNpdGVwb2ludC5jb20vY3NzL2hhc2xheW91dCkuXG5AbWl4aW4gaGFzLWxheW91dCgkYXBwcm9hY2g6ICRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2gpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIEBpZiAkYXBwcm9hY2ggPT0gem9vbSB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207XG4gICAgfSBAZWxzZSBpZiAkYXBwcm9hY2ggPT0gYmxvY2sge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC1ibG9jaztcbiAgICB9IEBlbHNlIHtcbiAgICAgIEB3YXJuIFwiVW5rbm93biBoYXMtbGF5b3V0IGFwcHJvYWNoOiAjeyRhcHByb2FjaH1cIjtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGhhcy1sYXlvdXQtem9vbSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyB7XG4gICAgKnpvb206IDE7XG4gIH1cbn1cblxuQG1peGluIGhhcy1sYXlvdXQtYmxvY2sge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgLy8gVGhpcyBtYWtlcyBpZTYgZ2V0IGxheW91dFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAvLyBhbmQgdGhpcyBwdXRzIGl0IGJhY2sgdG8gYmxvY2tcbiAgICAmIHsgZGlzcGxheTogYmxvY2s7IH1cbiAgfVxufVxuXG4vLyBBIGhhY2sgdG8gc3VwcGx5IElFNiAoYW5kIGJlbG93KSB3aXRoIGEgZGlmZmVyZW50IHByb3BlcnR5IHZhbHVlLlxuLy8gW1JlYWQgbW9yZV0oaHR0cDovL3d3dy5jc3Nwb3J0YWwuY29tL2Nzcy1oYWNrcy8jaW5fY3NzLWltcG9ydGFudCkuXG5AbWl4aW4gYmFuZy1oYWNrKCRwcm9wZXJ0eSwgJHZhbHVlLCAkaWU2LXZhbHVlKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0gIWltcG9ydGFudDtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JGllNi12YWx1ZX07XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcbkBpbXBvcnQgXCIuLi91dGlsaXRpZXMvZ2VuZXJhbC9oYWNrc1wiO1xuXG4vLyBCYWNrZ3JvdW5kIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBiYWNrZ3JvdW5kKFxuICAkYmFja2dyb3VuZC0xLFxuICAkYmFja2dyb3VuZC0yOiBmYWxzZSxcbiAgJGJhY2tncm91bmQtMzogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTQ6IGZhbHNlLFxuICAkYmFja2dyb3VuZC01OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtNjogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTc6IGZhbHNlLFxuICAkYmFja2dyb3VuZC04OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtOTogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTEwOiBmYWxzZVxuKSB7XG4gICRiYWNrZ3JvdW5kczogY29tcGFjdCgkYmFja2dyb3VuZC0xLCAkYmFja2dyb3VuZC0yLCAkYmFja2dyb3VuZC0zLCAkYmFja2dyb3VuZC00LCAkYmFja2dyb3VuZC01LFxuICAgICAgICAgICAgICAgICAgICAgICAgJGJhY2tncm91bmQtNiwgJGJhY2tncm91bmQtNywgJGJhY2tncm91bmQtOCwgJGJhY2tncm91bmQtOSwgJGJhY2tncm91bmQtMTApO1xuICAkbXVsdC1iZ3M6IC1jb21wYXNzLWxpc3Qtc2l6ZSgkYmFja2dyb3VuZHMpID4gMTtcbiAgJGFkZC1waWUtYmc6IHByZWZpeGVkKC1waWUsICAgJGJhY2tncm91bmRzKSBvciAkbXVsdC1iZ3M7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICBhbmQgcHJlZml4ZWQoLXN2ZywgICAgJGJhY2tncm91bmRzKSB7ICAgICAgYmFja2dyb3VuZDogICAgLXN2ZygkYmFja2dyb3VuZHMpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgICAgJGJhY2tncm91bmRzKSB7ICAgICAgYmFja2dyb3VuZDogICAgLW93ZygkYmFja2dyb3VuZHMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJGJhY2tncm91bmRzKSB7ICAgICAgYmFja2dyb3VuZDogLXdlYmtpdCgkYmFja2dyb3VuZHMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICBhbmQgcHJlZml4ZWQoLW1veiwgICAgJGJhY2tncm91bmRzKSB7ICAgICAgYmFja2dyb3VuZDogICAgLW1veigkYmFja2dyb3VuZHMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICBhbmQgcHJlZml4ZWQoLW8sICAgICAgJGJhY2tncm91bmRzKSB7ICAgICAgYmFja2dyb3VuZDogICAgICAtbygkYmFja2dyb3VuZHMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICBhbmQgJGFkZC1waWUtYmcgICAgICAgICAgICAgICAgICAgICB7IC1waWUtYmFja2dyb3VuZDogICAgLXBpZSgkYmFja2dyb3VuZHMpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogICAgICAgICAkYmFja2dyb3VuZHMgO1xufVxuXG5AbWl4aW4gYmFja2dyb3VuZC13aXRoLWNzczItZmFsbGJhY2soXG4gICRiYWNrZ3JvdW5kLTEsXG4gICRiYWNrZ3JvdW5kLTI6IGZhbHNlLFxuICAkYmFja2dyb3VuZC0zOiBmYWxzZSxcbiAgJGJhY2tncm91bmQtNDogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTU6IGZhbHNlLFxuICAkYmFja2dyb3VuZC02OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtNzogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTg6IGZhbHNlLFxuICAkYmFja2dyb3VuZC05OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtMTA6IGZhbHNlXG4pIHtcbiAgJGJhY2tncm91bmRzOiBjb21wYWN0KCRiYWNrZ3JvdW5kLTEsICRiYWNrZ3JvdW5kLTIsICRiYWNrZ3JvdW5kLTMsICRiYWNrZ3JvdW5kLTQsICRiYWNrZ3JvdW5kLTUsXG4gICAgICAgICAgICAgICAgICAgICAgICAkYmFja2dyb3VuZC02LCAkYmFja2dyb3VuZC03LCAkYmFja2dyb3VuZC04LCAkYmFja2dyb3VuZC05LCAkYmFja2dyb3VuZC0xMCk7XG4gICRtdWx0LWJnczogLWNvbXBhc3MtbGlzdC1zaXplKCRiYWNrZ3JvdW5kcykgPiAxO1xuICAkc2ltcGxlLWJhY2tncm91bmQ6IGlmKCRtdWx0LWJncyBvciBwcmVmaXhlZCgtY3NzMiwgJGJhY2tncm91bmRzKSwgLWNzczIoLWNvbXBhc3MtbnRoKCRiYWNrZ3JvdW5kcywgbGFzdCkpLCBmYWxzZSk7XG4gIEBpZiBub3QoYmxhbmsoJHNpbXBsZS1iYWNrZ3JvdW5kKSkgeyBiYWNrZ3JvdW5kOiAkc2ltcGxlLWJhY2tncm91bmQ7IH1cbiAgQGluY2x1ZGUgYmFja2dyb3VuZCgkYmFja2dyb3VuZC0xLCAkYmFja2dyb3VuZC0yLCAkYmFja2dyb3VuZC0zLCAkYmFja2dyb3VuZC00LCAkYmFja2dyb3VuZC01LFxuICAgICAgICAgICAgICAgICAgICAgICRiYWNrZ3JvdW5kLTYsICRiYWNrZ3JvdW5kLTcsICRiYWNrZ3JvdW5kLTgsICRiYWNrZ3JvdW5kLTksICRiYWNrZ3JvdW5kLTEwKTtcbn1cblxuXG4vLyBCYWNrZ3JvdW5kIGltYWdlIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBiYWNrZ3JvdW5kLWltYWdlKFxuICAkaW1hZ2UtMSxcbiAgJGltYWdlLTI6IGZhbHNlLFxuICAkaW1hZ2UtMzogZmFsc2UsXG4gICRpbWFnZS00OiBmYWxzZSxcbiAgJGltYWdlLTU6IGZhbHNlLFxuICAkaW1hZ2UtNjogZmFsc2UsXG4gICRpbWFnZS03OiBmYWxzZSxcbiAgJGltYWdlLTg6IGZhbHNlLFxuICAkaW1hZ2UtOTogZmFsc2UsXG4gICRpbWFnZS0xMDogZmFsc2Vcbikge1xuICAkaW1hZ2VzOiBjb21wYWN0KCRpbWFnZS0xLCAkaW1hZ2UtMiwgJGltYWdlLTMsICRpbWFnZS00LCAkaW1hZ2UtNSwgJGltYWdlLTYsICRpbWFnZS03LCAkaW1hZ2UtOCwgJGltYWdlLTksICRpbWFnZS0xMCk7XG4gICRhZGQtcGllLWJnOiBwcmVmaXhlZCgtcGllLCAgICRpbWFnZXMpIG9yIC1jb21wYXNzLWxpc3Qtc2l6ZSgkaW1hZ2VzKSA+IDE7XG5cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIGFuZCBwcmVmaXhlZCgtc3ZnLCAgICAkaW1hZ2VzKSB7IGJhY2tncm91bmQtaW1hZ2U6ICAgIC1zdmcoJGltYWdlcyk7IGJhY2tncm91bmQtc2l6ZTogMTAwJTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICAgICRpbWFnZXMpIHsgYmFja2dyb3VuZC1pbWFnZTogICAgLW93ZygkaW1hZ2VzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgYW5kIHByZWZpeGVkKC13ZWJraXQsICRpbWFnZXMpIHsgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdCgkaW1hZ2VzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgYW5kIHByZWZpeGVkKC1tb3osICAgICRpbWFnZXMpIHsgYmFja2dyb3VuZC1pbWFnZTogICAgLW1veigkaW1hZ2VzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgYW5kIHByZWZpeGVkKC1vLCAgICAgICRpbWFnZXMpIHsgYmFja2dyb3VuZC1pbWFnZTogICAgICAtbygkaW1hZ2VzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgYW5kICRhZGQtcGllLWJnICAgICAgICAgICAgICAgIHsgQHdhcm4gXCJQSUUgZG9lcyBub3Qgc3VwcG9ydCBiYWNrZ3JvdW5kLWltYWdlLiBVc2UgQGluY2x1ZGUgYmFja2dyb3VuZCgjeyRpbWFnZXN9KSBpbnN0ZWFkLlwiIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6ICAgICAgICAgJGltYWdlcyA7XG59XG5cbi8vIEVtaXQgYSBJRS1TcGVjaWZpYyBmaWx0ZXJzIHRoYXQgcmVuZGVycyBhIHNpbXBsZSBsaW5lYXIgZ3JhZGllbnQuXG4vLyBGb3IgdXNlIGluIElFIDYgLSA4LiBCZXN0IHByYWN0aWNlIHdvdWxkIGhhdmUgeW91IGFwcGx5IHRoaXMgdmlhIGFcbi8vIGNvbmRpdGlvbmFsIElFIHN0eWxlc2hlZXQsIGJ1dCBpZiB5b3UgbXVzdCwgeW91IHNob3VsZCBwbGFjZSB0aGlzIGJlZm9yZVxuLy8gYW55IGJhY2tncm91bmQtaW1hZ2UgcHJvcGVydGllcyB0aGF0IHlvdSBoYXZlIHNwZWNpZmllZC5cbi8vXG4vLyBGb3IgdGhlIGAkb3JpZW50YXRpb25gIHBhcmFtZXRlciwgeW91IGNhbiBwYXNzIGB2ZXJ0aWNhbGAgb3IgYGhvcml6b250YWxgLlxuQG1peGluIGZpbHRlci1ncmFkaWVudCgkc3RhcnQtY29sb3IsICRlbmQtY29sb3IsICRvcmllbnRhdGlvbjogdmVydGljYWwpIHtcbiAgQGluY2x1ZGUgaGFzLWxheW91dDtcbiAgJGdyYWRpZW50LXR5cGU6IGlmKCRvcmllbnRhdGlvbiA9PSB2ZXJ0aWNhbCwgMCwgMSk7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllOCB7XG4gICAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZ3JhZGllbnRUeXBlPSN7JGdyYWRpZW50LXR5cGV9LCBzdGFydENvbG9yc3RyPScje2llLWhleC1zdHIoJHN0YXJ0LWNvbG9yKX0nLCBlbmRDb2xvcnN0cj0nI3tpZS1oZXgtc3RyKCRlbmQtY29sb3IpfScpO1xuICB9XG59XG5cblxuLy8gQm9yZGVyIGltYWdlIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgcHJvcGVydGllcyBhbmQgdmFsdWVzLlxuQG1peGluIGJvcmRlci1pbWFnZSgkdmFsdWUpIHtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIHsgICAgLW1vei1ib3JkZXItaW1hZ2U6ICAgIC1tb3oocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyB7IC13ZWJraXQtYm9yZGVyLWltYWdlOiAgICAtb3dnKHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgeyAtd2Via2l0LWJvcmRlci1pbWFnZTogLXdlYmtpdChyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIHsgICAgICAtby1ib3JkZXItaW1hZ2U6ICAgICAgLW8ocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICB7ICAgICAgICAgYm9yZGVyLWltYWdlOiAgICAtc3ZnKHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1pbWFnZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWU7XG59XG5cbi8vIExpc3Qgc3R5bGUgaW1hZ2UgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyB3aXRoaW4gdmFsdWVzLlxuQG1peGluIGxpc3Qtc3R5bGUtaW1hZ2UoJGltYWdlKSB7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICBhbmQgcHJlZml4ZWQoLW1veiwgICAgJGltYWdlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6ICAgIC1tb3ooJGltYWdlKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICAgICRpbWFnZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAtb3dnKCRpbWFnZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkaW1hZ2UpIHsgbGlzdC1zdHlsZS1pbWFnZTogLXdlYmtpdCgkaW1hZ2UpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICBhbmQgcHJlZml4ZWQoLW8sICAgICAgJGltYWdlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6ICAgICAgLW8oJGltYWdlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgYW5kIHByZWZpeGVkKC1zdmcsICAgICRpbWFnZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAtc3ZnKCRpbWFnZSk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC1zdHlsZS1pbWFnZTogICAgICAgICAkaW1hZ2UgO1xufVxuXG4vLyBMaXN0IHN0eWxlIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBsaXN0LXN0eWxlKCR2YWx1ZSkge1xuICAkdmFsdWU6IC1jb21wYXNzLWxpc3QoJHZhbHVlKTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIGFuZCBwcmVmaXhlZCgtbW96LCAgICAkdmFsdWUpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgLW1veigkdmFsdWUpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgICAgJHZhbHVlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6ICAgIC1vd2coJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgYW5kIHByZWZpeGVkKC13ZWJraXQsICR2YWx1ZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAtd2Via2l0KCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIGFuZCBwcmVmaXhlZCgtbywgICAgICAkdmFsdWUpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgICAtbygkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICBhbmQgcHJlZml4ZWQoLXN2ZywgICAgJHZhbHVlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6ICAgIC1zdmcoJHZhbHVlKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LXN0eWxlLWltYWdlOiAgICAgICAgICR2YWx1ZSA7XG59XG5cbi8vIGNvbnRlbnQgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyB3aXRoaW4gdmFsdWVzLlxuQG1peGluIGNvbnRlbnQoJHZhbHVlKSB7XG4gICR2YWx1ZTogLWNvbXBhc3MtbGlzdCgkdmFsdWUpO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgYW5kIHByZWZpeGVkKC1tb3osICAgICR2YWx1ZSkgeyBjb250ZW50OiAgICAtbW96KCR2YWx1ZSk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAgICAkdmFsdWUpIHsgY29udGVudDogICAgLW93ZygkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJHZhbHVlKSB7IGNvbnRlbnQ6IC13ZWJraXQoJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgYW5kIHByZWZpeGVkKC1vLCAgICAgICR2YWx1ZSkgeyBjb250ZW50OiAgICAgIC1vKCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIGFuZCBwcmVmaXhlZCgtc3ZnLCAgICAkdmFsdWUpIHsgY29udGVudDogICAgLXN2ZygkdmFsdWUpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICAgICAgICAgJHZhbHVlIDtcbn1cbiIsIi8qKlxuICogJEpFRENTU1xuICovXG5cbi8qU2Vjb25kYXJ5IGltYWdlcyovXG4ucGFnZS1ub2RlIHtcbiAgLmZpZWxkLW5hbWUtZmllbGQtaW1hZ2VzIHtcbiAgICBpbWcge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDFlbTtcbiAgICAgIGhlaWdodDogMTcwcHg7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgIH1cbiAgICAmI2VkaXQtZmllbGQtaW1hZ2VzIHtcbiAgICBcdGltZyB7XG4gICAgXHRcdG1hcmdpbjogMDtcbiAgICBcdFx0aGVpZ2h0OiBhdXRvOyBcbiAgICBcdH1cbiAgICBcdC50YWJsZWRyYWctaGFuZGxlIC5oYW5kbGUge1xuXHRcdFx0aGVpZ2h0OiAyNnB4O1xuXHRcdFx0d2lkdGg6IDE1cHg7XG5cdFx0XHRtYXJnaW46IDAuNmVtIDFFTSAwIDA7XG5cdFx0fVxuICAgIH1cbiAgfVxufVxuIiwiLyoqXG4gKiAkTUVTU0FHRVNcbiAqL1xuXG4kZGlyOiAnYWxlcnQnO1xuXG4ubWVzc2FnZXMge1xuICBwYWRkaW5nLWxlZnQ6ICRob3J6LXNwYWNpbmctdW5pdCAqIDMuNTtcbiAgbWFyZ2luLWJvdHRvbTogJHZlcnQtc3BhY2luZy11bml0O1xuICB1bCB7XG4gICAgbWFyZ2luOiAwIDAgMCAkaG9yei1zcGFjaW5nLXVuaXQgKiAxLjU7XG4gIH1cbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogJGhvcnotc3BhY2luZy11bml0IDUwJTtcbn1cblxuLm1lc3NhZ2VzLS1zdGF0dXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDZmZmNiO1xuICBjb2xvcjogIzFhNzAwMDtcbiAgYm9yZGVyLXRvcDogMDtcbiAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAjMWE3MDAwO1xuICBib3JkZXItcmlnaHQ6IDA7XG4gIGJvcmRlci1ib3R0b206IDA7XG59XG5cbi5tZXNzYWdlcy0td2FybmluZyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZlY2I7XG4gIGNvbG9yOiAjZmY5NDIxO1xuICBib3JkZXItdG9wOiAwO1xuICBib3JkZXItbGVmdDogNXB4IHNvbGlkICNmZjk0MjE7XG4gIGJvcmRlci1yaWdodDogMDtcbiAgYm9yZGVyLWJvdHRvbTogMDtcbn1cblxuLm1lc3NhZ2VzLS1lcnJvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmRkZGQ7XG4gIGNvbG9yOiAjYzcwMDAwO1xuICBib3JkZXItdG9wOiAwO1xuICBib3JkZXItbGVmdDogNXB4IHNvbGlkICNjNzAwMDA7XG4gIGJvcmRlci1yaWdodDogMDtcbiAgYm9yZGVyLWJvdHRvbTogMDtcbn1cbiIsIi8qKlxuICogJFBBR0VSXG4gKi9cbi5wYWdlciB7XG4gIEBpbmNsdWRlIGNsZWFyZml4KHRydWUpO1xufVxuXG4ucGFnZXJfX2l0ZW0ge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZmxvYXQ6IGxlZnQ7XG4gIG1hcmdpbjogMC4xZW07XG4gIHBhZGRpbmc6IDA7XG59XG5cbi5wYWdlcl9faXRlbSBhLFxuLnBhZ2VyX19pdGVtLS1jdXJyZW50LFxuLnBhZ2VyX19pdGVtLS1lbGxpcHNpcyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAwLjVlbSAwLjhlbTtcbiAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yLW5ldmFkYTtcbiAgY29sb3I6ICRjb2xvci1uZXZhZGE7XG4gIEBpbmNsdWRlIG5vdW5kZXJsaW5lKCk7XG59XG4ucGFnZXJfX2l0ZW0gYTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQtMTtcbiAgYm9yZGVyLWNvbG9yOiAkYWNjZW50LTE7XG4gIGNvbG9yOiAjZmZmO1xufVxuLnBhZ2VyX19pdGVtLS1jdXJyZW50IHtcbiAgYm9yZGVyLWNvbG9yOiAkYWNjZW50LTE7XG4gIGNvbG9yOiAkYWNjZW50LTE7XG59XG4ucGFnZXJfX2l0ZW0tLWVsbGlwc2lzIHtcbiAgYm9yZGVyOiBub25lO1xufVxuIiwiLyoqXG4gKiAkUFJPR1JFU1NcbiAqL1xuLnByb2dyZXNzIHtcbiAgLmJhciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJveC1iYWNrZ3JvdW5kLWNvbG9yO1xuICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLW5ldmFkYTtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDApO1xuICB9XG4gIC5maWxsZWQge1xuICAgIGJhY2tncm91bmQ6ICRsaW5rLWNvbG9yO1xuICB9XG59XG4iLCIuc2VhcmNoLXJlc3VsdHMge1xuXHQuc2VhcmNoLXJlc3VsdF9faW5mbyB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxufSIsIi8qKlxuICogJFNFQ1RJT04tVElUTEVcbiAqL1xuLnNlY3Rpb24tdGl0bGUge1xuICBAaW5jbHVkZSBwYWRkaW5nLXRyYWlsZXIoMC41KTtcbiAgQGluY2x1ZGUgdHJhaWxlcigxKTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGRhcmtlbigkY29sb3ItYm90dGljZWxsaSwgOCUpO1xufVxuIiwiLyoqXG4gKiAkU0lERUJBUlxuICovXG4ubC1yZWdpb24tLXNpZGViYXItc2Vjb25kLCAubC1yZWdpb24tLXNpZGViYXItZmlyc3Qge1xuICBoMyB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gIH1cbiAgLmJsb2NrLS1hbHQgLmJsb2NrX190aXRsZSB7XG4gICAgbGluZS1oZWlnaHQ6IDIuMjg1NzFlbTtcbiAgfVxuICBsaSB7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICBAaW5jbHVkZSBmb250LXNpemUoMTZweCk7XG4gIH1cblxuICAvLyBtYXJrdXAgbmVlZHMgdG8gYmUgY2xlYW5lZCB1cFxuICAuZmllbGQtLW5hbWUtZmllbGQtcmVsYXRlZC1saW5rcywgLmZpZWxkLS1uYW1lLWZpZWxkLXJlbGF0ZWQtZG9jdW1lbnQge1xuICAgIGJvcmRlci10b3A6IDRweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMS40ZW07XG4gICAgLmZpZWxkX19sYWJlbCB7XG4gICAgICBwYWRkaW5nOiAxLjJlbSAwO1xuICAgICAgQGluY2x1ZGUgZm9udC1zaXplKDIwcHgpO1xuICAgICAgZm9udC1mYW1pbHk6ICRoZWFkaW5nLWZvbnQ7XG4gICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgY29sb3I6ICRjb2xvci1ncmV5O1xuICAgIH1cbiAgICAuZmllbGRfX2l0ZW0ge1xuICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgxNnB4KTtcbiAgICB9XG4gIH1cbiAgLmZpZWxkLS1uYW1lLWZpZWxkLXJlbGF0ZWQtZG9jdW1lbnQge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvci1nb2xkZW4tcG9wcHk7XG4gIH1cbiAgLmZpZWxkLS1uYW1lLWZpZWxkLXJlbGF0ZWQtbGlua3Mge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvci1kZWVwLXNreS1ibHVlO1xuICB9XG59XG4iLCIvKipcbiAqICRTSVRFLUJSQU5ESU5HXG4gKi9cbi5zaXRlLWJyYW5kaW5nIHtcbiAgbWFyZ2luLWxlZnQ6IDYwcHg7XG4gIHBhZGRpbmc6IDEwcHggNXB4O1xuICBAaW5jbHVkZSBjbGVhcmZpeCh0cnVlKTtcbiAgJjpiZWZvcmUge1xuICAgIGJhY2tncm91bmQ6IHVybCgnLi4vbG9nby5zdmcnKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGhlaWdodDogNTBweDtcbiAgICBtYXJnaW46IDFweCAwIDAgLTU1cHg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiA0MHB4O1xuICB9XG59XG5cbi5zaXRlLWJyYW5kaW5nX19uYW1lLFxuLnNpdGUtYnJhbmRpbmdfX2xvZ28ge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZmxvYXQ6IGxlZnQ7XG59XG5cbi5zaXRlLWJyYW5kaW5nX19sb2dvIHtcbiAgd2lkdGg6IDQwcHg7XG4gIG1hcmdpbi1yaWdodDogNCU7XG4gIEBpbmNsdWRlIG5vdW5kZXJsaW5lKCk7XG59XG5cbi5zaXRlLWJyYW5kaW5nX19uYW1lLXdyYXBwZXIge1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uc2l0ZS1icmFuZGluZ19fbmFtZSB7XG4gIEBleHRlbmQgLmJldGE7XG4gIG1hcmdpbjogMDtcbiAgY29sb3I6ICNmZmY7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgyMHB4KTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgQGluY2x1ZGUgbm91bmRlcmxpbmUoKTtcbiAgZmxvYXQ6IGxlZnQ7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtLCB0cnVlKSB7XG4gICAgd2lkdGg6IDhlbTtcbiAgfVxuXG4gICY6dmlzaXRlZCB7XG4gICAgY29sb3I6ICNmZmY7XG4gIH1cbiAgJjpob3ZlciB7XG4gICAgY29sb3I6ICNmZmY7XG4gIH1cbn1cblxuLnNpdGUtYnJhbmRpbmdfX3Nsb2dhbiB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgxMnB4KTtcbiAgY2xlYXI6IGxlZnQ7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG59XG5cbi5sLWhlYWRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ibGFjaztcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkY29sb3ItYmxhY2ssIDEpO1xuICBib3JkZXItYm90dG9tOiA0cHggc29saWQgJGxpbmFjcmUteWVsbG93O1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRsYXJnZSwgdHJ1ZSkge1xuICAgIGJvcmRlci1ib3R0b206IDA7XG4gIH1cbiAgLmx0LWllOSAmIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIEBpbmNsdWRlIGZpbHRlci1ncmFkaWVudChyZ2JhKCRjb2xvci1ibGFjaywgMSksIHJnYmEoJGNvbG9yLWJsYWNrLCAxKSk7XG4gIH1cbi8qICBoZWlnaHQ6IGVtKCRoZWFkaW5nLWhlaWdodCkgLSAxZW07XG4gIC5mcm9udCAmIHtcbiAgICBoZWlnaHQ6IGVtKCRoZWFkaW5nLWhlaWdodC1mcm9udCkgLTFlbTtcbiAgfSovXG4vKiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwpIHtcbiAgICBoZWlnaHQ6IGVtKCRoZWFkaW5nLWhlaWdodCAtIDQwKTtcbiAgICAuZnJvbnQgJiB7XG4gICAgICBoZWlnaHQ6IGVtKCRoZWFkaW5nLWhlaWdodC1mcm9udCAtIDQwKTtcbiAgICB9XG4gIH1cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCAoJGxhcmdlLCB0cnVlKSB7XG4gICAgaGVpZ2h0OiBlbSgkaGVhZGluZy1oZWlnaHQpO1xuICAgIC5mcm9udCAmIHtcbiAgICAgIGhlaWdodDogZW0oJGhlYWRpbmctaGVpZ2h0LWZyb250KTtcbiAgICB9XG4gIH0qL1xufVxuXG4iLCIvKipcbiAqICRTT0NJQUwtU0hBUkVcbiAqL1xuLnNoYXJldGhpcy1idXR0b25zIHtcbiAgY2xlYXI6IGJvdGg7XG4gICY6YmVmb3JlIHtcbiAgfVxuICBzcGFuIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIHdpZHRoOiA1NXB4O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW46IDAuMmVtIDAuNWVtIDAuMmVtIDA7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcuLi9pbWFnZXMvc29jaWFsLWljb25zLnBuZycpO1xuICAgICY6aG92ZXIge1xuICAgICAgb3BhY2l0eTogMC44O1xuICAgIH1cbiAgfVxuICAuc3RfZmFjZWJvb2tfY3VzdG9tIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0xMjBweDtcbiAgfVxuICAuc3RfdHdpdHRlcl9jdXN0b20ge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgLTQwcHg7XG4gIH1cbiAgLnN0X2VtYWlsX2N1c3RvbSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtODBweDtcbiAgfVxuICAuc3RfcGRmX2N1c3RvbSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwcHg7XG4gIH1cbn1cbiIsIi8qKlxuICogJE5PREUtQUNDT01NT0RBVElPTlxuICovXG4ubm9kZS10eXBlLWFjY29tb2RhdGlvbiB7XG4gIC5sLWNvbnRlbnQge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG4gIC5maWVsZC0tbmFtZS1maWVsZC1tYWluLWltYWdlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgbWFyZ2luOiAwIDAgMWVtIDJlbTtcbiAgfVxuICAuZmllbGQtLW5hbWUtZmllbGQtaW1hZ2VzIC5maWVsZF9faXRlbSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgbWFyZ2luOiAxJTtcbiAgICAgIHdpZHRoOiAyMiU7XG4gIH1cbn1cblxuLyogVHdlYWsgb24gZ3Vlc3Qgcm9vbSBub2RlIHNwZWNpZmljYWxseSAqL1xuLnBhZ2Utbm9kZS01Mzl7XG4gIC5maWVsZC1uYW1lLWJvZHl7XG4gICAgaW1ne1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICAgIG1hcmdpbjogMSU7XG4gICAgICB3aWR0aDogMzAlO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogJE5PREUtYW5ub3VuY2VtZW50XG4gKi9cbi5ub2RlLXR5cGUtY2FzZS1zdHVkeSB7XG4gIC5maWVsZC0tbmFtZS1maWVsZC1tYWluLWltYWdlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgbWFyZ2luOiAwIDAgMWVtIDJlbTtcbiAgfVxufVxuIiwiLyoqXG4gKiAkTk9ERS1CQVNJQy1QQUdFXG4gKi9cbi5ub2RlLS1hcnRpY2xlIHtcbiAgLmZpZWxkLS1uYW1lLWZpZWxkLWltYWdlIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW46IDAgMmVtIDFlbSAwO1xuICB9XG59XG4iLCIvKipcbiAqICROT0RFLUFDQ09NTU9EQVRJT05cbiAqL1xuLm5vZGUtdHlwZS1hY2NvbW9kYXRpb24ge1xuICAuZmllbGQtLW5hbWUtZmllbGQtbWFpbi1pbWFnZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIG1hcmdpbjogMCAwIDFlbSAyZW07XG4gIH1cbn1cbiIsIi8qKlxuICogJE5PREUtQUNDT01NT0RBVElPTlxuICovXG4ubm9kZS10eXBlLWFjY29tb2RhdGlvbiB7XG4gIC5maWVsZC0tbmFtZS1maWVsZC1tYWluLWltYWdlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgbWFyZ2luOiAwIDAgMWVtIDJlbTtcbiAgfVxufVxuIiwiLyoqXG4gKiAkTk9ERS1QRVJTT05cbiAqL1xuLm5vZGUtdHlwZS1wZXJzb24ge1xuICAuZmllbGQtLW5hbWUtZmllbGQtbWFpbi1pbWFnZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIG1hcmdpbjogMCAwIDFlbSAyZW07XG4gIH1cbn1cbiIsIi5wYWdlLW5vZGUtMTU4e1xuXHQuZmllbGQtbmFtZS1ib2R5e1xuXHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQobWF4LXdpZHRoIDEwMjVweCkge1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRvdmVyZmxvdy14OiBzY3JvbGw7XG5cdFx0fVxuXHRcdHRhYmxleyBcblx0XHRcdHB7XG5cdFx0XHRcdG1hcmdpbi1ib3R0b206IDFlbTtcblx0XHRcdH1cblx0XHRcdHRyIHtcblx0XHRcdFx0dGh7XG5cdFx0XHRcdHdpZHRoOiAoMTAwJS84KTtcblx0XHRcdFx0aGVpZ2h0OiA4NXB4O1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjMjIyO1xuXHRcdFx0XHRjb2xvcjogJGxpbmFjcmUteWVsbG93O1xuXHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRcdGF7XG5cdFx0XHRcdFx0Y29sb3I6ICRjb2xvci1nb2xkZW4tcG9wcHk7XG5cdFx0XHRcdFx0Jjpob3Zlcntcblx0XHRcdFx0XHRcdGNvbG9yOiB3aGl0ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aDN7XG5cdFx0XHRcdFx0Y29sb3I6ICRsaW5hY3JlLXllbGxvdztcblx0XHRcdFx0XHRtYXJnaW4tdG9wOiAwO1xuXHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0dGR7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiAwLjllbTtcblx0XHRcdFx0XHR2ZXJ0aWNhbC1hbGlnbjogdG9wXG5cdFx0XHRcdFx0YXtcblx0XHRcdFx0XHRcdGZvbnQtc2l6ZTogMS4xZW07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblxuXHRcdFx0fVxuXHRcdFx0dGhlYWR7XG5cdFx0XHRcdHRoe1xuXHRcdFx0XHRcdGhlaWdodDogNTBweDtcblx0XHRcdFx0fVxuXHRcdFx0XHR0cntcblx0XHRcdFx0XHQmOm50aC1vZi10eXBlKDIpe1xuXHRcdFx0XHRcdFx0dGh7XG5cdFx0XHRcdFx0XHRcdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdFx0XHRcdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1nb2xkZW4tcG9wcHk7XG5cdFx0XHRcdFx0XHRcdGNvbG9yOiBibGFjaztcblx0XHRcdFx0XHRcdFx0YXtcblx0XHRcdFx0XHRcdFx0XHRjb2xvcjpibGFjaztcblx0XHRcdFx0XHRcdFx0XHQmOmhvdmVye1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59IiwiLyoqXG4gKiAkTk9ERVxuICovXG4ubm9kZS0tdGVhc2VyIHtcbiAgbWFyZ2luLWJvdHRvbTogJHZlcnQtc3BhY2luZy11bml0O1xufVxuXG4ubm9kZV9fbGlua3Mge1xuICBtYXJnaW4tYm90dG9tOiAkdmVydC1zcGFjaW5nLXVuaXQ7XG4gIGxpID4gYSB7XG4gICAgZGlzcGxheTogaW5saW5lO1xuICAgIEBpbmNsdWRlIHVuZGVybGluZSgpO1xuICB9XG59XG5cbi5sLWNvbnRlbnQge1xuICAuaGFzLW1haW4taW1hZ2UgJiwgLmxhbmRpbmctcGFnZSAmLCAuZnJvbnQgJiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgICBib3JkZXItdG9wOiA0cHggc29saWQgJGNvbG9yLWxhLXBhbG1hO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCAoJGxhcmdlLCB0cnVlKSB7XG4gICAgICBwYWRkaW5nOiAwIDJlbTtcbiAgICB9XG4gIH1cbiAgLmhhcy1tYWluLWltYWdlIC5oYXMtb25lLXNpZGViYXIgJiB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbGFyZ2UsIHRydWUpIHtcbiAgICAgIG1hcmdpbi10b3A6IC02ZW07XG4gICAgfVxuICB9XG59XG5cblxuXG4iLCIvKipcbiAqICRQQUdFLUNVUlJFTlQtTUVNQkVSU1xuICovXG4uc2VjdGlvbi1jdXJyZW50LW1lbWJlcnMubGFuZGluZy1wYWdlIHtcbiAgLmhhcy10d28tc2lkZWJhcnMge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGF2ZXJhZ2UpIHtcbiAgICAgIC5sLWNvbnRlbnQge1xuICAgICAgIC8vIEBpbmNsdWRlIGdyaWQtc3Bhbig2LCAxKTtcbiAgICAgIH1cbiAgICAgIC5sLXJlZ2lvbi0tc2lkZWJhci1maXJzdCB7XG4gICAgIC8vICAgQGluY2x1ZGUgZ3JpZC1zcGFuKDIsIDcpO1xuICAgICAgfVxuICAgICAgLmwtcmVnaW9uLS1zaWRlYmFyLXNlY29uZCAge1xuICAgIC8vICAgIEBpbmNsdWRlIGdyaWQtc3BhbigyLCA5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi5zZWN0aW9uLWZhY2lsaXRpZXN7XG4gIC5ibG9jay0tY3RhIHtcbiAgICBpbWcge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbiAgQG1lZGlhIChtaW4td2lkdGg6ICRzbWFsbCl7XG4gICAgLmJsb2NrLS1jdGF7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgbWFyZ2luLWxlZnQ6IDFlbTtcbiAgICAgIG1hcmdpbi1yaWdodDogMWVtO1xuICAgICAgaW1nIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQG1lZGlhIChtaW4td2lkdGg6ICRtZWRpdW0pe1xuICAgIC5ibG9jay0tY3Rhe1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgd2lkdGg6IDQ1JTtcbiAgICAgIC5ibG9ja19fY29udGVudHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgIH1cbiAgICAgIHAgYSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHdoaXRlICFpbXBvcnRhbnQ7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItYmxhY2sgIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgaGVpZ2h0OiAxNDVweDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgfVxuICAgICAgaW1nIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41ZW07XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgICAgICBtaW4td2lkdGg6IDEwMCU7XG4gICAgICAgIGJvcmRlcjogMHB4O1xuICAgICAgfVxuICAgICAgc3BhbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xZW07XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yLXdoaXRlO1xuICAgICAgICBwYWRkaW5nOiAwLjVlbSAwO1xuICAgICAgICBib3JkZXItYm90dG9tOiAwO1xuICAgICAgICB0cmFuc2l0aW9uOiAwLjJzO1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgfVxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGltZyB7XG4gICAgICAgICAgb3BhY2l0eTogMC44O1xuICAgICAgICB9XG4gICAgICAgIHNwYW4ge1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICA7XG4gICAgfVxuICB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiAkYXZlcmFnZSl7XG4gICAgLmJsb2NrLS1jdGF7XG4gICAgICB3aWR0aDogMzAlO1xuICAgIH1cbiAgfVxuICBAbWVkaWEgKG1pbi13aWR0aDogJGxhcmdlKXtcbiAgICAuYmxvY2stLWN0YXtcbiAgICAgIHdpZHRoOiAyMiU7XG4gICAgICBwIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjllbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8qKlxuICogJFBBR0UtR0FMTEVSWVxuICovXG4ucGFnZS1nYWxsZXJ5IHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtICRsYXJnZSkge1xuICAgIC5sLWNvbnRlbnQubC1jb250ZW50IHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtc3BhbigxMCwgMSk7XG4gICAgfVxuICAgIC5sLXJlZ2lvbi0tc2lkZWJhci1zZWNvbmQubC1yZWdpb24tLXNpZGViYXItc2Vjb25kIHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtc3BhbigxMCwgMSk7XG4gICAgICAuYmxvY2sge1xuICAgICAgICBAaW5jbHVkZSBmbG9hdC1zcGFuKDQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLyogRG8gdGhpcyBuZXh0IG9uZSwgcGxlYXNlLCBidXQgYWxzbyB0aGVuIG1ha2UgaXQgYWxsIGJyaWxsOlxuXG4ubC1tYWluLmwtY29uc3RyYWluZWQge1xuICAgIG1heC13aWR0aDogMTI2MHB4O1xufVxuXG4qL1xuXG4uYmxvY2stLWJsb2NrLTEyLCAuYmxvY2stLWJsb2NrLTcsIC5ibG9jay0tYmxvY2stOCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmZyb250IC5zaXRlLWJyYW5kaW5nX19zbG9nYW4ge1xuICBmb250LXNpemU6IDAuOWVtO1xuICBmb250LXdlaWdodDogNDAwO1xuICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG4gIHRleHQtdHJhbnNmb3JtOiBpbml0aWFsO1xufVxuXG4uZnJvbnQge1xuXG4gIGgxIHtcbiAgICBmb250LXNpemU6IDIuMWVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTtcbiAgICBtYXJnaW4tdG9wOiA1cHg7XG4gIH1cblxuICAubm9kZS0tZnVsbCB7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbCwgdHJ1ZSl7XG4gICAgICBmb250LXNpemU6IDEuMWVtO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuNWVtO1xuICAgIH1cbiAgfVxuXG4gIC5sLW1haW4gLmwtY29udGVudCwgLmxhbmRpbmctcGFnZSAubC1tYWluIC5sLWNvbnRlbnQge1xuICAgIG1hcmdpbi1ib3R0b206IDJlbTtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbCwgdHJ1ZSkge1xuICAgICAgcGFkZGluZzogMCAxZW07XG4gICAgfVxuICB9XG5cbiAgLmwtcmVnaW9uLS1zaWRlYmFyLWZpcnN0LCAubC1yZWdpb24tLXNpZGViYXItc2Vjb25kIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbCwgdHJ1ZSkge1xuICAgICAgcGFkZGluZzogMWVtIDJlbSAwO1xuICAgIH1cbiAgICBoNCB7XG4gICAgICBtYXJnaW46IDAuNWVtIDAgMDtcbiAgICB9XG5cbiAgICBpbWcge1xuXG4gICAgfVxuXG4gIH1cbn1cblxuXG5cblxuXG4uZnJvbnQge1xuICAudmlldy1uZXdzIHtcbiAgICAuZmllbGQtbmFtZS1maWVsZC1tYWluLWltYWdlIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuICAgIGg0IHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuICB9XG59XG4iLCIvKipcbiAqICRQQUdFLUxBTkRJTkdcbiAqL1xuXG5cblxuLmZyb250LCAubGFuZGluZy1wYWdlIHtcbiAgLmwtY29udGVudCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG4gIC5sLW1haW4ge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtYWxsKSB7XG5cbiAgICB9XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtLCB0cnVlKSB7XG4gICAgICBcbiAgICAgIHdpZHRoOiA5MyU7XG4gICAgfVxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGF2ZXJhZ2UsIHRydWUpIHtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIG1hcmdpbjogaW5oZXJpdCBhdXRvO1xuICAgICAgLmwtY29udGVudCB7XG4gICAgICAgIG1heC13aWR0aDogaW5pdGlhbDtcbiAgICAgICAgcGFkZGluZzogMTBweCAyZW0gMDtcbiAgICAgICAgd2lkdGg6IDUyJTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludCgkYXZlcmFnZSwgdHJ1ZSkge1xuICAubC1tYWluIHtcbiAgICAubGFuZGluZy1wYWdlICYsXG4gICAgLmZyb250ICYge1xuICAgICAgd2lkdGg6IDk1JTtcbiAgICB9XG4gICAgLmxhbmRpbmctcGFnZSAmIHtcbiAgICAgIHBhZGRpbmc6IDAgMDtcbiAgICB9XG4gICAgLmZyb250ICYge1xuICAgICAgcGFkZGluZzogMCAwO1xuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICAgIC5sLWNvbnRlbnQge1xuICAgIH1cbiAgfVxuICAubGFuZGluZy1wYWdlLCAuZnJvbnQgeyBcbiAgICAubC1tYWluIC5sLWhpZ2hsaWdodGVkLXdyYXBwZXIrLmwtY29udGVudCB7XG4gICAgICBtYXJnaW4tdG9wOiAtNjBweDtcbiAgICAgIGJvcmRlci10b3A6IDRweCBzb2xpZCAkbGluYWNyZS15ZWxsb3c7XG4gICAgfVxuICB9XG59XG5cblxuLmxhbmRpbmctcGFnZSB7XG4gIC8vIE9uIGxhbmRpbmcgcGFnZXMgdGhlcmUgbWF5IG5vdCBiZSBhIGhlcm8gcmVnaW9uIHNvIHB1c2ggdGhlIGwtbWFpblxuICAvLyBjb250ZW50IGRvd24uXG4gIC5sLWhlYWRlciB7XG5cbiAgfVxuICAvLyBUaGVuIGlmIHRoZXJlIGlzIGEgaGVybyByZWdpb24gcHVsbCBpdCBiYWNrIHVwLlxuICAubC1yZWdpb24tLWhlcm8ge1xuICAgIG1hcmdpbi10b3A6IC0xMGVtO1xuICB9XG4gIC8vIFB1bGwgdGhlIG1haW4gdXAgdG8gYW5kIG92ZXIgdGhlIGltYWdlIGJvcmRlci5cbiAgLmwtbWFpbiB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbGFyZ2UsIHRydWUpIHtcbiAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgfVxuICB9XG4gIC8vIFB1bGwgdGhlIGNvbnRlbnQgcmVnaW9uIHVwIG92ZXIgdGhlIGltYWdlLlxuICAubC1jb250ZW50IHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRsYXJnZSwgdHJ1ZSkge1xuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBicmVha3BvaW50KCRhdmVyYWdlLCB0cnVlKSB7XG4gICAgLmwtcmVnaW9uLS1zaWRlYmFyLWZpcnN0IHtcbiAgICAgIGNsZWFyOiBub25lO1xuICAgIH1cbiAgICAubC1yZWdpb24tLXNpZGViYXItc2Vjb25kIHtcbiAgICAgICNibG9jay12aWV3cy1uZXdzLWJsb2NrLTMge1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4uZnJvbnQge1xuICAubC1yZWdpb24tLXNpZGViYXItZmlyc3QsIC5sLXJlZ2lvbi0tc2lkZWJhci1zZWNvbmQge1xuICAgIG1hcmdpbi1ib3R0b206IDJlbTtcbiAgfVxuICAubC1yZWdpb24tLXNpZGViYXItZmlyc3Qge1xuICAgIFxuICB9XG5cbiAgLmwtcmVnaW9uLS1zaWRlYmFyLXNlY29uZCB7XG4gICAgXG4gIH1cbiAgLmwtcmVnaW9uLS1kaXB0eWNoLWZpcnN0LCAubC1yZWdpb24tLWRpcHR5Y2gtc2Vjb25kIHtcbiAgICBib3JkZXItdG9wOiA0cHggc29saWQgJGNvbG9yLWxhLXBhbG1hO1xuICAgIG1pbi1oZWlnaHQ6IDMwMHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDFlbTtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxuICAubC1yZWdpb24tLWRpcHR5Y2gtZmlyc3Qge1xuICAgIC8qYmFja2dyb3VuZDogdXJsKCcuLi9pbWFnZXMvc3ByaW5nLmpwZycpOyovXG4gIH1cbiAgLmwtcmVnaW9uLS1kaXB0eWNoLXNlY29uZCB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGxpbmFjcmUteWVsbG93O1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci13aGl0ZSB1cmwoJy4uL2ltYWdlcy9Ib21lcGFnZS1nbG9iZS1mdWxsLnBuZycpIG5vLXJlcGVhdCAtMTUlIGNlbnRlcjtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXNpemUoNDUlIGF1dG8pO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxhcmdlKSB7XG4gICAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXNpemUoYXV0byk7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjcwcHggY2VudGVyXG4gICAgfVxuICAgIGgyIHtcbiAgICAgIGZvbnQtZmFtaWx5OiBHZW9yZ2lhLCBUaW1lcywgXCJUaW1lcyBOZXcgUm9tYW5cIiwgc2VyaWY7XG4gICAgICBsaW5lLWhlaWdodDogMC41O1xuICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgxMTBweCk7XG4gICAgICBjb2xvcjogJGNvbG9yLWJsYWNrO1xuICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtYWxsZXN0KSB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB3aWR0aDogNDUlO1xuICAgICAgfVxuICAgIH1cbiAgICBlbSB7XG4gICAgICBmb250LXN0eWxlOiBpbml0aWFsO1xuICAgICAgQGluY2x1ZGUgZm9udC1zaXplKDMwcHgpO1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGxlc3QpIHtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyZW07XG4gICAgICB9XG4gICAgICBwYWRkaW5nLXRvcDogMWVtO1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwpIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIHdpZHRoOiA0NSU7XG4gICAgICAgIGNsZWFyOiBsZWZ0O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0ZW07XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0pIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbGFyZ2UsIHRydWUpIHtcbiAgICAubC1jb250ZW50IHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtc3Bhbig0LCAxKTtcbiAgICB9XG4gICAgLmwtcmVnaW9uLS1zaWRlYmFyLWZpcnN0IHtcbiAgICAgIFxuICAgIH1cbiAgICAubC1yZWdpb24tLXNpZGViYXItc2Vjb25kIHtcbiAgICAgIFxuICAgIH1cbiAgfVxufVxuXG4uZnJvbnQsIC5sYW5kaW5nLXBhZ2Uge1xuICAubC1yZWdpb24tLXNpZGViYXItZmlyc3QsIC5sLXJlZ2lvbi0tc2lkZWJhci1zZWNvbmQsIC5sLXJlZ2lvbi0tZGlwdHljaC1maXJzdCB7XG4gICAgcGFkZGluZzogMWVtIDJlbTtcbiAgICBoMy5ibG9ja19fdGl0bGUge1xuICAgICAgY29sb3I6ICM0NjRhNGU7XG4gICAgICBjb2xvcjogIzY5N2Q5MjtcbiAgICAgIGZvbnQtc2l6ZTogMC44ZW0gIWltcG9ydGFudDtcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICBsZXR0ZXItc3BhY2luZzogMXB4O1xuICAgICAgbWFyZ2luLWJvdHRvbTogMjBQWDtcbiAgICAgIHBhZGRpbmctdG9wOiAzM3B4O1xuICAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAvKnRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Ki9cbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZDogdXJsKCcuLi9pbWFnZXMvc2NhbGxvcC1ncmV5LnN2ZycpO1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgaGVpZ2h0OiAyNXB4O1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtMTFweDtcbiAgICAgICAgbWFyZ2luLXRvcDogLTMzcHg7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgd2lkdGg6IDIycHg7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtYWxsLCB0cnVlKSB7XG4gICAgLmwtcmVnaW9uLS1zaWRlYmFyLWZpcnN0IHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDMwcHg7XG4gICAgfVxuICAgIC5sLXJlZ2lvbi0tc2lkZWJhci1zZWNvbmQge1xuICAgICAgXG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bSwgdHJ1ZSkge1xuICAgIC5sLXJlZ2lvbi0tc2lkZWJhci1maXJzdCB7XG4gICAgfVxuICAgIC5sLXJlZ2lvbi0tc2lkZWJhci1zZWNvbmQge1xuXG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtLCB0cnVlKSB7XG4gICAgLmwtY29udGVudCB7XG5cbiAgICB9XG4gICAgLmwtcmVnaW9uLS1zaWRlYmFyLWZpcnN0IHtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgIG1hcmdpbi1ib3R0b206IDJlbTtcbiAgICAgIHdpZHRoOiA0OCU7XG4gICAgfVxuICAgIC5sLXJlZ2lvbi0tc2lkZWJhci1zZWNvbmQge1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgbWFyZ2luLWJvdHRvbTogMmVtO1xuICAgICAgd2lkdGg6IDQ4JTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRhdmVyYWdlLCB0cnVlKSB7XG4gICAgLmwtY29udGVudCB7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICB9XG4gICAgLmwtcmVnaW9uLS1zaWRlYmFyLWZpcnN0IHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAxJTtcbiAgICAgIHdpZHRoOiAyMyU7XG4gICAgfVxuICAgIC5sLXJlZ2lvbi0tc2lkZWJhci1zZWNvbmQge1xuICAgICAgd2lkdGg6IDIzJTtcbiAgICB9XG4gIH1cbn1cblxuLmZyb250IHtcbiAgLmwtcmVnaW9uLS1zaWRlYmFyLWZpcnN0LCAubC1yZWdpb24tLXNpZGViYXItc2Vjb25kLCAubC1yZWdpb24tLWRpcHR5Y2gtZmlyc3Qge1xuICAgIHBhZGRpbmctdG9wOiAxLjJlbTtcbiAgfVxufVxuXG4ubGFuZGluZy1wYWdlIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbGFyZ2UsIHRydWUpIHtcbiAgICAubC1yZWdpb24tLXNpZGViYXItc2Vjb25kIHtcbiAgICB9XG4gIH1cbn1cblxuLmwtcmVnaW9uLS1zaWRlYmFyLWZpcnN0IHtcbiAgLnZpZXctdXBjb21pbmctZXZlbnRzIHtcbiAgICAudmlld3Mtcm93IHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDEuNWVtO1xuICAgIH1cbiAgfVxufVxuXG4ubGFuZGluZy1wYWdlIHtcbiAgLnZpZXctbmV3cyxcbiAgLnZpZXctY3ItZXZlbnRzIHtcbiAgICAudmlld3Mtcm93IHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDEuNWVtO1xuICAgIH1cbiAgICAuZmllbGQtbmFtZS1maWVsZC1tYWluLWltYWdlIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDBlbTtcbiAgICB9XG4gICAgaDQge1xuICAgICAgbWFyZ2luLXRvcDogMGVtO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMGVtO1xuICAgIH1cbiAgfVxufVxuXG4ubC1yZWdpb24tLXNpZGViYXItZmlyc3QsIC5sLXJlZ2lvbi0tc2lkZWJhci1zZWNvbmQge1xuICAuYmxvY2tfX3RpdGxlIHtcbiAgICBcbiAgfVxufVxuXG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vICBvdmVycmlkZSB0byBjaGFuZ2UgdGhlIGRlZmF1bHRcbiRkZWZhdWx0LWJhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIHNpemUgb2YgYmFja2dyb3VuZCBpbWFnZXMgdXNpbmcgcHgsIHdpZHRoIGFuZCBoZWlnaHQsIG9yIHBlcmNlbnRhZ2VzLlxuLy8gQ3VycmVudGx5IHN1cHBvcnRlZCBpbjogT3BlcmEsIEdlY2tvLCBXZWJraXQuXG4vL1xuLy8gKiBwZXJjZW50YWdlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJhY2tncm91bmQtb3JpZ2luIChkZWZhdWx0ID0gcGFkZGluZy1ib3gpXG4vLyAqIG1peGluIGRlZmF1bHRzIHRvOiBgJGRlZmF1bHQtYmFja2dyb3VuZC1zaXplYFxuQG1peGluIGJhY2tncm91bmQtc2l6ZShcbiAgJHNpemUtMTogJGRlZmF1bHQtYmFja2dyb3VuZC1zaXplLFxuICAkc2l6ZS0yOiBmYWxzZSxcbiAgJHNpemUtMzogZmFsc2UsXG4gICRzaXplLTQ6IGZhbHNlLFxuICAkc2l6ZS01OiBmYWxzZSxcbiAgJHNpemUtNjogZmFsc2UsXG4gICRzaXplLTc6IGZhbHNlLFxuICAkc2l6ZS04OiBmYWxzZSxcbiAgJHNpemUtOTogZmFsc2UsXG4gICRzaXplLTEwOiBmYWxzZVxuKSB7XG4gICRzaXplLTE6IGlmKHR5cGUtb2YoJHNpemUtMSkgPT0gc3RyaW5nLCB1bnF1b3RlKCRzaXplLTEpLCAkc2l6ZS0xKTtcbiAgJHNpemVzOiBjb21wYWN0KCRzaXplLTEsICRzaXplLTIsICRzaXplLTMsICRzaXplLTQsICRzaXplLTUsICRzaXplLTYsICRzaXplLTcsICRzaXplLTgsICRzaXplLTksICRzaXplLTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJhY2tncm91bmQtc2l6ZSwgJHNpemVzLCAtbW96LCAtd2Via2l0LCAtbywgbm90KC1tcyksIG5vdCgta2h0bWwpKTtcbn1cbiIsIi8qKlxuICogJFBBR0UtUFJPU1BFQ1RJVkUtU1RVREVOVFNcbiAqL1xuLnNlY3Rpb24tcHJvc3BlY3RpdmUtc3R1ZGVudHMge1xuICBcbn1cbiIsIi8qKlxuICogJEVYUE9TRUQgRk9STVxuICovXG5cbi52aWV3cy1leHBvc2VkLWZvcm0ge1xuICAvLyBUaGUgc3VibWl0IGFuZCByZXNldCBidXR0b24gd2hlbiBhZGphY2VudCBzaG91bGQgaGF2ZSBzcGFjZS5cbiAgLnZpZXdzLXN1Ym1pdC1idXR0b24gKyAudmlld3MtcmVzZXQtYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogMWVtO1xuICB9XG59XG4iLCIvKipcbiAqICRWSUVXLUVWRU5UU1xuICovXG4udmlldy11cGNvbWluZy1ldmVudHMsIC52aWV3LWNyLWV2ZW50cywgLnZpZXctdGVzdC1nYWxsZXJ5LCAudmlldy1jbG9uZS1vZi1nYWxsZXJ5LCAudmlldy1hbHVtbmktZ2FsbGVyeSwgLnZpZXctbmV3cywgLnZpZXctYW5ub3VuY2VtZW50cyB7XG5cbiAgLmdyb3VwLWxlZnQge1xuICAgIHdpZHRoOiAyNSU7XG4gICAgaW1nIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuICAuZ3JvdXAtcmlnaHQge1xuICAgIHdpZHRoOiA3MiU7XG4gIH1cbiAgaDIge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAubC1jb250ZW50ICYge1xuICAgIH1cbiAgICBhIHtcbiAgICB9XG4gIH1cblxuICBoMyB7XG4gICAgbGluZS1oZWlnaHQ6IDEuMWVtO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuXG4uZnJvbnQge1xuICAudmlld3Mtcm93IHtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjI1ZW07XG4gICAgfVxuICB9XG5cbiAgaW1nIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxcHg7XG4gIH1cblxuICAubm9kZS0tcmVsYXRlZC1jb250ZW50IGgyIHtcbiAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgyNnB4KTtcbiAgICB9XG4gIC5maWVsZC1uYW1lLXRpdGxlLCAuZmllbGQtbmFtZS1maWVsZC1pbWFnZXMge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuICAuZmllbGQtbmFtZS1maWVsZC1kYXRlLXRpbWUsIC5maWVsZC1uYW1lLWZpZWxkLWxvY2F0aW9uLCAuZmllbGQtLW5hbWUtZmllbGQtZGF0ZS10aW1lLCAuZmllbGQtLW5hbWUtZmllbGQtbG9jYXRpb24ge1xuICAgIGNvbG9yOiAkY29sb3ItZ3JleTtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG4udmlldy10ZXN0LWdhbGxlcnksIC52aWV3LWNsb25lLW9mLWdhbGxlcnksIC52aWV3LWFsdW1uaS1nYWxsZXJ5IHtcbiAgXG4gIC5sLWNvbnRlbnQgJiAudmlld3Mtcm93IHtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoMzgwcHggNjYwcHgpIHtcbiAgICAgIHdpZHRoOiA0OCU7XG4gICAgICBtYXJnaW4tbGVmdDogNCU7XG4gICAgICAmOm50aC1jaGlsZCgybi0xKSB7XG4gICAgICAgIGNsZWFyOiBsZWZ0O1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgIH1cbiAgICAgIGgyIHtcbiAgICAgICAgQGluY2x1ZGUgZm9udC1zaXplKDIwcHgpO1xuICAgICAgfVxuICAgICAgLmZpZWxkLW5hbWUtZmllbGQtZGF0ZS10aW1lIHtcbiAgICAgICAgQGluY2x1ZGUgZm9udC1zaXplKDE2cHgpO1xuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0gJGF2ZXJhZ2UpIHtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgd2lkdGg6IDI5JTtcbiAgICAgIG1hcmdpbi1yaWdodDogMyU7XG4gICAgICAmOm50aC1jaGlsZCgzKSB7XG4gICAgICAgIGNsZWFyOiByaWdodDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgfVxuICAgICAgaDIge1xuICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoMjBweCk7XG4gICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGF2ZXJhZ2UgJGxhcmdlKSB7XG4gICAgICB3aWR0aDogMjIlO1xuICAgICAgbWFyZ2luLWxlZnQ6IDQlO1xuICAgICAgJjpudGgtY2hpbGQoNG4tMykge1xuICAgICAgICBjbGVhcjogbGVmdDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGxhcmdlLCB0cnVlKSB7XG4gICAgICB3aWR0aDogMjglO1xuICAgICAgbWFyZ2luLWxlZnQ6IDglO1xuICAgICAgJjpudGgtY2hpbGQoM24tMikge1xuICAgICAgICBjbGVhcjogbGVmdDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICB9XG4gICAgfVxuICAgIG1hcmdpbi1ib3R0b206IGVtKDQwcHgpO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIGltZ3tcbiAgICAgICAgd2lkdGg6IDEwMCVcbiAgICB9XG4gIH1cbn1cblxuICAvKiBMaXN0cyBvZiBuZXdzIGFuZCBldmVudHMgKi9cblxuLmJsb2NrLS12aWV3cy11cGNvbWluZy1ldmVudHMtYmxvY2stMSwgLmJsb2NrLS12aWV3cy1uZXdzLWJsb2NrLTIsIC52aWV3LXVwY29taW5nLWV2ZW50cywgLnZpZXctdXBjb21pbmctbmV3cywgLnZpZXctbmV3cyB7XG4gIGgyLCBoMywgaDQge1xuICAgIGNsZWFyOiBsZWZ0O1xuICAgIGZvbnQtc2l6ZTogMTdweDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuICBoMyBhLCBoMiBhLCBoNCBhIHtcbiAgICBiYWNrZ3JvdW5kOiBsaWdodGVuKCRsaW5hY3JlLXllbGxvdywyMCUpO1xuICAgIGJveC1zaGFkb3c6IDVweCAwIDAgbGlnaHRlbigkbGluYWNyZS15ZWxsb3csMjAlKSwgLTVweCAwIDAgbGlnaHRlbigkbGluYWNyZS15ZWxsb3csMjAlKTtcbiAgICBjb2xvcjogIzAwMDAwMDtcbiAgICB0cmFuc2l0aW9uOiAwLjJzO1xuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogbGlnaHRlbigkbGluYWNyZS15ZWxsb3csMzUlKTtcbiAgICAgIGJveC1zaGFkb3c6IDVweCAwIDAgbGlnaHRlbigkbGluYWNyZS15ZWxsb3csMzUlKSwgLTVweCAwIDAgbGlnaHRlbigkbGluYWNyZS15ZWxsb3csMzUlKTtcbiAgICAgIGNvbG9yOiBibGFjayAhaW1wb3J0YW50O1xuICAgICAgdHJhbnNpdGlvbjogMC4ycztcbiAgICB9IFxuICB9XG4gIHNwYW4uZGF0ZS1kaXNwbGF5LXNpbmdsZSB7XG4gICAgY29sb3I6ICMwMDAwMDA7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC1zaXplOiAwLjllbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICB9XG4gIC52aWV3cy1maWVsZC1maWVsZC1sb2NhdGlvbiwgLnZpZXdzLWZpZWxkLWZpZWxkLWxvY2F0aW9uLCAudmlldy1jci1ldmVudHMgLnZpZXdzLWZpZWxkLWZpZWxkLWxvY2F0aW9uIHtcbiAgICBjb2xvcjogIzAwMDAwMDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IDAuOWVtO1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuMztcbiAgfVxuICBpbWc6aG92ZXIge1xuICAgIG9wYWNpdHk6IDAuODtcbiAgfVxufSIsIi8qKlxuICogJFZJRVctRkVMTE9XU1xuICovXG4udmlldy1pZC1mZWxsb3dzIHtcbiAgIC52aWV3cy1yb3cge1xuICAgIGNsZWFyOiBib3RoO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IDEuNjFlbTtcbiAgICBtaW4taGVpZ2h0OiAxLjYxZW07XG4gICB9XG4gICAgLnZpZXdzLWZpZWxkLWZpZWxkLXN1cm5hbWUgLmZpZWxkLWNvbnRlbnQsIC52aWV3cy1maWVsZC1maWVsZC1wcmVmaXggLmZpZWxkLWNvbnRlbnQsIC52aWV3cy1maWVsZC1maWVsZC1maXJzdC1uYW1lIC5maWVsZC1jb250ZW50IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IC4yNWVtO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbiAgICBcbiAgICAudmlld3MtZmllbGQtZmllbGQtcG9zaXRpb24ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDFlbTtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgfVxuICAgIC52aWV3cy1maWVsZC1maWVsZC1jb250YWN0LWUtbWFpbCB7XG4gICAgICAgIGNsZWFyOiBib3RoO1xuICAgICAgICAudmlld3MtbGFiZWx7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMWVtO1xuICAgICAgICB9XG4gICAgfVxuICAgIC52aWV3cy1maWVsZC1maWVsZC1yZWxhdGVkLWxpbmtzIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbn1cbiIsIi52aWV3LWNyLXNvY2lldGllc3tcblx0LnZpZXdzLXJvd3tcblx0XHQuZmllbGR7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAwLjZlbTtcblx0XHR9XG5cdH1cbn0iLCIvKipcbiAqICRWSUVXLVNUQUZGXG4gKi9cbi52aWV3LWlkLXBlb3BsZSB7XG4gICAudmlld3Mtcm93IHtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjYxZW07XG4gICAgXG4gICAgLmdyb3VwLWxlZnQge1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgd2lkdGg6IDcwJTsgICBcbiAgICAgICAgLmZpZWxkIHtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAuMjVlbTtcbiAgICAgICAgfVxuICAgICAgICAuZmllbGQtbmFtZS1maWVsZC1wcmVmaXgsIC5maWVsZC1uYW1lLWZpZWxkLWZpcnN0LW5hbWUsIC5maWVsZC1uYW1lLWZpZWxkLXN1cm5hbWUge1xuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuMjVlbTtcbiAgICAgICAgfVxuICAgICAgICAuZmllbGQtZ3JvdXAtc3RhZmYtbmFtZSB7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoMThweCk7XG4gICAgICAgIH1cbiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtZWRpdW0pe1xuICAgICAgICAgLmZpZWxkLW5hbWUtZmllbGQtY29udGFjdC1lLW1haWx7XG4gICAgICAgICAgICBhe1xuICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWVkaXVtKXtcbiAgICAgICAgd2lkdGg6IDc2JTtcbiAgICAgIH1cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbGFyZ2Upe1xuICAgICAgICB3aWR0aDogODIlO1xuICAgICAgfVxuICAgIH1cbiAgICAuZ3JvdXAtcmlnaHQge1xuICAgICAgQG1lZGlhIChtaW4td2lkdGg6ICRtZWRpdW0pe1xuICAgICAgICB3aWR0aDogMTQ1cHg7XG4gICAgICB9XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB3aWR0aDogMzAlO1xuICAgICAgICBcbiAgICAgIC5maWVsZC1uYW1lLWZpZWxkLW1haW4taW1hZ2Uge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDZweDtcbiAgICAgICAgbWF4LXdpZHRoOiAxMzVweDtcbiAgICAgIH1cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWVkaXVtKXtcbiAgICAgICAgLmZpZWxkLW5hbWUtZmllbGQtbWFpbi1pbWFnZXtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmZpZWxkLS1uYW1lLWZpZWxkLXByZWZpeCwgLmZpZWxkLS1uYW1lLWZpZWxkLWZpcnN0LW5hbWUsIC5maWVsZC0tbmFtZS1maWVsZC1zdXJuYW1lIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IC4yNWVtO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbiAgICAuZmllbGQtLW5hbWUtZmllbGQtcG9zaXRpb24ge1xuICAgICAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgfVxuICBcbn1cbi5sYWJlbC1pbmxpbmUge1xuICBkaXNwbGF5OiBpbmxpbmU7XG59XG4iLCIvLyBOZXdzIGxpc3QgcGFnZSwgYW5kIEV2ZW50cyBsaXN0IHBhZ2Vcbi52aWV3LW5ld3MsXG4udmlldy11cGNvbWluZy1ldmVudHMsXG4udmlldy1jci1ldmVudHMge1xuXHQudmlld3Mtcm93IHtcblx0XHRvdmVyZmxvdzogYXV0bztcblx0ICBcdHpvb206IDE7XG5cdCAgXHRtYXJnaW4tYm90dG9tOiAxOHB4O1xuXHQgIFx0Lm5ld3MtZmllbGRzLWxpc3Qge1xuXHQgIFx0XHR3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuXHQgIFx0fVxuXHQgIFx0LmV2ZW50LWRldGFpbHMge1xuXHQgIFx0XHRtYXJnaW4tYm90dG9tOiAzZW07XG5cdCAgXHRcdHAge1xuXHRcdFx0ICAgIHRleHQtYWxpZ246IGp1c3RpZnk7XG5cdCAgXHRcdH1cblx0ICBcdH1cblxuXHR9XG5cblx0LnZpZXdzLWZpZWxkLWZpZWxkLW1haW4taW1hZ2Uge1xuXHRcdGltZyB7XG5cdFx0XHRmbG9hdDogbGVmdDtcblx0XHQgICAgbWFyZ2luLXJpZ2h0OiAyZW07XG5cdFx0fVxuXHR9XG5cdC52aWV3cy1maWVsZC1maWVsZC1sb2NhdGlvbiB7XG5cdFx0Y29sb3I6ICM3Nzc3Nzc7XG5cdH1cbn1cbi8vIEhvbWVwYWdlIC0gbmV3cywgZXZlbnRzXG4ubmV3cy1vbi1ob21lcGFnZSxcbiNibG9jay12aWV3cy11cGNvbWluZy1ldmVudHMtYmxvY2stMSB7XG5cdC52aWV3cy1maWVsZC1maWVsZC1tYWluLWltYWdlIHtcblx0XHRpbWcge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDA7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDA7XG5cdFx0fVxuXHR9XG59XG4vLyBmdWxsIHBhZ2UgLSBuZXdzICYgZXZlbnRzXG5cbi5ub2RlLS1uZXdzLS1mdWxsLFxuLm5vZGUtLWV2ZW50LS1mdWxsIHtcblx0LmZpZWxkLW5hbWUtZmllbGQtbWFpbi1pbWFnZS1ub24tYmFubmVyIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgbWFyZ2luLWxlZnQ6IDEuNWVtO1xuICAgIG1hcmdpbi1ib3R0b206IDAuOGVtO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICAvLyAuc2VjdGlvbi1ub2RlLWVkaXQgJiB7XG4gICAgLy8gXHRmbG9hdDogbm9uZTtcbiAgICAvLyB9XG5cdH1cblx0aW1nIHtcblx0ICAvLyBtYXJnaW4tcmlnaHQ6IDEwcHg7XG5cdCAgLy8gbWFyZ2luLWxlZnQ6IDEwcHg7XG5cdCAgLy8gZmxvYXQ6IHJpZ2h0O1xuXHQgIC8vIHBhZGRpbmc6IDFlbTtcblx0ICBib3JkZXI6IG5vbmU7XG5cdH1cblx0I25vZGVfZXZlbnRfZnVsbF9ncm91cF9ldmVudF9kZXRhaWxzIHtcblx0XHRpbWcge1xuXHRcdCAgbWFyZ2luLXJpZ2h0OiA1cHg7XG5cdFx0ICBtYXJnaW4tbGVmdDogNXB4O1xuXHRcdCAgZmxvYXQ6IHJpZ2h0O1xuXHRcdCAgcGFkZGluZzogMWVtO1xuXHRcdCAgYm9yZGVyOiBub25lO1xuXHRcdH1cdFxuXHR9XG59XG5cblxuLy8gTWVtYmVycyBhbmQgRnJpZW5kcyAtIG5ld3Mgdmlld1xuI2Jsb2NrLXZpZXdzLW5ld3MtYmxvY2stMyxcbiNibG9jay12aWV3cy11cGNvbWluZy1ldmVudHMtYmxvY2stMixcbiNibG9jay12aWV3cy11cGNvbWluZy1ldmVudHMtYmxvY2stNixcbiNibG9jay12aWV3cy11cGNvbWluZy1ldmVudHMtYmxvY2stOSxcbiNibG9jay12aWV3cy11cGNvbWluZy1ldmVudHMtYmxvY2stMTBcbntcblx0LnZpZXdzLWZpZWxkLWZpZWxkLW1haW4taW1hZ2Uge1xuXHRcdGltZyB7XG5cdFx0XHQgIFxuXHRcdFx0fVxuXHRcdHAge1xuXHRcdFxuXHRcdH1cblx0fVxufVxuXG4gLy9ldmVudHMgc2lkZSB2aWV3cyBuby1mbG9hdGluZyBjb3JyZWN0aW9uXG4gI2Jsb2NrLXZpZXdzLXVwY29taW5nLWV2ZW50cy1ibG9jay05LFxuICNibG9jay12aWV3cy11cGNvbWluZy1ldmVudHMtYmxvY2stMTAge1xuIFx0aW1nIHtcbiBcdFx0ZmxvYXQ6IG5vbmU7XG4gXHR9XG4gfVxuI25vZGVfZXZlbnRfYXJjaGl2ZWRfZXZlbnRfZ3JvdXBfZXZlbnRfZGV0YWlscyB7XG5cdC5maWVsZC1uYW1lLWZpZWxkLW1haW4taW1hZ2Utbm9uLWJhbm5lciB7XG5cdCBcdGltZyB7XG5cdCBcdFx0ZmxvYXQ6IHJpZ2h0O1xuXHQgXHRcdG1hcmdpbi1sZWZ0OiAwLjhlbTtcblx0IFx0XHRtYXJnaW4tYm90dG9tOiAwLjhlbTtcblx0IFx0XHRib3JkZXI6IG5vbmU7XG5cdCBcdH1cblx0fVxufSJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== */