/*-----Responsive-----*/

/*-----Variables-----*/

/*-----use fonts-----*/

@font-face {
  font-family: 'Powerful';
  src: url("/fonts/powerful/Powerful-Regular.eot");
  src: url("/fonts/powerful/Powerful-Regular.eot?#iefix") format("embedded-opentype"), url("/fonts/powerful/Powerful-Regular.woff2") format("woff2"), url("/fonts/powerful/Powerful-Regular.woff") format("woff"), url("/fonts/powerful/Powerful-Regular.svg#Powerful-Regular") format("svg");
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Averta';
  src: url("/fonts/averta/Averta-Regular.eot");
  src: url("/fonts/averta/Averta-Regular.eot?#iefix") format("embedded-opentype"), url("/fonts/averta/Averta-Regular.woff2") format("woff2"), url("/fonts/averta/Averta-Regular.woff") format("woff"), url("/fonts/averta/Averta-Regular.svg#Averta-Regular") format("svg");
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Averta Black';
  src: url("/fonts/averta/Averta-Black.eot");
  src: url("/fonts/averta/Averta-Black.eot?#iefix") format("embedded-opentype"), url("/fonts/averta/Averta-Black.woff2") format("woff2"), url("/fonts/averta/Averta-Black.woff") format("woff"), url("/fonts/averta/Averta-Black.svg#Averta-Black") format("svg");
  font-weight: 900;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Averta Bold';
  src: url("/fonts/averta/Averta-Bold.eot");
  src: url("/fonts/averta/Averta-Bold.eot?#iefix") format("embedded-opentype"), url("/fonts/averta/Averta-Bold.woff2") format("woff2"), url("/fonts/averta/Averta-Bold.woff") format("woff"), url("/fonts/averta/Averta-Bold.svg#Averta-Bold") format("svg");
  font-weight: bold;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Averta Semibold';
  src: url("/fonts/averta/Averta-Semibold.eot");
  src: url("/fonts/averta/Averta-Semibold.eot?#iefix") format("embedded-opentype"), url("/fonts/averta/Averta-Semibold.woff2") format("woff2"), url("/fonts/averta/Averta-Semibold.woff") format("woff"), url("/fonts/averta/Averta-Semibold.svg#Averta-Semibold") format("svg");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Averta Extrabold';
  src: url("/fonts/averta/Averta-ExtraBold.eot");
  src: url("/fonts/averta/Averta-ExtraBold.eot?#iefix") format("embedded-opentype"), url("/fonts/averta/Averta-ExtraBold.woff2") format("woff2"), url("/fonts/averta/Averta-ExtraBold.woff") format("woff"), url("/fonts/averta/Averta-ExtraBold.svg#Averta-ExtraBold") format("svg");
  font-weight: 800;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Averta Light';
  src: url("/fonts/averta/Averta-Light.eot");
  src: url("/fonts/averta/Averta-Light.eot?#iefix") format("embedded-opentype"), url("/fonts/averta/Averta-Light.woff2") format("woff2"), url("/fonts/averta/Averta-Light.woff") format("woff"), url("/fonts/averta/Averta-Light.svg#Averta-Light") format("svg");
  font-weight: 300;
  font-style: normal;
  font-display: swap;
}

/* #### Generated By: http://www.cufonfonts.com #### */

@font-face {
  font-family: 'Savoye LET Plain';
  font-style: normal;
  font-weight: normal;
  src: url("/fonts/SavoyeLETPlain.woff") format("woff");
}

main {
  overflow: hidden;
}

.slider .slides {
  list-style-type: none;
}

.slider .slides .flickity-slider {
  transform: none !important;
}

.slider .slides .slide {
  left: 0 !important;
  opacity: 0;
  transition: opacity 0.5s ease-in-out;
  z-index: -1;
}

.slider .slides .slide.is-selected {
  opacity: 1;
  z-index: 0;
}

.slider .slides:not(.flickity-enabled) li.imagebg:not(:first-child) {
  display: none;
}

.slider .slides .flickity-slider > li:not([class*='col-']) {
  width: 100%;
}

.slider .slides .flickity-prev-next-button {
  background: transparent;
}

.slider .slides .flickity-prev-next-button.previous {
  left: -2em;
}

.slider .slides .flickity-prev-next-button.next {
  right: -2em;
}

#home-banner .title {
  font-family: "Averta Extrabold";
  font-size: 2.9em;
}

@media (max-width: 767px) {
  #home-banner .title {
    font-size: 2em;
  }
}

#home-banner p {
  color: #e6e6e6;
}

@media (max-width: 767px) {
  #home-banner p {
    font-size: 0.85em;
  }
}

