.p-contents {
  height: calc(100vh - 80px);
  overflow: hidden;
}
@media (min-width: 48em) {
  .p-contents {
    height: auto;
  }
}

.p-contents__container {
  padding: 20px 10px 50px;
}
@media (min-width: 48em) {
  .p-contents__container {
    width: 1100px;
    padding: 100px 0;
    margin: 0 auto;
  }
}

.p-contents__images {
  position: relative;
}

.p-contents__images img {
  width: 100%;
}

.p-contents__img02,
.p-contents__obj01,
.p-contents__obj02 {
  position: absolute;
  top: 0;
  left: 0;
  opacity: 0;
}

.p-contents__img02 {
  transform: translate3d(0, 20px, 0);
}

.p-contents.is-active .p-contents__img02 {
  opacity: 1;
  transition: opacity 2s cubic-bezier(0.165, 0.84, 0.44, 1), transform 2s cubic-bezier(0.165, 0.84, 0.44, 1);
  transform: translate3d(0, 0, 0);
}

.p-contents__obj01 {
  -webkit-animation: float 2s linear alternate infinite;
          animation: float 2s linear alternate infinite;
}

.p-contents__obj02 {
  animation: float 2s linear alternate-reverse infinite;
}

.p-contents.is-active .p-contents__obj01,
.p-contents.is-active .p-contents__obj02 {
  opacity: 1;
  transition: opacity 2.5s cubic-bezier(0.165, 0.84, 0.44, 1);
  transition-delay: 1.6s;
}

.p-contents__lede {
  margin-top: 30px;
  opacity: 0;
  transform: translate3d(0, 20px, 0);
}
@media (min-width: 48em) {
  .p-contents__lede {
    margin-top: 60px;
    text-align: center;
  }
}

.p-contents.is-active .p-contents__lede {
  opacity: 1;
  transition: opacity 2s cubic-bezier(0.165, 0.84, 0.44, 1), transform 2s cubic-bezier(0.165, 0.84, 0.44, 1);
  transition-delay: 2.7s;
  transform: translate3d(0, 0, 0);
}

.p-contents__lede img {
  width: 100%;
}
@media (min-width: 48em) {
  .p-contents__lede img {
    width: 1000px;
  }
}

@-webkit-keyframes float {
  0% {
    transform: translate3d(0, 0, 0);
  }
  100% {
    transform: translate3d(0, 10px, 0);
    @media (min-width: 48em) {
      transform: translate3d(0, 15px, 0);
    }
  }
}

@keyframes float {
  0% {
    transform: translate3d(0, 0, 0);
  }
  100% {
    transform: translate3d(0, 10px, 0);
    @media (min-width: 48em) {
      transform: translate3d(0, 15px, 0);
    }
  }
}
.p-opening {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 100;
  pointer-events: none;
  background-color: #fff;
  opacity: 0;
  transition: opacity 1.3s cubic-bezier(0.165, 0.84, 0.44, 1);
}
.p-opening.is-active {
  pointer-events: auto;
  opacity: 1;
}

.p-opening__container {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  padding: 0 20px;
}

.p-opening__catch img {
  width: calc(100% - 50px);
}
@media (min-width: 48em) {
  .p-opening__catch img {
    width: calc(100% - 100px);
  }
}

.p-opening__catch02 {
  margin-top: 10px;
  text-align: right;
}
@media (min-width: 48em) {
  .p-opening__catch02 {
    margin-top: 40px;
  }
}

.p-opening.is-active .p-opening__catch01,
.p-opening.is-active .p-opening__catch02 {
  opacity: 0;
  transform: translate3d(-100%, 0, 0) skewX(-10deg);
  -webkit-animation: text 0.45s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
          animation: text 0.45s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
  -webkit-animation-delay: 0.4s;
          animation-delay: 0.4s;
}

.p-opening.is-active .p-opening__catch02 {
  -webkit-animation-delay: 1.5s;
          animation-delay: 1.5s;
}

@-webkit-keyframes text {
  0% {
    opacity: 0;
    transform: translate3d(-100%, 0, 0) skewX(-10deg);
  }
  50% {
    opacity: 1;
    transform: translate3d(5%, 0, 0) skewX(-20deg);
  }
  100% {
    opacity: 1;
    transform: translate3d(0, 0, 0) skewX(0deg);
  }
}

