/* Update breakpoints at js/ELE-util/style-breakpoints.js when updating above values. */
/* Update breakpoints at js/ELE-util/style-breakpoints.js when updating above values. */
.text-left {
  text-align: left !important; }

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

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

@media (min-width: 375px) {
  .text-sm-left {
    text-align: left !important; }
  .text-sm-right {
    text-align: right !important; }
  .text-sm-center {
    text-align: center !important; } }

@media (min-width: 600px) {
  .text-md-left {
    text-align: left !important; }
  .text-md-right {
    text-align: right !important; }
  .text-md-center {
    text-align: center !important; } }

@media (min-width: 900px) {
  .text-mid-md-left {
    text-align: left !important; }
  .text-mid-md-right {
    text-align: right !important; }
  .text-mid-md-center {
    text-align: center !important; } }

@media (min-width: 1200px) {
  .text-lg-left {
    text-align: left !important; }
  .text-lg-right {
    text-align: right !important; }
  .text-lg-center {
    text-align: center !important; } }

@media (min-width: 1600px) {
  .text-xl-left {
    text-align: left !important; }
  .text-xl-right {
    text-align: right !important; }
  .text-xl-center {
    text-align: center !important; } }

.fifty-fifty__side--text {
  font-family: "MarcJacobs";
  font-weight: 700;
  font-size: 35px;
  font-size: 2.1875rem;
  letter-spacing: 0.75px;
  line-height: 31px;
  color: #000;
  text-align: center;
  text-transform: uppercase; }
  @media only screen and (max-width: 374px) {
    .fifty-fifty__side--text {
      font-size: 30px;
      font-size: 1.875rem;
      letter-spacing: 0.75px;
      line-height: 28px; } }
  @media only screen and (min-width: 600px) {
    .fifty-fifty__side--text {
      font-size: 42px;
      font-size: 2.625rem;
      letter-spacing: 0.75px;
      line-height: 38px; } }
  @media only screen and (min-width: 1200px) {
    .fifty-fifty__side--text {
      font-size: 60px;
      font-size: 3.75rem;
      letter-spacing: 0.75px;
      line-height: 52px; } }
  @media only screen and (min-width: 1600px) {
    .fifty-fifty__side--text {
      font-size: 77px;
      font-size: 4.8125rem;
      letter-spacing: 0.75px;
      line-height: 68px; } }

.about-marc__title {
  font-family: "MarcJacobs";
  font-weight: 700;
  font-size: 22px;
  font-size: 1.375rem;
  letter-spacing: 0.75px;
  line-height: 20px;
  color: #000;
  text-align: center;
  text-transform: uppercase; }
  @media only screen and (max-width: 374px) {
    .about-marc__title {
      font-size: 20px;
      font-size: 1.25rem;
      letter-spacing: 0.75px;
      line-height: 18px; } }
  @media only screen and (min-width: 1200px) {
    .about-marc__title {
      font-size: 26px;
      font-size: 1.625rem;
      letter-spacing: 0.75px;
      line-height: 24px; } }
  @media only screen and (min-width: 1600px) {
    .about-marc__title {
      font-size: 33px;
      font-size: 2.0625rem;
      letter-spacing: 0.75px;
      line-height: 32px; } }

.fifty-fifty__text--small {
  font-family: "MarcJacobs";
  font-weight: 700;
  font-size: 10px;
  font-size: 0.625rem;
  letter-spacing: 0.75px;
  line-height: 10px;
  color: #000;
  text-align: center;
  text-transform: uppercase; }
  @media only screen and (max-width: 374px) {
    .fifty-fifty__text--small {
      font-size: 8px;
      font-size: 0.5rem;
      letter-spacing: 0.75px;
      line-height: 8px; } }
  @media only screen and (min-width: 1200px) {
    .fifty-fifty__text--small {
      font-size: 12px;
      font-size: 0.75rem;
      letter-spacing: 0.75px;
      line-height: 12px; } }
  @media only screen and (min-width: 1600px) {
    .fifty-fifty__text--small {
      font-size: 14px;
      font-size: 0.875rem;
      letter-spacing: 0.75px;
      line-height: 14px; } }

.about-marc {
  margin-top: 33px; }
  @media only screen and (min-width: 600px) and (max-width: 1199px) {
    .about-marc {
      margin-top: 16px; } }
  @media only screen and (min-width: 1200px) {
    .about-marc {
      margin-top: 17px; } }
  .about-marc__title {
    margin: 0 0 30px; }
    @media only screen and (min-width: 600px) and (max-width: 1199px) {
      .about-marc__title {
        margin: 0 0 50px; } }
    @media only screen and (min-width: 1200px) {
      .about-marc__title {
        margin: 0 0 60px; } }
  .about-marc__carousel1 {
    margin-bottom: 80px; }
    @media only screen and (min-width: 600px) and (max-width: 1199px) {
      .about-marc__carousel1 {
        margin-bottom: 40px; } }
    @media only screen and (min-width: 1200px) {
      .about-marc__carousel1 {
        margin-bottom: 121px; } }
  .about-marc__carousel2 {
    margin-bottom: 80px; }
    @media only screen and (min-width: 600px) and (max-width: 1199px) {
      .about-marc__carousel2 {
        margin-bottom: 40px; } }
    @media only screen and (min-width: 1200px) {
      .about-marc__carousel2 {
        margin-bottom: 96px; } }

/* from carousalAndSlide component */
.carousel-and-slide--medium-and-up {
  display: none; }
  @media only screen and (min-width: 600px) {
    .carousel-and-slide--medium-and-up {
      display: block;
      padding-bottom: 20px; } }
  @media only screen and (min-width: 1200px) {
    .carousel-and-slide--medium-and-up {
      padding-bottom: 16px; }
      .carousel-and-slide--medium-and-up:hover .swiper-container .swiper-button-prev,
      .carousel-and-slide--medium-and-up:hover .swiper-container .swiper-button-next {
        opacity: 1; } }
  @media only screen and (min-width: 1600px) {
    .carousel-and-slide--medium-and-up {
      padding-bottom: 48px; } }

.carousel-and-slide--mobile {
  display: block;
  padding-bottom: 28px; }
  @media only screen and (min-width: 600px) {
    .carousel-and-slide--mobile {
      display: none; } }