.sec-data-numbers {
  background-image: linear-gradient(to bottom right, #649400, #3d5a00);
  padding: 0;
}

.sec-data-numbers .sec-data-content {
  display: flex;
}

@media (max-width: 767px) {
  .sec-data-numbers .sec-data-content {
    display: block;
  }
}

.sec-data-numbers .first-dt,
.sec-data-numbers .sec-dt {
  padding: 0.8em 0;
}

.sec-data-numbers .first-dt *,
.sec-data-numbers .sec-dt * {
  color: #ffffff;
}

.sec-data-numbers .first-dt {
  display: inline-flex;
  align-items: center;
  flex: 0 0 30%;
  padding-left: 13%;
  background-image: linear-gradient(to right, #a5202d, #dc3f53);
  transform-origin: top left;
  transform: skew(-18deg, 0deg);
  /* SKEW */
}

.sec-data-numbers .first-dt * {
  transform: skew(18deg);
  /* UNSKEW */
}

@media (max-width: 767px) {
  .sec-data-numbers .first-dt {
    display: flex;
    flex: 0 0 100%;
    padding-left: 5%;
    padding-right: 5%;
    justify-content: center;
    transform-origin: top left;
    transform: skew(0deg);
    /* SKEW */
  }

  .sec-data-numbers .first-dt * {
    transform: skew(0);
    /* UNSKEW */
  }
}

.sec-data-numbers .sec-dt {
  padding-left: 2em;
  padding-right: 2em;
  flex: 0 0 38%;
}

.sec-data-numbers .sec-dt .dt-numbers {
  position: relative;
  display: flex;
  align-items: center;
  flex: 0 0 20%;
  flex-wrap: wrap;
  flex-direction: row;
  justify-content: center;
}

.sec-data-numbers .sec-dt .dt-numbers .dt-img {
  flex: 0 0 20%;
  margin-right: 10px;
}

.sec-data-numbers .sec-dt .dt-numbers .dt-img img {
  width: 60%;
}

.sec-data-numbers .sec-dt .dt-numbers:after {
  content: '';
  position: absolute;
  display: block;
  width: 1px;
  z-index: 1;
  height: 100%;
  border: 1px solid #a7b486;
  right: -2em;
  transform: skew(-18deg, 0deg);
  /* SKEW */
}

@media (max-width: 767px) {
  .sec-data-numbers .sec-dt .dt-numbers:after {
    display: none;
  }
}

@media (max-width: 767px) {
  .sec-data-numbers .sec-dt .dt-numbers {
    justify-content: center;
  }
}

.sec-data-numbers .sec-dt:last-child .dt-numbers:after {
  content: none;
}

@media (max-width: 767px) {
  .sec-data-numbers .sec-dt {
    border-bottom: 1px solid #595d61;
  }
}

.gardeners-sect {
  padding-left: 2em;
  padding-right: 2em;
  flex: 0 0 30% !important;
}

.gardeners-sect .dt-img {
  flex: 0 0 20%;
  margin-right: 16px;
}

.gardeners-sect .dt-img img {
  width: 70% !important;
}

.feat-gardeners,
.feat-flowers {
  margin-bottom: 1em;
}

.feat-gardeners a,
.feat-flowers a {
  font-size: 13px;
}

.help-section {
  overflow: hidden;
}

.help-section .background-image-holder.help-bg-hand {
  background-size: cover !important;
  background-repeat: no-repeat !important;
  background-position: 0 50% !important;
}

.help-section .parg {
  padding: 4em;
  display: flex;
  height: 100%;
}

.help-section .parg .flickity-prev-next-button .arrow {
  fill: rgba(255, 255, 255, 0.27);
}

.help-section .home-dt-list .background-image-holder {
  transform-origin: bottom left;
  transform: skewX(-10deg);
  -ms-transform: skewX(-10deg);
  /* IE 9 */
  -webkit-transform: skewX(-10deg);
  /* Safari and Chrome */
}

.help-section .home-dt-list .container {
  padding: 2em;
  padding-right: 1em;
  padding-left: 12em;
}

.help-section .hand-dt {
  display: flex;
  align-items: center;
  margin-bottom: 2em;
}

.help-section .hand-dt .first {
  flex: 0 0 15%;
  margin-right: 26px;
}

@media (max-width: 767px) {
  .help-section .hand-dt .first {
    flex: 0 0 25%;
    margin-right: 26px;
  }
}

.help-section .hand-dt .second {
  flex: 0 0 80%;
}

@media (max-width: 767px) {
  .help-section .hand-dt .second {
    flex: 0 0 60%;
  }
}

.testimonial {
  position: relative;
  overflow: hidden;
}

.testimonial .testimonial-text {
  font-family: "Averta Light";
  color: #43474a;
  margin-bottom: 1em;
}

.testimonial h6 {
  color: #888e93;
}

.testimonial .testimonial-image {
  margin-bottom: 0.9em;
  width: 2.5em;
}

.floating-article {
  position: relative;
}

.floating-article .float {
  position: absolute;
  top: -8em;
}

.floating-article .float .flower-img {
  width: 35%;
}

.floating-article .float .card {
  border: 0;
  border-radius: 0;
}

.floating-article .articles-grid {
  position: absolute;
  left: 22em;
}

.resources-calendar a {
  text-transform: unset;
  text-decoration: unset;
}

.resources-calendar a:hover {
  color: #869822 !important;
}

.message-box {
  border: 0px !important;
  box-shadow: 0 1px 25px 0 rgba(0, 0, 0, 0.1);
}


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvc2Fzcy9mcm9udGVuZC9EOi90bGdfcHVibGljX2h0bWwvcmVzb3VyY2VzL3Nhc3MvZnJvbnRlbmQvaG9tZS5zY3NzIiwid2VicGFjazovLy8uL3Jlc291cmNlcy9zYXNzL2Zyb250ZW5kL0Q6L3RsZ19wdWJsaWNfaHRtbC9yZXNvdXJjZXMvc2Fzcy9mcm9udGVuZC9fZm9udHMuc2NzcyIsIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvc2Fzcy9mcm9udGVuZC9EOi90bGdfcHVibGljX2h0bWwvcmVzb3VyY2VzL3Nhc3MvZnJvbnRlbmQvX3Jlc3BvbnNpdmUuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFHQTs7QUFHQTs7QUNMQTtFQUNJO0VBQ0E7RUFDQTtFQUlBO0VBQ0E7RUFDQTtDREdKOztBQ0RBO0VBQ0k7RUFDQTtFQUNBO0VBSUE7RUFDQTtFQUNBO0NEQ0o7O0FDRUE7RUFDSTtFQUNBO0VBQ0E7RUFJQTtFQUNBO0VBQ0E7Q0RGSjs7QUNLQTtFQUNJO0VBQ0E7RUFDQTtFQUlBO0VBQ0E7RUFDQTtDRExKOztBQ1FBO0VBQ0k7RUFDQTtFQUNBO0VBSUE7RUFDQTtFQUNBO0NEUko7O0FDV0E7RUFDSTtFQUNBO0VBQ0E7RUFJQTtFQUNBO0VBQ0E7Q0RYSjs7QUNjQTtFQUNJO0VBQ0E7RUFDQTtFQUlBO0VBQ0E7RUFDQTtDRGRKOztBQ2dCQTs7QUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0NEYko7O0FBcEVBO0VBQ0M7Q0F1RUQ7O0FBcEVBO0VBRUU7Q0FzRUY7O0FBeEVBO0VBSUk7Q0F3RUo7O0FBNUVBO0VBT0c7RUFDQTtFQUNBO0VBQ0E7Q0F5RUg7O0FBbkZBO0VBWUk7RUFDQTtDQTJFSjs7QUF4RkE7RUFrQkk7Q0EwRUo7O0FBNUZBO0VBc0JJO0NBMEVKOztBQWhHQTtFQXlCRztDQTJFSDs7QUFwR0E7RUEyQkk7Q0E2RUo7O0FBeEdBO0VBOEJJO0NBOEVKOztBQXhFQTtFQUVFO0VBQ0E7Q0EwRUY7O0FFa2JJO0VGL2ZKO0lBS0c7R0E2RUQ7Q0FDRjs7QUFuRkE7RUFTRTtDQThFRjs7QUV3YUk7RUYvZko7SUFXRztHQWlGRDtDQUNGOztBQTdFQTtFQUNDO0VBQ0E7Q0FnRkQ7O0FBbEZBO0VBTUU7Q0FnRkY7O0FFeVpJO0VGL2VKO0lBUUc7R0FtRkQ7Q0FDRjs7QUE1RkE7O0VBWUU7Q0FxRkY7O0FBakdBOztFQWVHO0NBdUZIOztBQXRHQTtFQW1CRTtFQUNHO0VBQ0g7RUFDQTtFQUNBO0VBQ0U7RUFHQztFQUErQjtDQXdGcEM7O0FBbkhBO0VBOEJLO0VBQXdCO0NBMEY3Qjs7QUV1WEk7RUYvZUo7SUFpQ0c7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBR0c7SUFBdUI7R0E2RjNCOztFQXRJRjtJQTJDTztJQUFvQjtHQWdHekI7Q0FDRjs7QUE1SUE7RUFpREU7RUFDRztFQUNBO0NBK0ZMOztBQWxKQTtFQXFERztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0c7RUFDQTtDQWlHTjs7QUE1SkE7RUE2RE87RUFDQTtDQW1HUDs7QUFqS0E7RUFnRVE7Q0FxR1I7O0FBcktBO0VBb0VPO0VBQ0g7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNHO0VBQ0E7RUFHQTtFQUErQjtDQXNHdEM7O0FFMlRJO0VGL2VKO0lBZ0ZRO0dBeUdOO0NBQ0Y7O0FFcVRJO0VGL2VKO0lBb0ZPO0dBMkdMO0NBQ0Y7O0FBaE1BO0VBMkZPO0NBeUdQOztBRTJTSTtFRi9lSjtJQStGTTtHQTBHSjtDQUNGOztBQXJHQTtFQUNBO0VBQ0E7RUFDQTtDQXdHQTs7QUEzR0E7RUFNRTtFQUNBO0NBeUdGOztBQWhIQTtFQVNNO0NBMkdOOztBQXRHQTs7RUFFQztDQXlHRDs7QUEzR0E7O0VBSUU7Q0E0R0Y7O0FBekdBO0VBQ0U7Q0E0R0Y7O0FBN0dBO0VBSUc7RUFDRztFQUNBO0NBNkdOOztBQW5IQTtFQVVFO0VBQ0c7RUFDQTtDQTZHTDs7QUF6SEE7RUFjTTtDQStHTjs7QUE3SEE7RUFvQkc7RUFDQTtFQUNHO0VBQThCO0VBQzlCO0VBQWtDO0NBK0d4Qzs7QUF0SUE7RUEyQkc7RUFDQTtFQUNHO0NBK0dOOztBQTVJQTtFQWlDRTtFQUNBO0VBQ0E7Q0ErR0Y7O0FBbEpBO0VBcUNHO0VBQ0E7Q0FpSEg7O0FFOE5JO0VGclhKO0lBd0NJO0lBQ0E7R0FvSEY7Q0FDRjs7QUE5SkE7RUE2Q0c7Q0FxSEg7O0FFbU5JO0VGclhKO0lBK0NJO0dBd0hGO0NBQ0Y7O0FBbEhBO0VBQ0M7RUFDRTtDQXFISDs7QUF2SEE7RUFJSTtFQUNBO0VBQ0E7Q0F1SEo7O0FBN0hBO0VBU0k7Q0F3SEo7O0FBaklBO0VBWUU7RUFDQTtDQXlIRjs7QUFySEE7RUFDQztDQXdIRDs7QUF6SEE7RUFHRTtFQUNBO0NBMEhGOztBQTlIQTtFQU1HO0NBNEhIOztBQWxJQTtFQVNHO0VBQ0E7Q0E2SEg7O0FBdklBO0VBY0U7RUFDRztDQTZITDs7QUF6SEE7RUFHSTtFQUNBO0NBMEhKOztBQTlIQTtFQVFFO0NBMEhGOztBQXRIQTtFQUNDO0VBQ0E7Q0F5SEQiLCJmaWxlIjoiY3NzL2hvbWUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyotLS0tLVJlc3BvbnNpdmUtLS0tLSovXG5AaW1wb3J0ICdyZXNwb25zaXZlJztcblxuLyotLS0tLVZhcmlhYmxlcy0tLS0tKi9cbkBpbXBvcnQgJ3ZhcmlhYmxlcyc7XG5cbi8qLS0tLS11c2UgZm9udHMtLS0tLSovXG5AaW1wb3J0IFwiZm9udHNcIjtcbm1haW4ge1xuXHRvdmVyZmxvdzpoaWRkZW47XG59XG5cbi5zbGlkZXIge1xuXHQuc2xpZGVze1xuXHRcdGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblx0XHQuZmxpY2tpdHktc2xpZGVyIHtcblx0XHQgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xuXHRcdH1cblx0XHQuc2xpZGUge1xuXHRcdFx0bGVmdDogMCAhaW1wb3J0YW50O1xuXHRcdFx0b3BhY2l0eTogMDtcblx0XHRcdHRyYW5zaXRpb246IG9wYWNpdHkgMC41cyBlYXNlLWluLW91dDtcblx0XHRcdHotaW5kZXg6IC0xO1xuXHRcdFx0Ji5pcy1zZWxlY3RlZCB7XG5cdFx0XHRcdG9wYWNpdHk6IDE7XG5cdFx0XHRcdHotaW5kZXg6IDBcblx0XHRcdH1cblx0XHR9XG5cdFx0Jjpub3QoLmZsaWNraXR5LWVuYWJsZWQpIHtcblx0XHRcdGxpLmltYWdlYmc6bm90KDpmaXJzdC1jaGlsZCkge1xuXHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQuZmxpY2tpdHktc2xpZGVyID4gbGk6bm90KFtjbGFzcyo9J2NvbC0nXSkge1xuXHRcdCAgd2lkdGg6IDEwMCU7XG5cdFx0fVxuXHRcdC5mbGlja2l0eS1wcmV2LW5leHQtYnV0dG9uIHtcblx0XHRcdGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7XG5cdFx0XHQmLnByZXZpb3VzIHtcblx0XHRcdFx0bGVmdDogLTJlbTtcblx0XHRcdH1cblx0XHRcdCYubmV4dCB7XG5cdFx0XHRcdHJpZ2h0OiAtMmVtO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4jaG9tZS1iYW5uZXIge1xuXHQudGl0bGUge1xuXHRcdGZvbnQtZmFtaWx5OiAkZm9udC1leHRyYWJvbGQ7XG5cdFx0Zm9udC1zaXplOiAyLjllbTtcblx0XHRAaW5jbHVkZSBtZWRpYSgkeHMpe1xuXHRcdFx0Zm9udC1zaXplOiAyZW07XG5cdFx0fVxuXHR9XG5cdHAge1xuXHRcdGNvbG9yOiNlNmU2ZTY7XG5cdFx0QGluY2x1ZGUgbWVkaWEoJHhzKXtcblx0XHRcdGZvbnQtc2l6ZTogMC44NWVtO1xuXHRcdH1cblx0fVxufVxuXG4uc2VjLWRhdGEtbnVtYmVycyB7XG5cdGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20gcmlnaHQsIHJnYmEoMTAwLDE0OCwwLDEpLCByZ2JhKDYxLDkwLDAsMSkpO1xuXHRwYWRkaW5nOjA7XG5cdC8vIHBhZGRpbmctdG9wOjNlbTtcblx0Ly8gcGFkZGluZy1ib3R0b206M2VtO1xuXHQuc2VjLWRhdGEtY29udGVudCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRAaW5jbHVkZSBtZWRpYSgkeHMpe1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0fVxuXHR9XG5cdC5maXJzdC1kdCwgLnNlYy1kdHtcblx0XHRwYWRkaW5nOiAwLjhlbSAwO1xuXHRcdFxuXHRcdCoge1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHR9XG5cdH1cblx0LmZpcnN0LWR0IHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0ZmxleDowIDAgMzAlO1xuXHRcdHBhZGRpbmctbGVmdDogMTMlO1xuXHRcdGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgxNjUsMzIsNDUsMSksIHJnYmEoMjIwLDYzLDgzLDEpKTtcbiAgXHRcdHRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0O1xuXHQgICAgLW1zLXRyYW5zZm9ybTogc2tldygtMThkZWcsIDBkZWcpO1xuXHQgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNrZXcoLTE4ZGVnLCAwZGVnKTtcblx0ICAgIHRyYW5zZm9ybTogc2tldygtMThkZWcsIDBkZWcpOyAvKiBTS0VXICovXG4gIFx0XHQqIHtcbiAgXHRcdFx0XG4gIFx0XHRcdHRyYW5zZm9ybTogc2tldygxOGRlZyk7IC8qIFVOU0tFVyAqL1xuICBcdFx0fVxuICBcdFx0QGluY2x1ZGUgbWVkaWEoJHhzKXtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRmbGV4OjAgMCAxMDAlO1xuXHRcdFx0cGFkZGluZy1sZWZ0OiA1JTtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDUlO1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHR0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdDtcblx0XHQgICAgLW1zLXRyYW5zZm9ybTogc2tldygwZGVnKTtcblx0XHQgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNrZXcoMGRlZyk7XG5cdFx0ICAgIHRyYW5zZm9ybTogc2tldygwZGVnKTsgLyogU0tFVyAqL1xuXHRcdCAgICAqIHtcblx0XHQgICAgXHR0cmFuc2Zvcm06IHNrZXcoMCk7IC8qIFVOU0tFVyAqL1xuXHRcdCAgICB9XG5cdFx0fVxuXHR9XG5cdC5zZWMtZHQge1xuXG5cdFx0cGFkZGluZy1sZWZ0OjJlbTtcbiAgICBcdHBhZGRpbmctcmlnaHQ6IDJlbTtcbiAgICBcdGZsZXg6IDAgMCAzOCU7XG5cdFx0LmR0LW51bWJlcnMge1xuXHRcdFx0cG9zaXRpb246cmVsYXRpdmU7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6Y2VudGVyO1xuXHRcdFx0ZmxleDowIDAgMjAlO1xuXHRcdFx0ZmxleC13cmFwOiB3cmFwO1xuXHQgICAgXHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHQgICAgXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0ICAgIFx0LmR0LWltZyB7XG5cdCAgICBcdFx0ZmxleDogMCAwIDIwJTtcblx0ICAgIFx0XHRtYXJnaW4tcmlnaHQ6IDEwcHg7XG5cdCAgICBcdFx0aW1nIHtcblx0XHQgICAgXHRcdHdpZHRoOiA2MCU7XG5cdFx0ICAgIFx0fVxuXHQgICAgXHR9XG5cdCAgICBcdCY6YWZ0ZXIge1xuXHQgICAgXHRcdGNvbnRlbnQ6ICcnO1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHR3aWR0aDogMXB4O1xuXHRcdFx0XHR6LWluZGV4OiAxO1xuXHRcdFx0XHRoZWlnaHQ6IDEwMCU7XG4gICAgXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgI2E3YjQ4NjtcbiAgICBcdFx0XHRyaWdodDogLTJlbTtcbiAgICBcdFx0XHQtbXMtdHJhbnNmb3JtOiBza2V3KC0xOGRlZywgMGRlZyk7XG5cdCAgICBcdFx0LXdlYmtpdC10cmFuc2Zvcm06IHNrZXcoLTE4ZGVnLCAwZGVnKTtcblx0ICAgIFx0XHR0cmFuc2Zvcm06IHNrZXcoLTE4ZGVnLCAwZGVnKTsgLyogU0tFVyAqL1xuXHQgICAgXHRcdEBpbmNsdWRlIG1lZGlhKCR4cyl7XG5cdCAgICBcdFx0XHRkaXNwbGF5OiBub25lO1xuXHQgICAgXHRcdH1cdFx0XHRcdFxuXHQgICAgXHR9XG5cdCAgICBcdEBpbmNsdWRlIG1lZGlhKCR4cyl7XG5cdCAgICBcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdCAgICBcdH1cblxuXHRcdH1cblx0XHRcbiAgICBcdCY6bGFzdC1jaGlsZHtcbiAgICBcdFx0LmR0LW51bWJlcnM6YWZ0ZXIge1xuXHQgICAgXHRcdGNvbnRlbnQ6IG5vbmU7IFxuICAgIFx0XHR9XG4gICAgXHR9XG4gICAgXHRAaW5jbHVkZSBtZWRpYSgkeHMpe1xuICAgIFx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgIzU5NWQ2MTtcbiAgICBcdH1cbiAgICBcdFxuXHR9XG59XG5cbi5nYXJkZW5lcnMtc2VjdCB7XG5wYWRkaW5nLWxlZnQ6MmVtO1xucGFkZGluZy1yaWdodDogMmVtO1xuZmxleDogMCAwIDMwJSAhaW1wb3J0YW50O1xuXG5cdC5kdC1pbWcge1xuXHRcdGZsZXg6IDAgMCAyMCU7XG5cdFx0bWFyZ2luLXJpZ2h0OiAxNnB4O1xuXHRcdGltZyB7XG4gICAgXHRcdHdpZHRoOiA3MCUgIWltcG9ydGFudDtcbiAgICBcdH1cblx0fVxufVxuXG4uZmVhdC1nYXJkZW5lcnMsXG4uZmVhdC1mbG93ZXJzIHtcblx0bWFyZ2luLWJvdHRvbTogMWVtO1xuXHRhIHtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdH1cbn1cbi5oZWxwLXNlY3Rpb257XG5cdCBvdmVyZmxvdzogaGlkZGVuO1xuXHQuYmFja2dyb3VuZC1pbWFnZS1ob2xkZXJ7XG5cdFx0Ji5oZWxwLWJnLWhhbmR7XG5cdFx0XHRiYWNrZ3JvdW5kLXNpemU6IGNvdmVyICFpbXBvcnRhbnQ7XG5cdFx0ICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQgIWltcG9ydGFudDtcblx0XHQgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCA1MCUgIWltcG9ydGFudDtcblx0XHR9XG5cdH1cblx0LnBhcmcge1xuXHRcdHBhZGRpbmc6IDRlbTtcblx0ICAgIGRpc3BsYXk6IGZsZXg7XG5cdCAgICBoZWlnaHQ6IDEwMCU7XG5cdCAgICAuZmxpY2tpdHktcHJldi1uZXh0LWJ1dHRvbiAuYXJyb3cge1xuXHQgICAgXHRmaWxsOnJnYmEoMjU1LDI1NSwyNTUsMC4yNyk7XG5cdCAgICB9XG5cblx0fVxuXHQuaG9tZS1kdC1saXN0IHtcblx0XHQuYmFja2dyb3VuZC1pbWFnZS1ob2xkZXJ7XG5cdFx0XHR0cmFuc2Zvcm0tb3JpZ2luOiBib3R0b20gbGVmdDtcblx0XHRcdHRyYW5zZm9ybTogc2tld1goLTEwZGVnKTsgXG5cdFx0ICAgIC1tcy10cmFuc2Zvcm06IHNrZXdYKC0xMGRlZyk7IC8qIElFIDkgKi9cblx0XHQgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNrZXdYKC0xMGRlZyk7IC8qIFNhZmFyaSBhbmQgQ2hyb21lICovXG5cdFx0ICAgXG5cdFx0fVxuXHRcdC5jb250YWluZXIge1xuXHRcdFx0cGFkZGluZzogMmVtO1xuXHRcdFx0cGFkZGluZy1yaWdodDogMWVtO1xuICAgIFx0XHRwYWRkaW5nLWxlZnQ6IDEyZW07XG5cdFx0fVxuXHR9XG5cdC5oYW5kLWR0IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOmNlbnRlcjtcblx0XHRtYXJnaW4tYm90dG9tOiAyZW07XG5cdFx0LmZpcnN0IHtcblx0XHRcdGZsZXg6IDAgMCAxNSU7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDI2cHg7XG5cdFx0XHRAaW5jbHVkZSBtZWRpYSgkeHMpe1xuXHRcdFx0XHRmbGV4OiAwIDAgMjUlO1xuXHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDI2cHg7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC5zZWNvbmQge1xuXHRcdFx0ZmxleDogMCAwIDgwJTtcblx0XHRcdEBpbmNsdWRlIG1lZGlhKCR4cyl7XG5cdFx0XHRcdGZsZXg6IDAgMCA2MCU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cblxuLnRlc3RpbW9uaWFsIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuICBcdG92ZXJmbG93OiBoaWRkZW47XG4gIFx0LnRlc3RpbW9uaWFsLXRleHQge1xuICBcdFx0Zm9udC1mYW1pbHk6ICRmb250LWJvZHk7XG4gIFx0XHRjb2xvcjogIzQzNDc0YTtcbiAgXHRcdG1hcmdpbi1ib3R0b206IDFlbTtcbiAgXHR9XG4gIFx0aDZ7XG4gIFx0XHRjb2xvcjogIzg4OGU5MztcbiAgXHR9XG5cdC50ZXN0aW1vbmlhbC1pbWFnZSB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMC45ZW07XG5cdFx0d2lkdGg6IDIuNWVtO1xuXHR9XG59XG5cbi5mbG9hdGluZy1hcnRpY2xlIHtcblx0cG9zaXRpb246cmVsYXRpdmU7XG5cdC5mbG9hdCB7XG5cdFx0cG9zaXRpb246YWJzb2x1dGU7XG5cdFx0dG9wOiAtOGVtO1xuXHRcdC5mbG93ZXItaW1nIHtcblx0XHRcdHdpZHRoOiAzNSU7XG5cdFx0fVxuXHRcdC5jYXJkIHtcblx0XHRcdGJvcmRlcjowO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czowO1xuXHRcdH1cblx0fVxuXHQuYXJ0aWNsZXMtZ3JpZCB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuICAgIFx0bGVmdDogMjJlbTtcblx0fVxufVxuXG4ucmVzb3VyY2VzLWNhbGVuZGFyIHtcblxuXHRhe1xuICBcdFx0dGV4dC10cmFuc2Zvcm06IHVuc2V0O1xuICBcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bnNldDtcblx0fVxuXG5cdGE6aG92ZXIge1xuXHRcdGNvbG9yOiAkc2Vjb25kYXJ5LTIgIWltcG9ydGFudDtcblx0fVxufVxuXG4ubWVzc2FnZS1ib3gge1xuXHRib3JkZXI6IDBweCAhaW1wb3J0YW50O1xuXHRib3gtc2hhZG93OiAwIDFweCAyNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuIiwiLy8gRm9udHNcbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnUG93ZXJmdWwnO1xuICAgIHNyYzogdXJsKCcvZm9udHMvcG93ZXJmdWwvUG93ZXJmdWwtUmVndWxhci5lb3QnKTtcbiAgICBzcmM6IHVybCgnL2ZvbnRzL3Bvd2VyZnVsL1Bvd2VyZnVsLVJlZ3VsYXIuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcbiAgICAgICAgdXJsKCcvZm9udHMvcG93ZXJmdWwvUG93ZXJmdWwtUmVndWxhci53b2ZmMicpIGZvcm1hdCgnd29mZjInKSxcbiAgICAgICAgdXJsKCcvZm9udHMvcG93ZXJmdWwvUG93ZXJmdWwtUmVndWxhci53b2ZmJykgZm9ybWF0KCd3b2ZmJyksXG4gICAgICAgIHVybCgnL2ZvbnRzL3Bvd2VyZnVsL1Bvd2VyZnVsLVJlZ3VsYXIuc3ZnI1Bvd2VyZnVsLVJlZ3VsYXInKSBmb3JtYXQoJ3N2ZycpO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbn1cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnQXZlcnRhJztcbiAgICBzcmM6IHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtUmVndWxhci5lb3QnKTtcbiAgICBzcmM6IHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtUmVndWxhci5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuICAgICAgICB1cmwoJy9mb250cy9hdmVydGEvQXZlcnRhLVJlZ3VsYXIud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksXG4gICAgICAgIHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtUmVndWxhci53b2ZmJykgZm9ybWF0KCd3b2ZmJyksXG4gICAgICAgIHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtUmVndWxhci5zdmcjQXZlcnRhLVJlZ3VsYXInKSBmb3JtYXQoJ3N2ZycpO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbn1cblxuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdBdmVydGEgQmxhY2snO1xuICAgIHNyYzogdXJsKCcvZm9udHMvYXZlcnRhL0F2ZXJ0YS1CbGFjay5lb3QnKTtcbiAgICBzcmM6IHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtQmxhY2suZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcbiAgICAgICAgdXJsKCcvZm9udHMvYXZlcnRhL0F2ZXJ0YS1CbGFjay53b2ZmMicpIGZvcm1hdCgnd29mZjInKSxcbiAgICAgICAgdXJsKCcvZm9udHMvYXZlcnRhL0F2ZXJ0YS1CbGFjay53b2ZmJykgZm9ybWF0KCd3b2ZmJyksXG4gICAgICAgIHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtQmxhY2suc3ZnI0F2ZXJ0YS1CbGFjaycpIGZvcm1hdCgnc3ZnJyk7XG4gICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC1kaXNwbGF5OiBzd2FwO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ0F2ZXJ0YSBCb2xkJztcbiAgICBzcmM6IHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtQm9sZC5lb3QnKTtcbiAgICBzcmM6IHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtQm9sZC5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuICAgICAgICB1cmwoJy9mb250cy9hdmVydGEvQXZlcnRhLUJvbGQud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksXG4gICAgICAgIHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtQm9sZC53b2ZmJykgZm9ybWF0KCd3b2ZmJyksXG4gICAgICAgIHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtQm9sZC5zdmcjQXZlcnRhLUJvbGQnKSBmb3JtYXQoJ3N2ZycpO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LWRpc3BsYXk6IHN3YXA7XG59XG5cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnQXZlcnRhIFNlbWlib2xkJztcbiAgICBzcmM6IHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtU2VtaWJvbGQuZW90Jyk7XG4gICAgc3JjOiB1cmwoJy9mb250cy9hdmVydGEvQXZlcnRhLVNlbWlib2xkLmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXG4gICAgICAgIHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtU2VtaWJvbGQud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksXG4gICAgICAgIHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtU2VtaWJvbGQud29mZicpIGZvcm1hdCgnd29mZicpLFxuICAgICAgICB1cmwoJy9mb250cy9hdmVydGEvQXZlcnRhLVNlbWlib2xkLnN2ZyNBdmVydGEtU2VtaWJvbGQnKSBmb3JtYXQoJ3N2ZycpO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbn1cblxuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdBdmVydGEgRXh0cmFib2xkJztcbiAgICBzcmM6IHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtRXh0cmFCb2xkLmVvdCcpO1xuICAgIHNyYzogdXJsKCcvZm9udHMvYXZlcnRhL0F2ZXJ0YS1FeHRyYUJvbGQuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcbiAgICAgICAgdXJsKCcvZm9udHMvYXZlcnRhL0F2ZXJ0YS1FeHRyYUJvbGQud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksXG4gICAgICAgIHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtRXh0cmFCb2xkLndvZmYnKSBmb3JtYXQoJ3dvZmYnKSxcbiAgICAgICAgdXJsKCcvZm9udHMvYXZlcnRhL0F2ZXJ0YS1FeHRyYUJvbGQuc3ZnI0F2ZXJ0YS1FeHRyYUJvbGQnKSBmb3JtYXQoJ3N2ZycpO1xuICAgIGZvbnQtd2VpZ2h0OiA4MDA7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbn1cblxuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdBdmVydGEgTGlnaHQnO1xuICAgIHNyYzogdXJsKCcvZm9udHMvYXZlcnRhL0F2ZXJ0YS1MaWdodC5lb3QnKTtcbiAgICBzcmM6IHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtTGlnaHQuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcbiAgICAgICAgdXJsKCcvZm9udHMvYXZlcnRhL0F2ZXJ0YS1MaWdodC53b2ZmMicpIGZvcm1hdCgnd29mZjInKSxcbiAgICAgICAgdXJsKCcvZm9udHMvYXZlcnRhL0F2ZXJ0YS1MaWdodC53b2ZmJykgZm9ybWF0KCd3b2ZmJyksXG4gICAgICAgIHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtTGlnaHQuc3ZnI0F2ZXJ0YS1MaWdodCcpIGZvcm1hdCgnc3ZnJyk7XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC1kaXNwbGF5OiBzd2FwO1xufVxuLyogIyMjIyBHZW5lcmF0ZWQgQnk6IGh0dHA6Ly93d3cuY3Vmb25mb250cy5jb20gIyMjIyAqL1xuXG4gICAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdTYXZveWUgTEVUIFBsYWluJztcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBzcmM6IHVybCgnL2ZvbnRzL1Nhdm95ZUxFVFBsYWluLndvZmYnKSBmb3JtYXQoJ3dvZmYnKTtcbiAgICB9IiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLyAgICAgXyAgICAgICAgICAgIF8gICAgICAgICAgIF8gICAgICAgICAgICAgICAgICAgICAgICAgICBfIF9cbi8vICAgIChfKSAgICAgICAgICB8IHwgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAoXylcbi8vICAgICBfIF8gX18gICBfX198IHxfICAgXyAgX198IHwgX19fICAgXyBfXyBfX18gICBfX18gIF9ffCB8XyAgX18gX1xuLy8gICAgfCB8ICdfIFxcIC8gX198IHwgfCB8IHwvIF9gIHwvIF8gXFwgfCAnXyBgIF8gXFwgLyBfIFxcLyBfYCB8IHwvIF9gIHxcbi8vICAgIHwgfCB8IHwgfCAoX198IHwgfF98IHwgKF98IHwgIF9fLyB8IHwgfCB8IHwgfCAgX18vIChffCB8IHwgKF98IHxcbi8vICAgIHxffF98IHxffFxcX19ffF98XFxfXyxffFxcX18sX3xcXF9fX3wgfF98IHxffCB8X3xcXF9fX3xcXF9fLF98X3xcXF9fLF98XG4vL1xuLy8gICAgICBTaW1wbGUsIGVsZWdhbnQgYW5kIG1haW50YWluYWJsZSBtZWRpYSBxdWVyaWVzIGluIFNhc3Ncbi8vICAgICAgICAgICAgICAgICAgICAgICAgdjEuNC45XG4vL1xuLy8gICAgICAgICAgICAgICAgaHR0cDovL2luY2x1ZGUtbWVkaWEuY29tXG4vL1xuLy8gICAgICAgICBBdXRob3JzOiBFZHVhcmRvIEJvdWNhcyAoQGVkdWFyZG9ib3VjYXMpXG4vLyAgICAgICAgICAgICAgICAgIEh1Z28gR2lyYXVkZWwgKEBodWdvZ2lyYXVkZWwpXG4vL1xuLy8gICAgICBUaGlzIHByb2plY3QgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBNSVQgbGljZW5zZVxuXG5cbi8vLy9cbi8vLyBpbmNsdWRlLW1lZGlhIGxpYnJhcnkgcHVibGljIGNvbmZpZ3VyYXRpb25cbi8vLyBAYXV0aG9yIEVkdWFyZG8gQm91Y2FzXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLy9cblxuXG4vLy9cbi8vLyBDcmVhdGVzIGEgbGlzdCBvZiBnbG9iYWwgYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBDcmVhdGVzIGEgc2luZ2xlIGJyZWFrcG9pbnQgd2l0aCB0aGUgbGFiZWwgYHBob25lYFxuLy8vICAkYnJlYWtwb2ludHM6ICgncGhvbmUnOiAzMjBweCk7XG4vLy9cbiRicmVha3BvaW50czogKFxuICAncGhvbmUnOiAzMjBweCxcbiAgJ3RhYmxldCc6IDc2OHB4LFxuICAnZGVza3RvcCc6IDEwMjRweFxuKSAhZGVmYXVsdDtcblxuXG4vLy9cbi8vLyBDcmVhdGVzIGEgbGlzdCBvZiBzdGF0aWMgZXhwcmVzc2lvbnMgb3IgbWVkaWEgdHlwZXNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBDcmVhdGVzIGEgc2luZ2xlIG1lZGlhIHR5cGUgKHNjcmVlbilcbi8vLyAgJG1lZGlhLWV4cHJlc3Npb25zOiAoJ3NjcmVlbic6ICdzY3JlZW4nKTtcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBDcmVhdGVzIGEgc3RhdGljIGV4cHJlc3Npb24gd2l0aCBsb2dpY2FsIGRpc2p1bmN0aW9uIChPUiBvcGVyYXRvcilcbi8vLyAgJG1lZGlhLWV4cHJlc3Npb25zOiAoXG4vLy8gICAgJ3JldGluYTJ4JzogJygtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLCAobWluLXJlc29sdXRpb246IDE5MmRwaSknXG4vLy8gICk7XG4vLy9cbiRtZWRpYS1leHByZXNzaW9uczogKFxuICAnc2NyZWVuJzogJ3NjcmVlbicsXG4gICdwcmludCc6ICdwcmludCcsXG4gICdoYW5kaGVsZCc6ICdoYW5kaGVsZCcsXG4gICdsYW5kc2NhcGUnOiAnKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcbiAgJ3BvcnRyYWl0JzogJyhvcmllbnRhdGlvbjogcG9ydHJhaXQpJyxcbiAgJ3JldGluYTJ4JzogJygtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLCAobWluLXJlc29sdXRpb246IDE5MmRwaSksIChtaW4tcmVzb2x1dGlvbjogMmRwcHgpJyxcbiAgJ3JldGluYTN4JzogJygtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDMpLCAobWluLXJlc29sdXRpb246IDM1MGRwaSksIChtaW4tcmVzb2x1dGlvbjogM2RwcHgpJ1xuKSAhZGVmYXVsdDtcblxuXG4vLy9cbi8vLyBEZWZpbmVzIGEgbnVtYmVyIHRvIGJlIGFkZGVkIG9yIHN1YnRyYWN0ZWQgZnJvbSBlYWNoIHVuaXQgd2hlbiBkZWNsYXJpbmcgYnJlYWtwb2ludHMgd2l0aCBleGNsdXNpdmUgaW50ZXJ2YWxzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gSW50ZXJ2YWwgZm9yIHBpeGVscyBpcyBkZWZpbmVkIGFzIGAxYCBieSBkZWZhdWx0XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+MTI4cHgnKSB7fVxuLy8vXG4vLy8gIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgQG1lZGlhIChtaW4td2lkdGg6IDEyOXB4KSB7fVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEludGVydmFsIGZvciBlbXMgaXMgZGVmaW5lZCBhcyBgMC4wMWAgYnkgZGVmYXVsdFxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPjIwZW0nKSB7fVxuLy8vXG4vLy8gIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgQG1lZGlhIChtaW4td2lkdGg6IDIwLjAxZW0pIHt9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gSW50ZXJ2YWwgZm9yIHJlbXMgaXMgZGVmaW5lZCBhcyBgMC4xYCBieSBkZWZhdWx0LCB0byBiZSB1c2VkIHdpdGggYGZvbnQtc2l6ZTogNjIuNSU7YFxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPjIuMHJlbScpIHt9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICBAbWVkaWEgKG1pbi13aWR0aDogMi4xcmVtKSB7fVxuLy8vXG4kdW5pdC1pbnRlcnZhbHM6IChcbiAgJ3B4JzogMSxcbiAgJ2VtJzogMC4wMSxcbiAgJ3JlbSc6IDAuMSxcbiAgJyc6IDBcbikgIWRlZmF1bHQ7XG5cbi8vL1xuLy8vIERlZmluZXMgd2hldGhlciBzdXBwb3J0IGZvciBtZWRpYSBxdWVyaWVzIGlzIGF2YWlsYWJsZSwgdXNlZnVsIGZvciBjcmVhdGluZyBzZXBhcmF0ZSBzdHlsZXNoZWV0c1xuLy8vIGZvciBicm93c2VycyB0aGF0IGRvbid0IHN1cHBvcnQgbWVkaWEgcXVlcmllcy5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBEaXNhYmxlcyBzdXBwb3J0IGZvciBtZWRpYSBxdWVyaWVzXG4vLy8gICRpbS1tZWRpYS1zdXBwb3J0OiBmYWxzZTtcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgY29sb3I6IHRvbWF0bztcbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vICAvKiBHZW5lcmF0ZXM6ICovXG4vLy8gIC5mb28ge1xuLy8vICAgIGNvbG9yOiB0b21hdG87XG4vLy8gIH1cbi8vL1xuJGltLW1lZGlhLXN1cHBvcnQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vL1xuLy8vIFNlbGVjdHMgd2hpY2ggYnJlYWtwb2ludCB0byBlbXVsYXRlIHdoZW4gc3VwcG9ydCBmb3IgbWVkaWEgcXVlcmllcyBpcyBkaXNhYmxlZC4gTWVkaWEgcXVlcmllcyB0aGF0IHN0YXJ0IGF0IG9yXG4vLy8gaW50ZXJjZXB0IHRoZSBicmVha3BvaW50IHdpbGwgYmUgZGlzcGxheWVkLCBhbnkgb3RoZXJzIHdpbGwgYmUgaWdub3JlZC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBUaGlzIG1lZGlhIHF1ZXJ5IHdpbGwgc2hvdyBiZWNhdXNlIGl0IGludGVyY2VwdHMgdGhlIHN0YXRpYyBicmVha3BvaW50XG4vLy8gICRpbS1tZWRpYS1zdXBwb3J0OiBmYWxzZTtcbi8vLyAgJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQ6ICdkZXNrdG9wJztcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0Jykge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgY29sb3I6IHRvbWF0bztcbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vICAvKiBHZW5lcmF0ZXM6ICovXG4vLy8gIC5mb28ge1xuLy8vICAgIGNvbG9yOiB0b21hdG87XG4vLy8gIH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBUaGlzIG1lZGlhIHF1ZXJ5IHdpbGwgTk9UIHNob3cgYmVjYXVzZSBpdCBkb2VzIG5vdCBpbnRlcmNlcHQgdGhlIGRlc2t0b3AgYnJlYWtwb2ludFxuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XG4vLy8gICRpbS1uby1tZWRpYS1icmVha3BvaW50OiAndGFibGV0Jztcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49ZGVza3RvcCcpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgLyogTm8gb3V0cHV0ICovXG4vLy9cbiRpbS1uby1tZWRpYS1icmVha3BvaW50OiAnZGVza3RvcCcgIWRlZmF1bHQ7XG5cbi8vL1xuLy8vIFNlbGVjdHMgd2hpY2ggbWVkaWEgZXhwcmVzc2lvbnMgYXJlIGFsbG93ZWQgaW4gYW4gZXhwcmVzc2lvbiBmb3IgaXQgdG8gYmUgdXNlZCB3aGVuIG1lZGlhIHF1ZXJpZXNcbi8vLyBhcmUgbm90IHN1cHBvcnRlZC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBUaGlzIG1lZGlhIHF1ZXJ5IHdpbGwgc2hvdyBiZWNhdXNlIGl0IGludGVyY2VwdHMgdGhlIHN0YXRpYyBicmVha3BvaW50IGFuZCBjb250YWlucyBvbmx5IGFjY2VwdGVkIG1lZGlhIGV4cHJlc3Npb25zXG4vLy8gICRpbS1tZWRpYS1zdXBwb3J0OiBmYWxzZTtcbi8vLyAgJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQ6ICdkZXNrdG9wJztcbi8vLyAgJGltLW5vLW1lZGlhLWV4cHJlc3Npb25zOiAoJ3NjcmVlbicpO1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj10YWJsZXQnLCAnc2NyZWVuJykge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgY29sb3I6IHRvbWF0bztcbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vICAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICAgLmZvbyB7XG4vLy8gICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIE5PVCBzaG93IGJlY2F1c2UgaXQgaW50ZXJjZXB0cyB0aGUgc3RhdGljIGJyZWFrcG9pbnQgYnV0IGNvbnRhaW5zIGEgbWVkaWEgZXhwcmVzc2lvbiB0aGF0IGlzIG5vdCBhY2NlcHRlZFxuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XG4vLy8gICRpbS1uby1tZWRpYS1icmVha3BvaW50OiAnZGVza3RvcCc7XG4vLy8gICRpbS1uby1tZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nKTtcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0JywgJ3JldGluYTJ4Jykge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgY29sb3I6IHRvbWF0bztcbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vICAvKiBObyBvdXRwdXQgKi9cbi8vL1xuJGltLW5vLW1lZGlhLWV4cHJlc3Npb25zOiAoJ3NjcmVlbicsICdwb3J0cmFpdCcsICdsYW5kc2NhcGUnKSAhZGVmYXVsdDtcblxuLy8vL1xuLy8vIENyb3NzLWVuZ2luZSBsb2dnaW5nIGVuZ2luZVxuLy8vIEBhdXRob3IgSHVnbyBHaXJhdWRlbFxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vL1xuXG5cbi8vL1xuLy8vIExvZyBhIG1lc3NhZ2UgZWl0aGVyIHdpdGggYEBlcnJvcmAgaWYgc3VwcG9ydGVkXG4vLy8gZWxzZSB3aXRoIGBAd2FybmAsIHVzaW5nIGBmZWF0dXJlLWV4aXN0cygnYXQtZXJyb3InKWBcbi8vLyB0byBkZXRlY3Qgc3VwcG9ydC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWVzc2FnZSAtIE1lc3NhZ2UgdG8gbG9nXG4vLy9cbkBmdW5jdGlvbiBpbS1sb2coJG1lc3NhZ2UpIHtcbiAgQGlmIGZlYXR1cmUtZXhpc3RzKCdhdC1lcnJvcicpIHtcbiAgICBAZXJyb3IgJG1lc3NhZ2U7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICRtZXNzYWdlO1xuICAgICRfOiBub29wKCk7XG4gIH1cblxuICBAcmV0dXJuICRtZXNzYWdlO1xufVxuXG5cbi8vL1xuLy8vIFdyYXBwZXIgbWl4aW4gZm9yIHRoZSBsb2cgZnVuY3Rpb24gc28gaXQgY2FuIGJlIHVzZWQgd2l0aCBhIG1vcmUgZnJpZW5kbHlcbi8vLyBBUEkgdGhhbiBgQGlmIGltLWxvZygnLi4nKSB7fWAgb3IgYCRfOiBpbS1sb2coJy4uJylgLiBCYXNpY2FsbHksIHVzZSB0aGUgZnVuY3Rpb25cbi8vLyB3aXRoaW4gZnVuY3Rpb25zIGJlY2F1c2UgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGluY2x1ZGUgYSBtaXhpbiBpbiBhIGZ1bmN0aW9uXG4vLy8gYW5kIHVzZSB0aGUgbWl4aW4gZXZlcnl3aGVyZSBlbHNlIGJlY2F1c2UgaXQncyBtdWNoIG1vcmUgZWxlZ2FudC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWVzc2FnZSAtIE1lc3NhZ2UgdG8gbG9nXG4vLy9cbkBtaXhpbiBsb2coJG1lc3NhZ2UpIHtcbiAgQGlmIGltLWxvZygkbWVzc2FnZSkge31cbn1cblxuXG4vLy9cbi8vLyBGdW5jdGlvbiB3aXRoIG5vIGBAcmV0dXJuYCBjYWxsZWQgbmV4dCB0byBgQHdhcm5gIGluIFNhc3MgMy4zXG4vLy8gdG8gdHJpZ2dlciBhIGNvbXBpbGluZyBlcnJvciBhbmQgc3RvcCB0aGUgcHJvY2Vzcy5cbi8vL1xuQGZ1bmN0aW9uIG5vb3AoKSB7fVxuXG4vLy9cbi8vLyBEZXRlcm1pbmVzIHdoZXRoZXIgYSBsaXN0IG9mIGNvbmRpdGlvbnMgaXMgaW50ZXJjZXB0ZWQgYnkgdGhlIHN0YXRpYyBicmVha3BvaW50LlxuLy8vXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAgICRjb25kaXRpb25zICAtIE1lZGlhIHF1ZXJ5IGNvbmRpdGlvbnNcbi8vL1xuLy8vIEByZXR1cm4ge0Jvb2xlYW59IC0gUmV0dXJucyB0cnVlIGlmIHRoZSBjb25kaXRpb25zIGFyZSBpbnRlcmNlcHRlZCBieSB0aGUgc3RhdGljIGJyZWFrcG9pbnRcbi8vL1xuQGZ1bmN0aW9uIGltLWludGVyY2VwdHMtc3RhdGljLWJyZWFrcG9pbnQoJGNvbmRpdGlvbnMuLi4pIHtcbiAgJG5vLW1lZGlhLWJyZWFrcG9pbnQtdmFsdWU6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludCk7XG5cbiAgQGlmIG5vdCAkbm8tbWVkaWEtYnJlYWtwb2ludC12YWx1ZSB7XG4gICAgQGlmIGltLWxvZygnYCN7JGltLW5vLW1lZGlhLWJyZWFrcG9pbnR9YCBpcyBub3QgYSB2YWxpZCBicmVha3BvaW50LicpIHt9XG4gIH1cblxuICBAZWFjaCAkY29uZGl0aW9uIGluICRjb25kaXRpb25zIHtcbiAgICBAaWYgbm90IG1hcC1oYXMta2V5KCRtZWRpYS1leHByZXNzaW9ucywgJGNvbmRpdGlvbikge1xuICAgICAgJG9wZXJhdG9yOiBnZXQtZXhwcmVzc2lvbi1vcGVyYXRvcigkY29uZGl0aW9uKTtcbiAgICAgICRwcmVmaXg6IGdldC1leHByZXNzaW9uLXByZWZpeCgkb3BlcmF0b3IpO1xuICAgICAgJHZhbHVlOiBnZXQtZXhwcmVzc2lvbi12YWx1ZSgkY29uZGl0aW9uLCAkb3BlcmF0b3IpO1xuXG4gICAgICBAaWYgKCRwcmVmaXggPT0gJ21heCcgYW5kICR2YWx1ZSA8PSAkbm8tbWVkaWEtYnJlYWtwb2ludC12YWx1ZSkgb3JcbiAgICAgICAgICAoJHByZWZpeCA9PSAnbWluJyBhbmQgJHZhbHVlID4gJG5vLW1lZGlhLWJyZWFrcG9pbnQtdmFsdWUpIHtcbiAgICAgICAgQHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmIG5vdCBpbmRleCgkaW0tbm8tbWVkaWEtZXhwcmVzc2lvbnMsICRjb25kaXRpb24pIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiB0cnVlO1xufVxuXG4vLy8vXG4vLy8gUGFyc2luZyBlbmdpbmVcbi8vLyBAYXV0aG9yIEh1Z28gR2lyYXVkZWxcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLy9cblxuXG4vLy9cbi8vLyBHZXQgb3BlcmF0b3Igb2YgYW4gZXhwcmVzc2lvblxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRleHByZXNzaW9uIC0gRXhwcmVzc2lvbiB0byBleHRyYWN0IG9wZXJhdG9yIGZyb21cbi8vL1xuLy8vIEByZXR1cm4ge1N0cmluZ30gLSBBbnkgb2YgYD49YCwgYD5gLCBgPD1gLCBgPGAsIGDDosKJwqVgLCBgw6LCicKkYFxuLy8vXG5AZnVuY3Rpb24gZ2V0LWV4cHJlc3Npb24tb3BlcmF0b3IoJGV4cHJlc3Npb24pIHtcbiAgQGVhY2ggJG9wZXJhdG9yIGluICgnPj0nLCAnPicsICc8PScsICc8JywgJ8OiwonCpScsICfDosKJwqQnKSB7XG4gICAgQGlmIHN0ci1pbmRleCgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKSB7XG4gICAgICBAcmV0dXJuICRvcGVyYXRvcjtcbiAgICB9XG4gIH1cblxuICAvLyBJdCBpcyBub3QgcG9zc2libGUgdG8gaW5jbHVkZSBhIG1peGluIGluc2lkZSBhIGZ1bmN0aW9uLCBzbyB3ZSBoYXZlIHRvXG4gIC8vIHJlbHkgb24gdGhlIGBpbS1sb2coLi4pYCBmdW5jdGlvbiByYXRoZXIgdGhhbiB0aGUgYGxvZyguLilgIG1peGluLiBCZWNhdXNlXG4gIC8vIGZ1bmN0aW9ucyBjYW5ub3QgYmUgY2FsbGVkIGFueXdoZXJlIGluIFNhc3MsIHdlIG5lZWQgdG8gaGFjayB0aGUgY2FsbCBpblxuICAvLyBhIGR1bW15IHZhcmlhYmxlLCBzdWNoIGFzIGAkX2AuIElmIGFueWJvZHkgZXZlciByYWlzZSBhIHNjb3BpbmcgaXNzdWUgd2l0aFxuICAvLyBTYXNzIDMuMywgY2hhbmdlIHRoaXMgbGluZSBpbiBgQGlmIGltLWxvZyguLikge31gIGluc3RlYWQuXG4gICRfOiBpbS1sb2coJ05vIG9wZXJhdG9yIGZvdW5kIGluIGAjeyRleHByZXNzaW9ufWAuJyk7XG59XG5cblxuLy8vXG4vLy8gR2V0IGRpbWVuc2lvbiBvZiBhbiBleHByZXNzaW9uLCBiYXNlZCBvbiBhIGZvdW5kIG9wZXJhdG9yXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGV4cHJlc3Npb24gLSBFeHByZXNzaW9uIHRvIGV4dHJhY3QgZGltZW5zaW9uIGZyb21cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG9wZXJhdG9yIC0gT3BlcmF0b3IgZnJvbSBgJGV4cHJlc3Npb25gXG4vLy9cbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gYHdpZHRoYCBvciBgaGVpZ2h0YCAob3IgcG90ZW50aWFsbHkgYW55dGhpbmcgZWxzZSlcbi8vL1xuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLWRpbWVuc2lvbigkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKSB7XG4gICRvcGVyYXRvci1pbmRleDogc3RyLWluZGV4KCRleHByZXNzaW9uLCAkb3BlcmF0b3IpO1xuICAkcGFyc2VkLWRpbWVuc2lvbjogc3RyLXNsaWNlKCRleHByZXNzaW9uLCAwLCAkb3BlcmF0b3ItaW5kZXggLSAxKTtcbiAgJGRpbWVuc2lvbjogJ3dpZHRoJztcblxuICBAaWYgc3RyLWxlbmd0aCgkcGFyc2VkLWRpbWVuc2lvbikgPiAwIHtcbiAgICAkZGltZW5zaW9uOiAkcGFyc2VkLWRpbWVuc2lvbjtcbiAgfVxuXG4gIEByZXR1cm4gJGRpbWVuc2lvbjtcbn1cblxuXG4vLy9cbi8vLyBHZXQgZGltZW5zaW9uIHByZWZpeCBiYXNlZCBvbiBhbiBvcGVyYXRvclxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvcGVyYXRvciAtIE9wZXJhdG9yXG4vLy9cbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gYG1pbmAgb3IgYG1heGBcbi8vL1xuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLXByZWZpeCgkb3BlcmF0b3IpIHtcbiAgQHJldHVybiBpZihpbmRleCgoJzwnLCAnPD0nLCAnw6LCicKkJyksICRvcGVyYXRvciksICdtYXgnLCAnbWluJyk7XG59XG5cblxuLy8vXG4vLy8gR2V0IHZhbHVlIG9mIGFuIGV4cHJlc3Npb24sIGJhc2VkIG9uIGEgZm91bmQgb3BlcmF0b3Jcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gZXh0cmFjdCB2YWx1ZSBmcm9tXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvcGVyYXRvciAtIE9wZXJhdG9yIGZyb20gYCRleHByZXNzaW9uYFxuLy8vXG4vLy8gQHJldHVybiB7TnVtYmVyfSAtIEEgbnVtZXJpYyB2YWx1ZVxuLy8vXG5AZnVuY3Rpb24gZ2V0LWV4cHJlc3Npb24tdmFsdWUoJGV4cHJlc3Npb24sICRvcGVyYXRvcikge1xuICAkb3BlcmF0b3ItaW5kZXg6IHN0ci1pbmRleCgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcbiAgJHZhbHVlOiBzdHItc2xpY2UoJGV4cHJlc3Npb24sICRvcGVyYXRvci1pbmRleCArIHN0ci1sZW5ndGgoJG9wZXJhdG9yKSk7XG5cbiAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJHZhbHVlKSB7XG4gICAgJHZhbHVlOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJHZhbHVlKTtcbiAgfSBAZWxzZSB7XG4gICAgJHZhbHVlOiB0by1udW1iZXIoJHZhbHVlKTtcbiAgfVxuXG4gICRpbnRlcnZhbDogbWFwLWdldCgkdW5pdC1pbnRlcnZhbHMsIHVuaXQoJHZhbHVlKSk7XG5cbiAgQGlmIG5vdCAkaW50ZXJ2YWwge1xuICAgIC8vIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBpbmNsdWRlIGEgbWl4aW4gaW5zaWRlIGEgZnVuY3Rpb24sIHNvIHdlIGhhdmUgdG9cbiAgICAvLyByZWx5IG9uIHRoZSBgaW0tbG9nKC4uKWAgZnVuY3Rpb24gcmF0aGVyIHRoYW4gdGhlIGBsb2coLi4pYCBtaXhpbi4gQmVjYXVzZVxuICAgIC8vIGZ1bmN0aW9ucyBjYW5ub3QgYmUgY2FsbGVkIGFueXdoZXJlIGluIFNhc3MsIHdlIG5lZWQgdG8gaGFjayB0aGUgY2FsbCBpblxuICAgIC8vIGEgZHVtbXkgdmFyaWFibGUsIHN1Y2ggYXMgYCRfYC4gSWYgYW55Ym9keSBldmVyIHJhaXNlIGEgc2NvcGluZyBpc3N1ZSB3aXRoXG4gICAgLy8gU2FzcyAzLjMsIGNoYW5nZSB0aGlzIGxpbmUgaW4gYEBpZiBpbS1sb2coLi4pIHt9YCBpbnN0ZWFkLlxuICAgICRfOiBpbS1sb2coJ1Vua25vd24gdW5pdCBgI3t1bml0KCR2YWx1ZSl9YC4nKTtcbiAgfVxuXG4gIEBpZiAkb3BlcmF0b3IgPT0gJz4nIHtcbiAgICAkdmFsdWU6ICR2YWx1ZSArICRpbnRlcnZhbDtcbiAgfSBAZWxzZSBpZiAkb3BlcmF0b3IgPT0gJzwnIHtcbiAgICAkdmFsdWU6ICR2YWx1ZSAtICRpbnRlcnZhbDtcbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuXG5cbi8vL1xuLy8vIFBhcnNlIGFuIGV4cHJlc3Npb24gdG8gcmV0dXJuIGEgdmFsaWQgbWVkaWEtcXVlcnkgZXhwcmVzc2lvblxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRleHByZXNzaW9uIC0gRXhwcmVzc2lvbiB0byBwYXJzZVxuLy8vXG4vLy8gQHJldHVybiB7U3RyaW5nfSAtIFZhbGlkIG1lZGlhIHF1ZXJ5XG4vLy9cbkBmdW5jdGlvbiBwYXJzZS1leHByZXNzaW9uKCRleHByZXNzaW9uKSB7XG4gIC8vIElmIGl0IGlzIHBhcnQgb2YgJG1lZGlhLWV4cHJlc3Npb25zLCBpdCBoYXMgbm8gb3BlcmF0b3JcbiAgLy8gdGhlbiB0aGVyZSBpcyBubyBuZWVkIHRvIGdvIGFueSBmdXJ0aGVyLCBqdXN0IHJldHVybiB0aGUgdmFsdWVcbiAgQGlmIG1hcC1oYXMta2V5KCRtZWRpYS1leHByZXNzaW9ucywgJGV4cHJlc3Npb24pIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1lZGlhLWV4cHJlc3Npb25zLCAkZXhwcmVzc2lvbik7XG4gIH1cblxuICAkb3BlcmF0b3I6IGdldC1leHByZXNzaW9uLW9wZXJhdG9yKCRleHByZXNzaW9uKTtcbiAgJGRpbWVuc2lvbjogZ2V0LWV4cHJlc3Npb24tZGltZW5zaW9uKCRleHByZXNzaW9uLCAkb3BlcmF0b3IpO1xuICAkcHJlZml4OiBnZXQtZXhwcmVzc2lvbi1wcmVmaXgoJG9wZXJhdG9yKTtcbiAgJHZhbHVlOiBnZXQtZXhwcmVzc2lvbi12YWx1ZSgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcblxuICBAcmV0dXJuICcoI3skcHJlZml4fS0jeyRkaW1lbnNpb259OiAjeyR2YWx1ZX0pJztcbn1cblxuLy8vXG4vLy8gU2xpY2UgYCRsaXN0YCBiZXR3ZWVuIGAkc3RhcnRgIGFuZCBgJGVuZGAgaW5kZXhlc1xuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRsaXN0IC0gTGlzdCB0byBzbGljZVxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc3RhcnQgWzFdIC0gU3RhcnQgaW5kZXhcbi8vLyBAcGFyYW0ge051bWJlcn0gJGVuZCBbbGVuZ3RoKCRsaXN0KV0gLSBFbmQgaW5kZXhcbi8vL1xuLy8vIEByZXR1cm4ge0xpc3R9IFNsaWNlZCBsaXN0XG4vLy9cbkBmdW5jdGlvbiBzbGljZSgkbGlzdCwgJHN0YXJ0OiAxLCAkZW5kOiBsZW5ndGgoJGxpc3QpKSB7XG4gIEBpZiBsZW5ndGgoJGxpc3QpIDwgMSBvciAkc3RhcnQgPiAkZW5kIHtcbiAgICBAcmV0dXJuICgpO1xuICB9XG5cbiAgJHJlc3VsdDogKCk7XG5cbiAgQGZvciAkaSBmcm9tICRzdGFydCB0aHJvdWdoICRlbmQge1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCBudGgoJGxpc3QsICRpKSk7XG4gIH1cblxuICBAcmV0dXJuICRyZXN1bHQ7XG59XG5cbi8vLy9cbi8vLyBTdHJpbmcgdG8gbnVtYmVyIGNvbnZlcnRlclxuLy8vIEBhdXRob3IgSHVnbyBHaXJhdWRlbFxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vL1xuXG5cbi8vL1xuLy8vIENhc3RzIGEgc3RyaW5nIGludG8gYSBudW1iZXJcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgTnVtYmVyfSAkdmFsdWUgLSBWYWx1ZSB0byBiZSBwYXJzZWRcbi8vL1xuLy8vIEByZXR1cm4ge051bWJlcn1cbi8vL1xuQGZ1bmN0aW9uIHRvLW51bWJlcigkdmFsdWUpIHtcbiAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSAnbnVtYmVyJyB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkdmFsdWUpICE9ICdzdHJpbmcnIHtcbiAgICAkXzogaW0tbG9nKCdWYWx1ZSBmb3IgYHRvLW51bWJlcmAgc2hvdWxkIGJlIGEgbnVtYmVyIG9yIGEgc3RyaW5nLicpO1xuICB9XG5cbiAgJGZpcnN0LWNoYXJhY3Rlcjogc3RyLXNsaWNlKCR2YWx1ZSwgMSwgMSk7XG4gICRyZXN1bHQ6IDA7XG4gICRkaWdpdHM6IDA7XG4gICRtaW51czogKCRmaXJzdC1jaGFyYWN0ZXIgPT0gJy0nKTtcbiAgJG51bWJlcnM6ICgnMCc6IDAsICcxJzogMSwgJzInOiAyLCAnMyc6IDMsICc0JzogNCwgJzUnOiA1LCAnNic6IDYsICc3JzogNywgJzgnOiA4LCAnOSc6IDkpO1xuXG4gIC8vIFJlbW92ZSArLy0gc2lnbiBpZiBwcmVzZW50IGF0IGZpcnN0IGNoYXJhY3RlclxuICBAaWYgKCRmaXJzdC1jaGFyYWN0ZXIgPT0gJysnIG9yICRmaXJzdC1jaGFyYWN0ZXIgPT0gJy0nKSB7XG4gICAgJHZhbHVlOiBzdHItc2xpY2UoJHZhbHVlLCAyKTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggc3RyLWxlbmd0aCgkdmFsdWUpIHtcbiAgICAkY2hhcmFjdGVyOiBzdHItc2xpY2UoJHZhbHVlLCAkaSwgJGkpO1xuXG4gICAgQGlmIG5vdCAoaW5kZXgobWFwLWtleXMoJG51bWJlcnMpLCAkY2hhcmFjdGVyKSBvciAkY2hhcmFjdGVyID09ICcuJykge1xuICAgICAgQHJldHVybiB0by1sZW5ndGgoaWYoJG1pbnVzLCAtJHJlc3VsdCwgJHJlc3VsdCksIHN0ci1zbGljZSgkdmFsdWUsICRpKSlcbiAgICB9XG5cbiAgICBAaWYgJGNoYXJhY3RlciA9PSAnLicge1xuICAgICAgJGRpZ2l0czogMTtcbiAgICB9IEBlbHNlIGlmICRkaWdpdHMgPT0gMCB7XG4gICAgICAkcmVzdWx0OiAkcmVzdWx0ICogMTAgKyBtYXAtZ2V0KCRudW1iZXJzLCAkY2hhcmFjdGVyKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRkaWdpdHM6ICRkaWdpdHMgKiAxMDtcbiAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKyBtYXAtZ2V0KCRudW1iZXJzLCAkY2hhcmFjdGVyKSAvICRkaWdpdHM7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBpZigkbWludXMsIC0kcmVzdWx0LCAkcmVzdWx0KTtcbn1cblxuXG4vLy9cbi8vLyBBZGQgYCR1bml0YCB0byBgJHZhbHVlYFxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZSAtIFZhbHVlIHRvIGFkZCB1bml0IHRvXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR1bml0IC0gU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB1bml0XG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IC0gYCR2YWx1ZWAgZXhwcmVzc2VkIGluIGAkdW5pdGBcbi8vL1xuQGZ1bmN0aW9uIHRvLWxlbmd0aCgkdmFsdWUsICR1bml0KSB7XG4gICR1bml0czogKCdweCc6IDFweCwgJ2NtJzogMWNtLCAnbW0nOiAxbW0sICclJzogMSUsICdjaCc6IDFjaCwgJ3BjJzogMXBjLCAnaW4nOiAxaW4sICdlbSc6IDFlbSwgJ3JlbSc6IDFyZW0sICdwdCc6IDFwdCwgJ2V4JzogMWV4LCAndncnOiAxdncsICd2aCc6IDF2aCwgJ3ZtaW4nOiAxdm1pbiwgJ3ZtYXgnOiAxdm1heCk7XG5cbiAgQGlmIG5vdCBpbmRleChtYXAta2V5cygkdW5pdHMpLCAkdW5pdCkge1xuICAgICRfOiBpbS1sb2coJ0ludmFsaWQgdW5pdCBgI3skdW5pdH1gLicpO1xuICB9XG5cbiAgQHJldHVybiAkdmFsdWUgKiBtYXAtZ2V0KCR1bml0cywgJHVuaXQpO1xufVxuXG4vLy9cbi8vLyBUaGlzIG1peGluIGFpbXMgYXQgcmVkZWZpbmluZyB0aGUgY29uZmlndXJhdGlvbiBqdXN0IGZvciB0aGUgc2NvcGUgb2Zcbi8vLyB0aGUgY2FsbC4gSXQgaXMgaGVscGZ1bCB3aGVuIGhhdmluZyBhIGNvbXBvbmVudCBuZWVkaW5nIGFuIGV4dGVuZGVkXG4vLy8gY29uZmlndXJhdGlvbiBzdWNoIGFzIGN1c3RvbSBicmVha3BvaW50cyAocmVmZXJyZWQgdG8gYXMgdHdlYWtwb2ludHMpXG4vLy8gZm9yIGluc3RhbmNlLlxuLy8vXG4vLy8gQGF1dGhvciBIdWdvIEdpcmF1ZGVsXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJHR3ZWFrcG9pbnRzIFsoKV0gLSBNYXAgb2YgdHdlYWtwb2ludHMgdG8gYmUgbWVyZ2VkIHdpdGggYCRicmVha3BvaW50c2Bcbi8vLyBAcGFyYW0ge01hcH0gJHR3ZWFrLW1lZGlhLWV4cHJlc3Npb25zIFsoKV0gLSBNYXAgb2YgdHdlYWtlZCBtZWRpYSBleHByZXNzaW9ucyB0byBiZSBtZXJnZWQgd2l0aCBgJG1lZGlhLWV4cHJlc3Npb25gXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gRXh0ZW5kIHRoZSBnbG9iYWwgYnJlYWtwb2ludHMgd2l0aCBhIHR3ZWFrcG9pbnRcbi8vLyAgQGluY2x1ZGUgbWVkaWEtY29udGV4dCgoJ2N1c3RvbSc6IDY3OHB4KSkge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgQGluY2x1ZGUgbWVkaWEoJz5waG9uZScsICc8PWN1c3RvbScpIHtcbi8vLyAgICAgICAvLyAuLi5cbi8vLyAgICAgIH1cbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBFeHRlbmQgdGhlIGdsb2JhbCBtZWRpYSBleHByZXNzaW9ucyB3aXRoIGEgY3VzdG9tIG9uZVxuLy8vICBAaW5jbHVkZSBtZWRpYS1jb250ZXh0KCR0d2Vhay1tZWRpYS1leHByZXNzaW9uczogKCdhbGwnOiAnYWxsJykpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIEBpbmNsdWRlIG1lZGlhKCdhbGwnLCAnPnBob25lJykge1xuLy8vICAgICAgIC8vIC4uLlxuLy8vICAgICAgfVxuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEV4dGVuZCBib3RoIGNvbmZpZ3VyYXRpb24gbWFwc1xuLy8vICBAaW5jbHVkZSBtZWRpYS1jb250ZXh0KCgnY3VzdG9tJzogNjc4cHgpLCAoJ2FsbCc6ICdhbGwnKSkge1xuLy8vICAgIC5mb28ge1xuLy8vICAgICAgQGluY2x1ZGUgbWVkaWEoJ2FsbCcsICc+cGhvbmUnLCAnPD1jdXN0b20nKSB7XG4vLy8gICAgICAgLy8gLi4uXG4vLy8gICAgICB9XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbkBtaXhpbiBtZWRpYS1jb250ZXh0KCR0d2Vha3BvaW50czogKCksICR0d2Vhay1tZWRpYS1leHByZXNzaW9uczogKCkpIHtcbiAgLy8gU2F2ZSBnbG9iYWwgY29uZmlndXJhdGlvblxuICAkZ2xvYmFsLWJyZWFrcG9pbnRzOiAkYnJlYWtwb2ludHM7XG4gICRnbG9iYWwtbWVkaWEtZXhwcmVzc2lvbnM6ICRtZWRpYS1leHByZXNzaW9ucztcblxuICAvLyBVcGRhdGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cbiAgJGJyZWFrcG9pbnRzOiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnRzLCAkdHdlYWtwb2ludHMpICFnbG9iYWw7XG4gICRtZWRpYS1leHByZXNzaW9uczogbWFwLW1lcmdlKCRtZWRpYS1leHByZXNzaW9ucywgJHR3ZWFrLW1lZGlhLWV4cHJlc3Npb25zKSAhZ2xvYmFsO1xuXG4gIEBjb250ZW50O1xuXG4gIC8vIFJlc3RvcmUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cbiAgJGJyZWFrcG9pbnRzOiAkZ2xvYmFsLWJyZWFrcG9pbnRzICFnbG9iYWw7XG4gICRtZWRpYS1leHByZXNzaW9uczogJGdsb2JhbC1tZWRpYS1leHByZXNzaW9ucyAhZ2xvYmFsO1xufVxuXG4vLy8vXG4vLy8gaW5jbHVkZS1tZWRpYSBwdWJsaWMgZXhwb3NlZCBBUElcbi8vLyBAYXV0aG9yIEVkdWFyZG8gQm91Y2FzXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vLy9cblxuXG4vLy9cbi8vLyBHZW5lcmF0ZXMgYSBtZWRpYSBxdWVyeSBiYXNlZCBvbiBhIGxpc3Qgb2YgY29uZGl0aW9uc1xuLy8vXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAgICRjb25kaXRpb25zICAtIE1lZGlhIHF1ZXJ5IGNvbmRpdGlvbnNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBXaXRoIGEgc2luZ2xlIHNldCBicmVha3BvaW50XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+cGhvbmUnKSB7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBXaXRoIHR3byBzZXQgYnJlYWtwb2ludHNcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz5waG9uZScsICc8PXRhYmxldCcpIHsgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFdpdGggY3VzdG9tIHZhbHVlc1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj0zNThweCcsICc8ODUwcHgnKSB7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBXaXRoIHNldCBicmVha3BvaW50cyB3aXRoIGN1c3RvbSB2YWx1ZXNcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz5kZXNrdG9wJywgJzw9MTM1MHB4JykgeyB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCBhIHN0YXRpYyBleHByZXNzaW9uXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCdyZXRpbmEyeCcpIHsgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIE1peGluZyBldmVyeXRoaW5nXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PTM1MHB4JywgJzx0YWJsZXQnLCAncmV0aW5hM3gnKSB7IH1cbi8vL1xuQG1peGluIG1lZGlhKCRjb25kaXRpb25zLi4uKSB7XG4gIEBpZiAoJGltLW1lZGlhLXN1cHBvcnQgYW5kIGxlbmd0aCgkY29uZGl0aW9ucykgPT0gMCkgb3JcbiAgICAgIChub3QgJGltLW1lZGlhLXN1cHBvcnQgYW5kIGltLWludGVyY2VwdHMtc3RhdGljLWJyZWFrcG9pbnQoJGNvbmRpdGlvbnMuLi4pKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2UgaWYgKCRpbS1tZWRpYS1zdXBwb3J0IGFuZCBsZW5ndGgoJGNvbmRpdGlvbnMpID4gMCkge1xuICAgIEBtZWRpYSAje3VucXVvdGUocGFyc2UtZXhwcmVzc2lvbihudGgoJGNvbmRpdGlvbnMsIDEpKSl9IHtcbiAgICAgIC8vIFJlY3Vyc2l2ZSBjYWxsXG4gICAgICBAaW5jbHVkZSBtZWRpYShzbGljZSgkY29uZGl0aW9ucywgMikuLi4pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59Il0sInNvdXJjZVJvb3QiOiIifQ==*/