@keyframes text {
  0% {
    opacity: 0;
    transform: translate3d(-100%, 0, 0) skewX(-10deg);
  }
  50% {
    opacity: 1;
    transform: translate3d(5%, 0, 0) skewX(-20deg);
  }
  100% {
    opacity: 1;
    transform: translate3d(0, 0, 0) skewX(0deg);
  }
}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zdHlsZXMvcGFnZXMvaW5kZXgvX2NvbnRlbnRzLnNjc3MiLCJhc3NldHMvc3R5bGVzL3BhZ2VzL2luZGV4L3N0eWxlLmNzcyIsIm5vZGVfbW9kdWxlcy9zYXNzLW1xL19tcS5zY3NzIiwiYXNzZXRzL3N0eWxlcy9wYWdlcy9pbmRleC9fb3BlbmluZy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsMEJBQUE7RUFDQSxnQkFBQTtBQ0NGO0FDOE9RO0VGalBSO0lBS0ksWUFBQTtFQ0VGO0FBQ0Y7O0FEQ0E7RUFDRSx1QkFBQTtBQ0VGO0FDcU9RO0VGeE9SO0lBSUksYUFBQTtJQUNBLGdCQUFBO0lBQ0EsY0FBQTtFQ0dGO0FBQ0Y7O0FEQUE7RUFDRSxrQkFBQTtBQ0dGOztBREFBO0VBQ0UsV0FBQTtBQ0dGOztBRElBOzs7RUFHRSxrQkFBQTtFQUNBLE1BQUE7RUFDQSxPQUFBO0VBQ0EsVUFBQTtBQ0RGOztBRElBO0VBQ0Usa0NBQUE7QUNERjs7QURJQTtFQUNFLFVBQUE7RUFDQSwwR0FBQTtFQUNBLCtCQUFBO0FDREY7O0FESUE7RUFDRSxxREFBQTtVQUFBLDZDQUFBO0FDREY7O0FESUE7RUFDRSxxREFBQTtBQ0RGOztBRElBOztFQUVFLFVBQUE7RUFDQSwyREFBQTtFQUNBLHNCQUFBO0FDREY7O0FESUE7RUFDRSxnQkFBQTtFQUNBLFVBQUE7RUFDQSxrQ0FBQTtBQ0RGO0FDOEtRO0VGaExSO0lBTUksZ0JBQUE7SUFDQSxrQkFBQTtFQ0FGO0FBQ0Y7O0FER0E7RUFDRSxVQUFBO0VBQ0EsMEdBQUE7RUFDQSxzQkFBQTtFQUNBLCtCQUFBO0FDQUY7O0FER0E7RUFDRSxXQUFBO0FDQUY7QUM2SlE7RUY5SlI7SUFJSSxhQUFBO0VDQ0Y7QUFDRjs7QURFQTtFQUNFO0lBQ0UsK0JBQUE7RUNDRjtFREVBO0lBQ0Usa0NBQUE7SUVnSkk7TUY3SUYsa0NBQUE7SUNERjtFQUNGO0FBQ0Y7O0FEVkE7RUFDRTtJQUNFLCtCQUFBO0VDQ0Y7RURFQTtJQUNFLGtDQUFBO0lFZ0pJO01GN0lGLGtDQUFBO0lDREY7RUFDRjtBQUNGO0FFckdBO0VBQ0UsZUFBQTtFQUNBLE1BQUE7RUFDQSxRQUFBO0VBQ0EsU0FBQTtFQUNBLE9BQUE7RUFDQSxZQUFBO0VBQ0Esb0JBQUE7RUFDQSxzQkFBQTtFQUNBLFVBQUE7RUFDQSwyREFBQTtBRnVHRjtBRXJHRTtFQUNFLG9CQUFBO0VBQ0EsVUFBQTtBRnVHSjs7QUVuR0E7RUFDRSxhQUFBO0VBQ0EsbUJBQUE7RUFDQSx1QkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZUFBQTtBRnNHRjs7QUUvRkE7RUFDRSx3QkFBQTtBRmtHRjtBQytHUTtFQ2xOUjtJQUlJLHlCQUFBO0VGbUdGO0FBQ0Y7O0FFNUZBO0VBQ0UsZ0JBQUE7RUFDQSxpQkFBQTtBRitGRjtBQ3FHUTtFQ3RNUjtJQUtJLGdCQUFBO0VGZ0dGO0FBQ0Y7O0FFN0ZBOztFQUVFLFVBQUE7RUFDQSxpREFBQTtFQUNBLDhFQUFBO1VBQUEsc0VBQUE7RUFDQSw2QkFBQTtVQUFBLHFCQUFBO0FGZ0dGOztBRTdGQTtFQUNFLDZCQUFBO1VBQUEscUJBQUE7QUZnR0Y7O0FFN0ZBO0VBQ0U7SUFDRSxVQUFBO0lBQ0EsaURBQUE7RUZnR0Y7RUU3RkE7SUFDRSxVQUFBO0lBQ0EsOENBQUE7RUYrRkY7RUU1RkE7SUFDRSxVQUFBO0lBQ0EsMkNBQUE7RUY4RkY7QUFDRjs7QUU1R0E7RUFDRTtJQUNFLFVBQUE7SUFDQSxpREFBQTtFRmdHRjtFRTdGQTtJQUNFLFVBQUE7SUFDQSw4Q0FBQTtFRitGRjtFRTVGQTtJQUNFLFVBQUE7SUFDQSwyQ0FBQTtFRjhGRjtBQUNGIiwiZmlsZSI6ImFzc2V0cy9zdHlsZXMvcGFnZXMvaW5kZXgvc3R5bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnAtY29udGVudHMge1xuICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA4MHB4KTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICBAaW5jbHVkZSBtcShtZCkge1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxufVxuXG4ucC1jb250ZW50c19fY29udGFpbmVyIHtcbiAgcGFkZGluZzogMjBweCAxMHB4IDUwcHg7XG5cbiAgQGluY2x1ZGUgbXEobWQpIHtcbiAgICB3aWR0aDogMTEwMHB4O1xuICAgIHBhZGRpbmc6IDEwMHB4IDA7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gIH1cbn1cblxuLnAtY29udGVudHNfX2ltYWdlcyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnAtY29udGVudHNfX2ltYWdlcyBpbWcge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLnAtY29udGVudHNfX2ltZzAxIHtcbiAgLy9cbn1cblxuLnAtY29udGVudHNfX2ltZzAyLFxuLnAtY29udGVudHNfX29iajAxLFxuLnAtY29udGVudHNfX29iajAyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIG9wYWNpdHk6IDA7XG59XG5cbi5wLWNvbnRlbnRzX19pbWcwMiB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMjBweCwgMCk7XG59XG5cbi5wLWNvbnRlbnRzLmlzLWFjdGl2ZSAucC1jb250ZW50c19faW1nMDIge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDJzICRlYXNlLW91dC1xdWFydCwgdHJhbnNmb3JtIDJzICRlYXNlLW91dC1xdWFydDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbn1cblxuLnAtY29udGVudHNfX29iajAxIHtcbiAgYW5pbWF0aW9uOiBmbG9hdCAycyBsaW5lYXIgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuXG4ucC1jb250ZW50c19fb2JqMDIge1xuICBhbmltYXRpb246IGZsb2F0IDJzIGxpbmVhciBhbHRlcm5hdGUtcmV2ZXJzZSBpbmZpbml0ZTtcbn1cblxuLnAtY29udGVudHMuaXMtYWN0aXZlIC5wLWNvbnRlbnRzX19vYmowMSxcbi5wLWNvbnRlbnRzLmlzLWFjdGl2ZSAucC1jb250ZW50c19fb2JqMDIge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDIuNXMgJGVhc2Utb3V0LXF1YXJ0O1xuICB0cmFuc2l0aW9uLWRlbGF5OiAxLjZzO1xufVxuXG4ucC1jb250ZW50c19fbGVkZSB7XG4gIG1hcmdpbi10b3A6IDMwcHg7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMjBweCwgMCk7XG5cbiAgQGluY2x1ZGUgbXEobWQpIHtcbiAgICBtYXJnaW4tdG9wOiA2MHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxufVxuXG4ucC1jb250ZW50cy5pcy1hY3RpdmUgLnAtY29udGVudHNfX2xlZGUge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDJzICRlYXNlLW91dC1xdWFydCwgdHJhbnNmb3JtIDJzICRlYXNlLW91dC1xdWFydDtcbiAgdHJhbnNpdGlvbi1kZWxheTogMi43cztcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbn1cblxuLnAtY29udGVudHNfX2xlZGUgaW1nIHtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgQGluY2x1ZGUgbXEobWQpIHtcbiAgICB3aWR0aDogMTAwMHB4O1xuICB9XG59XG5cbkBrZXlmcmFtZXMgZmxvYXQge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTBweCwgMCk7XG5cbiAgICBAaW5jbHVkZSBtcShtZCkge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxNXB4LCAwKTtcbiAgICB9XG4gIH1cbn1cbiIsIi5wLWNvbnRlbnRzIHtcbiAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gODBweCk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNDhlbSkge1xuICAucC1jb250ZW50cyB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbi5wLWNvbnRlbnRzX19jb250YWluZXIge1xuICBwYWRkaW5nOiAyMHB4IDEwcHggNTBweDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA0OGVtKSB7XG4gIC5wLWNvbnRlbnRzX19jb250YWluZXIge1xuICAgIHdpZHRoOiAxMTAwcHg7XG4gICAgcGFkZGluZzogMTAwcHggMDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgfVxufVxuXG4ucC1jb250ZW50c19faW1hZ2VzIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ucC1jb250ZW50c19faW1hZ2VzIGltZyB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ucC1jb250ZW50c19faW1nMDIsXG4ucC1jb250ZW50c19fb2JqMDEsXG4ucC1jb250ZW50c19fb2JqMDIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgb3BhY2l0eTogMDtcbn1cblxuLnAtY29udGVudHNfX2ltZzAyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAyMHB4LCAwKTtcbn1cblxuLnAtY29udGVudHMuaXMtYWN0aXZlIC5wLWNvbnRlbnRzX19pbWcwMiB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMnMgY3ViaWMtYmV6aWVyKDAuMTY1LCAwLjg0LCAwLjQ0LCAxKSwgdHJhbnNmb3JtIDJzIGN1YmljLWJlemllcigwLjE2NSwgMC44NCwgMC40NCwgMSk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG59XG5cbi5wLWNvbnRlbnRzX19vYmowMSB7XG4gIGFuaW1hdGlvbjogZmxvYXQgMnMgbGluZWFyIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cblxuLnAtY29udGVudHNfX29iajAyIHtcbiAgYW5pbWF0aW9uOiBmbG9hdCAycyBsaW5lYXIgYWx0ZXJuYXRlLXJldmVyc2UgaW5maW5pdGU7XG59XG5cbi5wLWNvbnRlbnRzLmlzLWFjdGl2ZSAucC1jb250ZW50c19fb2JqMDEsXG4ucC1jb250ZW50cy5pcy1hY3RpdmUgLnAtY29udGVudHNfX29iajAyIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAyLjVzIGN1YmljLWJlemllcigwLjE2NSwgMC44NCwgMC40NCwgMSk7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDEuNnM7XG59XG5cbi5wLWNvbnRlbnRzX19sZWRlIHtcbiAgbWFyZ2luLXRvcDogMzBweDtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAyMHB4LCAwKTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA0OGVtKSB7XG4gIC5wLWNvbnRlbnRzX19sZWRlIHtcbiAgICBtYXJnaW4tdG9wOiA2MHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxufVxuXG4ucC1jb250ZW50cy5pcy1hY3RpdmUgLnAtY29udGVudHNfX2xlZGUge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDJzIGN1YmljLWJlemllcigwLjE2NSwgMC44NCwgMC40NCwgMSksIHRyYW5zZm9ybSAycyBjdWJpYy1iZXppZXIoMC4xNjUsIDAuODQsIDAuNDQsIDEpO1xuICB0cmFuc2l0aW9uLWRlbGF5OiAyLjdzO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xufVxuXG4ucC1jb250ZW50c19fbGVkZSBpbWcge1xuICB3aWR0aDogMTAwJTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA0OGVtKSB7XG4gIC5wLWNvbnRlbnRzX19sZWRlIGltZyB7XG4gICAgd2lkdGg6IDEwMDBweDtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGZsb2F0IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxMHB4LCAwKTtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogNDhlbSkge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxNXB4LCAwKTtcbiAgICB9XG4gIH1cbn1cbi5wLW9wZW5pbmcge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMTAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAxLjNzIGN1YmljLWJlemllcigwLjE2NSwgMC44NCwgMC40NCwgMSk7XG59XG4ucC1vcGVuaW5nLmlzLWFjdGl2ZSB7XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICBvcGFjaXR5OiAxO1xufVxuXG4ucC1vcGVuaW5nX19jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgcGFkZGluZzogMCAyMHB4O1xufVxuXG4ucC1vcGVuaW5nX19jYXRjaCBpbWcge1xuICB3aWR0aDogY2FsYygxMDAlIC0gNTBweCk7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNDhlbSkge1xuICAucC1vcGVuaW5nX19jYXRjaCBpbWcge1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAxMDBweCk7XG4gIH1cbn1cblxuLnAtb3BlbmluZ19fY2F0Y2gwMiB7XG4gIG1hcmdpbi10b3A6IDEwcHg7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDQ4ZW0pIHtcbiAgLnAtb3BlbmluZ19fY2F0Y2gwMiB7XG4gICAgbWFyZ2luLXRvcDogNDBweDtcbiAgfVxufVxuXG4ucC1vcGVuaW5nLmlzLWFjdGl2ZSAucC1vcGVuaW5nX19jYXRjaDAxLFxuLnAtb3BlbmluZy5pcy1hY3RpdmUgLnAtb3BlbmluZ19fY2F0Y2gwMiB7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApIHNrZXdYKC0xMGRlZyk7XG4gIGFuaW1hdGlvbjogdGV4dCAwLjQ1cyBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyLCAxLjI3NSkgZm9yd2FyZHM7XG4gIGFuaW1hdGlvbi1kZWxheTogMC40cztcbn1cblxuLnAtb3BlbmluZy5pcy1hY3RpdmUgLnAtb3BlbmluZ19fY2F0Y2gwMiB7XG4gIGFuaW1hdGlvbi1kZWxheTogMS41cztcbn1cblxuQGtleWZyYW1lcyB0ZXh0IHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCkgc2tld1goLTEwZGVnKTtcbiAgfVxuICA1MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCg1JSwgMCwgMCkgc2tld1goLTIwZGVnKTtcbiAgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCkgc2tld1goMGRlZyk7XG4gIH1cbn0iLCJAY2hhcnNldCBcIlVURi04XCI7IC8vIEZpeGVzIGFuIGlzc3VlIHdoZXJlIFJ1YnkgbG9jYWxlIGlzIG5vdCBzZXQgcHJvcGVybHlcbiAgICAgICAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xL3B1bGwvMTBcblxuLy8vIEJhc2UgZm9udCBzaXplIG9uIHRoZSBgPGJvZHk+YCBlbGVtZW50XG4vLy9cbi8vLyBEbyBub3Qgb3ZlcnJpZGUgdGhpcyB2YWx1ZSwgb3IgdGhpbmdzIHdpbGwgYnJlYWtcbi8vL1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEvaXNzdWVzLzEyMlxuLy8vIEBkZXByZWNhdGVkIFRoaXMgc2V0dGluZyB3aWxsIGJlIHJlbW92ZWQgaW4gc2Fzcy1tcSB2Ni4wLjBcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAdHlwZSBOdW1iZXIgKHVuaXQpXG4kbXEtYmFzZS1mb250LXNpemU6IDE2cHggIWRlZmF1bHQ7XG5cbi8vLyBSZXNwb25zaXZlIG1vZGVcbi8vL1xuLy8vIFNldCB0byBgZmFsc2VgIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBicm93c2VycyB0aGF0IGRvIG5vdCBzdXBwb3J0IEBtZWRpYSBxdWVyaWVzLFxuLy8vIChJRSA8PSA4LCBGaXJlZm94IDw9IDMsIE9wZXJhIDw9IDkpXG4vLy9cbi8vLyBZb3UgY291bGQgY3JlYXRlIGEgc3R5bGVzaGVldCBzZXJ2ZWQgZXhjbHVzaXZlbHkgdG8gb2xkZXIgYnJvd3NlcnMsXG4vLy8gd2hlcmUgQG1lZGlhIHF1ZXJpZXMgYXJlIHJhc3Rlcml6ZWRcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLy8gb2xkLWllLnNjc3Ncbi8vLyAgJG1xLXJlc3BvbnNpdmU6IGZhbHNlO1xuLy8vICBAaW1wb3J0ICdtYWluJzsgLy8gQG1lZGlhIHF1ZXJpZXMgaW4gdGhpcyBmaWxlIHdpbGwgYmUgcmFzdGVyaXplZCB1cCB0byAkbXEtc3RhdGljLWJyZWFrcG9pbnRcbi8vLyAgICAgICAgICAgICAgICAgICAvLyBsYXJnZXIgYnJlYWtwb2ludHMgd2lsbCBiZSBpZ25vcmVkXG4vLy9cbi8vLyBAdHlwZSBCb29sZWFuXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNyZXNwb25zaXZlLW1vZGUtb2ZmIERpc2FibGVkIHJlc3BvbnNpdmUgbW9kZSBkb2N1bWVudGF0aW9uXG4kbXEtcmVzcG9uc2l2ZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEJyZWFrcG9pbnQgbGlzdFxuLy8vXG4vLy8gTmFtZSB5b3VyIGJyZWFrcG9pbnRzIGluIGEgd2F5IHRoYXQgY3JlYXRlcyBhIHViaXF1aXRvdXMgbGFuZ3VhZ2Vcbi8vLyBhY3Jvc3MgdGVhbSBtZW1iZXJzLiBJdCB3aWxsIGltcHJvdmUgY29tbXVuaWNhdGlvbiBiZXR3ZWVuXG4vLy8gc3Rha2Vob2xkZXJzLCBkZXNpZ25lcnMsIGRldmVsb3BlcnMsIGFuZCB0ZXN0ZXJzLlxuLy8vXG4vLy8gQHR5cGUgTWFwXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNzZWVpbmctdGhlLWN1cnJlbnRseS1hY3RpdmUtYnJlYWtwb2ludCBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4kbXEtYnJlYWtwb2ludHM6IChcbiAgICBtb2JpbGU6ICAzMjBweCxcbiAgICB0YWJsZXQ6ICA3NDBweCxcbiAgICBkZXNrdG9wOiA5ODBweCxcbiAgICB3aWRlOiAgICAxMzAwcHhcbikgIWRlZmF1bHQ7XG5cbi8vLyBTdGF0aWMgYnJlYWtwb2ludCAoZm9yIGZpeGVkLXdpZHRoIGxheW91dHMpXG4vLy9cbi8vLyBEZWZpbmUgdGhlIGJyZWFrcG9pbnQgZnJvbSAkbXEtYnJlYWtwb2ludHMgdGhhdCBzaG91bGRcbi8vLyBiZSB1c2VkIGFzIHRoZSB0YXJnZXQgd2lkdGggZm9yIHRoZSBmaXhlZC13aWR0aCBsYXlvdXRcbi8vLyAoaS5lLiB3aGVuICRtcS1yZXNwb25zaXZlIGlzIHNldCB0byAnZmFsc2UnKSBpbiBhIG9sZC1pZS5zY3NzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC8vIHRhYmxldC1vbmx5LnNjc3Ncbi8vLyAgLy9cbi8vLyAgLy8gSWdub3JlIGFsbCBzdHlsZXMgYWJvdmUgdGFibGV0IGJyZWFrcG9pbnQsXG4vLy8gIC8vIGFuZCBmaXggdGhlIHN0eWxlcyAoc3VjaCBhcyB0aGUgbGF5b3V0KSBhdCB0YWJsZXQgd2lkdGhcbi8vLyAgJG1xLXJlc3BvbnNpdmU6IGZhbHNlO1xuLy8vICAkbXEtc3RhdGljLWJyZWFrcG9pbnQ6IHRhYmxldDtcbi8vLyAgQGltcG9ydCAnbWFpbic7IC8vIEBtZWRpYSBxdWVyaWVzIGluIHRoaXMgZmlsZSB3aWxsIGJlIHJhc3Rlcml6ZWQgdXAgdG8gdGFibGV0XG4vLy8gICAgICAgICAgICAgICAgICAgLy8gbGFyZ2VyIGJyZWFrcG9pbnRzIHdpbGwgYmUgaWdub3JlZFxuLy8vXG4vLy8gQHR5cGUgU3RyaW5nXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNhZGRpbmctY3VzdG9tLWJyZWFrcG9pbnRzIEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1zdGF0aWMtYnJlYWtwb2ludDogZGVza3RvcCAhZGVmYXVsdDtcblxuLy8vIFNob3cgYnJlYWtwb2ludHMgaW4gdGhlIHRvcCByaWdodCBjb3JuZXJcbi8vL1xuLy8vIElmIHlvdSB3YW50IHRvIGRpc3BsYXkgdGhlIGN1cnJlbnRseSBhY3RpdmUgYnJlYWtwb2ludCBpbiB0aGUgdG9wXG4vLy8gcmlnaHQgY29ybmVyIG9mIHlvdXIgc2l0ZSBkdXJpbmcgZGV2ZWxvcG1lbnQsIGFkZCB0aGUgYnJlYWtwb2ludHNcbi8vLyB0byB0aGlzIGxpc3QsIG9yZGVyZWQgYnkgd2lkdGguIEZvciBleGFtcGxlOiAobW9iaWxlLCB0YWJsZXQsIGRlc2t0b3ApLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgJG1xLXNob3ctYnJlYWtwb2ludHM6IChtb2JpbGUsIHRhYmxldCwgZGVza3RvcCk7XG4vLy8gICBAaW1wb3J0ICdwYXRoL3RvL21xJztcbi8vL1xuLy8vIEB0eXBlIG1hcFxuJG1xLXNob3ctYnJlYWtwb2ludHM6ICgpICFkZWZhdWx0O1xuXG4vLy8gQ3VzdG9taXplIHRoZSBtZWRpYSB0eXBlIChmb3IgZXhhbXBsZTogYEBtZWRpYSBzY3JlZW5gIG9yIGBAbWVkaWEgcHJpbnRgKVxuLy8vIEJ5IGRlZmF1bHQgc2Fzcy1tcSB1c2VzIGFuIFwiYWxsXCIgbWVkaWEgdHlwZSAoYEBtZWRpYSBhbGwgYW5kIOKApmApXG4vLy9cbi8vLyBAdHlwZSBTdHJpbmdcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI2NoYW5naW5nLW1lZGlhLXR5cGUgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuJG1xLW1lZGlhLXR5cGU6IGFsbCAhZGVmYXVsdDtcblxuLy8vIENvbnZlcnQgcGl4ZWxzIHRvIGVtc1xuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRweCAtIHZhbHVlIHRvIGNvbnZlcnRcbi8vLyBAaWdub3JlIEBwYXJhbSB7TnVtYmVyfSAkYmFzZS1mb250LXNpemUgWyRtcS1iYXNlLWZvbnQtc2l6ZV0gLSBgPGJvZHk+YCBmb250IHNpemUgKGRlcHJlY2F0ZWQpXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICRmb250LXNpemUtaW4tZW1zOiBtcS1weDJlbSgxNnB4KTtcbi8vLyAgcCB7IGZvbnQtc2l6ZTogbXEtcHgyZW0oMTZweCk7IH1cbi8vL1xuLy8vIEByZXF1aXJlcyAkbXEtYmFzZS1mb250LXNpemVcbi8vLyBAcmV0dXJucyB7TnVtYmVyfVxuQGZ1bmN0aW9uIG1xLXB4MmVtKCRweCwgJGJhc2UtZm9udC1zaXplOiAkbXEtYmFzZS1mb250LXNpemUpIHtcbiAgICBAaWYgKCRtcS1iYXNlLWZvbnQtc2l6ZSAhPSAxNnB4KSB7XG4gICAgICAgIEB3YXJuIFwiT3ZlcnJpZGluZyAkbXEtYmFzZS1mb250LXNpemUgd2lsbCBicmVhayB0aGluZ3MsIHNlZSBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xL2lzc3Vlcy8xMjIuXCI7XG4gICAgfVxuICAgIEBpZiAoJGJhc2UtZm9udC1zaXplICE9IDE2cHgpIHtcbiAgICAgICAgQHdhcm4gXCJUaGUgJGJhc2UtZm9udC1zaXplIGFyZ3VtZW50IHdpbGwgYmUgcmVtb3ZlZCBpbiBzYXNzLW1xIHY2LjAuMCwgYXMgb3ZlcnJpZGluZyBpdCBicmVha3MgdGhpbmdzLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcS9pc3N1ZXMvMTIyLlwiO1xuICAgIH1cbiAgICBAaWYgdW5pdGxlc3MoJHB4KSB7XG4gICAgICAgIEB3YXJuIFwiQXNzdW1pbmcgI3skcHh9IHRvIGJlIGluIHBpeGVscywgYXR0ZW1wdGluZyB0byBjb252ZXJ0IGl0IGludG8gcGl4ZWxzLlwiO1xuICAgICAgICBAcmV0dXJuIG1xLXB4MmVtKCRweCAqIDFweCwgJGJhc2UtZm9udC1zaXplKTtcbiAgICB9IEBlbHNlIGlmIHVuaXQoJHB4KSA9PSBlbSB7XG4gICAgICAgIEByZXR1cm4gJHB4O1xuICAgIH1cbiAgICBAcmV0dXJuICgkcHggLyAkYmFzZS1mb250LXNpemUpICogMWVtO1xufVxuXG4vLy8gR2V0IGEgYnJlYWtwb2ludCdzIHdpZHRoXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG5hbWUgLSBOYW1lIG9mIHRoZSBicmVha3BvaW50LiBPbmUgb2YgJG1xLWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICR0YWJsZXQtd2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKHRhYmxldCk7XG4vLy8gIEBtZWRpYSAobWluLXdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aChkZXNrdG9wKSkge31cbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVmFsdWUgaW4gcGl4ZWxzXG5AZnVuY3Rpb24gbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJG5hbWUsICRicmVha3BvaW50czogJG1xLWJyZWFrcG9pbnRzKSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJG5hbWUpIHtcbiAgICAgICAgQHJldHVybiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgICBAd2FybiBcIkJyZWFrcG9pbnQgI3skbmFtZX0gd2Fzbid0IGZvdW5kIGluICRicmVha3BvaW50cy5cIjtcbiAgICB9XG59XG5cbi8vLyBNZWRpYSBRdWVyeSBtaXhpblxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmcgfCBCb29sZWFufSAkZnJvbSBbZmFsc2VdIC0gT25lIG9mICRtcS1icmVha3BvaW50c1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJHVudGlsIFtmYWxzZV0gLSBPbmUgb2YgJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHBhcmFtIHtTdHJpbmcgfCBCb29sZWFufSAkYW5kIFtmYWxzZV0gLSBBZGRpdGlvbmFsIG1lZGlhIHF1ZXJ5IHBhcmFtZXRlcnNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJG1lZGlhLXR5cGUgWyRtcS1tZWRpYS10eXBlXSAtIE1lZGlhIHR5cGU6IHNjcmVlbiwgcHJpbnTigKZcbi8vL1xuLy8vIEBpZ25vcmUgVW5kb2N1bWVudGVkIEFQSSwgZm9yIGFkdmFuY2VkIHVzZSBvbmx5OlxuLy8vIEBpZ25vcmUgQHBhcmFtIHtNYXB9ICRicmVha3BvaW50cyBbJG1xLWJyZWFrcG9pbnRzXVxuLy8vIEBpZ25vcmUgQHBhcmFtIHtTdHJpbmd9ICRzdGF0aWMtYnJlYWtwb2ludCBbJG1xLXN0YXRpYy1icmVha3BvaW50XVxuLy8vXG4vLy8gQGNvbnRlbnQgc3R5bGluZyBydWxlcywgd3JhcHBlZCBpbnRvIGEgQG1lZGlhIHF1ZXJ5IHdoZW4gJHJlc3BvbnNpdmUgaXMgdHJ1ZVxuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLW1lZGlhLXR5cGVcbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtc3RhdGljLWJyZWFrcG9pbnRcbi8vLyBAcmVxdWlyZXMge2Z1bmN0aW9ufSBtcS1weDJlbVxuLy8vIEByZXF1aXJlcyB7ZnVuY3Rpb259IG1xLWdldC1icmVha3BvaW50LXdpZHRoXG4vLy9cbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3Jlc3BvbnNpdmUtbW9kZS1vbi1kZWZhdWx0IEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLmVsZW1lbnQge1xuLy8vICAgIEBpbmNsdWRlIG1xKCRmcm9tOiBtb2JpbGUpIHtcbi8vLyAgICAgIGNvbG9yOiByZWQ7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKCR1bnRpbDogdGFibGV0KSB7XG4vLy8gICAgICBjb2xvcjogYmx1ZTtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEobW9iaWxlLCB0YWJsZXQpIHtcbi8vLyAgICAgIGNvbG9yOiBncmVlbjtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEoJGZyb206IHRhYmxldCwgJGFuZDogJyhvcmllbnRhdGlvbjogbGFuZHNjYXBlKScpIHtcbi8vLyAgICAgIGNvbG9yOiB0ZWFsO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSg5NTBweCkge1xuLy8vICAgICAgY29sb3I6IGhvdHBpbms7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKHRhYmxldCwgJG1lZGlhLXR5cGU6IHNjcmVlbikge1xuLy8vICAgICAgY29sb3I6IGhvdHBpbms7XG4vLy8gICAgfVxuLy8vICAgIC8vIEFkdmFuY2VkIHVzZTpcbi8vLyAgICAkbXktYnJlYWtwb2ludHM6IChMOiA5MDBweCwgWEw6IDEyMDBweCk7XG4vLy8gICAgQGluY2x1ZGUgbXEoTCwgJGJyZWFrcG9pbnRzOiAkbXktYnJlYWtwb2ludHMsICRzdGF0aWMtYnJlYWtwb2ludDogTCkge1xuLy8vICAgICAgY29sb3I6IGhvdHBpbms7XG4vLy8gICAgfVxuLy8vICB9XG5AbWl4aW4gbXEoXG4gICAgJGZyb206IGZhbHNlLFxuICAgICR1bnRpbDogZmFsc2UsXG4gICAgJGFuZDogZmFsc2UsXG4gICAgJG1lZGlhLXR5cGU6ICRtcS1tZWRpYS10eXBlLFxuICAgICRicmVha3BvaW50czogJG1xLWJyZWFrcG9pbnRzLFxuICAgICRyZXNwb25zaXZlOiAkbXEtcmVzcG9uc2l2ZSxcbiAgICAkc3RhdGljLWJyZWFrcG9pbnQ6ICRtcS1zdGF0aWMtYnJlYWtwb2ludFxuKSB7XG4gICAgJG1pbi13aWR0aDogMDtcbiAgICAkbWF4LXdpZHRoOiAwO1xuICAgICRtZWRpYS1xdWVyeTogJyc7XG5cbiAgICAvLyBGcm9tOiB0aGlzIGJyZWFrcG9pbnQgKGluY2x1c2l2ZSlcbiAgICBAaWYgJGZyb20ge1xuICAgICAgICBAaWYgdHlwZS1vZigkZnJvbSkgPT0gbnVtYmVyIHtcbiAgICAgICAgICAgICRtaW4td2lkdGg6IG1xLXB4MmVtKCRmcm9tKTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAkbWluLXdpZHRoOiBtcS1weDJlbShtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkZnJvbSwgJGJyZWFrcG9pbnRzKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVbnRpbDogdGhhdCBicmVha3BvaW50IChleGNsdXNpdmUpXG4gICAgQGlmICR1bnRpbCB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCR1bnRpbCkgPT0gbnVtYmVyIHtcbiAgICAgICAgICAgICRtYXgtd2lkdGg6IG1xLXB4MmVtKCR1bnRpbCk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgJG1heC13aWR0aDogbXEtcHgyZW0obXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHVudGlsLCAkYnJlYWtwb2ludHMpKSAtIC4wMWVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSBzdXBwb3J0IGlzIGRpc2FibGVkLCByYXN0ZXJpemUgdGhlIG91dHB1dCBvdXRzaWRlIEBtZWRpYSBibG9ja3NcbiAgICAvLyBUaGUgYnJvd3NlciB3aWxsIHJlbHkgb24gdGhlIGNhc2NhZGUgaXRzZWxmLlxuICAgIEBpZiAkcmVzcG9uc2l2ZSA9PSBmYWxzZSB7XG4gICAgICAgICRzdGF0aWMtYnJlYWtwb2ludC13aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHN0YXRpYy1icmVha3BvaW50LCAkYnJlYWtwb2ludHMpO1xuICAgICAgICAkdGFyZ2V0LXdpZHRoOiBtcS1weDJlbSgkc3RhdGljLWJyZWFrcG9pbnQtd2lkdGgpO1xuXG4gICAgICAgIC8vIE91dHB1dCBvbmx5IHJ1bGVzIHRoYXQgc3RhcnQgYXQgb3Igc3BhbiBvdXIgdGFyZ2V0IHdpZHRoXG4gICAgICAgIEBpZiAoXG4gICAgICAgICAgICAkYW5kID09IGZhbHNlXG4gICAgICAgICAgICBhbmQgJG1pbi13aWR0aCA8PSAkdGFyZ2V0LXdpZHRoXG4gICAgICAgICAgICBhbmQgKFxuICAgICAgICAgICAgICAgICR1bnRpbCA9PSBmYWxzZSBvciAkbWF4LXdpZHRoID49ICR0YXJnZXQtd2lkdGhcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGFuZCAkbWVkaWEtdHlwZSAhPSAncHJpbnQnXG4gICAgICAgICkge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXNwb25zaXZlIHN1cHBvcnQgaXMgZW5hYmxlZCwgb3V0cHV0IHJ1bGVzIGluc2lkZSBAbWVkaWEgcXVlcmllc1xuICAgIEBlbHNlIHtcbiAgICAgICAgQGlmICRtaW4td2lkdGggIT0gMCB7ICRtZWRpYS1xdWVyeTogJyN7JG1lZGlhLXF1ZXJ5fSBhbmQgKG1pbi13aWR0aDogI3skbWluLXdpZHRofSknOyB9XG4gICAgICAgIEBpZiAkbWF4LXdpZHRoICE9IDAgeyAkbWVkaWEtcXVlcnk6ICcjeyRtZWRpYS1xdWVyeX0gYW5kIChtYXgtd2lkdGg6ICN7JG1heC13aWR0aH0pJzsgfVxuICAgICAgICBAaWYgJGFuZCAgICAgICAgICAgIHsgJG1lZGlhLXF1ZXJ5OiAnI3skbWVkaWEtcXVlcnl9IGFuZCAjeyRhbmR9JzsgfVxuXG4gICAgICAgIC8vIFJlbW92ZSB1bm5lY2Vzc2FyeSBtZWRpYSBxdWVyeSBwcmVmaXggJ2FsbCBhbmQgJ1xuICAgICAgICBAaWYgKCRtZWRpYS10eXBlID09ICdhbGwnIGFuZCAkbWVkaWEtcXVlcnkgIT0gJycpIHtcbiAgICAgICAgICAgICRtZWRpYS10eXBlOiAnJztcbiAgICAgICAgICAgICRtZWRpYS1xdWVyeTogc3RyLXNsaWNlKHVucXVvdGUoJG1lZGlhLXF1ZXJ5KSwgNik7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgI3skbWVkaWEtdHlwZSArICRtZWRpYS1xdWVyeX0ge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vLyBRdWljayBzb3J0XG4vLy9cbi8vLyBAYXV0aG9yIFNhbSBSaWNoYXJkc1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3QgLSBMaXN0IHRvIHNvcnRcbi8vLyBAcmV0dXJucyB7TGlzdH0gU29ydGVkIExpc3RcbkBmdW5jdGlvbiBfbXEtcXVpY2stc29ydCgkbGlzdCkge1xuICAgICRsZXNzOiAgKCk7XG4gICAgJGVxdWFsOiAoKTtcbiAgICAkbGFyZ2U6ICgpO1xuXG4gICAgQGlmIGxlbmd0aCgkbGlzdCkgPiAxIHtcbiAgICAgICAgJHNlZWQ6IG50aCgkbGlzdCwgY2VpbChsZW5ndGgoJGxpc3QpIC8gMikpO1xuXG4gICAgICAgIEBlYWNoICRpdGVtIGluICRsaXN0IHtcbiAgICAgICAgICAgIEBpZiAoJGl0ZW0gPT0gJHNlZWQpIHtcbiAgICAgICAgICAgICAgICAkZXF1YWw6IGFwcGVuZCgkZXF1YWwsICRpdGVtKTtcbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKCRpdGVtIDwgJHNlZWQpIHtcbiAgICAgICAgICAgICAgICAkbGVzczogYXBwZW5kKCRsZXNzLCAkaXRlbSk7XG4gICAgICAgICAgICB9IEBlbHNlIGlmICgkaXRlbSA+ICRzZWVkKSB7XG4gICAgICAgICAgICAgICAgJGxhcmdlOiBhcHBlbmQoJGxhcmdlLCAkaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAcmV0dXJuIGpvaW4oam9pbihfbXEtcXVpY2stc29ydCgkbGVzcyksICRlcXVhbCksIF9tcS1xdWljay1zb3J0KCRsYXJnZSkpO1xuICAgIH1cblxuICAgIEByZXR1cm4gJGxpc3Q7XG59XG5cbi8vLyBTb3J0IGEgbWFwIGJ5IHZhbHVlcyAod29ya3Mgd2l0aCBudW1iZXJzIG9ubHkpXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byBzb3J0XG4vLy8gQHJldHVybnMge01hcH0gTWFwIHNvcnRlZCBieSB2YWx1ZVxuQGZ1bmN0aW9uIF9tcS1tYXAtc29ydC1ieS12YWx1ZSgkbWFwKSB7XG4gICAgJG1hcC1zb3J0ZWQ6ICgpO1xuICAgICRtYXAta2V5czogbWFwLWtleXMoJG1hcCk7XG4gICAgJG1hcC12YWx1ZXM6IG1hcC12YWx1ZXMoJG1hcCk7XG4gICAgJG1hcC12YWx1ZXMtc29ydGVkOiBfbXEtcXVpY2stc29ydCgkbWFwLXZhbHVlcyk7XG5cbiAgICAvLyBSZW9yZGVyIGtleS92YWx1ZSBwYWlycyBiYXNlZCBvbiBrZXkgdmFsdWVzXG4gICAgQGVhY2ggJHZhbHVlIGluICRtYXAtdmFsdWVzLXNvcnRlZCB7XG4gICAgICAgICRpbmRleDogaW5kZXgoJG1hcC12YWx1ZXMsICR2YWx1ZSk7XG4gICAgICAgICRrZXk6IG50aCgkbWFwLWtleXMsICRpbmRleCk7XG4gICAgICAgICRtYXAtc29ydGVkOiBtYXAtbWVyZ2UoJG1hcC1zb3J0ZWQsICgka2V5OiAkdmFsdWUpKTtcblxuICAgICAgICAvLyBVbnNldCB0aGUgdmFsdWUgaW4gJG1hcC12YWx1ZXMgdG8gcHJldmVudCB0aGUgbG9vcFxuICAgICAgICAvLyBmcm9tIGZpbmRpbmcgdGhlIHNhbWUgaW5kZXggdHdpY2VcbiAgICAgICAgJG1hcC12YWx1ZXM6IHNldC1udGgoJG1hcC12YWx1ZXMsICRpbmRleCwgMCk7XG4gICAgfVxuXG4gICAgQHJldHVybiAkbWFwLXNvcnRlZDtcbn1cblxuLy8vIEFkZCBhIGJyZWFrcG9pbnRcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbmFtZSAtIE5hbWUgb2YgdGhlIGJyZWFrcG9pbnRcbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIC0gV2lkdGggb2YgdGhlIGJyZWFrcG9pbnRcbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICBAaW5jbHVkZSBtcS1hZGQtYnJlYWtwb2ludCh0dnNjcmVlbiwgMTkyMHB4KTtcbi8vLyAgQGluY2x1ZGUgbXEodHZzY3JlZW4pIHt9XG5AbWl4aW4gbXEtYWRkLWJyZWFrcG9pbnQoJG5hbWUsICR3aWR0aCkge1xuICAgICRuZXctYnJlYWtwb2ludDogKCRuYW1lOiAkd2lkdGgpO1xuICAgICRtcS1icmVha3BvaW50czogbWFwLW1lcmdlKCRtcS1icmVha3BvaW50cywgJG5ldy1icmVha3BvaW50KSAhZ2xvYmFsO1xuICAgICRtcS1icmVha3BvaW50czogX21xLW1hcC1zb3J0LWJ5LXZhbHVlKCRtcS1icmVha3BvaW50cykgIWdsb2JhbDtcbn1cblxuLy8vIFNob3cgdGhlIGFjdGl2ZSBicmVha3BvaW50IGluIHRoZSB0b3AgcmlnaHQgY29ybmVyIG9mIHRoZSB2aWV3cG9ydFxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjc2VlaW5nLXRoZS1jdXJyZW50bHktYWN0aXZlLWJyZWFrcG9pbnRcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHNob3ctYnJlYWtwb2ludHMgWyRtcS1zaG93LWJyZWFrcG9pbnRzXSAtIExpc3Qgb2YgYnJlYWtwb2ludHMgdG8gc2hvdyBpbiB0aGUgdG9wIHJpZ2h0IGNvcm5lclxuLy8vIEBwYXJhbSB7TWFwfSAkYnJlYWtwb2ludHMgWyRtcS1icmVha3BvaW50c10gLSBCcmVha3BvaW50IG5hbWVzIGFuZCBzaXplc1xuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLXNob3ctYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLy8gU2hvdyBicmVha3BvaW50cyB1c2luZyBnbG9iYWwgc2V0dGluZ3Ncbi8vLyAgQGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cztcbi8vL1xuLy8vICAvLyBTaG93IGJyZWFrcG9pbnRzIHVzaW5nIGN1c3RvbSBzZXR0aW5nc1xuLy8vICBAaW5jbHVkZSBtcS1zaG93LWJyZWFrcG9pbnRzKChMLCBYTCksIChTOiAzMDBweCwgTDogODAwcHgsIFhMOiAxMjAwcHgpKTtcbkBtaXhpbiBtcS1zaG93LWJyZWFrcG9pbnRzKCRzaG93LWJyZWFrcG9pbnRzOiAkbXEtc2hvdy1icmVha3BvaW50cywgJGJyZWFrcG9pbnRzOiAkbXEtYnJlYWtwb2ludHMpIHtcbiAgICBib2R5OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGQ0Y4RTM7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRkJFRUQ1O1xuICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNGQkVFRDU7XG4gICAgICAgIGNvbG9yOiAjQzA5ODUzO1xuICAgICAgICBmb250OiBzbWFsbC1jYXB0aW9uO1xuICAgICAgICBwYWRkaW5nOiAzcHggNnB4O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICB6LWluZGV4OiAxMDA7XG5cbiAgICAgICAgLy8gTG9vcCB0aHJvdWdoIHRoZSBicmVha3BvaW50cyB0aGF0IHNob3VsZCBiZSBzaG93blxuICAgICAgICBAZWFjaCAkc2hvdy1icmVha3BvaW50IGluICRzaG93LWJyZWFrcG9pbnRzIHtcbiAgICAgICAgICAgICR3aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHNob3ctYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKTtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKCRzaG93LWJyZWFrcG9pbnQsICRicmVha3BvaW50czogJGJyZWFrcG9pbnRzKSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCIjeyRzaG93LWJyZWFrcG9pbnR9IOKJpSAjeyR3aWR0aH0gKCN7bXEtcHgyZW0oJHdpZHRoKX0pXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpZiBsZW5ndGgoJG1xLXNob3ctYnJlYWtwb2ludHMpID4gMCB7XG4gICAgQGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cztcbn1cbiIsIi5wLW9wZW5pbmcge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMTAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAxLjNzICRlYXNlLW91dC1xdWFydDtcblxuICAmLmlzLWFjdGl2ZSB7XG4gICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuXG4ucC1vcGVuaW5nX19jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgcGFkZGluZzogMCAyMHB4O1xufVxuXG4ucC1vcGVuaW5nX19jYXRjaCB7XG4gIC8vXG59XG5cbi5wLW9wZW5pbmdfX2NhdGNoIGltZyB7XG4gIHdpZHRoOiBjYWxjKDEwMCUgLSA1MHB4KTtcblxuICBAaW5jbHVkZSBtcShtZCkge1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAxMDBweCk7XG4gIH1cbn1cblxuLnAtb3BlbmluZ19fY2F0Y2gwMSB7XG4gIC8vXG59XG5cbi5wLW9wZW5pbmdfX2NhdGNoMDIge1xuICBtYXJnaW4tdG9wOiAxMHB4O1xuICB0ZXh0LWFsaWduOiByaWdodDtcblxuICBAaW5jbHVkZSBtcShtZCkge1xuICAgIG1hcmdpbi10b3A6IDQwcHg7XG4gIH1cbn1cblxuLnAtb3BlbmluZy5pcy1hY3RpdmUgLnAtb3BlbmluZ19fY2F0Y2gwMSxcbi5wLW9wZW5pbmcuaXMtYWN0aXZlIC5wLW9wZW5pbmdfX2NhdGNoMDIge1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKSBza2V3WCgtMTBkZWcpO1xuICBhbmltYXRpb246IHRleHQgMC40NXMgY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMS4yNzUpIGZvcndhcmRzO1xuICBhbmltYXRpb24tZGVsYXk6IDAuNHM7XG59XG5cbi5wLW9wZW5pbmcuaXMtYWN0aXZlIC5wLW9wZW5pbmdfX2NhdGNoMDIge1xuICBhbmltYXRpb24tZGVsYXk6IDEuNXM7XG59XG5cbkBrZXlmcmFtZXMgdGV4dCB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApIHNrZXdYKC0xMGRlZyk7XG4gIH1cblxuICA1MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCg1JSwgMCwgMCkgc2tld1goLTIwZGVnKTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKSBza2V3WCgwZGVnKTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIvLiJ9 */