.carousel-and-slide--dark-theme {
  background-color: #000; }
  .carousel-and-slide--dark-theme .swiper-pagination-bullets .swiper-pagination-bullet--rectangle {
    background: #fff; }

.carousel-and-slide .swiper-container .swiper-button-prev,
.carousel-and-slide .swiper-container .swiper-button-next {
  width: 16px;
  background-size: contain;
  opacity: 0;
  transition: opacity 0.4s; }
  @media only screen and (min-width: 1200px) {
    .carousel-and-slide .swiper-container .swiper-button-prev,
    .carousel-and-slide .swiper-container .swiper-button-next {
      cursor: pointer; }
      .carousel-and-slide .swiper-container .swiper-button-prev:hover,
      .carousel-and-slide .swiper-container .swiper-button-next:hover {
        opacity: 1; } }

.carousel-and-slide .swiper-container .swiper-button-prev {
  left: 20px;
  padding-left: 10px; }

.carousel-and-slide .swiper-container .swiper-button-next {
  right: 20px;
  padding-right: 10px; }

.carousel-and-slide .swiper-pagination-bullet--rectangle {
  width: 35px;
  height: 2px;
  background: #000;
  border-radius: 0;
  margin: 0 2px !important; }
  @media only screen and (min-width: 600px) {
    .carousel-and-slide .swiper-pagination-bullet--rectangle {
      width: 60.37px; } }

.carousel-and-slide .swiper-pagination.swiper-pagination-bullets {
  display: flex;
  justify-content: center;
  height: 2px;
  left: 50%;
  transform: translateX(-50%);
  bottom: -28px;
  width: 100%; }
  @media only screen and (min-width: 600px) and (max-width: 1199px) {
    .carousel-and-slide .swiper-pagination.swiper-pagination-bullets {
      bottom: -19px; } }
  @media only screen and (min-width: 900px) and (max-width: 1199px) {
    .carousel-and-slide .swiper-pagination.swiper-pagination-bullets {
      bottom: -11px; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) {
    .carousel-and-slide .swiper-pagination.swiper-pagination-bullets {
      bottom: -16px; } }
  @media only screen and (min-width: 1600px) {
    .carousel-and-slide .swiper-pagination.swiper-pagination-bullets {
      bottom: -48px; } }

/* from sliderCarousal component */
.slider-carousel {
  position: relative; }
  .slider-carousel .swiper-container,
  .slider-carousel .swiper-pagination {
    z-index: 0; }

@media only screen and (min-width: 600px) and (max-width: 1199px) {
  .swiper-wrapper {
    display: flex;
    align-items: center; } }

/* from fiftyFifty component */
.fifty-fifty {
  display: flex;
  flex-wrap: wrap;
  justify-content: center; }
  .fifty-fifty__side--right-tall {
    display: flex;
    align-items: center; }
  .fifty-fifty__side--right-wide {
    display: flex;
    align-items: center; }
    @media only screen and (min-width: 600px) and (max-width: 1199px) {
      .fifty-fifty__side--right-wide {
        margin-left: 12.5%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) and (min-width: 600px) and (max-width: 899px) {
    .fifty-fifty__side--right-wide {
      margin-left: 12.5%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) and (min-width: 600px) and (max-width: 1199px) {
    .fifty-fifty__side--right-wide {
      margin-left: 12.5%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) and (min-width: 900px) and (max-width: 1199px) {
    .fifty-fifty__side--right-wide {
      margin-left: 12.5%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) and (min-width: 1200px) and (max-width: 1599px) {
    .fifty-fifty__side--right-wide {
      margin-left: 11.11111%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) and (min-width: 1600px) {
    .fifty-fifty__side--right-wide {
      margin-left: 11.11111%; } }
    @media only screen and (min-width: 1200px) and (max-width: 1599px) {
      .fifty-fifty__side--right-wide {
        margin-left: 5.55556%; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) and (min-width: 600px) and (max-width: 899px) {
    .fifty-fifty__side--right-wide {
      margin-left: 6.25%; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) and (min-width: 600px) and (max-width: 1199px) {
    .fifty-fifty__side--right-wide {
      margin-left: 6.25%; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) and (min-width: 900px) and (max-width: 1199px) {
    .fifty-fifty__side--right-wide {
      margin-left: 6.25%; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) and (min-width: 1200px) and (max-width: 1599px) {
    .fifty-fifty__side--right-wide {
      margin-left: 5.55556%; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) and (min-width: 1600px) {
    .fifty-fifty__side--right-wide {
      margin-left: 5.55556%; } }
    @media only screen and (min-width: 1600px) {
      .fifty-fifty__side--right-wide {
        margin-left: 5.55556%; } }
  @media only screen and (min-width: 1600px) and (min-width: 600px) and (max-width: 899px) {
    .fifty-fifty__side--right-wide {
      margin-left: 6.25%; } }
  @media only screen and (min-width: 1600px) and (min-width: 600px) and (max-width: 1199px) {
    .fifty-fifty__side--right-wide {
      margin-left: 6.25%; } }
  @media only screen and (min-width: 1600px) and (min-width: 900px) and (max-width: 1199px) {
    .fifty-fifty__side--right-wide {
      margin-left: 6.25%; } }
  @media only screen and (min-width: 1600px) and (min-width: 1200px) and (max-width: 1599px) {
    .fifty-fifty__side--right-wide {
      margin-left: 5.55556%; } }
  @media only screen and (min-width: 1600px) and (min-width: 1600px) {
    .fifty-fifty__side--right-wide {
      margin-left: 5.55556%; } }
  .fifty-fifty__side--image {
    width: 83.33333%; }
    @media only screen and (min-width: 600px) and (max-width: 1199px) {
      .fifty-fifty__side--image {
        width: 50%; } }
    @media only screen and (min-width: 1200px) and (max-width: 1599px) {
      .fifty-fifty__side--image {
        width: 44.44444%; } }
    @media only screen and (min-width: 1600px) {
      .fifty-fifty__side--image {
        width: 44.44444%; } }
    @media only screen and (min-width: 1600px) {
      .fifty-fifty__side--image {
        width: 38.88889%; } }
    .fifty-fifty__side--image picture {
      width: 100%; }
      .fifty-fifty__side--image picture img {
        width: 100%; }
  .fifty-fifty__side--text {
    display: flex;
    justify-content: center;
    align-items: center;
    text-align: center;
    width: 83.33333%;
    padding: 0 20px; }
    @media only screen and (min-width: 600px) and (max-width: 1199px) {
      .fifty-fifty__side--text {
        width: 50%;
        font-size: 48px;
        font-size: 3rem;
        letter-spacing: 0.75px;
        line-height: 44px; } }
    @media only screen and (min-width: 1200px) and (max-width: 1599px) {
      .fifty-fifty__side--text {
        width: 44.44444%;
        font-size: 48px;
        font-size: 3rem;
        letter-spacing: 0.75px;
        line-height: 44px; } }
    @media only screen and (min-width: 1600px) {
      .fifty-fifty__side--text {
        width: 44.44444%;
        font-size: 48px;
        font-size: 3rem;
        letter-spacing: 0.75px;
        line-height: 44px; } }
    @media only screen and (min-width: 1600px) {
      .fifty-fifty__side--text {
        width: 38.88889%;
        font-size: 64px;
        font-size: 4rem;
        letter-spacing: 0.75px;
        line-height: 60px; } }
  .fifty-fifty__side--tall {
    width: 83.33333%; }
    @media only screen and (min-width: 600px) and (max-width: 1199px) {
      .fifty-fifty__side--tall {
        margin-right: 12.5%;
        margin-left: 12.5%;
        width: 25%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) and (min-width: 600px) and (max-width: 899px) {
    .fifty-fifty__side--tall {
      margin-right: 12.5%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) and (min-width: 600px) and (max-width: 1199px) {
    .fifty-fifty__side--tall {
      margin-right: 12.5%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) and (min-width: 900px) and (max-width: 1199px) {
    .fifty-fifty__side--tall {
      margin-right: 12.5%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) and (min-width: 1200px) and (max-width: 1599px) {
    .fifty-fifty__side--tall {
      margin-right: 11.11111%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) and (min-width: 1600px) {
    .fifty-fifty__side--tall {
      margin-right: 11.11111%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) and (min-width: 600px) and (max-width: 899px) {
    .fifty-fifty__side--tall {
      margin-left: 12.5%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) and (min-width: 600px) and (max-width: 1199px) {
    .fifty-fifty__side--tall {
      margin-left: 12.5%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) and (min-width: 900px) and (max-width: 1199px) {
    .fifty-fifty__side--tall {
      margin-left: 12.5%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) and (min-width: 1200px) and (max-width: 1599px) {
    .fifty-fifty__side--tall {
      margin-left: 11.11111%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) and (min-width: 1600px) {
    .fifty-fifty__side--tall {
      margin-left: 11.11111%; } }
    @media only screen and (min-width: 1200px) and (max-width: 1599px) {
      .fifty-fifty__side--tall {
        margin-right: 11.11111%;
        margin-left: 11.11111%;
        width: 22.22222%; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) and (min-width: 600px) and (max-width: 899px) {
    .fifty-fifty__side--tall {
      margin-right: 12.5%; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) and (min-width: 600px) and (max-width: 1199px) {
    .fifty-fifty__side--tall {
      margin-right: 12.5%; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) and (min-width: 900px) and (max-width: 1199px) {
    .fifty-fifty__side--tall {
      margin-right: 12.5%; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) and (min-width: 1200px) and (max-width: 1599px) {
    .fifty-fifty__side--tall {
      margin-right: 11.11111%; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) and (min-width: 1600px) {
    .fifty-fifty__side--tall {
      margin-right: 11.11111%; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) and (min-width: 600px) and (max-width: 899px) {
    .fifty-fifty__side--tall {
      margin-left: 12.5%; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) and (min-width: 600px) and (max-width: 1199px) {
    .fifty-fifty__side--tall {
      margin-left: 12.5%; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) and (min-width: 900px) and (max-width: 1199px) {
    .fifty-fifty__side--tall {
      margin-left: 12.5%; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) and (min-width: 1200px) and (max-width: 1599px) {
    .fifty-fifty__side--tall {
      margin-left: 11.11111%; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) and (min-width: 1600px) {
    .fifty-fifty__side--tall {
      margin-left: 11.11111%; } }
    @media only screen and (min-width: 1600px) {
      .fifty-fifty__side--tall {
        margin-right: 11.11111%;
        margin-left: 11.11111%;
        width: 22.22222%; } }
  @media only screen and (min-width: 1600px) and (min-width: 600px) and (max-width: 899px) {
    .fifty-fifty__side--tall {
      margin-right: 12.5%; } }
  @media only screen and (min-width: 1600px) and (min-width: 600px) and (max-width: 1199px) {
    .fifty-fifty__side--tall {
      margin-right: 12.5%; } }
  @media only screen and (min-width: 1600px) and (min-width: 900px) and (max-width: 1199px) {
    .fifty-fifty__side--tall {
      margin-right: 12.5%; } }
  @media only screen and (min-width: 1600px) and (min-width: 1200px) and (max-width: 1599px) {
    .fifty-fifty__side--tall {
      margin-right: 11.11111%; } }
  @media only screen and (min-width: 1600px) and (min-width: 1600px) {
    .fifty-fifty__side--tall {
      margin-right: 11.11111%; } }
  @media only screen and (min-width: 1600px) and (min-width: 600px) and (max-width: 899px) {
    .fifty-fifty__side--tall {
      margin-left: 12.5%; } }
  @media only screen and (min-width: 1600px) and (min-width: 600px) and (max-width: 1199px) {
    .fifty-fifty__side--tall {
      margin-left: 12.5%; } }
  @media only screen and (min-width: 1600px) and (min-width: 900px) and (max-width: 1199px) {
    .fifty-fifty__side--tall {
      margin-left: 12.5%; } }
  @media only screen and (min-width: 1600px) and (min-width: 1200px) and (max-width: 1599px) {
    .fifty-fifty__side--tall {
      margin-left: 11.11111%; } }
  @media only screen and (min-width: 1600px) and (min-width: 1600px) {
    .fifty-fifty__side--tall {
      margin-left: 11.11111%; } }
    @media only screen and (min-width: 1600px) {
      .fifty-fifty__side--tall {
        margin-right: 5.55556%;
        margin-left: 11.11111%;
        width: 22.22222%; } }
  @media only screen and (min-width: 1600px) and (min-width: 600px) and (max-width: 899px) {
    .fifty-fifty__side--tall {
      margin-right: 6.25%; } }
  @media only screen and (min-width: 1600px) and (min-width: 600px) and (max-width: 1199px) {
    .fifty-fifty__side--tall {
      margin-right: 6.25%; } }
  @media only screen and (min-width: 1600px) and (min-width: 900px) and (max-width: 1199px) {
    .fifty-fifty__side--tall {
      margin-right: 6.25%; } }
  @media only screen and (min-width: 1600px) and (min-width: 1200px) and (max-width: 1599px) {
    .fifty-fifty__side--tall {
      margin-right: 5.55556%; } }
  @media only screen and (min-width: 1600px) and (min-width: 1600px) {
    .fifty-fifty__side--tall {
      margin-right: 5.55556%; } }
  @media only screen and (min-width: 1600px) and (min-width: 600px) and (max-width: 899px) {
    .fifty-fifty__side--tall {
      margin-left: 12.5%; } }
  @media only screen and (min-width: 1600px) and (min-width: 600px) and (max-width: 1199px) {
    .fifty-fifty__side--tall {
      margin-left: 12.5%; } }
  @media only screen and (min-width: 1600px) and (min-width: 900px) and (max-width: 1199px) {
    .fifty-fifty__side--tall {
      margin-left: 12.5%; } }
  @media only screen and (min-width: 1600px) and (min-width: 1200px) and (max-width: 1599px) {
    .fifty-fifty__side--tall {
      margin-left: 11.11111%; } }
  @media only screen and (min-width: 1600px) and (min-width: 1600px) {
    .fifty-fifty__side--tall {
      margin-left: 11.11111%; } }
  .fifty-fifty__side--wide {
    width: 83.33333%; }
    @media only screen and (min-width: 600px) and (max-width: 1199px) {
      .fifty-fifty__side--wide {
        margin-right: 6.25%;
        margin-left: 6.25%;
        width: 37.5%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) and (min-width: 600px) and (max-width: 899px) {
    .fifty-fifty__side--wide {
      margin-right: 6.25%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) and (min-width: 600px) and (max-width: 1199px) {
    .fifty-fifty__side--wide {
      margin-right: 6.25%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) and (min-width: 900px) and (max-width: 1199px) {
    .fifty-fifty__side--wide {
      margin-right: 6.25%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) and (min-width: 1200px) and (max-width: 1599px) {
    .fifty-fifty__side--wide {
      margin-right: 5.55556%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) and (min-width: 1600px) {
    .fifty-fifty__side--wide {
      margin-right: 5.55556%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) and (min-width: 600px) and (max-width: 899px) {
    .fifty-fifty__side--wide {
      margin-left: 6.25%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) and (min-width: 600px) and (max-width: 1199px) {
    .fifty-fifty__side--wide {
      margin-left: 6.25%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) and (min-width: 900px) and (max-width: 1199px) {
    .fifty-fifty__side--wide {
      margin-left: 6.25%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) and (min-width: 1200px) and (max-width: 1599px) {
    .fifty-fifty__side--wide {
      margin-left: 5.55556%; } }
  @media only screen and (min-width: 600px) and (max-width: 1199px) and (min-width: 1600px) {
    .fifty-fifty__side--wide {
      margin-left: 5.55556%; } }
    @media only screen and (min-width: 1200px) and (max-width: 1599px) {
      .fifty-fifty__side--wide {
        margin-right: 5.55556%;
        margin-left: 5.55556%;
        width: 33.33333%; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) and (min-width: 600px) and (max-width: 899px) {
    .fifty-fifty__side--wide {
      margin-right: 6.25%; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) and (min-width: 600px) and (max-width: 1199px) {
    .fifty-fifty__side--wide {
      margin-right: 6.25%; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) and (min-width: 900px) and (max-width: 1199px) {
    .fifty-fifty__side--wide {
      margin-right: 6.25%; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) and (min-width: 1200px) and (max-width: 1599px) {
    .fifty-fifty__side--wide {
      margin-right: 5.55556%; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) and (min-width: 1600px) {
    .fifty-fifty__side--wide {
      margin-right: 5.55556%; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) and (min-width: 600px) and (max-width: 899px) {
    .fifty-fifty__side--wide {
      margin-left: 6.25%; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) and (min-width: 600px) and (max-width: 1199px) {
    .fifty-fifty__side--wide {
      margin-left: 6.25%; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) and (min-width: 900px) and (max-width: 1199px) {
    .fifty-fifty__side--wide {
      margin-left: 6.25%; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) and (min-width: 1200px) and (max-width: 1599px) {
    .fifty-fifty__side--wide {
      margin-left: 5.55556%; } }
  @media only screen and (min-width: 1200px) and (max-width: 1599px) and (min-width: 1600px) {
    .fifty-fifty__side--wide {
      margin-left: 5.55556%; } }
    @media only screen and (min-width: 1600px) {
      .fifty-fifty__side--wide {
        margin-right: 5.55556%;
        margin-left: 5.55556%;
        width: 33.33333%; } }
  @media only screen and (min-width: 1600px) and (min-width: 600px) and (max-width: 899px) {
    .fifty-fifty__side--wide {
      margin-right: 6.25%; } }
  @media only screen and (min-width: 1600px) and (min-width: 600px) and (max-width: 1199px) {
    .fifty-fifty__side--wide {
      margin-right: 6.25%; } }
  @media only screen and (min-width: 1600px) and (min-width: 900px) and (max-width: 1199px) {
    .fifty-fifty__side--wide {
      margin-right: 6.25%; } }
  @media only screen and (min-width: 1600px) and (min-width: 1200px) and (max-width: 1599px) {
    .fifty-fifty__side--wide {
      margin-right: 5.55556%; } }
  @media only screen and (min-width: 1600px) and (min-width: 1600px) {
    .fifty-fifty__side--wide {
      margin-right: 5.55556%; } }
  @media only screen and (min-width: 1600px) and (min-width: 600px) and (max-width: 899px) {
    .fifty-fifty__side--wide {
      margin-left: 6.25%; } }
  @media only screen and (min-width: 1600px) and (min-width: 600px) and (max-width: 1199px) {
    .fifty-fifty__side--wide {
      margin-left: 6.25%; } }
  @media only screen and (min-width: 1600px) and (min-width: 900px) and (max-width: 1199px) {
    .fifty-fifty__side--wide {
      margin-left: 6.25%; } }
  @media only screen and (min-width: 1600px) and (min-width: 1200px) and (max-width: 1599px) {
    .fifty-fifty__side--wide {
      margin-left: 5.55556%; } }
  @media only screen and (min-width: 1600px) and (min-width: 1600px) {
    .fifty-fifty__side--wide {
      margin-left: 5.55556%; } }
    @media only screen and (min-width: 1600px) {
      .fifty-fifty__side--wide {
        margin-right: 5.55556%;
        margin-left: 5.55556%;
        width: 27.77778%; } }
  @media only screen and (min-width: 1600px) and (min-width: 600px) and (max-width: 899px) {
    .fifty-fifty__side--wide {
      margin-right: 6.25%; } }
  @media only screen and (min-width: 1600px) and (min-width: 600px) and (max-width: 1199px) {
    .fifty-fifty__side--wide {
      margin-right: 6.25%; } }
  @media only screen and (min-width: 1600px) and (min-width: 900px) and (max-width: 1199px) {
    .fifty-fifty__side--wide {
      margin-right: 6.25%; } }
  @media only screen and (min-width: 1600px) and (min-width: 1200px) and (max-width: 1599px) {
    .fifty-fifty__side--wide {
      margin-right: 5.55556%; } }
  @media only screen and (min-width: 1600px) and (min-width: 1600px) {
    .fifty-fifty__side--wide {
      margin-right: 5.55556%; } }
  @media only screen and (min-width: 1600px) and (min-width: 600px) and (max-width: 899px) {
    .fifty-fifty__side--wide {
      margin-left: 6.25%; } }
  @media only screen and (min-width: 1600px) and (min-width: 600px) and (max-width: 1199px) {
    .fifty-fifty__side--wide {
      margin-left: 6.25%; } }
  @media only screen and (min-width: 1600px) and (min-width: 900px) and (max-width: 1199px) {
    .fifty-fifty__side--wide {
      margin-left: 6.25%; } }
  @media only screen and (min-width: 1600px) and (min-width: 1200px) and (max-width: 1599px) {
    .fifty-fifty__side--wide {
      margin-left: 5.55556%; } }
  @media only screen and (min-width: 1600px) and (min-width: 1600px) {
    .fifty-fifty__side--wide {
      margin-left: 5.55556%; } }
  .fifty-fifty__side picture {
    width: 100%; }
    .fifty-fifty__side picture img {
      width: 100%; }
  .fifty-fifty__text--small {
    color: white; }

.carousel-and-slide--dark-theme .fifty-fifty__side--text {
  color: #fff; }


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jYXJ0cmlkZ2VzL2FwcF9jdXN0b21fbWFyY2phY29icy9jYXJ0cmlkZ2UvY2xpZW50L2RlZmF1bHQvc2Nzcy9FTEUtdXRpbC9fYnJlYWtwb2ludHMuc2NzcyIsIndlYnBhY2s6Ly8vLi9jYXJ0cmlkZ2VzL2FwcF9jdXN0b21fbWFyY2phY29icy9jYXJ0cmlkZ2UvY2xpZW50L2RlZmF1bHQvc2Nzcy9FTEUtdXRpbC9fdHlwb2dyYXBoeS5zY3NzIiwid2VicGFjazovLy8uL2NhcnRyaWRnZXMvYXBwX2N1c3RvbV9tYXJjamFjb2JzL2NhcnRyaWRnZS9jbGllbnQvZGVmYXVsdC9zY3NzL0VMRS11dGlsL192YXJpYWJsZXMuc2NzcyIsIndlYnBhY2s6Ly8vLi9jYXJ0cmlkZ2VzL2FwcF9jdXN0b21fbWFyY2phY29icy9jYXJ0cmlkZ2UvY2xpZW50L2RlZmF1bHQvc2Nzcy9FTEUtdXRpbC9fbWl4aW5zLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vY2FydHJpZGdlcy9hcHBfY3VzdG9tX21hcmNqYWNvYnMvY2FydHJpZGdlL2NsaWVudC9kZWZhdWx0L3Njc3MvRUxFLXV0aWwvX2Z1bmN0aW9ucy5zY3NzIiwid2VicGFjazovLy8uL2NhcnRyaWRnZXMvYXBwX2N1c3RvbV9tYXJjamFjb2JzL2NhcnRyaWRnZS9jbGllbnQvZGVmYXVsdC9zY3NzL0VMRS1jb21wb25lbnRzL19hYm91dC1tYXJjLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vY2FydHJpZGdlcy9hcHBfY3VzdG9tX21hcmNqYWNvYnMvY2FydHJpZGdlL2NsaWVudC9kZWZhdWx0L3Njc3MvRUxFLWNvbXBvbmVudHMvX3BkcC1jYXJvdXNhbC5zY3NzIiwid2VicGFjazovLy8uL2NhcnRyaWRnZXMvYXBwX2N1c3RvbV9tYXJjamFjb2JzL2NhcnRyaWRnZS9jbGllbnQvZGVmYXVsdC9zY3NzL0VMRS11dGlsL19ncmlkLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L19zdS1tYXRoLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUE7QUE2U0E7QUE0SVE7RUFBc0IsMkJBQTJCOztBQUNqRDtFQUF1Qiw0QkFBNEI7O0FBQ25EO0VBQXdCLDZCQUE2Qjs7QUF0SnJEO0VBb0pBO0lBQXNCLDJCQUEyQjtFQUNqRDtJQUF1Qiw0QkFBNEI7RUFDbkQ7SUFBd0IsNkJBQTZCLElBQUk7O0FBdEp6RDtFQW9KQTtJQUFzQiwyQkFBMkI7RUFDakQ7SUFBdUIsNEJBQTRCO0VBQ25EO0lBQXdCLDZCQUE2QixJQUFJOztBQXRKekQ7RUFvSkE7SUFBc0IsMkJBQTJCO0VBQ2pEO0lBQXVCLDRCQUE0QjtFQUNuRDtJQUF3Qiw2QkFBNkIsSUFBSTs7QUF0SnpEO0VBb0pBO0lBQXNCLDJCQUEyQjtFQUNqRDtJQUF1Qiw0QkFBNEI7RUFDbkQ7SUFBd0IsNkJBQTZCLElBQUk7O0FBdEp6RDtFQW9KQTtJQUFzQiwyQkFBMkI7RUFDakQ7SUFBdUIsNEJBQTRCO0VBQ25EO0lBQXdCLDZCQUE2QixJQUFJOztBQy9RakU7RUE5S0kseUJDbUVvQjtFRGxFcEIsZ0JDK0RTO0VDdkNULGVGdUp5QjtFRXRKekIsb0JDOUJ5QjtFRG9DekIsc0JGZ0ppQztFRS9JakMsaUJGK0l1QztFQUV2QyxXQ2pMVTtFRGtMVixrQkFBa0I7RUFDbEIseUJBQXlCO0VEbUpyQjtJQ3pKUjtNRXJKSSxlRjhKNkI7TUU3SjdCLG1CQzlCeUI7TURvQ3pCLHNCRnVKcUM7TUV0SnJDLGlCRnNKMkMsSUFjOUM7RUQ4TE87SUNyTlI7TUVySkksZUZrSzZCO01Faks3QixtQkM5QnlCO01Eb0N6QixzQkYySnFDO01FMUpyQyxpQkYwSjJDLElBVTlDO0VEOE1PO0lDck9SO01FckpJLGVGc0s2QjtNRXJLN0Isa0JDOUJ5QjtNRG9DekIsc0JGK0pxQztNRTlKckMsaUJGOEoyQyxJQU05QztFRHNMTztJQzdNUjtNRXJKSSxlRjBLNkI7TUV6SzdCLG9CQzlCeUI7TURvQ3pCLHNCRm1LcUM7TUVsS3JDLGlCRmtLMkMsSUFFOUM7O0FBRUQ7RUF2TUkseUJDbUVvQjtFRGxFcEIsZ0JDK0RTO0VDdkNULGVGZ0x5QjtFRS9LekIsbUJDOUJ5QjtFRG9DekIsc0JGeUtpQztFRXhLakMsaUJGd0t1QztFQUV2QyxXQzFNVTtFRDJNVixrQkFBa0I7RUFDbEIseUJBQXlCO0VEMEhyQjtJQ2hJUjtNRTlLSSxlRnVMNkI7TUV0TDdCLGtCQzlCeUI7TURvQ3pCLHNCRmdMcUM7TUUvS3JDLGlCRitLMkMsSUFVOUM7RUR5TE87SUM1TVI7TUU5S0ksZUYyTDZCO01FMUw3QixtQkM5QnlCO01Eb0N6QixzQkZvTHFDO01FbkxyQyxpQkZtTDJDLElBTTlDO0VEaUtPO0lDcExSO01FOUtJLGVGK0w2QjtNRTlMN0Isb0JDOUJ5QjtNRG9DekIsc0JGd0xxQztNRXZMckMsaUJGdUwyQyxJQUU5Qzs7QUFFRDtFQTVOSSx5QkNtRW9CO0VEbEVwQixnQkMrRFM7RUN2Q1QsZUZxTXlCO0VFcE16QixtQkM5QnlCO0VEb0N6QixzQkY4TGlDO0VFN0xqQyxpQkY2THVDO0VBRXZDLFdDL05VO0VEZ09WLGtCQUFrQjtFQUNsQix5QkFBeUI7RURxR3JCO0lDM0dSO01Fbk1JLGNGNE00QjtNRTNNNUIsaUJDOUJ5QjtNRG9DekIsc0JGcU1vQztNRXBNcEMsZ0JGb015QyxJQVU1QztFRG9LTztJQ3ZMUjtNRW5NSSxlRmdONkI7TUUvTTdCLGtCQzlCeUI7TURvQ3pCLHNCRnlNcUM7TUV4TXJDLGlCRndNMkMsSUFNOUM7RUQ0SU87SUMvSlI7TUVuTUksZUZvTjZCO01Fbk43QixtQkM5QnlCO01Eb0N6QixzQkY2TXFDO01FNU1yQyxpQkY0TTJDLElBRTlDOztBSW5QRDtFQUNJLGdCQUFnQjtFTDZXWjtJSzlXUjtNQUlRLGdCQUFnQixJQTRDdkI7RUx1V087SUt2WlI7TUFRUSxnQkFBZ0IsSUF3Q3ZCO0VBckNHO0lBR0ksZ0JBQWdCO0lMZ1doQjtNS25XSjtRQU1RLGdCQUFnQixJQU12QjtJTGdZRztNSzVZSjtRQVVRLGdCQUFnQixJQUV2QjtFQUVEO0lBQ0ksbUJBQW1CO0lMb1ZuQjtNS3JWSjtRQUlRLG1CQUFtQixJQU0xQjtJTG9YRztNSzlYSjtRQVFRLG9CQUFvQixJQUUzQjtFQUVEO0lBQ0ksbUJBQW1CO0lMd1VuQjtNS3pVSjtRQUlRLG1CQUFtQixJQU0xQjtJTHdXRztNS2xYSjtRQVFRLG1CQUFtQixJQUUxQjs7QUNqREw7QUFHSTtFQUNJLGFBQWE7RU5xWWI7SU10WUo7TUFJUSxjQUFjO01BQ2Qsb0JBQW9CLElBbUIzQjtFTjhYRztJTXRaSjtNQVNRLG9CQUFvQjtNQVQzQjs7UUFlbUIsVUFBVSxJQUNiO0VOOFdiO0lNOVhKO01Bc0JRLG9CQUFvQixJQUUzQjs7QUFFRDtFQUNJLGNBQWM7RUFDZCxvQkFBb0I7RU4wV3BCO0lNNVdKO01BS1EsYUFBYSxJQUVwQjs7QUFFRDtFQUNJLHNCSmhDTTtFSStCVDtJQU1lLGdCQUFnQjs7QUExQ3BDOztFQW1EWSxXQUFXO0VBQ1gsd0JBQXdCO0VBQ3hCLFVBQVU7RUFDVix3QkFBd0I7RU5pVzVCO0lNdlpSOztNQXlEZ0IsZUFBZTtNQXpEL0I7O1FBNERvQixVQUFVLElBQ2I7O0FBN0RqQjtFQWtFWSxVQUFVO0VBQ1Ysa0JBQWtCOztBQW5FOUI7RUF1RVksV0FBVztFQUNYLG1CQUFtQjs7QUF4RS9CO0VBOEVZLFdBQVc7RUFDWCxXQUFXO0VBQ1gsZ0JKM0VFO0VJNEVGLGdCQUFnQjtFQUNoQix3QkFBd0I7RU5xVDVCO0lNdllSO01Bb0ZnQixjQUFjLElBRXJCOztBQXRGVDtFQTBGUSxhQUFhO0VBQ2IsdUJBQXVCO0VBQ3ZCLFdBQVc7RUFDWCxTQUFTO0VBQ1QsMkJBQTJCO0VBQzNCLGFBQWE7RUFDYixXQUFXO0VOOFFYO0lNOVdSO01BbUdZLGFBQWEsSUFjcEI7RU5vUEc7SU1yV1I7TUF1R1ksYUFBYSxJQVVwQjtFTnNRRztJTXZYUjtNQTJHWSxhQUFhLElBTXBCO0VOOFFHO0lNL1hSO01BK0dZLGFBQWEsSUFFcEI7O0FBR0w7QUFFQTtFQUNJLGtCQUFrQjtFQUR0Qjs7SUFLUSxVQUFVOztBTm1QVjtFTTlPSjtJQUNJLGFBQWE7SUFDYixtQkFBbUIsSUFDdEI7O0FBR0w7QUFFQTtFQUNJLGFBQWE7RUFDYixlQUFlO0VBQ2YsdUJBQXVCO0VBSWY7SUFDSSxhQUFhO0lBQ2IsbUJBQW1CO0VBR3ZCO0lBQ0ksYUFBYTtJQUNiLG1CQUFtQjtJTndOM0I7TU0xTkk7UUM2Q0osa0JBQWMsSURsQ1Q7RU42TEw7SU14TUk7TUM2Q0osa0JBQWMsSURsQ1Q7RU4rTUw7SU0xTkk7TUM2Q0osa0JBQWMsSURsQ1Q7RU5zTUw7SU1qTkk7TUM2Q0osa0JBQWMsSURsQ1Q7RU53Tkw7SU1uT0k7TUM2Q0osc0JBQWMsSURsQ1Q7RU5nT0w7SU0zT0k7TUM2Q0osc0JBQWMsSURsQ1Q7SU53Tkw7TU1uT0k7UUM2Q0oscUJBQWMsSURsQ1Q7RU42TEw7SU14TUk7TUM2Q0osa0JBQWMsSURsQ1Q7RU4rTUw7SU0xTkk7TUM2Q0osa0JBQWMsSURsQ1Q7RU5zTUw7SU1qTkk7TUM2Q0osa0JBQWMsSURsQ1Q7RU53Tkw7SU1uT0k7TUM2Q0oscUJBQWMsSURsQ1Q7RU5nT0w7SU0zT0k7TUM2Q0oscUJBQWMsSURsQ1Q7SU5nT0w7TU0zT0k7UUM2Q0oscUJBQWMsSURsQ1Q7RU42TEw7SU14TUk7TUM2Q0osa0JBQWMsSURsQ1Q7RU4rTUw7SU0xTkk7TUM2Q0osa0JBQWMsSURsQ1Q7RU5zTUw7SU1qTkk7TUM2Q0osa0JBQWMsSURsQ1Q7RU53Tkw7SU1uT0k7TUM2Q0oscUJBQWMsSURsQ1Q7RU5nT0w7SU0zT0k7TUM2Q0oscUJBQWMsSURsQ1Q7RUFHTDtJQUNJLGdCRXpFb0M7SVJvUnhDO01NNU1BO1FBSVEsVUU1RWdDLElGMEZ2QztJTm1NRDtNTXJOQTtRQUlRLGdCRTVFZ0MsSUYwRnZDO0lOMk1EO01NN05BO1FBSVEsZ0JFNUVnQyxJRjBGdkM7SU4yTUQ7TU03TkE7UUFRUSxnQkVoRmdDLElGMEZ2QztJQWxCQTtNQVlPLFdBQVc7TUFabEI7UUFlVyxXQUFXO0VBS3ZCO0lBR0ksYUFBYTtJQUNiLHVCQUF1QjtJQUN2QixtQkFBbUI7SUFDbkIsa0JBQWtCO0lBQ2xCLGdCRW5Hb0M7SUZvR3BDLGVBQWU7SU5nTG5CO01NeExBO1FBV1EsVUV2R2dDO1FMN0Q1QyxlR3FLcUM7UUhwS3JDLGVDOUJ5QjtRRG9DekIsc0JHOEo2QztRSDdKN0MsaUJHNkptRCxJQU85QztJTjhLRDtNTWpNQTtRQVdRLGdCRXZHZ0M7UUw3RDVDLGVHcUtxQztRSHBLckMsZUM5QnlCO1FEb0N6QixzQkc4SjZDO1FIN0o3QyxpQkc2Sm1ELElBTzlDO0lOc0xEO01Nek1BO1FBV1EsZ0JFdkdnQztRTDdENUMsZUdxS3FDO1FIcEtyQyxlQzlCeUI7UURvQ3pCLHNCRzhKNkM7UUg3SjdDLGlCRzZKbUQsSUFPOUM7SU5zTEQ7TU16TUE7UUFnQlEsZ0JFNUdnQztRTDdENUMsZUcwS3FDO1FIektyQyxlQzlCeUI7UURvQ3pCLHNCR21LNkM7UUhsSzdDLGlCR2tLbUQsSUFFOUM7RUFFRDtJQUNJLGdCRWxIb0M7SVJvUnhDO01NbktBO1FDbEJBLG1CQUFjO1FBUWQsa0JBQWM7UURpQk4sVUV4SGdDLElGaUl2QztFTmlJRDtJTWpKQTtNQ2xCQSxtQkFBYyxJRGtDYjtFTm1KRDtJTW5LQTtNQ2xCQSxtQkFBYyxJRGtDYjtFTjBJRDtJTTFKQTtNQ2xCQSxtQkFBYyxJRGtDYjtFTjRKRDtJTTVLQTtNQ2xCQSx1QkFBYyxJRGtDYjtFTm9LRDtJTXBMQTtNQ2xCQSx1QkFBYyxJRGtDYjtFTmlJRDtJTWpKQTtNQ1ZBLGtCQUFjLElEMEJiO0VObUpEO0lNbktBO01DVkEsa0JBQWMsSUQwQmI7RU4wSUQ7SU0xSkE7TUNWQSxrQkFBYyxJRDBCYjtFTjRKRDtJTTVLQTtNQ1ZBLHNCQUFjLElEMEJiO0VOb0tEO0lNcExBO01DVkEsc0JBQWMsSUQwQmI7SU40SkQ7TU01S0E7UUNsQkEsdUJBQWM7UUFRZCxzQkFBYztRRGlCTixnQkV4SGdDLElGaUl2QztFTmlJRDtJTWpKQTtNQ2xCQSxtQkFBYyxJRGtDYjtFTm1KRDtJTW5LQTtNQ2xCQSxtQkFBYyxJRGtDYjtFTjBJRDtJTTFKQTtNQ2xCQSxtQkFBYyxJRGtDYjtFTjRKRDtJTTVLQTtNQ2xCQSx1QkFBYyxJRGtDYjtFTm9LRDtJTXBMQTtNQ2xCQSx1QkFBYyxJRGtDYjtFTmlJRDtJTWpKQTtNQ1ZBLGtCQUFjLElEMEJiO0VObUpEO0lNbktBO01DVkEsa0JBQWMsSUQwQmI7RU4wSUQ7SU0xSkE7TUNWQSxrQkFBYyxJRDBCYjtFTjRKRDtJTTVLQTtNQ1ZBLHNCQUFjLElEMEJiO0VOb0tEO0lNcExBO01DVkEsc0JBQWMsSUQwQmI7SU5vS0Q7TU1wTEE7UUNsQkEsdUJBQWM7UUFRZCxzQkFBYztRRGlCTixnQkV4SGdDLElGaUl2QztFTmlJRDtJTWpKQTtNQ2xCQSxtQkFBYyxJRGtDYjtFTm1KRDtJTW5LQTtNQ2xCQSxtQkFBYyxJRGtDYjtFTjBJRDtJTTFKQTtNQ2xCQSxtQkFBYyxJRGtDYjtFTjRKRDtJTTVLQTtNQ2xCQSx1QkFBYyxJRGtDYjtFTm9LRDtJTXBMQTtNQ2xCQSx1QkFBYyxJRGtDYjtFTmlJRDtJTWpKQTtNQ1ZBLGtCQUFjLElEMEJiO0VObUpEO0lNbktBO01DVkEsa0JBQWMsSUQwQmI7RU4wSUQ7SU0xSkE7TUNWQSxrQkFBYyxJRDBCYjtFTjRKRDtJTTVLQTtNQ1ZBLHNCQUFjLElEMEJiO0VOb0tEO0lNcExBO01DVkEsc0JBQWMsSUQwQmI7SU5vS0Q7TU1wTEE7UUNsQkEsc0JBQWM7UUFRZCxzQkFBYztRRHdCTixnQkUvSGdDLElGaUl2QztFTmlJRDtJTWpKQTtNQ2xCQSxtQkFBYyxJRGtDYjtFTm1KRDtJTW5LQTtNQ2xCQSxtQkFBYyxJRGtDYjtFTjBJRDtJTTFKQTtNQ2xCQSxtQkFBYyxJRGtDYjtFTjRKRDtJTTVLQTtNQ2xCQSxzQkFBYyxJRGtDYjtFTm9LRDtJTXBMQTtNQ2xCQSxzQkFBYyxJRGtDYjtFTmlJRDtJTWpKQTtNQ1ZBLGtCQUFjLElEMEJiO0VObUpEO0lNbktBO01DVkEsa0JBQWMsSUQwQmI7RU4wSUQ7SU0xSkE7TUNWQSxrQkFBYyxJRDBCYjtFTjRKRDtJTTVLQTtNQ1ZBLHNCQUFjLElEMEJiO0VOb0tEO0lNcExBO01DVkEsc0JBQWMsSUQwQmI7RUFFRDtJQUNJLGdCRXBJb0M7SVJvUnhDO01NakpBO1FDcENBLG1CQUFjO1FBUWQsa0JBQWM7UURtQ04sWUUxSWdDLElGbUp2QztFTitHRDtJTS9IQTtNQ3BDQSxtQkFBYyxJRG9EYjtFTmlJRDtJTWpKQTtNQ3BDQSxtQkFBYyxJRG9EYjtFTndIRDtJTXhJQTtNQ3BDQSxtQkFBYyxJRG9EYjtFTjBJRDtJTTFKQTtNQ3BDQSxzQkFBYyxJRG9EYjtFTmtKRDtJTWxLQTtNQ3BDQSxzQkFBYyxJRG9EYjtFTitHRDtJTS9IQTtNQzVCQSxrQkFBYyxJRDRDYjtFTmlJRDtJTWpKQTtNQzVCQSxrQkFBYyxJRDRDYjtFTndIRDtJTXhJQTtNQzVCQSxrQkFBYyxJRDRDYjtFTjBJRDtJTTFKQTtNQzVCQSxxQkFBYyxJRDRDYjtFTmtKRDtJTWxLQTtNQzVCQSxxQkFBYyxJRDRDYjtJTjBJRDtNTTFKQTtRQ3BDQSxzQkFBYztRQVFkLHFCQUFjO1FEbUNOLGdCRTFJZ0MsSUZtSnZDO0VOK0dEO0lNL0hBO01DcENBLG1CQUFjLElEb0RiO0VOaUlEO0lNakpBO01DcENBLG1CQUFjLElEb0RiO0VOd0hEO0lNeElBO01DcENBLG1CQUFjLElEb0RiO0VOMElEO0lNMUpBO01DcENBLHNCQUFjLElEb0RiO0VOa0pEO0lNbEtBO01DcENBLHNCQUFjLElEb0RiO0VOK0dEO0lNL0hBO01DNUJBLGtCQUFjLElENENiO0VOaUlEO0lNakpBO01DNUJBLGtCQUFjLElENENiO0VOd0hEO0lNeElBO01DNUJBLGtCQUFjLElENENiO0VOMElEO0lNMUpBO01DNUJBLHFCQUFjLElENENiO0VOa0pEO0lNbEtBO01DNUJBLHFCQUFjLElENENiO0lOa0pEO01NbEtBO1FDcENBLHNCQUFjO1FBUWQscUJBQWM7UURtQ04sZ0JFMUlnQyxJRm1KdkM7RU4rR0Q7SU0vSEE7TUNwQ0EsbUJBQWMsSURvRGI7RU5pSUQ7SU1qSkE7TUNwQ0EsbUJBQWMsSURvRGI7RU53SEQ7SU14SUE7TUNwQ0EsbUJBQWMsSURvRGI7RU4wSUQ7SU0xSkE7TUNwQ0Esc0JBQWMsSURvRGI7RU5rSkQ7SU1sS0E7TUNwQ0Esc0JBQWMsSURvRGI7RU4rR0Q7SU0vSEE7TUM1QkEsa0JBQWMsSUQ0Q2I7RU5pSUQ7SU1qSkE7TUM1QkEsa0JBQWMsSUQ0Q2I7RU53SEQ7SU14SUE7TUM1QkEsa0JBQWMsSUQ0Q2I7RU4wSUQ7SU0xSkE7TUM1QkEscUJBQWMsSUQ0Q2I7RU5rSkQ7SU1sS0E7TUM1QkEscUJBQWMsSUQ0Q2I7SU5rSkQ7TU1sS0E7UUNwQ0Esc0JBQWM7UUFRZCxxQkFBYztRRDBDTixnQkVqSmdDLElGbUp2QztFTitHRDtJTS9IQTtNQ3BDQSxtQkFBYyxJRG9EYjtFTmlJRDtJTWpKQTtNQ3BDQSxtQkFBYyxJRG9EYjtFTndIRDtJTXhJQTtNQ3BDQSxtQkFBYyxJRG9EYjtFTjBJRDtJTTFKQTtNQ3BDQSxzQkFBYyxJRG9EYjtFTmtKRDtJTWxLQTtNQ3BDQSxzQkFBYyxJRG9EYjtFTitHRDtJTS9IQTtNQzVCQSxrQkFBYyxJRDRDYjtFTmlJRDtJTWpKQTtNQzVCQSxrQkFBYyxJRDRDYjtFTndIRDtJTXhJQTtNQzVCQSxrQkFBYyxJRDRDYjtFTjBJRDtJTTFKQTtNQzVCQSxxQkFBYyxJRDRDYjtFTmtKRDtJTWxLQTtNQzVCQSxxQkFBYyxJRDRDYjtFQWhHSjtJQW1HTyxXQUFXO0lBbkdsQjtNQXNHVyxXQUFXO0VBS3ZCO0lBR0ksWUFBWTs7QUFJcEI7RUFHWSxXQUFXIiwiZmlsZSI6ImRlZmF1bHQvY3NzL2Fib3V0TWFyYy5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIkYnJlYWtwb2ludHM6IChcbiAgICBcInNtXCI6IDM3NXB4LFxuICAgIFwibWRcIjogNjAwcHgsXG4gICAgXCJtaWQtbWRcIjogOTAwcHgsXG4gICAgXCJsZ1wiOiAxMjAwcHgsXG4gICAgXCJ4bFwiOiAxNjAwcHgsXG4pO1xuXG4vKiBVcGRhdGUgYnJlYWtwb2ludHMgYXQganMvRUxFLXV0aWwvc3R5bGUtYnJlYWtwb2ludHMuanMgd2hlbiB1cGRhdGluZyBhYm92ZSB2YWx1ZXMuICovXG5cbkBtaXhpbiBjdXN0b20tYnJlYWtwb2ludCgkbWluLXdpZHRoLCAkbWF4LXdpZHRoKSB7XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbWluLXdpZHRoKSBhbmQgKG1heC13aWR0aDogJG1heC13aWR0aCkge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbkBtaXhpbiBicmVha3BvaW50KCR3aWR0aCkge1xuICAgIEBpZiAkd2lkdGggPT0gcG9ydHJhaXQge1xuICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJHdpZHRoID09IGxhbmRzY2FwZSB7XG4gICAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJHdpZHRoID09IFwieHMtb25seVwiIG9yICR3aWR0aCA9PSBcInhzXCIge1xuICAgICAgICAkeHMtYnJlYWtwb2ludDogbWFwX2dldCgkYnJlYWtwb2ludHMsIFwic21cIikgLSAxO1xuXG4gICAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogJHhzLWJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJHdpZHRoID09IFwic20tb25seVwiIG9yICR3aWR0aCA9PSBcInNtXCIge1xuICAgICAgICAkc20tYnJlYWtwb2ludDogbWFwX2dldCgkYnJlYWtwb2ludHMsIFwibWRcIikgLSAxO1xuXG4gICAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogJHNtLWJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJHdpZHRoID09IFwic20tbWRcIiBvciAkd2lkdGggPT0gXCJzbS1tZC1vbmx5XCIge1xuICAgICAgICAkbWluLWJyZWFrcG9pbnQ6IG1hcF9nZXQoJGJyZWFrcG9pbnRzLCBcIm1kXCIpO1xuICAgICAgICAkbWF4LWJyZWFrcG9pbnQ6IG1hcF9nZXQoJGJyZWFrcG9pbnRzLCBcIm1pZC1tZFwiKSAtIDE7XG5cbiAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbWluLWJyZWFrcG9pbnQpIGFuZCAobWF4LXdpZHRoOiAkbWF4LWJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJHdpZHRoID09IFwibWQtbGdcIiBvciAkd2lkdGggPT0gXCJtZC1sZy1vbmx5XCIge1xuICAgICAgICAkbWluLWJyZWFrcG9pbnQ6IG1hcF9nZXQoJGJyZWFrcG9pbnRzLCBcIm1pZC1tZFwiKTtcbiAgICAgICAgJG1heC1icmVha3BvaW50OiBtYXBfZ2V0KCRicmVha3BvaW50cywgXCJsZ1wiKSAtIDE7XG5cbiAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbWluLWJyZWFrcG9pbnQpIGFuZCAobWF4LXdpZHRoOiAkbWF4LWJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJHdpZHRoID09IFwibWQtb25seVwiIG9yICR3aWR0aCA9PSBcIm1kXCIge1xuICAgICAgICAkbWluLWJyZWFrcG9pbnQ6IG1hcF9nZXQoJGJyZWFrcG9pbnRzLCBcIm1kXCIpO1xuICAgICAgICAkbWF4LWJyZWFrcG9pbnQ6IG1hcF9nZXQoJGJyZWFrcG9pbnRzLCBcImxnXCIpIC0gMTtcblxuICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRtaW4tYnJlYWtwb2ludCkgYW5kIChtYXgtd2lkdGg6ICRtYXgtYnJlYWtwb2ludCkge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkd2lkdGggPT0gXCJsZy1vbmx5XCIgb3IgJHdpZHRoID09IFwibGdcIiB7XG4gICAgICAgICRtaW4tYnJlYWtwb2ludDogbWFwX2dldCgkYnJlYWtwb2ludHMsIFwibGdcIik7XG4gICAgICAgICRtYXgtYnJlYWtwb2ludDogbWFwX2dldCgkYnJlYWtwb2ludHMsIFwieGxcIikgLSAxO1xuXG4gICAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJG1pbi1icmVha3BvaW50KSBhbmQgKG1heC13aWR0aDogJG1heC1icmVha3BvaW50KSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIGlmICR3aWR0aCA9PSBcInhsLW9ubHlcIiBvciAkd2lkdGggPT0gXCJ4bFwiIHtcbiAgICAgICAgJG1pbi1icmVha3BvaW50OiBtYXBfZ2V0KCRicmVha3BvaW50cywgXCJ4bFwiKTtcblxuICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRtaW4tYnJlYWtwb2ludCkge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkd2lkdGggPT0gXCJtZC1hbmQtdXBcIiB7XG4gICAgICAgICRtaW4tYnJlYWtwb2ludDogbWFwX2dldCgkYnJlYWtwb2ludHMsIFwibWRcIik7XG5cbiAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbWluLWJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJHdpZHRoID09IFwibWQtbGctYW5kLXVwXCIge1xuICAgICAgICAkbWluLWJyZWFrcG9pbnQ6IG1hcF9nZXQoJGJyZWFrcG9pbnRzLCBcIm1pZC1tZFwiKTtcblxuICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRtaW4tYnJlYWtwb2ludCkge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkd2lkdGggPT0gXCJsZy1hbmQtdXBcIiB7XG4gICAgICAgICRtaW4tYnJlYWtwb2ludDogbWFwX2dldCgkYnJlYWtwb2ludHMsIFwibGdcIik7XG5cbiAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbWluLWJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgICAgJHdpZHRoID09IFwibWQtYW5kLWRvd25cIiB7XG4gICAgICAgICRtYXgtYnJlYWtwb2ludDogbWFwX2dldCgkYnJlYWtwb2ludHMsIFwibGdcIikgLSAxO1xuXG4gICAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogJG1heC1icmVha3BvaW50KSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIGlmICAgICR3aWR0aCA9PSBcInNtLW1kLWFuZC1kb3duXCIge1xuICAgICAgICAkbWF4LWJyZWFrcG9pbnQ6IG1hcF9nZXQoJGJyZWFrcG9pbnRzLCBcIm1pZC1tZFwiKSAtIDE7XG5cbiAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbWF4LWJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJHdpZHRoID09IFwibGctYW5kLWRvd25cIiB7XG4gICAgICAgICRtYXgtYnJlYWtwb2ludDogbWFwX2dldCgkYnJlYWtwb2ludHMsIFwieGxcIikgLSAxO1xuXG4gICAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogJG1heC1icmVha3BvaW50KSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgICAgQHdhcm4gXCJCcmVha3BvaW50IG5vdCBmb3VuZDogI3skd2lkdGh9XCI7XG4gICAgfVxufVxuXG4kZ3JpZC1icmVha3BvaW50czogKFxuICAgIHhzOiAwLFxuICAgIHNtOiAzNzVweCxcbiAgICBtZDogNjAwcHgsXG4gICAgbWlkLW1kOiA5MDBweCxcbiAgICBsZzogMTIwMHB4LFxuICAgIHhsOiAxNjAwcHhcbikgIWRlZmF1bHQ7XG5cbi8vIEJyZWFrcG9pbnQgdmlld3BvcnQgc2l6ZXMgYW5kIG1lZGlhIHF1ZXJpZXMuXG4vL1xuLy8gQnJlYWtwb2ludHMgYXJlIGRlZmluZWQgYXMgYSBtYXAgb2YgKG5hbWU6IG1pbmltdW0gd2lkdGgpLCBvcmRlciBmcm9tIHNtYWxsIHRvIGxhcmdlOlxuLy9cbi8vICAgICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweClcbi8vXG4vLyBUaGUgbWFwIGRlZmluZWQgaW4gdGhlIGAkZ3JpZC1icmVha3BvaW50c2AgZ2xvYmFsIHZhcmlhYmxlIGlzIHVzZWQgYXMgdGhlIGAkYnJlYWtwb2ludHNgIGFyZ3VtZW50IGJ5IGRlZmF1bHQuXG5cbi8vIE5hbWUgb2YgdGhlIG5leHQgYnJlYWtwb2ludCwgb3IgbnVsbCBmb3IgdGhlIGxhc3QgYnJlYWtwb2ludC5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20pXG4vLyAgICBtZFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgbWRcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgJGJyZWFrcG9pbnQtbmFtZXM6ICh4cyBzbSBtZCBsZyB4bCkpXG4vLyAgICBtZFxuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludC1uYW1lczogbWFwLWtleXMoJGJyZWFrcG9pbnRzKSkge1xuICAgICRuOiBpbmRleCgkYnJlYWtwb2ludC1uYW1lcywgJG5hbWUpO1xuICAgIEByZXR1cm4gaWYoJG4gIT0gbnVsbCBhbmQgJG4gPCBsZW5ndGgoJGJyZWFrcG9pbnQtbmFtZXMpLCBudGgoJGJyZWFrcG9pbnQtbmFtZXMsICRuICsgMSksIG51bGwpO1xufVxuXG4vLyBNaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGguIE51bGwgZm9yIHRoZSBzbWFsbGVzdCAoZmlyc3QpIGJyZWFrcG9pbnQuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1taW4oc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICA1NzZweFxuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgICAkbWluOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICAgIEByZXR1cm4gaWYoJG1pbiAhPSAwLCAkbWluLCBudWxsKTtcbn1cblxuLy8gTWF4aW11bSBicmVha3BvaW50IHdpZHRoLiBOdWxsIGZvciB0aGUgbGFyZ2VzdCAobGFzdCkgYnJlYWtwb2ludC5cbi8vIFRoZSBtYXhpbXVtIHZhbHVlIGlzIGNhbGN1bGF0ZWQgYXMgdGhlIG1pbmltdW0gb2YgdGhlIG5leHQgb25lIGxlc3MgMC4wMnB4XG4vLyB0byB3b3JrIGFyb3VuZCB0aGUgbGltaXRhdGlvbnMgb2YgYG1pbi1gIGFuZCBgbWF4LWAgcHJlZml4ZXMgYW5kIHZpZXdwb3J0cyB3aXRoIGZyYWN0aW9uYWwgd2lkdGhzLlxuLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9tZWRpYXF1ZXJpZXMtNC8jbXEtbWluLW1heFxuLy8gVXNlcyAwLjAycHggcmF0aGVyIHRoYW4gMC4wMXB4IHRvIHdvcmsgYXJvdW5kIGEgY3VycmVudCByb3VuZGluZyBidWcgaW4gU2FmYXJpLlxuLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgyNjFcbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW1heChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KSlcbi8vICAgIDc2Ny45OHB4XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAgICRuZXh0OiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50cyk7XG4gICAgQHJldHVybiBpZigkbmV4dCwgYnJlYWtwb2ludC1taW4oJG5leHQsICRicmVha3BvaW50cykgLSAwLjAyLCBudWxsKTtcbn1cblxuLy8gUmV0dXJucyBhIGJsYW5rIHN0cmluZyBpZiBzbWFsbGVzdCBicmVha3BvaW50LCBvdGhlcndpc2UgcmV0dXJucyB0aGUgbmFtZSB3aXRoIGEgZGFzaCBpbiBmcm9udC5cbi8vIFVzZWZ1bCBmb3IgbWFraW5nIHJlc3BvbnNpdmUgdXRpbGl0aWVzLlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoeHMsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICBcIlwiICAoUmV0dXJucyBhIGJsYW5rIHN0cmluZylcbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICBcIi1zbVwiXG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWluZml4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICAgQHJldHVybiBpZihicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKSA9PSBudWxsLCBcIlwiLCBcIi0jeyRuYW1lfVwiKTtcbn1cblxuLy8gTWVkaWEgb2YgYXQgbGVhc3QgdGhlIG1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCB3aWRlci5cblxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgICAkbWluOiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgICBAaWYgJG1pbiB7XG4gICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbi8vIE1lZGlhIG9mIGF0IG1vc3QgdGhlIG1heGltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBsYXJnZXN0IGJyZWFrcG9pbnQuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIG5hcnJvd2VyLlxuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XG4gICAgQGlmICRtYXgge1xuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG4vLyBNZWRpYSB0aGF0IHNwYW5zIG11bHRpcGxlIGJyZWFrcG9pbnQgd2lkdGhzLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IGJldHdlZW4gdGhlIG1pbiBhbmQgbWF4IGJyZWFrcG9pbnRzXG5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWJldHdlZW4oJGxvd2VyLCAkdXBwZXIsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgICAkbWluOiBicmVha3BvaW50LW1pbigkbG93ZXIsICRicmVha3BvaW50cyk7XG4gICAgJG1heDogYnJlYWtwb2ludC1tYXgoJHVwcGVyLCAkYnJlYWtwb2ludHMpO1xuXG4gICAgQGlmICRtaW4gIT0gbnVsbCBhbmQgJG1heCAhPSBudWxsIHtcbiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbG93ZXIsICRicmVha3BvaW50cykge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkdXBwZXIsICRicmVha3BvaW50cykge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIE1lZGlhIGJldHdlZW4gdGhlIGJyZWFrcG9pbnQncyBtaW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRocy5cbi8vIE5vIG1pbmltdW0gZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LCBhbmQgbm8gbWF4aW11bSBmb3IgdGhlIGxhcmdlc3Qgb25lLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IG9ubHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQsIG5vdCB2aWV3cG9ydHMgYW55IHdpZGVyIG9yIG5hcnJvd2VyLlxuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1vbmx5KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gICAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XG5cbiAgICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfSBAZWxzZSBpZiAkbWF4ID09IG51bGwge1xuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50cykge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFJldHVybnMgYSBibGFuayBzdHJpbmcgaWYgc21hbGxlc3QgYnJlYWtwb2ludCwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIG5hbWUgd2l0aCBhIGRhc2ggaW4gZnJvbnQuXG4vLyBVc2VmdWwgZm9yIG1ha2luZyByZXNwb25zaXZlIHV0aWxpdGllcy5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHhzLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgXCJcIiAgKFJldHVybnMgYSBibGFuayBzdHJpbmcpXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgpKVxuLy8gICAgXCItc21cIlxuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pbmZpeCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAgIEByZXR1cm4gaWYoYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cykgPT0gbnVsbCwgXCJcIiwgXCItI3skbmFtZX1cIik7XG59XG5cbi8vIE1lZGlhIG9mIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludC5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgd2lkZXIuXG5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gICAgQGlmICRtaW4ge1xuICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG4vKiBVcGRhdGUgYnJlYWtwb2ludHMgYXQganMvRUxFLXV0aWwvc3R5bGUtYnJlYWtwb2ludHMuanMgd2hlbiB1cGRhdGluZyBhYm92ZSB2YWx1ZXMuICovXG5cbkBtaXhpbiBjdXN0b20tYnJlYWtwb2ludCgkbWluLXdpZHRoLCAkbWF4LXdpZHRoKSB7XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbWluLXdpZHRoKSBhbmQgKG1heC13aWR0aDogJG1heC13aWR0aCkge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbkBtaXhpbiBicmVha3BvaW50KCR3aWR0aCkge1xuICAgIEBpZiAkd2lkdGggPT0gcG9ydHJhaXQge1xuICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJHdpZHRoID09IGxhbmRzY2FwZSB7XG4gICAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJHdpZHRoID09IFwieHMtb25seVwiIG9yICR3aWR0aCA9PSBcInhzXCIge1xuICAgICAgICAkeHMtYnJlYWtwb2ludDogbWFwX2dldCgkZ3JpZC1icmVha3BvaW50cywgXCJzbVwiKSAtIDE7XG5cbiAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkeHMtYnJlYWtwb2ludCkge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkd2lkdGggPT0gXCJzbS1vbmx5XCIgb3IgJHdpZHRoID09IFwic21cIiB7XG4gICAgICAgICRzbS1icmVha3BvaW50OiBtYXBfZ2V0KCRncmlkLWJyZWFrcG9pbnRzLCBcIm1kXCIpIC0gMTtcblxuICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRzbS1icmVha3BvaW50KSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIGlmICR3aWR0aCA9PSBcInNtLW1kXCIgb3IgJHdpZHRoID09IFwic20tbWQtb25seVwiIHtcbiAgICAgICAgJG1pbi1icmVha3BvaW50OiBtYXBfZ2V0KCRncmlkLWJyZWFrcG9pbnRzLCBcIm1kXCIpO1xuICAgICAgICAkbWF4LWJyZWFrcG9pbnQ6IG1hcF9nZXQoJGdyaWQtYnJlYWtwb2ludHMsIFwibWlkLW1kXCIpIC0gMTtcblxuICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRtaW4tYnJlYWtwb2ludCkgYW5kIChtYXgtd2lkdGg6ICRtYXgtYnJlYWtwb2ludCkge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkd2lkdGggPT0gXCJtZC1sZ1wiIG9yICR3aWR0aCA9PSBcIm1kLWxnLW9ubHlcIiB7XG4gICAgICAgICRtaW4tYnJlYWtwb2ludDogbWFwX2dldCgkZ3JpZC1icmVha3BvaW50cywgXCJtaWQtbWRcIik7XG4gICAgICAgICRtYXgtYnJlYWtwb2ludDogbWFwX2dldCgkZ3JpZC1icmVha3BvaW50cywgXCJsZ1wiKSAtIDE7XG5cbiAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbWluLWJyZWFrcG9pbnQpIGFuZCAobWF4LXdpZHRoOiAkbWF4LWJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJHdpZHRoID09IFwibWQtb25seVwiIG9yICR3aWR0aCA9PSBcIm1kXCIge1xuICAgICAgICAkbWluLWJyZWFrcG9pbnQ6IG1hcF9nZXQoJGdyaWQtYnJlYWtwb2ludHMsIFwibWRcIik7XG4gICAgICAgICRtYXgtYnJlYWtwb2ludDogbWFwX2dldCgkZ3JpZC1icmVha3BvaW50cywgXCJsZ1wiKSAtIDE7XG5cbiAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbWluLWJyZWFrcG9pbnQpIGFuZCAobWF4LXdpZHRoOiAkbWF4LWJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJHdpZHRoID09IFwibGctb25seVwiIG9yICR3aWR0aCA9PSBcImxnXCIge1xuICAgICAgICAkbWluLWJyZWFrcG9pbnQ6IG1hcF9nZXQoJGdyaWQtYnJlYWtwb2ludHMsIFwibGdcIik7XG4gICAgICAgICRtYXgtYnJlYWtwb2ludDogbWFwX2dldCgkZ3JpZC1icmVha3BvaW50cywgXCJ4bFwiKSAtIDE7XG5cbiAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbWluLWJyZWFrcG9pbnQpIGFuZCAobWF4LXdpZHRoOiAkbWF4LWJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJHdpZHRoID09IFwieGwtb25seVwiIG9yICR3aWR0aCA9PSBcInhsXCIge1xuICAgICAgICAkbWluLWJyZWFrcG9pbnQ6IG1hcF9nZXQoJGdyaWQtYnJlYWtwb2ludHMsIFwieGxcIik7XG5cbiAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbWluLWJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJHdpZHRoID09IFwibWQtYW5kLXVwXCIge1xuICAgICAgICAkbWluLWJyZWFrcG9pbnQ6IG1hcF9nZXQoJGdyaWQtYnJlYWtwb2ludHMsIFwibWRcIik7XG5cbiAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbWluLWJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJHdpZHRoID09IFwibWQtbGctYW5kLXVwXCIge1xuICAgICAgICAkbWluLWJyZWFrcG9pbnQ6IG1hcF9nZXQoJGdyaWQtYnJlYWtwb2ludHMsIFwibWlkLW1kXCIpO1xuXG4gICAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJG1pbi1icmVha3BvaW50KSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIGlmICR3aWR0aCA9PSBcImxnLWFuZC11cFwiIHtcbiAgICAgICAgJG1pbi1icmVha3BvaW50OiBtYXBfZ2V0KCRncmlkLWJyZWFrcG9pbnRzLCBcImxnXCIpO1xuXG4gICAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJG1pbi1icmVha3BvaW50KSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIGlmICAgICR3aWR0aCA9PSBcIm1kLWFuZC1kb3duXCIge1xuICAgICAgICAkbWF4LWJyZWFrcG9pbnQ6IG1hcF9nZXQoJGdyaWQtYnJlYWtwb2ludHMsIFwibGdcIikgLSAxO1xuXG4gICAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogJG1heC1icmVha3BvaW50KSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIGlmICAgICR3aWR0aCA9PSBcInNtLW1kLWFuZC1kb3duXCIge1xuICAgICAgICAkbWF4LWJyZWFrcG9pbnQ6IG1hcF9nZXQoJGdyaWQtYnJlYWtwb2ludHMsIFwibWlkLW1kXCIpIC0gMTtcblxuICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRtYXgtYnJlYWtwb2ludCkge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkd2lkdGggPT0gXCJsZy1hbmQtZG93blwiIHtcbiAgICAgICAgJG1heC1icmVha3BvaW50OiBtYXBfZ2V0KCRncmlkLWJyZWFrcG9pbnRzLCBcInhsXCIpIC0gMTtcblxuICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRtYXgtYnJlYWtwb2ludCkge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICAgIEB3YXJuIFwiQnJlYWtwb2ludCBub3QgZm91bmQ6ICN7JHdpZHRofVwiO1xuICAgIH1cbn1cblxuLy8gUmVzcG9uc2l2ZSBhbGlnbm1lbnRcblxuQGVhY2ggJGJyZWFrcG9pbnQgaW4gbWFwLWtleXMoJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRicmVha3BvaW50KSB7XG4gICAgICAgICRpbmZpeDogYnJlYWtwb2ludC1pbmZpeCgkYnJlYWtwb2ludCwgJGdyaWQtYnJlYWtwb2ludHMpO1xuXG4gICAgICAgIC50ZXh0I3skaW5maXh9LWxlZnQgeyB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7IH1cbiAgICAgICAgLnRleHQjeyRpbmZpeH0tcmlnaHQgeyB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50OyB9XG4gICAgICAgIC50ZXh0I3skaW5maXh9LWNlbnRlciB7IHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OyB9XG4gICAgfVxufVxuIiwiQG1peGluIG1hcmMtcmVnIHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtbWFyYztcbiAgICBmb250LXdlaWdodDogJGZ3LW5vcm1hbDtcbn1cblxuQG1peGluIG1hcmMtYm9sZCB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LW1hcmM7XG4gICAgZm9udC13ZWlnaHQ6ICRmdy1ib2xkO1xufVxuXG5AbWl4aW4gdW5pdmVycyB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LXVuaXZlcnM7XG4gICAgZm9udC13ZWlnaHQ6ICRmdy1ub3JtYWw7XG59XG5cbkBtaXhpbiBmb3VuZGVycyB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZvdW5kZXJzO1xuICAgIGZvbnQtd2VpZ2h0OiAkZnctbGlnaHQ7XG59XG5cbkBtaXhpbiBhbWVyaWNhIHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtYW1lcmljYTtcbiAgICBmb250LXdlaWdodDogJGZ3LW1lZGl1bTtcbn1cblxuLy8gVHlwb2dyYXBoeVxuXG4ldGl0bGUge1xuICAgIEBpbmNsdWRlIG1hcmMtYm9sZCgpO1xuXG4gICAgQGluY2x1ZGUgZm9udC1zdHlsZXMoMjJweCwgMC43NXB4LCAyMnB4KTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGctYW5kLXVwKSB7XG4gICAgICAgIEBpbmNsdWRlIGZvbnQtc3R5bGVzKDI2cHgsIDAuNzVweCwgMjRweCk7XG4gICAgfVxuXG4gICAgJi0tcHJvZHVjdCB7XG4gICAgICAgIEBpbmNsdWRlIG1hcmMtYm9sZCgpO1xuXG4gICAgICAgIEBpbmNsdWRlIGZvbnQtc3R5bGVzKDIycHgsIDAuNzVweCwgMjBweCk7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsZy1hbmQtdXApIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZvbnQtc3R5bGVzKDI2cHgsIDAuNzVweCwgMjRweCk7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KHhsLW9ubHkpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZvbnQtc3R5bGVzKDMzcHgsIDAuNzVweCwgMzJweCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbiVxdW90ZSB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LW1hcmM7XG4gICAgZm9udC13ZWlnaHQ6ICRmdy1ib2xkO1xuXG4gICAgQGluY2x1ZGUgZm9udC1zdHlsZXMoMjJweCwgMC4wNWVtLCAyMnB4KTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGctYW5kLXVwKSB7XG4gICAgICAgIEBpbmNsdWRlIGZvbnQtc3R5bGVzKDI2cHgsIDAuNzVweCwgMjRweCk7XG4gICAgfVxufVxuXG4lc3ViaGVhZCB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LW1hcmM7XG4gICAgZm9udC13ZWlnaHQ6ICRmdy1ub3JtYWw7XG4gICAgQGluY2x1ZGUgZm9udC1zdHlsZXMoMTFweCwgMC4wN2VtLCAyMHB4KTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGctYW5kLXVwKSB7XG4gICAgICAgIEBpbmNsdWRlIGZvbnQtc3R5bGVzKDIwcHgsIDAuNzVweCwgMzBweCk7XG4gICAgfVxuXG4gICAgJi0tc21hbGwge1xuICAgICAgICBmb250LWZhbWlseTogJGZvbnQtbWFyYztcbiAgICAgICAgZm9udC13ZWlnaHQ6ICRmdy1ib2xkO1xuICAgICAgICBjb2xvcjogJGRhcmtlc3Q7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiA4cHg7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cbiAgICAgICAgQGluY2x1ZGUgZm9udC1zdHlsZXMoOXB4LCAwLjA2ZW0sIDEycHgpO1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGctYW5kLXVwKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmb250LXN0eWxlcygxMnB4LCAwLjA2ZW0sIDE2cHgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBUT0RPOiBWYWxpZGF0ZSB0aGlzIGNsYXNzIHdoZW4gZGVzaWduIHVwZGF0ZXMgZm9udHMgaW4gc3R5bGVndWlkZVxuJXBhcmFncmFwaCB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZvdW5kZXJzO1xuICAgIGZvbnQtd2VpZ2h0OiAkZnctbGlnaHQ7XG4gICAgQGluY2x1ZGUgZm9udC1zdHlsZXMoMThweCwgMC4wNWVtLCAyNHB4KTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGctYW5kLXVwKSB7XG4gICAgICAgIEBpbmNsdWRlIGZvbnQtc3R5bGVzKDI0cHgsIDAuMDVlbSwgMzBweCk7XG4gICAgfVxufVxuXG4lYnktbGluZSB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LW1hcmM7XG4gICAgZm9udC13ZWlnaHQ6ICRmdy1ib2xkO1xuXG4gICAgQGluY2x1ZGUgZm9udC1zdHlsZXMoOXB4LCAwLjA3ZW0sIDEwcHgpO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsZy1hbmQtdXApIHtcbiAgICAgICAgQGluY2x1ZGUgZm9udC1zdHlsZXMoMTVweCwgMC43NXB4LCAxOHB4KTtcbiAgICB9XG59XG5cbiVjdGEge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1tYXJjO1xuICAgIGZvbnQtd2VpZ2h0OiAkZnctYm9sZDtcbiAgICBjb2xvcjogJGRhcmtlc3Q7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgcGFkZGluZy1ib3R0b206IDhweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIEBpbmNsdWRlIGZvbnQtc3R5bGVzKDEycHgsIDAuNzVweCwgMThweCk7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxnLWFuZC11cCkge1xuICAgICAgICBAaW5jbHVkZSBmb250LXN0eWxlcygxNXB4LCAwLjc1cHgsIDE4cHgpO1xuICAgIH1cblxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAycHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkZGFya2VzdDtcbiAgICAgICAgdHJhbnNpdGlvbjogZWFzZS1pbi1vdXQgMC4ycztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDIwcHg7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsZy1hbmQtdXApIHtcbiAgICAgICAgICAgIHRvcDogMjFweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6aG92ZXI6OmFmdGVyLFxuICAgICY6Zm9jdXM6OmFmdGVyIHtcbiAgICAgICAgdG9wOiAyM3B4O1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGctYW5kLXVwKSB7XG4gICAgICAgICAgICB0b3A6IDI0cHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbiVidXR0b24tdHlwb2dyYXBoeSB7XG4gICAgQGV4dGVuZCAlaGVhZGluZy1zbTtcbn1cblxuJWhlYWRpbmcteGwge1xuICAgIEBpbmNsdWRlIG1hcmMtYm9sZCgpO1xuICAgIEBpbmNsdWRlIGZvbnQtc3R5bGVzKDM1cHgsIDAuNzVweCwgMzVweCk7XG5cbiAgICBjb2xvcjogJGRhcmtlc3Q7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWQtYW5kLXVwKSB7XG4gICAgICAgIEBpbmNsdWRlIGZvbnQtc3R5bGVzKDgwcHgsIDAuNzVweCwgODBweCk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsZy1hbmQtdXApIHtcbiAgICAgICAgQGluY2x1ZGUgZm9udC1zdHlsZXMoMTAwcHgsIDAuNzVweCwgMTAwcHgpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoeGwtb25seSkge1xuICAgICAgICBAaW5jbHVkZSBmb250LXN0eWxlcygxMjBweCwgMC43NXB4LCAxMjBweCk7XG4gICAgfVxufVxuXG4laGVhZGluZy1sZyB7XG4gICAgQGluY2x1ZGUgbWFyYy1ib2xkKCk7XG4gICAgQGluY2x1ZGUgZm9udC1zdHlsZXMoMzVweCwgMC43NXB4LCAzMXB4KTtcblxuICAgIGNvbG9yOiAkZGFya2VzdDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoeHMpIHtcbiAgICAgICAgQGluY2x1ZGUgZm9udC1zdHlsZXMoMzBweCwgMC43NXB4LCAyOHB4KTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1kLWFuZC11cCkge1xuICAgICAgICBAaW5jbHVkZSBmb250LXN0eWxlcyg0MnB4LCAwLjc1cHgsIDM4cHgpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGctYW5kLXVwKSB7XG4gICAgICAgIEBpbmNsdWRlIGZvbnQtc3R5bGVzKDYwcHgsIDAuNzVweCwgNTJweCk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCh4bC1vbmx5KSB7XG4gICAgICAgIEBpbmNsdWRlIGZvbnQtc3R5bGVzKDc3cHgsIDAuNzVweCwgNjhweCk7XG4gICAgfVxufVxuXG4laGVhZGluZy1tZCB7XG4gICAgQGluY2x1ZGUgbWFyYy1ib2xkKCk7XG4gICAgQGluY2x1ZGUgZm9udC1zdHlsZXMoMjJweCwgMC43NXB4LCAyMHB4KTtcblxuICAgIGNvbG9yOiAkZGFya2VzdDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoeHMpIHtcbiAgICAgICAgQGluY2x1ZGUgZm9udC1zdHlsZXMoMjBweCwgMC43NXB4LCAxOHB4KTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxnLWFuZC11cCkge1xuICAgICAgICBAaW5jbHVkZSBmb250LXN0eWxlcygyNnB4LCAwLjc1cHgsIDI0cHgpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoeGwtb25seSkge1xuICAgICAgICBAaW5jbHVkZSBmb250LXN0eWxlcygzM3B4LCAwLjc1cHgsIDMycHgpO1xuICAgIH1cbn1cblxuJWhlYWRpbmctc20ge1xuICAgIEBpbmNsdWRlIG1hcmMtYm9sZCgpO1xuICAgIEBpbmNsdWRlIGZvbnQtc3R5bGVzKDEwcHgsIDAuNzVweCwgMTBweCk7XG5cbiAgICBjb2xvcjogJGRhcmtlc3Q7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHhzKSB7XG4gICAgICAgIEBpbmNsdWRlIGZvbnQtc3R5bGVzKDhweCwgMC43NXB4LCA4cHgpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGctYW5kLXVwKSB7XG4gICAgICAgIEBpbmNsdWRlIGZvbnQtc3R5bGVzKDEycHgsIDAuNzVweCwgMTJweCk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCh4bC1vbmx5KSB7XG4gICAgICAgIEBpbmNsdWRlIGZvbnQtc3R5bGVzKDE0cHgsIDAuNzVweCwgMTRweCk7XG4gICAgfVxufVxuXG4lYm9keS1sZyB7XG4gICAgQGluY2x1ZGUgZm91bmRlcnMoKTtcbiAgICBAaW5jbHVkZSBmb250LXN0eWxlcygxNHB4LCAwLjc1cHgsIDIwcHgpO1xuXG4gICAgY29sb3I6ICRjb3B5O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGctYW5kLXVwKSB7XG4gICAgICAgIEBpbmNsdWRlIGZvbnQtc3R5bGVzKDE2cHgsIDAuNzVweCwgMjJweCk7XG4gICAgfVxufVxuXG4lYm9keS1zbSB7XG4gICAgQGluY2x1ZGUgZm91bmRlcnMoKTtcbiAgICBAaW5jbHVkZSBmb250LXN0eWxlcyg3cHgsIDAuNzVweCwgMjFweCk7XG5cbiAgICBjb2xvcjogJGNvcHk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4lbGluay1zbSB7XG4gICAgQGluY2x1ZGUgbWFyYy1yZWcoKTtcbiAgICBAaW5jbHVkZSBmb250LXN0eWxlcyg3cHgsIDAsIDEwcHgpO1xuXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1kLWFuZC11cCkge1xuICAgICAgICBAaW5jbHVkZSBmb250LXN0eWxlcyg4cHgsIDAsIDEwcHgpO1xuXG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgfVxufVxuXG4lYm9keS14cyB7XG4gICAgQGluY2x1ZGUgbWFyYy1ib2xkKCk7XG4gICAgQGluY2x1ZGUgZm9udC1zdHlsZXMoOHB4LCAwLjc1cHgsIDdweCk7XG5cbiAgICBjb2xvcjogJGRhcmtlc3Q7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtLW9ubHkpIHtcbiAgICAgICAgQGluY2x1ZGUgZm9udC1zdHlsZXMoN3B4LCAwLjc1cHgsIDdweCk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCh4cykge1xuICAgICAgICBAaW5jbHVkZSBmb250LXN0eWxlcyg2cHgsIDAuNzVweCwgNnB4KTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxnLWFuZC11cCkge1xuICAgICAgICBAaW5jbHVkZSBmb250LXN0eWxlcyg4cHgsIDAuNzVweCwgOHB4KTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHhsLW9ubHkpIHtcbiAgICAgICAgQGluY2x1ZGUgZm9udC1zdHlsZXMoMTBweCwgMC43NXB4LCAxMHB4KTtcbiAgICB9XG59XG5cbiVicmVhZGNydW1icyB7XG4gICAgQGluY2x1ZGUgbWFyYy1ib2xkKCk7XG4gICAgQGluY2x1ZGUgZm9udC1zdHlsZXMoN3B4LCAwLjc1cHgsIDdweCk7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHhzKSB7XG4gICAgICAgIEBpbmNsdWRlIGZvbnQtc3R5bGVzKDZweCwgMC43NXB4LCA2cHgpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWQtYW5kLXVwKSB7XG4gICAgICAgIEBpbmNsdWRlIGZvbnQtc3R5bGVzKDhweCwgMC43NXB4LCA4cHgpO1xuICAgIH1cblxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIH1cblxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGN1cnJlbnRDb2xvcjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuJW5hdmlnYXRpb24taXRlbXMtbGcge1xuICAgIEBpbmNsdWRlIG1hcmMtYm9sZCgpO1xuICAgIEBpbmNsdWRlIGZvbnQtc3R5bGVzKDhweCwgMC43NXB4LCAyNHB4KTtcblxuICAgIGNvbG9yOiAkZGFya2VzdDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgfVxufVxuXG4laWNvbiB7XG4gICAgLy8gVE9ETzogQ3JlYXRlIG1vcmUgZ2VuZXJpYyBmb250LXNpemVzLFxuICAgIC8vIGJlY2F1c2UgdGhpcyBzaXplIGNvdWxkIGJlIGRpZmZlcmVudCBkZXBlbmRpbmcgb24gdGhlXG4gICAgLy8gaWNvbiB1c2VkLiBGb3Igbm93IHRoaXMgaXMgdGhlIGRlZmF1bHQgb25lLlxuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgyNHB4KTtcblxuICAgIC8vIEF2b2lkIGljb24gZm9jdXMgb3V0bGluZSB0byBvdmVyZmxvdyB0aGUgcGFyZW50IG91dGxpbmVcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCh4bCkge1xuICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoMzJweCk7XG4gICAgfVxufVxuXG4lbmF2aWdhdGlvbiB7XG4gICAgQGluY2x1ZGUgbWFyYy1ib2xkKCk7XG4gICAgQGluY2x1ZGUgZm9udC1zdHlsZXMoMTBweCwgMC43NXB4LCAxMHB4KTtcblxuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbiVpbnB1dCB7XG4gICAgQGluY2x1ZGUgbWFyYy1yZWcoKTtcbiAgICBAaW5jbHVkZSBmb250LXN0eWxlcyg3cHgsIDAuNzVweCwgN3B4KTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoeHMpIHtcbiAgICAgICAgQGluY2x1ZGUgZm9udC1zdHlsZXMoNnB4LCAwLjc1cHgsIDZweCk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZC1hbmQtdXApIHtcbiAgICAgICAgQGluY2x1ZGUgZm9udC1zdHlsZXMoOHB4LCAwLjc1cHgsIDhweCk7XG4gICAgfVxuXG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuJXByb21vdGlvbiB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZvdW5kZXJzO1xuICAgIGZvbnQtd2VpZ2h0OiAkZnctbGlnaHQ7XG5cbiAgICBAaW5jbHVkZSBmb250LXN0eWxlcygxMnB4LCAwLjc1cHgsIDE0cHgpO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZC1hbmQtdXApIHtcbiAgICAgICAgQGluY2x1ZGUgZm9udC1zdHlsZXMoMTRweCwgMC43NXB4LCAyMHB4KTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxnLWFuZC11cCkge1xuICAgICAgICBAaW5jbHVkZSBmb250LXN0eWxlcygxNnB4LCAwLjc1cHgsIDIycHgpO1xuICAgIH1cbn1cbiIsIi8vIENPTE9SU1xuJHdoaXRlOiAjZmZmO1xuJGxpZ2h0ZXI6ICNmYWZjZmM7XG4kbGlnaHQ6ICNmMGYzZjU7XG4kbWlkLXRvbmU6ICNkZWU2ZWQ7XG4kZGFyazogIzYzNjk3MDtcbiRkYXJrZXI6ICMzYjNiM2I7XG4kZGFya2VzdDogIzAwMDtcbiRjb3B5OiAjMTExO1xuJGNvcHktZGlzYWJsZWQ6Izc1NzU3NTsgLy8gQURBIHZlcnkgbG93IGNvbG9yIGNvbnRyYXN0IGhhdmUgY2hhbmdlZCB0byAjNzU3NTc1IGZyb20gIzg3ODc4N1xuJGJ1dHRvbi1kaXNhYmxlZDogIzk5OTtcbiRwbGFjZWhvbGRlcjogIzgwODA4MDtcbiRncmV5OiAjMzMzO1xuJGZvb3Rlci1ncmV5OiAjYWFhO1xuJHN1Y2Nlc3M6ICMwMDg1MDA7XG4kZGFuZ2VyOiAjM2YzNTMxO1xuJGxpZ2h0LWdyZXk6ICM2YjZiNmI7XG4kbmF2LXN1Ymxpbms6ICNhYWE7XG4kY2FyZC1zYWxlLXByaWNlOiAjNzU3NTc1O1xuJGVycm9yLWxhYmVsOiAjZWIwMDAwO1xuJGVycm9yOiAjZWIwMDAwO1xuJGNoZWNrb3V0LWdyZXk6ICM3NTc1NzU7XG4kcGxhY2Vob2xkZXI6ICM4MDgwODA7XG4kd2hpdGUtZ3JleTogI2U2ZTZlNjtcbiRsaWdodC1ncmV5LW9wYWNpdHk6IHJnYmEoMTA3LCAxMDcsIDEwNywgMC41KTtcbiRidXR0b24tZGlzYWJsZWQtbGlnaHQtYmc6ICM3NTc1NzU7IC8vIEFEQSB2ZXJ5IGxvdyBjb2xvciBjb250cmFzdCBoYXZlIGNoYW5nZWQgdG8gIzc1NzU3NSBmcm9tICM4Nzg3ODdcbiRidXR0b24tZGlzYWJsZWQtZGFyay1iZzogIzk5OTtcbiRzbW9rZS13aGl0ZTogI2VmZWZlZjtcbiRjb252ZXlvci1ncmV5OiAjZDNkM2QzO1xuJGVtYWlsLWJnLWdyZXk6ICNjY2M7XG4kaW5wdXQtZm9jdXM6ICMzYjk5ZmM7XG4kYnJlYWRjcnVtYjogIzVDNUM1QyAhZGVmYXVsdDtcbiRoZWF2ZW4tZ3JleTogIzc1NzU3NTtcbiRncmlkcy1iZy1ncmV5OiAjZDRkNGQ0O1xuXG4kY29sb3JzOiAoXG4gICAgZ3JleXNjYWxlOiAoXG4gICAgICAgIHdoaXRlOiAkd2hpdGUsXG4gICAgICAgIGxpZ2h0ZXI6ICRsaWdodGVyLFxuICAgICAgICBsaWdodDogJGxpZ2h0LFxuICAgICAgICBtaWQtdG9uZTogJG1pZC10b25lLFxuICAgICAgICBkYXJrOiAkZGFyayxcbiAgICAgICAgZGFya2VyOiAkZGFya2VyLFxuICAgICAgICBkYXJrZXN0OiAkZGFya2VzdFxuICAgICksXG4gICAgZnVuY3Rpb246IChcbiAgICAgICAgc3VjY2VzczogJHN1Y2Nlc3MsXG4gICAgICAgIGRhbmdlcjogJGRhbmdlclxuICAgICkpO1xuXG4vLyBOQVYgSEVJR0hUU1xuJG5oLXNtOiA2NHB4O1xuJG5oLW1kOiA4NHB4O1xuJG5oLWxnOiA2OHB4O1xuXG4vLyBEUkFXRVIgSEVJR0hUU1xuJGRoLXNtOiA3OHB4O1xuJGRoLWxnOiAxMjNweDtcbiRkaC14bDogMTY2cHg7XG5cbi8vIERSQVdFUiBIRUlHSFRTIE1BUkdJTlNcbiRkaG0tc206IDMycHg7XG4kZGhtLW1kOiA2MXB4O1xuJGRobS14bDogOTBweDtcblxuLy8gRk9OVCBXRUlHSFRTXG4vLyBAc291cmNlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvZm9udC13ZWlnaHRcbiRmdy1saWdodDogMzAwO1xuJGZ3LW5vcm1hbDogNDAwO1xuJGZ3LW1lZGl1bTogNTAwO1xuJGZ3LWJvbGQ6IDcwMDtcblxuLy8gRk9OVCBGQU1JTElFU1xuJGZvbnQtbWFyYzogJ01hcmNKYWNvYnMnO1xuJGZvbnQtdW5pdmVyczogJ1VuaXZlcnM0NSc7XG4kZm9udC1mb3VuZGVyczogJ0ZvdW5kZXJzR3JvdGVzayc7XG4kZm9udC1hbWVyaWNhOiAnR1QtQW1lcmljYS1TdGFuZGFyZC1NZWRpdW0nO1xuJGZvbnQtYXJpYWw6IEFyaWFsLCBzYW5zLXNlcmlmO1xuJGZvbnQtaWNvbnM6ICdpY29uZm9udCc7XG5cbiRmb250LWZhbWlseS1kZWZhdWx0OiAkZm9udC11bml2ZXJzLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xuJGZvbnQtZmFtaWx5LW1hcmM6ICRmb250LW1hcmMsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG4kZm9udC1mYW1pbHktZm91bmRlcnM6ICRmb250LWZvdW5kZXJzLCAnQ291cmllciBOZXcnLCBzYW5zLXNlcmlmO1xuJGZvbnQtZmFtaWx5LUdULWFtZXJpY2E6ICRmb250LWFtZXJpY2EsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG4iLCJAbWl4aW4gc2NyZWVucmVhZGVyLW9ubHkoKSB7XG4gICAgYm9yZGVyOiAwO1xuICAgIGNsaXA6IHJlY3QoMXB4LCAxcHgsIDFweCwgMXB4KTtcbiAgICBoZWlnaHQ6IDFweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxcHg7XG59XG5cbkBtaXhpbiBjbGVhci1maXgoKSB7XG4gICAgJjo6YmVmb3JlLFxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCIgXCI7XG4gICAgICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGNsZWFyOiBib3RoO1xuICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgbWFyZ2luLXRvcDogLTFweDtcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIH1cblxuICAgICYge1xuICAgICAgICAqem9vbTogMTtcbiAgICB9XG59XG5cbkBtaXhpbiBmb250LXNpemUoJHNpemUpIHtcbiAgICBmb250LXNpemU6ICRzaXplO1xuICAgIGZvbnQtc2l6ZTogY2FsY3VsYXRlLXJlbSgkc2l6ZSk7XG59XG5cbkBtaXhpbiBmb250LXN0eWxlcygkc2l6ZSwgJGxldHRlci1zcGFjaW5nLCAkbGluZS1oZWlnaHQ6IGluaGVyaXQsICRpbmNsdWRlWEw6IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgZm9udC1zaXplKCRzaXplKTtcblxuICAgIGxldHRlci1zcGFjaW5nOiAkbGV0dGVyLXNwYWNpbmc7XG4gICAgbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodDtcbiAgICBAaWYgJGluY2x1ZGVYTD09dHJ1ZSB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoeGwpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgkc2l6ZSAqICRmb250LXhsLW11bHRpcGxpZXIpO1xuXG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogJGxldHRlci1zcGFjaW5nICogJGZvbnQteGwtbXVsdGlwbGllcjtcbiAgICAgICAgICAgIEBpZiAkbGluZS1oZWlnaHQgIT1pbmhlcml0IGFuZCAkbGluZS1oZWlnaHQgIT1ub3JtYWwge1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQgKiAkZm9udC14bC1tdWx0aXBsaWVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWl4aW4gY2VudGVyLWJsb2NrIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG59XG5cbkBtaXhpbiBmbGV4Ym94KCkge1xuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgIGRpc3BsYXk6IC1tb3otYm94O1xuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDtcbiAgICBkaXNwbGF5OiBmbGV4O1xufVxuXG5AbWl4aW4gZmxleC1ncm93KCRncm93KSB7XG4gICAgLXdlYmtpdC1mbGV4LWdyb3c6ICRncm93O1xuICAgIC1tb3otZmxleC1ncm93OiAkZ3JvdztcbiAgICAtbXMtZmxleC1ncm93OiAkZ3JvdztcbiAgICBmbGV4LWdyb3c6ICRncm93O1xufVxuXG5AbWl4aW4gZmxleC1kaXJlY3Rpb24oJGRpcmVjdGlvbikge1xuICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246ICRkaXJlY3Rpb247XG4gICAgLW1vei1mbGV4LWRpcmVjdGlvbjogJGRpcmVjdGlvbjtcbiAgICAtbXMtZmxleC1kaXJlY3Rpb246ICRkaXJlY3Rpb247XG4gICAgZmxleC1kaXJlY3Rpb246ICRkaXJlY3Rpb247XG59XG5cbkBtaXhpbiBmbGV4KCR2YWx1ZXMpIHtcbiAgICAtd2Via2l0LWJveC1mbGV4OiAkdmFsdWVzO1xuICAgIC1tb3otYm94LWZsZXg6ICR2YWx1ZXM7XG4gICAgLXdlYmtpdC1mbGV4OiAkdmFsdWVzO1xuICAgIC1tcy1mbGV4OiAkdmFsdWVzO1xuICAgIGZsZXg6ICR2YWx1ZXM7XG59XG5cbkBtaXhpbiBvcmRlcigkdmFsKSB7XG4gICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogJHZhbDtcbiAgICAtbW96LWJveC1vcmRpbmFsLWdyb3VwOiAkdmFsO1xuICAgIC1tcy1mbGV4LW9yZGVyOiAkdmFsO1xuICAgIC13ZWJraXQtb3JkZXI6ICR2YWw7XG4gICAgb3JkZXI6ICR2YWw7XG59XG5cbkBtaXhpbiBhbGlnbi1pdGVtcygkYWxpZ24pIHtcbiAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiAkYWxpZ247XG4gICAgLW1vei1hbGlnbi1pdGVtczogJGFsaWduO1xuICAgIC1tcy1hbGlnbi1pdGVtczogJGFsaWduO1xuICAgIGFsaWduLWl0ZW1zOiAkYWxpZ247XG59XG5cbkBtaXhpbiBhbGlnbi1zZWxmKCRhbGlnbikge1xuICAgIC13ZWJraXQtYWxpZ24tc2VsZjogJGFsaWduO1xuICAgIC1tb3otYWxpZ24tc2VsZjogJGFsaWduO1xuICAgIC1tcy1hbGlnbi1zZWxmOiAkYWxpZ247XG4gICAgYWxpZ24tc2VsZjogJGFsaWduO1xufVxuXG5AbWl4aW4gYWxpZ24tY29udGVudCgkYWxpZ24pIHtcbiAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6ICRhbGlnbjtcbiAgICAtbW96LWFsaWduLWNvbnRlbnQ6ICRhbGlnbjtcbiAgICAtbXMtYWxpZ24tY29udGVudDogJGFsaWduO1xuICAgIGFsaWduLWNvbnRlbnQ6ICRhbGlnbjtcbn1cblxuQG1peGluIGp1c3RpZnktY29udGVudCgkanVzdGlmeSkge1xuICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiAkanVzdGlmeTtcbiAgICAtbW96LWp1c3RpZnktY29udGVudDogJGp1c3RpZnk7XG4gICAgLW1zLWp1c3RpZnktY29udGVudDogJGp1c3RpZnk7XG4gICAganVzdGlmeS1jb250ZW50OiAkanVzdGlmeTtcbiAgICAtbXMtZmxleC1wYWNrOiAkanVzdGlmeTtcbn1cblxuQG1peGluIGZsZXgtc2hyaW5rKCRzaHJpbmspIHtcbiAgICAtd2Via2l0LWZsZXgtc2hyaW5rOiAkc2hyaW5rO1xuICAgIC1tb3otZmxleC1zaHJpbms6ICRzaHJpbms7XG4gICAgLW1zLWZsZXgtc2hyaW5rOiAkc2hyaW5rO1xuICAgIGZsZXgtc2hyaW5rOiAkc2hyaW5rO1xufVxuXG5AbWl4aW4gZmxleC1ncm93KCRncm93KSB7XG4gICAgLXdlYmtpdC1mbGV4LWdyb3c6ICRncm93O1xuICAgIC1tb3otZmxleC1ncm93OiAkZ3JvdztcbiAgICAtbXMtZmxleC1ncm93OiAkZ3JvdztcbiAgICBmbGV4LWdyb3c6ICRncm93O1xufVxuXG5AbWl4aW4gaWUtZml4KCkge1xuICAgIC8qIHN0eWxlbGludC1kaXNhYmxlICovXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpLCAoLW1zLWhpZ2gtY29udHJhc3Q6IG5vbmUpIHtcbiAgICAgICAgLyogc3R5bGVsaW50LWVuYWJsZSAqL1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbkBtaXhpbiBlZGdlLWZpeCgpIHtcbiAgICBAc3VwcG9ydHMgKC1tcy1pbWUtYWxpZ246IGF1dG8pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG5AbWl4aW4gaWUtZWRnZS1maXgoKSB7XG4gICAgQGluY2x1ZGUgaWUtZml4KCkge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG4gICAgQGluY2x1ZGUgZWRnZS1maXgoKSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuLy8gVXNlZCB0byBnaXZlIG1vcmUgdGltZSB0byBvYmplY3QtZml0IHRvIHdvcmsgb25cbi8vIGJyb3dzZXJzIHRoYXQgZG9lc24ndCBzdXBwb3J0IGl0LCBmaXhpbmcgdGhlIGlzc3VlIHdoZXJlXG4vLyB0aGUgaW1hZ2UganVtcHMgaW4gd2hlbiB0aGUganMgaW4gaGVyb0NvbnRhaW5lci5qcyBpcyBhcHBsaWVkLlxuXG5AbWl4aW4gaGVyby1pbWFnZS1maXgoKSB7XG4gICAgQGluY2x1ZGUgaWUtZml4KCkge1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zaXRpb246IHZpc2liaWxpdHkgMC4zcywgb3BhY2l0eSAwLjNzO1xuXG4gICAgICAgIC5oZXJvLWNvbnRhaW5lci0tcmVhZHkgJiB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQG1peGluIHBsYWNlaG9sZGVyIHtcbiAgICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgJjo6LW1vei1wbGFjZWhvbGRlciB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgICY6LW1vei1wbGFjZWhvbGRlciB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgICY6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG4ldGFiYmVkLWNhcmRzLXdpZHRoIHtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuQG1peGluIHRhYmJlZC1saXN0KCkge1xuICAgIEBleHRlbmQgJXRhYmJlZC1jYXJkcy13aWR0aDtcblxuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgbWFyZ2luLWJvdHRvbTogMzZweDtcbiAgICBAaW5jbHVkZSBncmlkLWJyZWFrcG9pbnQgKHhsKSB7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIHBhZGRpbmc6IDAgc3BhbigyKTtcbiAgICB9XG59XG5cbkBtaXhpbiB0YWJiZWQtaXRlbSgpIHtcbiAgICBAZXh0ZW5kICVidXR0b24tdHlwb2dyYXBoeTtcblxuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nLWJvdHRvbTogNXB4O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogJGRhcmtlc3Q7XG5cbiAgICAmLS1hY3RpdmUge1xuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgaGVpZ2h0OiAycHg7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgJGRhcmtlc3Q7XG4gICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWl4aW4gdGFiYmVkLWNvbnRlbnQoKSB7XG4gICAgQGV4dGVuZCAldGFiYmVkLWNhcmRzLXdpZHRoO1xuXG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgICYtLWFjdGl2ZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbn1cblxuQG1peGluIGNpcmNsZSgkYm9yZGVyQ29sb3I6ICRkYXJrZXN0LCAkYm9yZGVyV2lkdGg6IDJweCkge1xuICAgIGJvcmRlcjogJGJvcmRlcldpZHRoIHNvbGlkICRib3JkZXJDb2xvcjtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbiIsIkBmdW5jdGlvbiBjYWxjdWxhdGUtcmVtKCRzaXplKSB7XG4gICAgJHJlbVNpemU6ICRzaXplIC8gMTZweDtcbiAgICBAcmV0dXJuICN7JHJlbVNpemV9cmVtO1xufVxuXG5AZnVuY3Rpb24gc2V0LWNvbG9yKCRrZXksICR0aGVtZTogZGVmYXVsdCkge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkdGhlbWVzLCAkdGhlbWUpIHtcbiAgICAgICAgQHJldHVybiBtYXAtZ2V0KG1hcC1nZXQoJHRoZW1lcywgJHRoZW1lKSwgJGtleSk7XG4gICAgfVxuICAgIEB3YXJuIFwiI3skdGhlbWV9IHdhcyBub3QgZm91bmQgaW4gdGhlICR0aGVtZXMgbWFwLlwiO1xuICAgIEByZXR1cm4gbnVsbDtcbn1cbiIsIiRuYW1lOiBhYm91dC1tYXJjO1xuXG4uI3skbmFtZX0ge1xuICAgIG1hcmdpbi10b3A6IDMzcHg7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1kLW9ubHkpIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMTZweDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxnLWFuZC11cCkge1xuICAgICAgICBtYXJnaW4tdG9wOiAxN3B4O1xuICAgIH1cblxuICAgICZfX3RpdGxlIHtcbiAgICAgICAgQGV4dGVuZCAlaGVhZGluZy1tZDtcblxuICAgICAgICBtYXJnaW46IDAgMCAzMHB4O1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWQtb25seSkge1xuICAgICAgICAgICAgbWFyZ2luOiAwIDAgNTBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGctYW5kLXVwKSB7XG4gICAgICAgICAgICBtYXJnaW46IDAgMCA2MHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fY2Fyb3VzZWwxIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogODBweDtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1kLW9ubHkpIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxnLWFuZC11cCkge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTIxcHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19jYXJvdXNlbDIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA4MHB4O1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWQtb25seSkge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNDBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGctYW5kLXVwKSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA5NnB4O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLyogZnJvbSBjYXJvdXNhbEFuZFNsaWRlIGNvbXBvbmVudCAqL1xuXG4uY2Fyb3VzZWwtYW5kLXNsaWRlIHtcbiAgICAmLS1tZWRpdW0tYW5kLXVwIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1kLWFuZC11cCkge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGctYW5kLXVwKSB7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTZweDtcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgLnN3aXBlci1jb250YWluZXIge1xuICAgICAgICAgICAgICAgICAgICAuc3dpcGVyLWJ1dHRvbi1wcmV2LFxuICAgICAgICAgICAgICAgICAgICAuc3dpcGVyLWJ1dHRvbi1uZXh0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KHhsKSB7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogNDhweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLW1vYmlsZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjhweDtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1kLWFuZC11cCkge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLWRhcmstdGhlbWUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZGFya2VzdDtcblxuICAgICAgICAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0cyB7XG4gICAgICAgICAgICAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IHtcbiAgICAgICAgICAgICAgICAmLS1yZWN0YW5nbGUge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zd2lwZXItY29udGFpbmVyIHtcbiAgICAgICAgLnN3aXBlci1idXR0b24tcHJldixcbiAgICAgICAgLnN3aXBlci1idXR0b24tbmV4dCB7XG4gICAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNHM7XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGctYW5kLXVwKSB7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnN3aXBlci1idXR0b24tcHJldiB7XG4gICAgICAgICAgICBsZWZ0OiAyMHB4O1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnN3aXBlci1idXR0b24tbmV4dCB7XG4gICAgICAgICAgICByaWdodDogMjBweDtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc3dpcGVyLXBhZ2luYXRpb24tYnVsbGV0IHtcbiAgICAgICAgJi0tcmVjdGFuZ2xlIHtcbiAgICAgICAgICAgIHdpZHRoOiAzNXB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAycHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkZGFya2VzdDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgICAgICBtYXJnaW46IDAgMnB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1kLWFuZC11cCkge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA2MC4zN3B4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnN3aXBlci1wYWdpbmF0aW9uLnN3aXBlci1wYWdpbmF0aW9uLWJ1bGxldHMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgaGVpZ2h0OiAycHg7XG4gICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICBib3R0b206IC0yOHB4O1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1kLW9ubHkpIHtcbiAgICAgICAgICAgIGJvdHRvbTogLTE5cHg7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1kLWxnLW9ubHkpIHtcbiAgICAgICAgICAgIGJvdHRvbTogLTExcHg7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxnLW9ubHkpIHtcbiAgICAgICAgICAgIGJvdHRvbTogLTE2cHg7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KHhsKSB7XG4gICAgICAgICAgICBib3R0b206IC00OHB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiBmcm9tIHNsaWRlckNhcm91c2FsIGNvbXBvbmVudCAqL1xuXG4uc2xpZGVyLWNhcm91c2VsIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAuc3dpcGVyLWNvbnRhaW5lcixcbiAgICAuc3dpcGVyLXBhZ2luYXRpb24ge1xuICAgICAgICB6LWluZGV4OiAwO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludCAobWQtb25seSkge1xuICAgIC5zd2lwZXItd3JhcHBlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxufVxuXG4vKiBmcm9tIGZpZnR5RmlmdHkgY29tcG9uZW50ICovXG5cbi5maWZ0eS1maWZ0eSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAmX19zaWRlIHtcbiAgICAgICAgJi0tcmlnaHQge1xuICAgICAgICAgICAgJi10YWxsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYtd2lkZSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZ3JpZC1icmVha3BvaW50KG1kLW9ubHkpIHtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgcHVzaCgyKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBncmlkLWJyZWFrcG9pbnQobGctYW5kLXVwKSB7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHB1c2goMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi0taW1hZ2Uge1xuICAgICAgICAgICAgd2lkdGg6IHNwYW4oMTApO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBncmlkLWJyZWFrcG9pbnQobWQtYW5kLXVwKSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IHNwYW4oOCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIGdyaWQtYnJlYWtwb2ludCh4bC1vbmx5KSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IHNwYW4oNyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBpY3R1cmUge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi0tdGV4dCB7XG4gICAgICAgICAgICBAZXh0ZW5kICVoZWFkaW5nLWxnOyBcblxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIHdpZHRoOiBzcGFuKDEwKTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweDtcblxuICAgICAgICAgICAgQGluY2x1ZGUgZ3JpZC1icmVha3BvaW50KG1kLWFuZC11cCkge1xuICAgICAgICAgICAgICAgIHdpZHRoOiBzcGFuKDgpO1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGZvbnQtc3R5bGVzKDQ4cHgsIDAuNzVweCwgNDRweCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIGdyaWQtYnJlYWtwb2ludCh4bC1vbmx5KSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IHNwYW4oNyk7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZm9udC1zdHlsZXMoNjRweCwgMC43NXB4LCA2MHB4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYtLXRhbGwge1xuICAgICAgICAgICAgd2lkdGg6IHNwYW4oMTApO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBncmlkLWJyZWFrcG9pbnQobWQtYW5kLXVwKSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcHVsbCgyKTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBwdXNoKDIpO1xuXG4gICAgICAgICAgICAgICAgd2lkdGg6IHNwYW4oNCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIGdyaWQtYnJlYWtwb2ludCh4bC1vbmx5KSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcHVsbCgxKTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBwdXNoKDIpO1xuXG4gICAgICAgICAgICAgICAgd2lkdGg6IHNwYW4oNCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLS13aWRlIHtcbiAgICAgICAgICAgIHdpZHRoOiBzcGFuKDEwKTtcblxuICAgICAgICAgICAgQGluY2x1ZGUgZ3JpZC1icmVha3BvaW50KG1kLWFuZC11cCkge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHB1bGwoMSk7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcHVzaCgxKTtcblxuICAgICAgICAgICAgICAgIHdpZHRoOiBzcGFuKDYpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBncmlkLWJyZWFrcG9pbnQoeGwtb25seSkge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHB1bGwoMSk7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcHVzaCgxKTtcblxuICAgICAgICAgICAgICAgIHdpZHRoOiBzcGFuKDUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcGljdHVyZSB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX3RleHQtLXNtYWxsIHtcbiAgICAgICAgQGV4dGVuZCAlaGVhZGluZy1zbTtcblxuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgfVxufVxuXG4uY2Fyb3VzZWwtYW5kLXNsaWRlLS1kYXJrLXRoZW1lIHtcbiAgICAuZmlmdHktZmlmdHkge1xuICAgICAgICAmX19zaWRlLS10ZXh0IHtcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiJHN1c3k6IChjb2x1bW5zOiBzdXN5LXJlcGVhdCgxMiksIGd1dHRlcnM6IDAsIHNwcmVhZDogJ25hcnJvdycsIGNvbnRhaW5lci1zcHJlYWQ6ICduYXJyb3cnKTtcbiRncmlkLWNvbmZpZ3M6ICggc206ICggbWF4LXdpZHRoOiAxMDAlKSwgc20tbWQ6ICggbWF4LXdpZHRoOiAxMDAlLCBzdXN5LW92ZXJyaWRlczogKCBjb2x1bW5zOiBzdXN5LXJlcGVhdCgxNiksKSksXG5tZDogKCBtYXgtd2lkdGg6IDEwMCUsIHN1c3ktb3ZlcnJpZGVzOiAoIGNvbHVtbnM6IHN1c3ktcmVwZWF0KDE2KSwpKSwgbWQtbGc6ICggbWF4LXdpZHRoOiAxMDAlLFxuc3VzeS1vdmVycmlkZXM6ICggY29sdW1uczogc3VzeS1yZXBlYXQoMTYpLCkpLCBsZzogKCBtYXgtd2lkdGg6IDEwMCUsIHN1c3ktb3ZlcnJpZGVzOiAoIGNvbHVtbnM6IHN1c3ktcmVwZWF0KDE4KSwpKSxcbnhsOiAoIG1heC13aWR0aDogMTAwJSwgc3VzeS1vdmVycmlkZXM6ICggY29sdW1uczogc3VzeS1yZXBlYXQoMTgpLCkpKTtcblxuQG1peGluIHN1c3ktdXNlKCRzZXR0aW5ncykge1xuICAgICRzZXR0aW5nczogc3VzeS1jb21waWxlKCRzZXR0aW5ncyk7XG5cbiAgICAkZ2xvYmFsOiAkc3VzeTtcbiAgICAkc3VzeTogbWFwLW1lcmdlKCRzdXN5LCAkc2V0dGluZ3MpICFnbG9iYWw7XG5cbiAgICBAY29udGVudDtcblxuICAgICRzdXN5OiAkZ2xvYmFsICFnbG9iYWw7XG59XG5cbkBtaXhpbiBwYWludC1jb2x1bW5zKCkge1xuICAgIGJhY2tncm91bmQ6XG4gICAgICAgIHN1c3ktc3ZnLWdyaWQoXG4gICAgICAgICAgICAkZ3JpZDogc3VzeS1zZXR0aW5ncygpLFxuICAgICAgICAgICAgJGNvbG9yczogWyByZ2JhKDAsIDAsIDI1NSwgMC4xNSksXG4gICAgICAgICAgICByZ2JhKDAsIDI1NSwgMCwgMC4xNSkgXSxcbiAgICAgICAgKSBuby1yZXBlYXQgc2Nyb2xsO1xuICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJTtcbn1cblxuQG1peGluIGdyaWQtYWxsKCkge1xuICAgIEBjb250ZW50O1xuXG4gICAgQGVhY2ggJGJyZWFrcG9pbnQsICRjb25maWcgaW4gJGdyaWQtY29uZmlncyB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoXCIjeyRicmVha3BvaW50fS1vbmx5XCIpIHtcbiAgICAgICAgICAgIEBpZiBtYXAtZ2V0KCRjb25maWcsIHN1c3ktb3ZlcnJpZGVzKSB7XG4gICAgICAgICAgICAgICAgJHNldHRpbmdzOiBtYXAtZ2V0KCRjb25maWcsIHN1c3ktb3ZlcnJpZGVzKTtcblxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktdXNlKCRzZXR0aW5ncykge1xuICAgICAgICAgICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBtaXhpbiBncmlkKCRicmVha3BvaW50KSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChcIiN7JGJyZWFrcG9pbnR9LW9ubHlcIikge1xuICAgICAgICBAaWYgbWFwLWdldChtYXAtZ2V0KCRncmlkLWNvbmZpZ3MsICRicmVha3BvaW50KSwgc3VzeS1vdmVycmlkZXMpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktdXNlKG1hcC1nZXQobWFwLWdldCgkZ3JpZC1jb25maWdzLCAkYnJlYWtwb2ludCksIHN1c3ktb3ZlcnJpZGVzKSkge1xuICAgICAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWl4aW4gZ3JpZC1icmVha3BvaW50KCRicmVha3BvaW50KSB7XG4gICAgQGlmICRicmVha3BvaW50ID09IFwic20tb25seVwiIG9yICRicmVha3BvaW50ID09IFwic21cIiB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBlbHNlIGlmICRicmVha3BvaW50ID09IFwibWQtb25seVwiIG9yICRicmVha3BvaW50ID09IFwibWRcIiB7XG4gICAgICAgIEBpbmNsdWRlIGdyaWQoJ21kJykge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkYnJlYWtwb2ludCA9PSBcImxnLW9ubHlcIiBvciAkYnJlYWtwb2ludCA9PSBcImxnXCIge1xuICAgICAgICBAaW5jbHVkZSBncmlkKCdsZycpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJGJyZWFrcG9pbnQgPT0gXCJ4bC1vbmx5XCIgb3IgJGJyZWFrcG9pbnQgPT0gXCJ4bFwiIHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZCgneGwnKSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIGlmICRicmVha3BvaW50ID09IFwic20tYW5kLXVwXCIge1xuXG4gICAgICAgIEBjb250ZW50O1xuXG4gICAgICAgIEBpbmNsdWRlIGdyaWQoJ21kJykge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBncmlkKCdsZycpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgZ3JpZCgneGwnKSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIGlmICRicmVha3BvaW50ID09IFwibWQtYW5kLXVwXCIge1xuICAgICAgICBAaW5jbHVkZSBncmlkKCdtZCcpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgZ3JpZCgnbGcnKSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGdyaWQoJ3hsJykge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkYnJlYWtwb2ludCA9PSBcIm1kLWxnLWFuZC11cFwiIHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZCgnbWQtbGcnKSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGdyaWQoJ2xnJykge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBncmlkKCd4bCcpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJGJyZWFrcG9pbnQgPT0gXCJtZC1sZy1vbmx5XCIge1xuICAgICAgICBAaW5jbHVkZSBncmlkKCdtZC1sZycpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJGJyZWFrcG9pbnQgPT0gXCJsZy1hbmQtdXBcIiB7XG5cbiAgICAgICAgQGluY2x1ZGUgZ3JpZCgnbGcnKSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGdyaWQoJ3hsJykge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkYnJlYWtwb2ludCA9PSBcImxnLWFuZC1kb3duXCIge1xuICAgICAgICBAY29udGVudDtcblxuICAgICAgICBAaW5jbHVkZSBncmlkKCdtZCcpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgZ3JpZCgnbGcnKSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIGlmICRicmVha3BvaW50ID09IFwibWQtYW5kLWRvd25cIiB7XG4gICAgICAgIEBjb250ZW50O1xuXG4gICAgICAgIEBpbmNsdWRlIGdyaWQoJ21kJykge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkYnJlYWtwb2ludCA9PSBcInNtLW1kLWFuZC1kb3duXCIge1xuICAgICAgICBAY29udGVudDtcblxuICAgICAgICBAaW5jbHVkZSBncmlkKCdzbS1tZCcpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWl4aW4gZ3JpZC1jb250YWluZXIoJGRlYnVnOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGNlbnRlci1ibG9jaygpO1xuXG4gICAgQGlmICRkZWJ1ZyB7XG4gICAgICAgIEBpbmNsdWRlIGdyaWQtYWxsKCkge1xuICAgICAgICAgICAgQGluY2x1ZGUgcGFpbnQtY29sdW1ucygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGVhY2ggJGJyZWFrcG9pbnQsICRjb25maWcgaW4gJGdyaWQtY29uZmlncyB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoXCIjeyRicmVha3BvaW50fS1vbmx5XCIpIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogI3ttYXAtZ2V0KCRjb25maWcsIG1heC13aWR0aCl9O1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWl4aW4gcHVsbCgkY29uZmlncywgJGZ1bmM6IHNwYW4sICAgICRwcm9wZXJ0eTogJ21hcmdpbi1yaWdodCcpIHtcbiAgICBAaW5jbHVkZSBncmlkLWFsbCgpIHtcbiAgICAgICAgJG91dHB1dDogY2FsbChnZXQtZnVuY3Rpb24oJGZ1bmMpLCAkY29uZmlncyk7XG5cbiAgICAgICAgI3skcHJvcGVydHl9OiAjeyRvdXRwdXR9O1xuICAgIH1cbn1cblxuQG1peGluIHB1c2goJGNvbmZpZ3MsICRmdW5jOiBzcGFuLCAkcHJvcGVydHk6ICdtYXJnaW4tbGVmdCcpIHtcbiAgICBAaW5jbHVkZSBncmlkLWFsbCgpIHtcbiAgICAgICAgJG91dHB1dDogY2FsbChnZXQtZnVuY3Rpb24oJGZ1bmMpLCAkY29uZmlncyk7XG5cbiAgICAgICAgI3skcHJvcGVydHl9OiAjeyRvdXRwdXR9O1xuICAgIH1cbn1cblxuJWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgZ3JpZC1jb250YWluZXIoKTtcblxuICAgIHBhZGRpbmc6IDA7XG5cbiAgICAuZ3JpZC1kZWJ1ZyAmIHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb250YWluZXIodHJ1ZSk7XG4gICAgfVxufVxuIiwiLy8vIEdyaWQgTWF0aCBFbmdpbmVcbi8vLyA9PT09PT09PT09PT09PT09XG4vLy8gVGhlIGBzdWAgZnVuY3Rpb25zIGdpdmUgeW91IGRpcmVjdCBhY2Nlc3MgdG8gdGhlIG1hdGggbGF5ZXIsXG4vLy8gd2l0aG91dCBhbnkgc3ludGF4LXN1Z2FyIGxpa2Ugc2hvcnRoYW5kIHBhcnNpbmcsIGFuZCBub3JtYWxpemF0aW9uLlxuLy8vIElmIHlvdSBwcmVmZXIgbmFtZWQgYXJndW1lbnRzLCBhbmQgc3RyaXBwZWQtZG93biBzeW50YXgsXG4vLy8geW91IGNhbiB1c2UgdGhlc2UgZnVuY3Rpb25zIGRpcmVjdGx5IGluIHlvdXIgY29kZSDigJNcbi8vLyByZXBsYWNpbmcgYHNwYW5gLCBgZ3V0dGVyYCwgYW5kIGBzbGljZWAuXG4vLy9cbi8vLyBUaGVzZSBmdW5jdGlvbnMgYXJlIGFsc28gdXNlZnVsXG4vLy8gZm9yIGJ1aWxkaW5nIG1peGlucyBvciBvdGhlciBleHRlbnNpb25zIHRvIFN1c3kuXG4vLy8gQXBwbHkgdGhlIFN1c3kgc3ludGF4IHRvIG5ldyBtaXhpbnMgYW5kIGZ1bmN0aW9ucyxcbi8vLyB1c2luZyBvdXIgXCJQbHVnaW4gSGVscGVyc1wiLFxuLy8vIG9yIHdyaXRlIHlvdXIgb3duIHN5bnRheCBhbmQgcGFzcyB0aGUgbm9ybWFsaXplZCByZXN1bHRzIGFsb25nXG4vLy8gdG8gYHN1YCBmb3IgY29tcGlsYXRpb24uXG4vLy9cbi8vLyBAZ3JvdXAgc3UtbWF0aFxuLy8vXG4vLy8gQHNlZSBzdS1zcGFuXG4vLy8gQHNlZSBzdS1ndXR0ZXJcbi8vLyBAc2VlIHN1LXNsaWNlXG4vLy8gQGlnbm9yZSBfc3Utc3VtXG4vLy8gQGlnbm9yZSBfc3UtY2FsYy1zcGFuXG4vLy8gQGlnbm9yZSBfc3UtY2FsYy1zdW1cbi8vLyBAaWdub3JlIF9zdS1uZWVkcy1jYWxjLW91dHB1dFxuXG5cblxuLy8gU3UgU3BhblxuLy8gLS0tLS0tLVxuLy8vIENhbGN1bGF0ZXMgYW5kIHJldHVybnMgYSBDU1MtcmVhZHkgc3BhbiB3aWR0aCxcbi8vLyBiYXNlZCBvbiBub3JtYWxpemVkIHNwYW4gYW5kIGNvbnRleHQgZGF0YSDigJNcbi8vLyBhIGxvdy1sZXZlbCB2ZXJzaW9uIG9mIGBzdXN5LXNwYW5gLFxuLy8vIHdpdGggYWxsIG9mIHRoZSBsb2dpYyBhbmQgbm9uZSBvZiB0aGUgc3ludGF4IHN1Z2FyLlxuLy8vXG4vLy8gLSBHcmlkcyBkZWZpbmVkIHdpdGggdW5pdGxlc3MgbnVtYmVycyB3aWxsIHJldHVybiBgJWAgdmFsdWVzLlxuLy8vIC0gR3JpZHMgZGVmaW5lZCB3aXRoIGNvbXBhcmFibGUgdW5pdHNcbi8vLyAgIHdpbGwgcmV0dXJuIGEgdmFsdWUgaW4gdGhlIHVuaXRzIHByb3ZpZGVkLlxuLy8vIC0gR3JpZHMgZGVmaW5lZCB3aXRoIGEgbWl4IG9mIHVuaXRzLFxuLy8vICAgb3IgYSBjb21iaW5hdGlvbiBvZiB1bnRpbGVzcyBudW1iZXJzIGFuZCB1bml0LWxlbmd0aHMsXG4vLy8gICB3aWxsIHJldHVybiBhIGBjYWxjKClgIHN0cmluZy5cbi8vL1xuLy8vIEBncm91cCBzdS1tYXRoXG4vLy8gQHNlZSBzdXN5LXNwYW5cbi8vL1xuLy8vIEBwYXJhbSB7bnVtYmVyIHwgbGlzdH0gJHNwYW4gLVxuLy8vICAgTnVtYmVyIG9yIGxpc3Qgb2YgZ3JpZCBjb2x1bW5zIHRvIHNwYW5cbi8vLyBAcGFyYW0ge2xpc3R9ICRjb2x1bW5zIC1cbi8vLyAgIExpc3Qgb2YgY29sdW1ucyBhdmFpbGFibGVcbi8vLyBAcGFyYW0ge251bWJlcn0gJGd1dHRlcnMgLVxuLy8vICAgV2lkdGggb2YgYSBndXR0ZXIgaW4gY29sdW1uLWNvbXBhcmFibGUgdW5pdHNcbi8vLyBAcGFyYW0gezAgfCAxIHwgLTF9ICRzcHJlYWQgLVxuLy8vICAgTnVtYmVyIG9mIGd1dHRlcnMgc3Bhbm5lZCxcbi8vLyAgIHJlbGF0aXZlIHRvIGBzcGFuYCBjb3VudFxuLy8vIEBwYXJhbSB7MCB8IDEgfCAtMX0gJGNvbnRhaW5lci1zcHJlYWQgWyRzcHJlYWRdIC1cbi8vLyAgIE51bWJlciBvZiBndXR0ZXJzIHNwYW5uZWQsXG4vLy8gICByZWxhdGl2ZSB0byBgY29sdW1uc2AgY291bnRcbi8vLyBAcGFyYW0ge2ludGVnZXJ9ICRsb2NhdGlvbiBbMV0gLVxuLy8vICAgT3B0aW9uYWwgcG9zaXRpb24gb2Ygc3ViLXNwYW4gYW1vbmcgZnVsbCBzZXQgb2YgY29sdW1uc1xuLy8vXG4vLy8gQHJldHVybiB7bGVuZ3RofSAtXG4vLy8gICBSZWxhdGl2ZSBvciBzdGF0aWMgbGVuZ3RoIG9mIGEgc3BhbiBvbiB0aGUgZ3JpZFxuQGZ1bmN0aW9uIHN1LXNwYW4oXG4gICRzcGFuLFxuICAkY29sdW1ucyxcbiAgJGd1dHRlcnMsXG4gICRzcHJlYWQsXG4gICRjb250YWluZXItc3ByZWFkOiAkc3ByZWFkLFxuICAkbG9jYXRpb246IDFcbikge1xuICAkc3Bhbjogc3UtdmFsaWQtc3Bhbigkc3Bhbik7XG4gICRjb2x1bW5zOiBzdS12YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJGd1dHRlcnM6IHN1LXZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuICAkc3ByZWFkOiBzdS12YWxpZC1zcHJlYWQoJHNwcmVhZCk7XG5cbiAgQGlmICh0eXBlLW9mKCRzcGFuKSA9PSAnbnVtYmVyJykge1xuICAgIEBpZiAobm90IHVuaXRsZXNzKCRzcGFuKSkge1xuICAgICAgQHJldHVybiAkc3BhbjtcbiAgICB9XG5cbiAgICAkbG9jYXRpb246IHN1LXZhbGlkLWxvY2F0aW9uKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTtcbiAgICAkc3Bhbjogc3Utc2xpY2UoJHNwYW4sICRjb2x1bW5zLCAkbG9jYXRpb24sICR2YWxpZGF0ZTogZmFsc2UpO1xuICB9XG5cbiAgQGlmIF9zdS1uZWVkcy1jYWxjLW91dHB1dCgkc3BhbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkc3ByZWFkLCBub3QgJ3ZhbGlkYXRlJykge1xuICAgIEByZXR1cm4gX3N1LWNhbGMtc3Bhbigkc3BhbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkc3ByZWFkLCAkY29udGFpbmVyLXNwcmVhZCwgbm90ICd2YWxpZGF0ZScpO1xuICB9XG5cbiAgJHNwYW4td2lkdGg6IF9zdS1zdW0oJHNwYW4sICRndXR0ZXJzLCAkc3ByZWFkLCAkdmFsaWRhdGU6IGZhbHNlKTtcblxuICBAaWYgdW5pdGxlc3MoJHNwYW4td2lkdGgpIHtcbiAgICAkY29udGFpbmVyLXNwcmVhZDogc3UtdmFsaWQtc3ByZWFkKCRjb250YWluZXItc3ByZWFkKTtcbiAgICAkY29udGFpbmVyOiBfc3Utc3VtKCRjb2x1bW5zLCAkZ3V0dGVycywgJGNvbnRhaW5lci1zcHJlYWQsICR2YWxpZGF0ZTogZmFsc2UpO1xuICAgIEByZXR1cm4gcGVyY2VudGFnZSgkc3Bhbi13aWR0aCAvICRjb250YWluZXIpO1xuICB9XG5cbiAgQHJldHVybiAkc3Bhbi13aWR0aDtcbn1cblxuXG5cbi8vIFN1IEd1dHRlclxuLy8gLS0tLS0tLS0tXG4vLy8gQ2FsY3VsYXRlcyBhbmQgcmV0dXJucyBhIENTUy1yZWFkeSBndXR0ZXIgd2lkdGgsXG4vLy8gYmFzZWQgb24gbm9ybWFsaXplZCBncmlkIGRhdGEg4oCTXG4vLy8gYSBsb3ctbGV2ZWwgdmVyc2lvbiBvZiBgc3VzeS1ndXR0ZXJgLFxuLy8vIHdpdGggYWxsIG9mIHRoZSBsb2dpYyBhbmQgbm9uZSBvZiB0aGUgc3ludGF4IHN1Z2FyLlxuLy8vXG4vLy8gLSBHcmlkcyBkZWZpbmVkIHdpdGggdW5pdGxlc3MgbnVtYmVycyB3aWxsIHJldHVybiBgJWAgdmFsdWVzLlxuLy8vIC0gR3JpZHMgZGVmaW5lZCB3aXRoIGNvbXBhcmFibGUgdW5pdHNcbi8vLyAgIHdpbGwgcmV0dXJuIGEgdmFsdWUgaW4gdGhlIHVuaXRzIHByb3ZpZGVkLlxuLy8vIC0gR3JpZHMgZGVmaW5lZCB3aXRoIGEgbWl4IG9mIHVuaXRzLFxuLy8vICAgb3IgYSBjb21iaW5hdGlvbiBvZiB1bnRpbGVzcyBudW1iZXJzIGFuZCB1bml0LWxlbmd0aHMsXG4vLy8gICB3aWxsIHJldHVybiBhIGBjYWxjKClgIHN0cmluZy5cbi8vL1xuLy8vIEBncm91cCBzdS1tYXRoXG4vLy8gQHNlZSBzdXN5LWd1dHRlclxuLy8vXG4vLy8gQHBhcmFtIHtsaXN0fSAkY29sdW1ucyAtXG4vLy8gICBMaXN0IG9mIGNvbHVtbnMgaW4gdGhlIGdyaWRcbi8vLyBAcGFyYW0ge251bWJlcn0gJGd1dHRlcnMgLVxuLy8vICAgV2lkdGggb2YgYSBndXR0ZXIgaW4gY29sdW1uLWNvbXBhcmFibGUgdW5pdHNcbi8vLyBAcGFyYW0gezAgfCAxIHwgLTF9ICRjb250YWluZXItc3ByZWFkIC1cbi8vLyAgIE51bWJlciBvZiBndXR0ZXJzIHNwYW5uZWQsXG4vLy8gICByZWxhdGl2ZSB0byBgY29sdW1uc2AgY291bnRcbi8vL1xuLy8vIEByZXR1cm4ge2xlbmd0aH0gLVxuLy8vICAgUmVsYXRpdmUgb3Igc3RhdGljIGxlbmd0aCBvZiBvbmUgZ3V0dGVyIGluIGEgZ3JpZFxuQGZ1bmN0aW9uIHN1LWd1dHRlcihcbiAgJGNvbHVtbnMsXG4gICRndXR0ZXJzLFxuICAkY29udGFpbmVyLXNwcmVhZFxuKSB7XG4gIEBpZiAodHlwZS1vZigkZ3V0dGVycykgPT0gJ251bWJlcicpIHtcbiAgICBAaWYgKCRndXR0ZXJzID09IDApIG9yIChub3QgdW5pdGxlc3MoJGd1dHRlcnMpKSB7XG4gICAgICBAcmV0dXJuICRndXR0ZXJzO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBfc3UtbmVlZHMtY2FsYy1vdXRwdXQoJGd1dHRlcnMsICRjb2x1bW5zLCAkZ3V0dGVycywgLTEsIG5vdCAndmFsaWRhdGUnKSB7XG4gICAgQHJldHVybiBfc3UtY2FsYy1zcGFuKCRndXR0ZXJzLCAkY29sdW1ucywgJGd1dHRlcnMsIC0xLCAkY29udGFpbmVyLXNwcmVhZCwgbm90ICd2YWxpZGF0ZScpO1xuICB9XG5cbiAgJGNvbnRhaW5lcjogX3N1LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsICRjb250YWluZXItc3ByZWFkKTtcbiAgQHJldHVybiBwZXJjZW50YWdlKCRndXR0ZXJzIC8gJGNvbnRhaW5lcik7XG59XG5cblxuXG4vLyBTdSBTbGljZVxuLy8gLS0tLS0tLS1cbi8vLyBSZXR1cm5zIGEgbGlzdCBvZiBjb2x1bW5zXG4vLy8gYmFzZWQgb24gYSBnaXZlbiBzcGFuL2xvY2F0aW9uIHNsaWNlIG9mIHRoZSBncmlkIOKAk1xuLy8vIGEgbG93LWxldmVsIHZlcnNpb24gb2YgYHN1c3ktc2xpY2VgLFxuLy8vIHdpdGggYWxsIG9mIHRoZSBsb2dpYyBhbmQgbm9uZSBvZiB0aGUgc3ludGF4IHN1Z2FyLlxuLy8vXG4vLy8gQGdyb3VwIHN1LW1hdGhcbi8vLyBAc2VlIHN1c3ktc2xpY2Vcbi8vL1xuLy8vIEBwYXJhbSB7bnVtYmVyfSAkc3BhbiAtXG4vLy8gICBOdW1iZXIgb2YgZ3JpZCBjb2x1bW5zIHRvIHNwYW5cbi8vLyBAcGFyYW0ge2xpc3R9ICRjb2x1bW5zIC1cbi8vLyAgIExpc3Qgb2YgY29sdW1ucyBpbiB0aGUgZ3JpZFxuLy8vIEBwYXJhbSB7bnVtYmVyfSAkbG9jYXRpb24gWzFdIC1cbi8vLyAgIFN0YXJ0aW5nIGluZGV4IG9mIGEgc3BhbiBpbiB0aGUgbGlzdCBvZiBjb2x1bW5zXG4vLy8gQHBhcmFtIHtib29sfSAkdmFsaWRhdGUgW3RydWVdIC1cbi8vLyAgIENoZWNrIHRoYXQgYXJndW1lbnRzIGFyZSB2YWxpZCBiZWZvcmUgcHJvY2VlZGluZ1xuLy8vXG4vLy8gQHJldHVybiB7bGlzdH0gLVxuLy8vICAgU3Vic2V0IGxpc3Qgb2YgZ3JpZCBjb2x1bW5zLCBiYXNlZCBvbiBzcGFuIGFuZCBsb2NhdGlvblxuQGZ1bmN0aW9uIHN1LXNsaWNlKFxuICAkc3BhbixcbiAgJGNvbHVtbnMsXG4gICRsb2NhdGlvbjogMSxcbiAgJHZhbGlkYXRlOiB0cnVlXG4pIHtcbiAgQGlmICR2YWxpZGF0ZSB7XG4gICAgJGNvbHVtbnM6IHN1LXZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAgICRsb2NhdGlvbjogc3UtdmFsaWQtbG9jYXRpb24oJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xuICB9XG5cbiAgJGZsb29yOiBmbG9vcigkc3Bhbik7XG4gICRzdWItY29sdW1uczogKCk7XG5cbiAgQGZvciAkaSBmcm9tICRsb2NhdGlvbiB0byAoJGxvY2F0aW9uICsgJGZsb29yKSB7XG4gICAgJHN1Yi1jb2x1bW5zOiBhcHBlbmQoJHN1Yi1jb2x1bW5zLCBudGgoJGNvbHVtbnMsICRpKSk7XG4gIH1cblxuICBAaWYgJGZsb29yICE9ICRzcGFuIHtcbiAgICAkcmVtYWluZGVyOiAkc3BhbiAtICRmbG9vcjtcbiAgICAkY29sdW1uOiAkbG9jYXRpb24gKyAkZmxvb3I7XG4gICAgJHN1Yi1jb2x1bW5zOiBhcHBlbmQoJHN1Yi1jb2x1bW5zLCBudGgoJGNvbHVtbnMsICRjb2x1bW4pICogJHJlbWFpbmRlcik7XG4gIH1cblxuICBAcmV0dXJuICRzdWItY29sdW1ucztcbn1cblxuXG5cbi8vIFN1IFN1bVxuLy8gLS0tLS0tXG4vLy8gR2V0IHRoZSB0b3RhbCBzdW0gb2YgY29sdW1uLXVuaXRzIGluIGEgbGF5b3V0LlxuLy8vXG4vLy8gQGdyb3VwIHN1LW1hdGhcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7bGlzdH0gJGNvbHVtbnMgLVxuLy8vICAgTGlzdCBvZiBjb2x1bW5zIGluIHRoZSBncmlkXG4vLy8gQHBhcmFtIHtudW1iZXJ9ICRndXR0ZXJzIC1cbi8vLyAgIFdpZHRoIG9mIGEgZ3V0dGVyIGluIGNvbHVtbi1jb21wYXJhYmxlIHVuaXRzXG4vLy8gQHBhcmFtIHswIHwgMSB8IC0xfSAkc3ByZWFkIC1cbi8vLyAgIE51bWJlciBvZiBndXR0ZXJzIHNwYW5uZWQsXG4vLy8gICByZWxhdGl2ZSB0byBgY29sdW1uc2AgY291bnRcbi8vLyBAcGFyYW0ge2Jvb2x9ICR2YWxpZGF0ZSBbdHJ1ZV0gLVxuLy8vICAgQ2hlY2sgdGhhdCBhcmd1bWVudHMgYXJlIHZhbGlkIGJlZm9yZSBwcm9jZWVkaW5nXG4vLy9cbi8vLyBAcmV0dXJuIHtudW1iZXJ9IC1cbi8vLyAgIFRvdGFsIHN1bSBvZiBjb2x1bW4tdW5pdHMgaW4gYSBncmlkXG5AZnVuY3Rpb24gX3N1LXN1bShcbiAgJGNvbHVtbnMsXG4gICRndXR0ZXJzLFxuICAkc3ByZWFkLFxuICAkdmFsaWRhdGU6IHRydWVcbikge1xuICBAaWYgJHZhbGlkYXRlIHtcbiAgICAkY29sdW1uczogc3UtdmFsaWQtc3BhbigkY29sdW1ucyk7XG4gICAgJGd1dHRlcnM6IHN1LXZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuICAgICRzcHJlYWQ6IHN1LXZhbGlkLXNwcmVhZCgkc3ByZWFkKTtcbiAgfVxuXG4gIC8vIENhbGN1bGF0ZSBjb2x1bW4tc3VtXG4gICRjb2x1bW4tc3VtOiAwO1xuICBAZWFjaCAkY29sdW1uIGluICRjb2x1bW5zIHtcbiAgICAkY29sdW1uLXN1bTogJGNvbHVtbi1zdW0gKyAkY29sdW1uO1xuICB9XG5cbiAgJGd1dHRlci1zdW06IChjZWlsKGxlbmd0aCgkY29sdW1ucykpICsgJHNwcmVhZCkgKiAkZ3V0dGVycztcbiAgJHRvdGFsOiBpZigoJGd1dHRlci1zdW0gPiAwKSwgJGNvbHVtbi1zdW0gKyAkZ3V0dGVyLXN1bSwgJGNvbHVtbi1zdW0pO1xuXG4gIEByZXR1cm4gJHRvdGFsO1xufVxuXG5cblxuLy8gU3UgQ2FsY1xuLy8gLS0tLS0tLVxuLy8vIFJldHVybiBhIHVzYWJsZSBzcGFuIHdpZHRoIGFzIGEgYGNhbGMoKWAgZnVuY3Rpb24sXG4vLy8gaW4gb3JkZXIgdG8gY3JlYXRlIG1peGVkLXVuaXQgZ3JpZHMuXG4vLy9cbi8vLyBAZ3JvdXAgc3UtbWF0aFxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtudW1iZXIgfCBsaXN0fSAkc3BhbiAtXG4vLy8gICBQcmUtc2xpY2VkIGxpc3Qgb2YgZ3JpZCBjb2x1bW5zIHRvIHNwYW5cbi8vLyBAcGFyYW0ge2xpc3R9ICRjb2x1bW5zIC1cbi8vLyAgIExpc3Qgb2YgY29sdW1ucyBhdmFpbGFibGVcbi8vLyBAcGFyYW0ge251bWJlcn0gJGd1dHRlcnMgLVxuLy8vICAgV2lkdGggb2YgYSBndXR0ZXIgaW4gY29sdW1uLWNvbXBhcmFibGUgdW5pdHNcbi8vLyBAcGFyYW0gezAgfCAxIHwgLTF9ICRzcHJlYWQgLVxuLy8vICAgTnVtYmVyIG9mIGd1dHRlcnMgc3Bhbm5lZCxcbi8vLyAgIHJlbGF0aXZlIHRvIGBzcGFuYCBjb3VudFxuLy8vIEBwYXJhbSB7MCB8IDEgfCAtMX0gJGNvbnRhaW5lci1zcHJlYWQgWyRzcHJlYWRdIC1cbi8vLyAgIE51bWJlciBvZiBndXR0ZXJzIHNwYW5uZWQsXG4vLy8gICByZWxhdGl2ZSB0byBgY29sdW1uc2AgY291bnRcbi8vLyBAcGFyYW0ge2Jvb2x9ICR2YWxpZGF0ZSBbdHJ1ZV0gLVxuLy8vICAgQ2hlY2sgdGhhdCBhcmd1bWVudHMgYXJlIHZhbGlkIGJlZm9yZSBwcm9jZWVkaW5nXG4vLy9cbi8vLyBAcmV0dXJuIHtsZW5ndGh9IC1cbi8vLyAgIFJlbGF0aXZlIG9yIHN0YXRpYyBsZW5ndGggb2YgYSBzcGFuIG9uIHRoZSBncmlkXG5AZnVuY3Rpb24gX3N1LWNhbGMtc3BhbihcbiAgJHNwYW4sXG4gICRjb2x1bW5zLFxuICAkZ3V0dGVycyxcbiAgJHNwcmVhZCxcbiAgJGNvbnRhaW5lci1zcHJlYWQ6ICRzcHJlYWQsXG4gICR2YWxpZGF0ZTogdHJ1ZVxuKSB7XG4gIEBpZiAkdmFsaWRhdGUge1xuICAgICRzcGFuOiBzdS12YWxpZC1zcGFuKCRzcGFuKTtcbiAgICAkY29sdW1uczogc3UtdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICAgJGd1dHRlcnM6IHN1LXZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuICAgICRzcHJlYWQ6IHN1LXZhbGlkLXNwcmVhZCgkc3ByZWFkKTtcbiAgICAkY29udGFpbmVyLXNwcmVhZDogc3UtdmFsaWQtc3ByZWFkKCRjb250YWluZXItc3ByZWFkKTtcbiAgfVxuXG4gIC8vIFNwYW4gYW5kIGNvbnRleHRcbiAgJHNwYW46IF9zdS1jYWxjLXN1bSgkc3BhbiwgJGd1dHRlcnMsICRzcHJlYWQsIG5vdCAndmFsaWRhdGUnKTtcbiAgJGNvbnRleHQ6IF9zdS1jYWxjLXN1bSgkY29sdW1ucywgJGd1dHRlcnMsICRjb250YWluZXItc3ByZWFkLCBub3QgJ3ZhbGlkYXRlJyk7XG5cbiAgLy8gRml4ZWQgYW5kIGZsdWlkXG4gICRmaXhlZC1zcGFuOiBtYXAtZ2V0KCRzcGFuLCAnZml4ZWQnKTtcbiAgJGZsdWlkLXNwYW46IG1hcC1nZXQoJHNwYW4sICdmbHVpZCcpO1xuICAkZml4ZWQtY29udGV4dDogbWFwLWdldCgkY29udGV4dCwgJ2ZpeGVkJyk7XG4gICRmbHVpZC1jb250ZXh0OiBtYXAtZ2V0KCRjb250ZXh0LCAnZmx1aWQnKTtcblxuICAkY2FsYzogJyN7JGZpeGVkLXNwYW59JztcbiAgJGZsdWlkLWNhbGM6ICcoMTAwJSAtICN7JGZpeGVkLWNvbnRleHR9KSc7XG5cbiAgLy8gRmx1aWQtdmFsdWVzXG4gIEBpZiAobm90ICRmbHVpZC1zcGFuKSB7XG4gICAgJGZsdWlkLWNhbGM6IG51bGw7XG4gIH0gQGVsc2UgaWYgKCRmbHVpZC1zcGFuICE9ICRmbHVpZC1jb250ZXh0KSB7XG4gICAgJGZsdWlkLXNwYW46ICcqICN7JGZsdWlkLXNwYW59JztcbiAgICAkZmx1aWQtY29udGV4dDogaWYoJGZsdWlkLWNvbnRleHQsICcvICN7JGZsdWlkLWNvbnRleHR9JywgJycpO1xuICAgICRmbHVpZC1jYWxjOiAnKCN7JGZsdWlkLWNhbGMgJGZsdWlkLWNvbnRleHQgJGZsdWlkLXNwYW59KSc7XG4gIH1cblxuICBAaWYgJGZsdWlkLWNhbGMge1xuICAgICRjYWxjOiBpZigoJGNhbGMgIT0gJycpLCAnI3skY2FsY30gKyAnLCAnJyk7XG4gICAgJGNhbGM6ICcjeyRjYWxjICsgJGZsdWlkLWNhbGN9JztcbiAgfVxuXG4gIEByZXR1cm4gY2FsYygje3VucXVvdGUoJGNhbGMpfSk7XG59XG5cblxuXG4vLyBTdSBDYWxjLVN1bVxuLy8gLS0tLS0tLS0tLS1cbi8vLyBHZXQgdGhlIHRvdGFsIHN1bSBvZiBmaXhlZCBhbmQgZmx1aWQgY29sdW1uLXVuaXRzXG4vLy8gZm9yIGNyZWF0aW5nIGEgbWl4ZWQtdW5pdCBsYXlvdXQgd2l0aCBgY2FsYygpYCB2YWx1ZXMuXG4vLy9cbi8vLyBAZ3JvdXAgc3UtbWF0aFxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtsaXN0fSAkY29sdW1ucyAtXG4vLy8gICBMaXN0IG9mIGNvbHVtbnMgYXZhaWxhYmxlXG4vLy8gQHBhcmFtIHtudW1iZXJ9ICRndXR0ZXJzIC1cbi8vLyAgIFdpZHRoIG9mIGEgZ3V0dGVyIGluIGNvbHVtbi1jb21wYXJhYmxlIHVuaXRzXG4vLy8gQHBhcmFtIHswIHwgMSB8IC0xfSAkc3ByZWFkIC1cbi8vLyAgIE51bWJlciBvZiBndXR0ZXJzIHNwYW5uZWQsXG4vLy8gICByZWxhdGl2ZSB0byBgc3BhbmAgY291bnRcbi8vLyBAcGFyYW0ge2Jvb2x9ICR2YWxpZGF0ZSBbdHJ1ZV0gLVxuLy8vICAgQ2hlY2sgdGhhdCBhcmd1bWVudHMgYXJlIHZhbGlkIGJlZm9yZSBwcm9jZWVkaW5nXG4vLy9cbi8vLyBAcmV0dXJuIHttYXB9IC1cbi8vLyAgIE1hcCB3aXRoIGBmaXhlZGAgYW5kIGBmbHVpZGAga2V5c1xuLy8vICAgY29udGFpbmluZyB0aGUgcHJvcGVyIG1hdGggYXMgc3RyaW5nc1xuQGZ1bmN0aW9uIF9zdS1jYWxjLXN1bShcbiAgJGNvbHVtbnMsXG4gICRndXR0ZXJzLFxuICAkc3ByZWFkLFxuICAkdmFsaWRhdGU6IHRydWVcbikge1xuICBAaWYgJHZhbGlkYXRlIHtcbiAgICAkY29sdW1uczogc3UtdmFsaWQtc3BhbigkY29sdW1ucyk7XG4gICAgJGd1dHRlcnM6IHN1LXZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuICAgICRzcHJlYWQ6IHN1LXZhbGlkLXNwcmVhZCgkc3ByZWFkKTtcbiAgfVxuXG4gICRmbHVpZDogMDtcbiAgJGZpeGVkOiAoKTtcbiAgJGNhbGM6IG51bGw7XG5cbiAgLy8gR3V0dGVyc1xuICAkZ3V0dGVyczogICRndXR0ZXJzICogKGxlbmd0aCgkY29sdW1ucykgKyAkc3ByZWFkKTtcblxuICAvLyBDb2x1bW5zXG4gIEBlYWNoICRjb2wgaW4gYXBwZW5kKCRjb2x1bW5zLCAkZ3V0dGVycykge1xuICAgIEBpZiB1bml0bGVzcygkY29sKSB7XG4gICAgICAkZmx1aWQ6ICRmbHVpZCArICRjb2w7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkZml4ZWQ6IF9zdS1tYXAtYWRkLXVuaXRzKCRmaXhlZCwgJGNvbCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29tcGlsZSBGaXhlZCBVbml0c1xuICBAZWFjaCAkdW5pdCwgJHRvdGFsIGluICRmaXhlZCB7XG4gICAgQGlmICgkdG90YWwgIT0gKDAgKiAkdG90YWwpKSB7XG4gICAgICAkY2FsYzogaWYoJGNhbGMsICcjeyRjYWxjfSArICN7JHRvdGFsfScsICcjeyR0b3RhbH0nKTtcbiAgICB9XG4gIH1cblxuICAvLyBDYWxjIG51bGwgb3Igc3RyaW5nXG4gIEBpZiAkY2FsYyB7XG4gICAgJGNhbGM6IGlmKHN0ci1pbmRleCgkY2FsYywgJysnKSwgJygjeyRjYWxjfSknLCAnI3skY2FsY30nKTtcbiAgfVxuXG4gIC8vIEZsdWlkIDAgPT4gbnVsbFxuICAkZmx1aWQ6IGlmKCgkZmx1aWQgPT0gMCksIG51bGwsICRmbHVpZCk7XG5cblxuICAvLyBSZXR1cm4gbWFwXG4gICRyZXR1cm46IChcbiAgICAnZml4ZWQnOiAkY2FsYyxcbiAgICAnZmx1aWQnOiAkZmx1aWQsXG4gICk7XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG5cblxuLy8gTmVlZHMgQ2FsY1xuLy8gLS0tLS0tLS0tLVxuLy8vIENoZWNrIGlmIGBjYWxjKClgIHdpbGwgYmUgbmVlZGVkIGluIGRlZmluaW5nIGEgc3Bhbixcbi8vLyBpZiB0aGUgbmVjZXNzYXJ5IHVuaXRzIGluIGEgZ3JpZCBhcmUgbm90IGNvbXBhcmFibGUuXG4vLy9cbi8vLyBAZ3JvdXAgc3UtbWF0aFxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtsaXN0fSAkc3BhbiAtXG4vLy8gICBTbGljZSBvZiBjb2x1bW5zIHRvIHNwYW5cbi8vLyBAcGFyYW0ge2xpc3R9ICRjb2x1bW5zIC1cbi8vLyAgIExpc3Qgb2YgYXZhaWxhYmxlIGNvbHVtbnMgaW4gdGhlIGdyaWRcbi8vLyBAcGFyYW0ge251bWJlcn0gJGd1dHRlcnMgLVxuLy8vICAgV2lkdGggb2YgYSBndXR0ZXJcbi8vLyBAcGFyYW0gezAgfCAxIHwgLTF9ICRzcHJlYWQgLVxuLy8vICAgTnVtYmVyIG9mIGd1dHRlcnMgc3Bhbm5lZCxcbi8vLyAgIHJlbGF0aXZlIHRvIGBzcGFuYCBjb3VudFxuLy8vIEBwYXJhbSB7Ym9vbH0gJHZhbGlkYXRlIFt0cnVlXSAtXG4vLy8gICBDaGVjayB0aGF0IGFyZ3VtZW50cyBhcmUgdmFsaWQgYmVmb3JlIHByb2NlZWRpbmdcbi8vL1xuLy8vIEByZXR1cm4ge2Jvb2x9IC1cbi8vLyAgIGBUcnVlYCB3aGVuIHVuaXRzIGRvIG5vdCBtYXRjaCwgYW5kIGBjYWxjKClgIHdpbGwgYmUgcmVxdWlyZWRcbkBmdW5jdGlvbiBfc3UtbmVlZHMtY2FsYy1vdXRwdXQoXG4gICRzcGFuLFxuICAkY29sdW1ucyxcbiAgJGd1dHRlcnMsXG4gICRzcHJlYWQsXG4gICR2YWxpZGF0ZTogdHJ1ZVxuKSB7XG4gIEBpZiAkdmFsaWRhdGUge1xuICAgICRzcGFuOiBzdS12YWxpZC1zcGFuKCRzcGFuKTtcbiAgICAkY29sdW1uczogc3UtdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICAgJGd1dHRlcnM6IHN1LXZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuICB9XG5cbiAgJGhhcy1ndXR0ZXI6IGlmKChsZW5ndGgoJHNwYW4pID4gMSkgb3IgKCRzcHJlYWQgPj0gMCksIHRydWUsIGZhbHNlKTtcbiAgJGNoZWNrOiBpZigkaGFzLWd1dHRlciwgYXBwZW5kKCRzcGFuLCAkZ3V0dGVycyksICRzcGFuKTtcbiAgJHNhZmUtc3BhbjogX3N1LWlzLWNvbXBhcmFibGUoJGNoZWNrLi4uKTtcblxuICBAaWYgKCRzYWZlLXNwYW4gPT0gJ3N0YXRpYycpIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9IEBlbHNlIGlmIChub3QgJHNhZmUtc3Bhbikge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gICRzYWZlLWZsdWlkOiBfc3UtaXMtY29tcGFyYWJsZSgkZ3V0dGVycywgJGNvbHVtbnMuLi4pO1xuXG4gIEByZXR1cm4gbm90ICRzYWZlLWZsdWlkO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==*/