/*=============================================================================================
    Document   : Stylesheet
==============================================================================================*/
/*=============================================================================================
    Company    : PT Web Architect Technology - webarq.com
    Document   : Stylesheet
    Author     : FrontEnd Team
==============================================================================================*/
/* import bourbon - http://bourbon.io/docs */
.a-center {
  text-align: center !important;
}

.a-left {
  text-align: left !important;
}

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

.after-clear, .wrapper:after, .form-middle .row:after, .home-product .list-product:after, .home-journal .list-journal:after, .home-brand .list-brand:after, .two-box-middle:after, .double-img:after, .wrap-event:after, footer .footer-top .list-sertifikasi:after, footer .footer-top:after {
  clear: both;
  display: block;
}

.after-clear:after, .wrapper:after, .form-middle .row:after, .home-product .list-product:after, .home-journal .list-journal:after, .home-brand .list-brand:after, .two-box-middle:after, .double-img:after, .wrap-event:after, footer .footer-top .list-sertifikasi:after, footer .footer-top:after {
  content: "";
  display: block;
  clear: both;
}

.right {
  float: right;
}

.left {
  float: left;
}

/* color global
----------------------------------------------------------------------------------------------*/
body {
  color: #263E35;
  font-size: 16px;
  font-family: "Nunito Sans", "Montserrat";
  position: relative;
  overflow-x: hidden;
}

figure {
  margin: 0;
  padding: 0;
}

figure img {
  vertical-align: middle;
}

img {
  border: 0;
  max-width: 100%;
  height: auto;
}

p {
  margin: 1px 0 15px;
  line-height: 20px;
}

input, textarea, select {
  font-size: 12px;
  border: none;
  border: 1px solid #D8D8D8;
  padding: 10px;
  margin: 0;
  color: #666;
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  font-family: "Nunito Sans";
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

input[type=checkbox], input[type=radio] {
  border-top-style: none;
  border-right-style: none;
  border-bottom-style: none;
  border-left-style: none;
}

h1 {
  font-size: 55px;
  font-family: "Cooper Lt BT";
  margin-bottom: 30px;
}

h2 {
  font-size: 40px;
  font-family: "Cooper Lt BT";
  line-height: 65px;
}

h3 {
  font-size: 32px;
  font-family: "Cooper Lt BT";
  line-height: 42px;
}

h4 {
  font-size: 20px;
}

h5 {
  font-size: 16px;
}

h6 {
  font-size: 14px;
}

/* structure
----------------------------------------------------------------------------------------------*/
section {
  position: relative;
}

.flex-list, .box-three, .wrap-event, .dots-two ul {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: row wrap;
}

.wrapper {
  width: auto;
  margin: 0 60px;
}

.wrapper.v2 {
  width: 1190px;
  margin: 0 auto;
}

.button {
  display: inline-block;
  margin-bottom: 20px;
  border: 2px solid #000000;
  line-height: 42px;
  height: 46px;
  color: #FFF;
  padding: 0 50px;
  font-size: 12px;
  letter-spacing: 2px;
  background: #000000;
  border-radius: 30px;
  -webkit-border-radius: 30px;
  -moz-border-radius: 30px;
  -ms-border-radius: 30px;
  -o-border-radius: 30px;
  transition: 0.4s all cubic-bezier(0.005, 0.72, 0.35, 1.01);
  -webkit-transition: 0.4s all cubic-bezier(0.005, 0.72, 0.35, 1.01);
  -moz-transition: 0.4s all cubic-bezier(0.005, 0.72, 0.35, 1.01);
  -ms-transition: 0.4s all cubic-bezier(0.005, 0.72, 0.35, 1.01);
  -o-transition: 0.4s all cubic-bezier(0.005, 0.72, 0.35, 1.01);
  position: relative;
  z-index: 1;
}

.button:before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  background: #000000;
  transition: 0.4s all cubic-bezier(0.005, 0.72, 0.35, 1.01);
  -webkit-transition: 0.4s all cubic-bezier(0.005, 0.72, 0.35, 1.01);
  -moz-transition: 0.4s all cubic-bezier(0.005, 0.72, 0.35, 1.01);
  -ms-transition: 0.4s all cubic-bezier(0.005, 0.72, 0.35, 1.01);
  -o-transition: 0.4s all cubic-bezier(0.005, 0.72, 0.35, 1.01);
  z-index: -1;
  border-radius: 30px;
  -webkit-border-radius: 30px;
  -moz-border-radius: 30px;
  -ms-border-radius: 30px;
  -o-border-radius: 30px;
}

.button.border {
  color: #fff;
}

.button.border:before {
  background: #000000;
}

.button:hover {
  color: #fff;
}

.button:hover.border {
  color: #000000;
}

.button:hover.border:before {
  background: #fff;
}

.button:hover:before {
  background: #191616;
}

.link {
  font-size: 18px;
  line-height: 24px;
  background: url(../images/material/arrow-right.png) no-repeat right center;
  padding: 0 30px 0 0;
  color: #191616;
  transition: 0.2s linear all;
  -webkit-transition: 0.2s linear all;
  -moz-transition: 0.2s linear all;
  -ms-transition: 0.2s linear all;
  -o-transition: 0.2s linear all;
}

.link:hover {
  color: #000000;
  padding-right: 35px;
}

.btn-up {
  position: fixed;
  bottom: 15%;
  right: 1.5%;
  background: url(../images/material/arr-pageup.png) no-repeat;
  width: 34px;
  height: 34px;
  z-index: 9;
  opacity: 0.7;
  transition: 0.2s all ease-out;
  -webkit-transition: 0.2s all ease-out;
  -moz-transition: 0.2s all ease-out;
  -ms-transition: 0.2s all ease-out;
  -o-transition: 0.2s all ease-out;
  cursor: pointer;
}

.btn-up:hover {
  opacity: 1;
}

.tittle-contactus {
  padding-top: 100px;
}

.tittle-contactus h5 {
  font-size: 14px;
  color: #000000;
  margin-bottom: 20px;
}

.tittle-contactus h3 {
  font-size: 50px;
  font-family: "Cooper Lt BT";
  color: #000000;
}

.form-middle {
  position: relative;
  padding: 0 100px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  margin-top: 130px;
}

.form-middle:before {
  content: '';
  width: 100%;
  height: 100%;
  top: 150px;
  left: 0;
  right: 0;
  bottom: 0;
  /* background: #F5F7F1; */
  position: absolute;
  z-index: -1;
}

.form-middle .form {
  padding: 80px 100px 100px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  background: #fff;
  border-radius: 20px;
  -webkit-border-radius: 20px;
  -moz-border-radius: 20px;
  -ms-border-radius: 20px;
  -o-border-radius: 20px;
  box-shadow: 0px 0px 20px -16px #000;
  -webkit-box-shadow: 0px 0px 20px -16px #000;
  -moz-box-shadow: 0px 0px 20px -16px #000;
  -ms-box-shadow: 0px 0px 20px -16px #000;
  -o-box-shadow: 0px 0px 20px -16px #000;
}

.form-middle .row .col {
  margin-bottom: 20px;
  width: 100%;
  float: left;
}

.form-middle .row .col.half {
  width: 48%;
  margin-right: 4%;
}

.form-middle .row .col.half:last-child {
  margin-right: 0;
}

.form-middle input {
  width: 100%;
  height: 55px;
  border-radius: 10px;
  -webkit-border-radius: 10px;
  -moz-border-radius: 10px;
  -ms-border-radius: 10px;
  -o-border-radius: 10px;
  border-color: #707070;
  font-size: 18px;
}

.form-middle textarea {
  width: 100%;
  height: 415px;
  border-radius: 10px;
  -webkit-border-radius: 10px;
  -moz-border-radius: 10px;
  -ms-border-radius: 10px;
  -o-border-radius: 10px;
  border-color: #707070;
  resize: none;
  font-size: 18px;
}

.list-address h6 {
  font-size: 14px;
  color: #000000;
  line-height: 22px;
  letter-spacing: 2px;
  text-transform: uppercase;
}

.list-address p {
  font-size: 14px;
  line-height: 22px;
  color: #000000;
}

.list-address .box {
  width: 360px;
  margin: 0 auto 30px;
}

.maps iframe {
  width: 100%;
  height: 450px;
}

/* header
----------------------------------------------------------------------------------------------*/
header {
  height: 80px;
  background: #FFF;
  box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.1);
  -webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.1);
  -moz-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.1);
  -ms-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.1);
  -o-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.1);
  position: fixed;
  z-index: 99;
  top: 0;
  left: 0;
  right: 0;
  transition: 0.2s all ease-out;
  -webkit-transition: 0.2s all ease-out;
  -moz-transition: 0.2s all ease-out;
  -ms-transition: 0.2s all ease-out;
  -o-transition: 0.2s all ease-out;
}

header .logo {
  float: left;
  margin: 17px 0 0 0;
  transition: 0.2s all ease-out;
  -webkit-transition: 0.2s all ease-out;
  -moz-transition: 0.2s all ease-out;
  -ms-transition: 0.2s all ease-out;
  -o-transition: 0.2s all ease-out;
}

header nav {
  width: 60%;
  text-align: center;
  margin: auto;
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
}

header nav > div {
  display: inline-block;
  margin: 0 30px;
}

header nav > div a {
  position: relative;
  line-height: 80px;
  display: inline-block;
  transition: 0.2s all ease-out;
  -webkit-transition: 0.2s all ease-out;
  -moz-transition: 0.2s all ease-out;
  -ms-transition: 0.2s all ease-out;
  -o-transition: 0.2s all ease-out;
}

header nav > div a:before {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  width: 0;
  height: 5px;
  background: #000000;
  transition: 0.2s all ease-out;
  -webkit-transition: 0.2s all ease-out;
  -moz-transition: 0.2s all ease-out;
  -ms-transition: 0.2s all ease-out;
  -o-transition: 0.2s all ease-out;
  z-index: 2;
  margin: 0 auto;
}

header nav > div a:hover:before, header nav > div a.active:before {
  width: 100%;
}

header nav > div.have-drop > a {
  padding-right: 30px;
}

header nav > div.have-drop > a:after {
  content: '';
  background: url(../images/material/dropdown.png) no-repeat right;
  width: 13px;
  height: 7px;
  position: absolute;
  right: 0;
  top: 0;
  bottom: 0;
  margin: auto 0;
}

header nav > div.have-drop .dropdown {
  position: absolute;
  left: -40%;
  right: -40%;
  width: auto;
  height: 85px;
  background: #fff;
  top: 90%;
  text-align: center;
  opacity: 0;
  visibility: hidden;
  transition: 0.2s all ease-out;
  -webkit-transition: 0.2s all ease-out;
  -moz-transition: 0.2s all ease-out;
  -ms-transition: 0.2s all ease-out;
  -o-transition: 0.2s all ease-out;
  box-shadow: 0 5px 15px -13px #000;
  -webkit-box-shadow: 0 5px 15px -13px #000;
  -moz-box-shadow: 0 5px 15px -13px #000;
  -ms-box-shadow: 0 5px 15px -13px #000;
  -o-box-shadow: 0 5px 15px -13px #000;
}

header nav > div.have-drop .dropdown ul {
  vertical-align: middle;
}

header nav > div.have-drop .dropdown ul > li {
  display: inline-block;
  padding: 0 40px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  position: relative;
}

header nav > div.have-drop .dropdown ul > li:before {
  content: '';
  position: absolute;
  right: 0;
  height: 35px;
  width: 1px;
  background: #D8D8D8;
  margin: auto 0;
  top: 0;
  bottom: 0;
}

header nav > div.have-drop .dropdown ul > li:first-child {
  padding-left: 0;
}

header nav > div.have-drop .dropdown ul > li:last-child {
  padding-right: 0;
}

header nav > div.have-drop .dropdown ul > li:last-child:before {
  display: none;
}

header nav > div.have-drop .dropdown ul > li a {
  font-size: 18px;
  font-family: "Cooper Lt BT";
  line-height: 85px;
  display: inline-block;
  text-align: center;
}

header nav > div.have-drop:hover .dropdown {
  opacity: 1;
  visibility: visible;
}

header a {
  font-size: 16px;
  color: #263E35;
  line-height: 29px;
}

header .right {
  margin: 25px 0 0 0px;
  transition: 0.2s all ease-out;
  -webkit-transition: 0.2s all ease-out;
  -moz-transition: 0.2s all ease-out;
  -ms-transition: 0.2s all ease-out;
  -o-transition: 0.2s all ease-out;
}

header .right a {
  float: left;
  margin-left: 40px;
  position: relative;
}

header .right a.phone {
  padding-left: 38px;
}

header .right a.phone:after {
  width: 29px;
  height: 29px;
  content: "";
  background: url(../images/material/phone-ico-green.png) no-repeat;
  position: absolute;
  left: 0;
  top: 0;
}

header.float {
  height: 55px;
}

header.float nav > div a {
  line-height: 55px;
}

header.float .right {
  margin: 10px 0px 0px 0px;
}

header.float .logo {
  margin: 5px 0px 0px 0px;
}

/* middle
----------------------------------------------------------------------------------------------*/
/*=============================================================================================
    Company    : PT Web Architect Technology - webarq.com
    Document   : Stylesheet
    Author     : FrontEnd Team
==============================================================================================*/
/* import bourbon - http://bourbon.io/docs */
.a-center {
  text-align: center !important;
}

.a-left {
  text-align: left !important;
}

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

.after-clear, .wrapper:after, .form-middle .row:after, .home-product .list-product:after, .home-journal .list-journal:after, .home-brand .list-brand:after, .two-box-middle:after, .double-img:after, .wrap-event:after, footer .footer-top .list-sertifikasi:after, footer .footer-top:after {
  clear: both;
  display: block;
}

.after-clear:after, .wrapper:after, .form-middle .row:after, .home-product .list-product:after, .home-journal .list-journal:after, .home-brand .list-brand:after, .two-box-middle:after, .double-img:after, .wrap-event:after, footer .footer-top .list-sertifikasi:after, footer .footer-top:after {
  content: "";
  display: block;
  clear: both;
}

.right {
  float: right;
}

.left {
  float: left;
}

/* color global
----------------------------------------------------------------------------------------------*/
.banner-home:after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  bottom: -100px;
  background: url(../images/material/shd-banner-home.png) no-repeat top;
  height: 260px;
}

.banner-home img {
  width: 100%;
}

.banner-home .slide {
  position: relative;
  max-height: calc(100vh - 80px);
  min-height: 600px;
  overflow: hidden;
  height: 100vh;
}

.banner-home .slide img {
  max-width: none;
  min-height: 100%;
  min-width: 100%;
  width: auto;
}

.banner-home .caption {
  width: 80%;
  margin: auto;
  height: 170px;
  position: absolute;
  margin: auto;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 1;
  color: #FFF;
}

.banner-home .caption h1 {
  margin-bottom: 20px;
}

.banner-home .caption p {
  font-size: 20px;
  line-height: 32px;
}

.banner-home .slick-dots {
  position: absolute;
  width: 100%;
  height: 12px;
  position: absolute;
  bottom: 50px;
  text-align: center;
  z-index: 1;
}

.banner-home .slick-dots li {
  display: inline-block;
  vertical-align: top;
  margin: 0 15px;
}

.banner-home .slick-dots button {
  width: 10px;
  height: 10px;
  display: block;
  border: 1px solid #000;
  border-radius: 100%;
  -webkit-border-radius: 100%;
  -moz-border-radius: 100%;
  -ms-border-radius: 100%;
  -o-border-radius: 100%;
  padding: 0;
  text-indent: -99999px;
  background: none;
  cursor: pointer;
}

.banner-home .slick-dots .slick-active button {
  background: #000;
}

.home {
  padding: 200px 0;
  position: relative;
}

.home h2 {
  margin-bottom: 50px;
  text-align: center;
}

.home p {
  font-size: 20px;
  line-height: 32px;
  margin-bottom: 50px;
}

.home .trigger-anim {
  position: absolute;
  top: 0;
  bottom: 0;
  height: 1px;
  margin: auto;
  width: 100%;
}

.home-tagline {
  padding: 200px 0;
  text-align: center;
}

.home-product {
  padding: 100px 0;
}

.home-product.nobfr:after, .home-product.nobfr:before {
  display: none;
}

.home-product:before {
  /* background: #F5F7F1; */
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  right: 60px;
  left: 60px;
  border-radius: 20px;
  -webkit-border-radius: 20px;
  -moz-border-radius: 20px;
  -ms-border-radius: 20px;
  -o-border-radius: 20px;
}

.home-product:after {
  content: '';
  /* background: url(../images/material/corner-leaf.png) no-repeat; */
  width: 165px;
  height: 128px;
  position: absolute;
  bottom: -30px;
  right: -0px;
}

.home-product .wrapper {
  position: relative;
  margin: 0 auto;
  max-width: 1240px;
  width: auto;
}

.home-product .list-product {
  display: flex;
  flex-wrap: wrap;
  gap: 50px 3%;
  overflow: visible;
}

.home-product .list-product .box {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  width: 30.33%;
  float: none;
  text-align: center;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  margin: 0;
  position: relative;
  border-radius: 10px;
  -webkit-border-radius: 10px;
  -moz-border-radius: 10px;
  -ms-border-radius: 10px;
  -o-border-radius: 10px;
  transition: 0.2s ease-out all;
  -webkit-transition: 0.2s ease-out all;
  -moz-transition: 0.2s ease-out all;
  -ms-transition: 0.2s ease-out all;
  -o-transition: 0.2s ease-out all;
  padding-bottom: 50px;
  overflow: visible;
}

.home-product .list-product .box .image {
  height: 390px;
  position: relative;
  display: block;
}

.home-product .list-product .box .image img {
  position: absolute;
  bottom: 30px;
  left: 0;
  right: 0;
  margin: auto;
  max-width: 100%;
}

.home-product .list-product .box h3 {
  margin-bottom: 30px;
  color: #545454;
}

.home-product .list-product .box p {
  font-size: 14px;
  line-height: 20px;
  max-width: 250px;
  margin: auto auto 20px;
}

.home-product .list-product .box .button {
  position: absolute;
  bottom: 20px;
  left: 0;
  right: 0;
  margin: auto;
  width: 180px;
  padding: 0 20px;
  opacity: 0;
  visibility: hidden;
  transition: 0.3s cubic-bezier(0.005, 0.72, 0.35, 1.01) all;
  -webkit-transition: 0.3s cubic-bezier(0.005, 0.72, 0.35, 1.01) all;
  -moz-transition: 0.3s cubic-bezier(0.005, 0.72, 0.35, 1.01) all;
  -ms-transition: 0.3s cubic-bezier(0.005, 0.72, 0.35, 1.01) all;
  -o-transition: 0.3s cubic-bezier(0.005, 0.72, 0.35, 1.01) all;
}

.home-product .list-product .box:hover {
  background: #FFF;
  box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
  -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
  -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
  -ms-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
  -o-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
  overflow: visible;
}

.home-product .list-product .box:hover .button {
  visibility: visible;
  bottom: -26px;
  opacity: 1;
}

.home-product .list-product::after {
  content: "";
  display: block;
  clear: both;
}

.home-journal.middle {
  position: relative;
}

.home-journal.middle:before {
  content: '';
  background: url(../images/material/corner-leaf.png) no-repeat;
  width: 165px;
  height: 128px;
  position: absolute;
  bottom: 0px;
  left: -0px;
}

.home-journal.middle .list-journal .box {
  margin-bottom: 100px;
}

.home-journal .wrapper {
  width: 1190px;
  margin: auto;
}

.home-journal .list-journal {
  margin: 0 0 80px 0;
}

.home-journal .list-journal .box {
  width: 32%;
  margin-right: 2%;
  float: left;
}

.home-journal .list-journal .box:nth-of-type(3n) {
  margin-right: 0;
}

.home-journal .list-journal .box .image {
  overflow: hidden;
  height: 420px;
}

.home-journal .list-journal .box .image img {
  transition: 0.3s cubic-bezier(0.005, 0.72, 0.35, 1.01) all;
  -webkit-transition: 0.3s cubic-bezier(0.005, 0.72, 0.35, 1.01) all;
  -moz-transition: 0.3s cubic-bezier(0.005, 0.72, 0.35, 1.01) all;
  -ms-transition: 0.3s cubic-bezier(0.005, 0.72, 0.35, 1.01) all;
  -o-transition: 0.3s cubic-bezier(0.005, 0.72, 0.35, 1.01) all;
  display: block;
  min-height: 100%;
  min-width: 100%;
  max-width: none;
}

.home-journal .list-journal .box h3 {
  margin-top: 30px;
  text-align: center;
  padding: 0 30px;
  color: #444;
}

.home-journal .list-journal .box h6 {
  text-align: center;
  font-size: 12px;
  color: #82A53C;
  padding: 25px 30px 0;
}

.home-journal .list-journal .box:hover .image img {
  transform: scale(1.1);
  -webkit-transform: scale(1.1);
  -moz-transform: scale(1.1);
  -ms-transform: scale(1.1);
  -o-transform: scale(1.1);
}

.home-brand {
  padding-top: 0;
  text-align: center;
}

.home-brand .wrapper {
  width: 1190px;
  margin: auto;
}

.home-brand p {
  margin-bottom: 60px;
}

.home-brand .list-brand {
  margin: 0px -20px 80px -20px;
}

.home-brand .list-brand .box {
  width: 25%;
  float: left;
  padding: 0px 20px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.e-commerce {
  padding: 70px 0 100px;
  background: #E9E9E9;
  text-align: center;
}

.e-commerce .list-image a {
  margin: 0 30px;
  vertical-align: bottom;
  display: inline-block;
}

.e-commerce .list-image a img {
  filter: grayscale(100%);
}

.e-commerce .list-image a:hover img {
  filter: grayscale(0);
}

.banner-middle {
  position: relative;
  padding-top: 0px;
  height: 600px;
}

.banner-middle h5 {
  font-size: 14px;
  font-weight: 400;
  color: #fff;
  margin-bottom: 20px;
}

.banner-middle h2 {
  font-size: 50px;
  font-weight: 200;
  color: #fff;
  font-family: "Cooper Lt BT";
}

.banner-middle figure {
  width: 100%;
  height: 100%;
}

.banner-middle figure img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.banner-middle .text {
  position: absolute;
  left: 10%;
  right: 0;
  top: 20%;
  transform: translateY(-50%);
  -webkit-transform: translateY(-50%);
  -moz-transform: translateY(-50%);
  -ms-transform: translateY(-50%);
  -o-transform: translateY(-50%);
  text-align: left;
  width: 840px;
  /* margin: 0 auto; */
}

.header-line {
    position: absolute;
    top: 7%;
    left: 10%;
    right: 0;
    width: 80%;
    height: 4px;
    background: #ec7323;
}

.header-line::after {
    content: "Projects Highlights";
    position: absolute;
    right: 0;
    top: 7%;
    width: 15%;
    height: 40px;
    background: #f26a21;
    clip-path: polygon(0 0, 100% 0, 100% 100%, 40% 100%);

    display: flex;
    justify-content: center; 
    align-items: center;  
    padding-left: 80px; 
    color: #fff; 
    font-weight: bold;  
}

.content-middle {
  padding-top: 0px;
}

.content-middle h2 {
  font-size: 40px;
  color: #263E35;
}

.content-middle h3 {
  font-size: 30px;
  line-height: 45px;
  color: #263E35;
  font-family: "Cooper Lt BT";
  font-weight: 200;
}

.content-middle h5 {
  font-size: 20px;
  font-family: "Nunito Sans";
  line-height: 32px;
  color: #263E35;
}

.content-middle p {
  font-size: 18px;
  line-height: 30px;
  color: #263E35;
  font-family: "Nunito Sans";
}

.content-middle ul li {
  font-size: 20px;
  margin: 10px 0;
  font-family: "Nunito Sans";
  position: relative;
  padding-left: 15px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  line-height: 32px;
  color: #000;
}

.content-middle ul li:before {
  content: '';
  position: absolute;
  left: 0;
  top: 12px;
  background: #000;
  border-radius: 100%;
  -webkit-border-radius: 100%;
  -moz-border-radius: 100%;
  -ms-border-radius: 100%;
  -o-border-radius: 100%;
  width: 9px;
  height: 9px;
}

.two-box-middle {
  padding: 140px 0;
}

.two-box-middle.nopadbot {
  padding-bottom: 0;
}

.two-box-middle.nopadtop {
  padding-top: 0;
}

.two-box-middle .left, .two-box-middle .right {
  width: 48%;
  margin-right: 4%;
}

.two-box-middle .right {
  margin-right: 0;
}

.sec-aboutus {
  position: relative;
  z-index: 1;
}

.sec-aboutus .visi {
  text-align: center;
}

.sec-aboutus .visi.p1 {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.sec-aboutus .visi.p1 h3 {
  margin-bottom: 40px;
}

.sec-aboutus .visi.p1 h5 {
  padding: 0 100px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.video-middle {
  position: relative;
}

.video-middle .thumb-video {
  position: relative;
}

.video-middle .thumb-video img {
  width: 100%;
}

.video-middle .ic-play {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  margin: auto;
  background: url(../images/material/ic-play.png) no-repeat center;
  cursor: pointer;
  width: 78px;
  height: 78px;
}

.video-middle .wrap-yt {
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  right: 0;
  width: 100%;
  height: 100%;
  z-index: 2;
  display: none;
}

.video-middle .wrap-yt iframe {
  width: 100%;
  height: 100%;
}

.bg-gry {
  background: #F5F7F1;
  position: relative;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.bg-gry.bfr:before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  width: 100%;
  height: 350px;
  background: #fff;
}

.font-org {
  color: #FF862A;
}

.double-img {
  position: relative;
  padding-bottom: 150px;
  width: 100%;
}

.double-img img {
  width: 100%;
}

.double-img .img-big {
  width: 70%;
  float: right;
}

.double-img .img-small {
  position: absolute;
  left: 0;
  top: 20%;
  height: 525px;
  width: 40%;
}

.three-box-middle {
  padding: 160px 0 0;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.three-box-middle.nopadtop {
  padding-top: 0;
}

.sect {
  padding: 140px 0px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.sect.nopadbot {
  padding-bottom: 0;
}

.sect.nopadtop {
  padding-top: 0;
}

.box-three {
  margin: 100px -50px 0;
}

.box-three .box {
  width: 33.333%;
  text-align: center;
  padding: 0 40px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  margin-bottom: 20px;
  overflow: hidden;
}

.box-three .box:hover .text-hover {
  opacity: 1;
  visibility: visible;
}

.box-three figure {
  margin-bottom: 20px;
  width: 100%;
}

.box-three figure img {
  height: 100%;
}

.box-three h6 {
  font-size: 20px;
  line-height: 32px;
}

.box-three.produk figure {
  width: 100%;
  height: 345px;
  position: relative;
}

.box-three.produk img {
  position: absolute;
  height: auto;
  margin: auto;
  left: 0;
  top: 0;
  bottom: 0;
  right: 0;
}

.box-three.produk .text-hover {
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  width: 100%;
  height: auto;
  vertical-align: middle;
  transition: 0.3s cubic-bezier(0.005, 0.72, 0.35, 1.01) all;
  -webkit-transition: 0.3s cubic-bezier(0.005, 0.72, 0.35, 1.01) all;
  -moz-transition: 0.3s cubic-bezier(0.005, 0.72, 0.35, 1.01) all;
  -ms-transition: 0.3s cubic-bezier(0.005, 0.72, 0.35, 1.01) all;
  -o-transition: 0.3s cubic-bezier(0.005, 0.72, 0.35, 1.01) all;
  opacity: 0;
  visibility: visible;
  box-shadow: 0 0 10px -8px #000;
  -webkit-box-shadow: 0 0 10px -8px #000;
  -moz-box-shadow: 0 0 10px -8px #000;
  -ms-box-shadow: 0 0 10px -8px #000;
  -o-box-shadow: 0 0 10px -8px #000;
}

.box-three.produk h5 {
  font-size: 36px;
  color: #82A53C;
  margin-bottom: 70px;
}

.box-three.produk p {
  font-size: 14px;
  line-height: 26px;
}

.box-three.produk .pad {
  padding: 70px 50px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  background: #fff;
  height: 100%;
  overflow: hidden;
}

.box-three.ben figure {
  height: 140px;
}

.sosmed-middle {
  padding: 150px 0px 180px;
}

.sosmed-middle h6 {
  font-size: 20px;
}

.wrap-sosmed {
  text-align: center;
}

.wrap-sosmed a {
  display: inline-block;
  margin: 80px 40px 0;
  transition: 0.2s all ease-out;
  -webkit-transition: 0.2s all ease-out;
  -moz-transition: 0.2s all ease-out;
  -ms-transition: 0.2s all ease-out;
  -o-transition: 0.2s all ease-out;
}

.wrap-sosmed a img {
  transition: 0.2s all ease-out;
  -webkit-transition: 0.2s all ease-out;
  -moz-transition: 0.2s all ease-out;
  -ms-transition: 0.2s all ease-out;
  -o-transition: 0.2s all ease-out;
}

.wrap-sosmed a:hover {
  opacity: 0.8;
}

.wrap-sosmed a:hover img {
  transform: scale(1.1);
  -webkit-transform: scale(1.1);
  -moz-transform: scale(1.1);
  -ms-transform: scale(1.1);
  -o-transform: scale(1.1);
}

.slider-middle {
  padding: 70px 0;
}

.slider-middle .list-slider {
  display: table;
  padding: 0 25px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.slider-middle figure, .slider-middle .text {
  display: table-cell;
}

.slider-middle figure img {
  width: 100%;
  height: 400px;
  object-fit: cover;
}

.slider-middle p {
  font-size: 14px;
  line-height: 24px;
  margin-bottom: 50px;
}

.slider-middle h4 {
  font-size: 29px;
  font-family: "Cooper Lt BT";
  font-weight: bold;
  color: #82A53C;
  margin-bottom: 10px;
}

.slider-middle h5 {
  font-size: 24px;
  font-family: "Cooper Lt BT";
  font-weight: 200;
  letter-spacing: 2px;
}

.slider-middle .text {
  width: 50%;
  background: #fff;
  text-align: center;
  vertical-align: middle;
  padding: 75px 90px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.slider-middle .slick-dots {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  margin: 0 auto;
  text-align: center;
  height: auto;
}

.slider-middle .slick-dots li {
  display: inline-block;
}

.slider-middle .slick-dots li:before {
  display: none;
}

.slider-middle .slick-dots li.slick-active button {
  background: #9B9B9B;
}

.slider-middle .slick-dots button {
  width: 12px;
  height: 12px;
  padding: 0;
  background: #E2E1E1;
  font-size: 0;
  border: none;
  border-radius: 100%;
  -webkit-border-radius: 100%;
  -moz-border-radius: 100%;
  -ms-border-radius: 100%;
  -o-border-radius: 100%;
}

.detail-produk {
  padding-top: 160px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.detail-produk .tittle h5 {
  font-size: 15px;
  margin-bottom: 20px;
  color: #82A53C;
}

.detail-produk .tittle h2 {
  font-size: 50px;
  font-family: "Cooper Lt BT";
}

.detail-produk .produk {
  padding: 100px 0px 0;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  display: table;
  width: 100%;
}

.detail-produk .produk .left, .detail-produk .produk .right {
  width: 48%;
  float: none;
  display: table-cell;
}

.detail-produk .produk .right {
  vertical-align: middle;
  padding-left: 4%;
  width: auto;
}

.detail-produk .produk .left {
  position: relative;
  /* background: #F5F7F1; */
}

.detail-produk .produk .left:before {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  width: 100%;
  right: 100%;
  z-index: -1;
  /* background: #F5F7F1; */
}

.detail-produk .produk figure {
  text-align: center;
  padding: 120px 100px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.wrap-acc-middle h4 {
  font-size: 32px;
  font-family: "Cooper Lt BT";
}

.wrap-acc-middle p {
  font-size: 14px;
  line-height: 24px;
}

.wrap-acc-middle .list {
  padding-left: 45px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  margin-bottom: 40px;
}

.wrap-acc-middle .list.act .grid-acc:before {
  transform: rotate(0deg);
  -webkit-transform: rotate(0deg);
  -moz-transform: rotate(0deg);
  -ms-transform: rotate(0deg);
  -o-transform: rotate(0deg);
}

.wrap-acc-middle .grid-acc {
  position: relative;
  cursor: pointer;
}

.wrap-acc-middle .grid-acc:before {
  content: '';
  position: absolute;
  top: 0px;
  left: -45px;
  width: 32px;
  height: 32px;
  background: url(../images/material/arr-acc.png) no-repeat center;
  transform: rotate(-90deg);
  -webkit-transform: rotate(-90deg);
  -moz-transform: rotate(-90deg);
  -ms-transform: rotate(-90deg);
  -o-transform: rotate(-90deg);
  transition: 0.2s all ease-out;
  -webkit-transition: 0.2s all ease-out;
  -moz-transition: 0.2s all ease-out;
  -ms-transition: 0.2s all ease-out;
  -o-transition: 0.2s all ease-out;
}

.wrap-acc-middle .content-acc {
  padding: 15px 0px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  display: none;
}

.wrap-event {
  position: relative;
  align-items: center;
}

.wrap-event:before {
  content: '';
  background: url(../images/material/corner-leaf.png) no-repeat;
  width: 165px;
  height: 128px;
  position: absolute;
  bottom: 0px;
  left: -0px;
}

.wrap-event .box {
  float: left;
  width: 49%;
  margin-right: 2%;
  margin-bottom: 35px;
  text-align: center;
}

.wrap-event .box:nth-child(2n) {
  margin-right: 0;
}

.wrap-event h3 {
  font-size: 32px;
  font-family: "Cooper Lt BT";
  text-align: center;
  padding: 70px 60px;
}

.wrap-event .date {
  font-size: 18px;
  color: #82A53C;
  display: inline-block;
  margin-bottom: 70px;
}

.wrap-event figure img {
  width: 100%;
}

.filter {
  padding-top: 150px;
}

.filter .row {
  display: table;
  width: 100%;
}

.filter .left, .filter .right {
  display: table-cell;
  float: none;
}

.filter .right {
  text-align: right;
}

.filter .left {
  width: 80%;
  vertical-align: middle;
}

.filter ul li {
  display: inline-block;
  margin: 0 15px;
}

.filter ul li.active a {
  color: #82A53C;
}

.filter ul li:first-child {
  margin-left: 0;
}

.filter ul li a {
  color: #C6C6C6;
  font-size: 18px;
  font-family: "Cooper Lt BT";
  transition: 0.2s all ease-out;
  -webkit-transition: 0.2s all ease-out;
  -moz-transition: 0.2s all ease-out;
  -ms-transition: 0.2s all ease-out;
  -o-transition: 0.2s all ease-out;
}

.filter ul li a:hover, .filter ul li a.active {
  color: #82A53C;
}

.filter select {
  border: none;
  font-size: 18px;
  font-family: "Cooper Lt BT";
  color: #C6C6C6;
  cursor: pointer;
}

.filter .col {
  display: inline-block;
  position: relative;
  padding-right: 10px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.filter .col:after {
  content: '';
  position: absolute;
  right: 0;
  top: 0;
  bottom: 0;
  margin: auto 0;
  background: url(../images/material/arr-select.png) no-repeat;
  width: 11px;
  height: 6px;
}

.pagging {
  text-align: center;
}

.pagging .arr {
  background: url(../images/material/arr-paging.png) no-repeat center;
  width: 9px;
  height: 20px;
  position: relative;
  vertical-align: middle;
  margin-top: 5px;
}

.pagging .arr:before {
  display: none;
}

.pagging .arr.next {
  transform: rotate(180deg);
  -webkit-transform: rotate(180deg);
  -moz-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  -o-transform: rotate(180deg);
}

.pagging a {
  font-size: 18px;
  font-family: "Nunito Sans";
  color: #263E35;
  padding: 15px 10px;
  display: inline-block;
  vertical-align: middle;
  position: relative;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  transition: 0.2s all ease-out;
  -webkit-transition: 0.2s all ease-out;
  -moz-transition: 0.2s all ease-out;
  -ms-transition: 0.2s all ease-out;
  -o-transition: 0.2s all ease-out;
}

.pagging a:before {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  width: 0;
  height: 3px;
  background: #82A53C;
  transition: 0.2s all ease-out;
  -webkit-transition: 0.2s all ease-out;
  -moz-transition: 0.2s all ease-out;
  -ms-transition: 0.2s all ease-out;
  -o-transition: 0.2s all ease-out;
}

.pagging a:hover, .pagging a.active {
  color: #111;
}

.pagging a:hover:before, .pagging a.active:before {
  width: 100%;
}

.detail-page .twobox {
  display: table;
  width: 100%;
}

.detail-page .twobox .left, .detail-page .twobox .right {
  display: table-cell;
  float: none;
}

.detail-page .twobox .left img {
  width: 100%;
}

.detail-page .twobox .right {
  width: 50%;
  padding: 0px 40px;
  vertical-align: middle;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.detail-page h5 {
  font-size: 18px;
  margin-bottom: 15px;
}

.detail-page h5.date {
  color: #82A53C;
}

.detail-page h4 {
  font-size: 32px;
  font-family: "Nunito Sans";
}

.twocollum {
  display: table;
  width: 70%;
  margin: 0 auto;
  text-align: justify;
}

.twocollum .left, .twocollum .right {
  display: table-cell;
  float: none;
}

.twocollum .right {
  width: 50%;
  height: 1200px;
  background-color:#e3e3e3;
}

.twocollum .right img {
  width: 70%;
}

.twocollum .left {
  width: 50%;
  padding: 0px 40px 0px 0px;
  vertical-align: top;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.twocolum {
  display: table;
  width: 70%;
  margin: 0 auto;
  text-align: justify;
}

.twocolum .left, .twocolum .right {
  display: table-cell;
  float: none;
}

.twocolum .right {
  width: 50%;
  padding: 0px 40px 0px 0px;
  vertical-align: top;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.twocolum .left {
  width: 50%;
  padding: 0px 40px 0px 0px;
  vertical-align: top;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.twocollums {
  display: flex;
  width: 100%;
  text-align: justify;
  margin: 0;
  padding: 0;
}

.twocollums .lefts,
.twocollums .rights {
  padding: 0px 40px 0px 0px;
  flex: 1;
}

.duacollum {
  display: flex;
  width: 100%;
  text-align: justify;
  margin: 0;
  padding: 0;
}

.duacollum .kiri,
.duacollum .kanan {
  padding: 0px 40px 0px 0px;
  flex: 1;
}

.std-content {
  width: 787px;
  margin: 0 auto;
}

.std-content p {
  font-size: 18px;
  line-height: 28px;
}

.img-middle img {
  width: 100%;
}

.dots-two {
  justify-content: space-between;
  padding: 100px 0px;
}

.dots-two ul li {
  width: 50%;
  padding-left: 20px;
}

/*=============================================================================================
    Company    : PT Web Architect Technology - webarq.com
    Document   : Stylesheet
    Author     : FrontEnd Team
==============================================================================================*/
/* import bourbon - http://bourbon.io/docs */
.a-center {
  text-align: center !important;
}

.a-left {
  text-align: left !important;
}

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

.after-clear, .wrapper:after, .form-middle .row:after, .home-product .list-product:after, .home-journal .list-journal:after, .home-brand .list-brand:after, .two-box-middle:after, .double-img:after, .wrap-event:after, footer .footer-top .list-sertifikasi:after, footer .footer-top:after {
  clear: both;
  display: block;
}

.after-clear:after, .wrapper:after, .form-middle .row:after, .home-product .list-product:after, .home-journal .list-journal:after, .home-brand .list-brand:after, .two-box-middle:after, .double-img:after, .wrap-event:after, footer .footer-top .list-sertifikasi:after, footer .footer-top:after {
  content: "";
  display: block;
  clear: both;
}

.right {
  float: right;
}

.left {
  float: left;
}

/* color global
----------------------------------------------------------------------------------------------*/
.container-leaf {
  position: relative;
  overflow: hidden;
}

.container-leaf .leaf {
  position: absolute;
  top: -130px;
  z-index: 1;
}

.container-leaf .leaf.leaf-1 {
  left: 44%;
  width: 94px;
  height: 97px;
  background: url(../images/material/leaf-1.png) no-repeat center;
}

.container-leaf .leaf.leaf-2 {
  left: 8%;
  width: 99px;
  height: 112px;
  background: url(../images/material/leaf-2.png) no-repeat center;
}

.container-leaf .leaf.leaf-3 {
  left: 20%;
  width: 88px;
  height: 104px;
  background: url(../images/material/leaf-3.png) no-repeat center;
}

.container-leaf .leaf.leaf-4 {
  left: 31%;
  width: 88px;
  height: 108px;
  background: url(../images/material/leaf-4.png) no-repeat center;
}

.container-leaf .leaf.leaf-5 {
  left: 55%;
  width: 78px;
  height: 76px;
  background: url(../images/material/leaf-5.png) no-repeat center;
}

.container-leaf .leaf.leaf-6 {
  left: 69%;
  width: 142px;
  height: 156px;
  background: url(../images/material/leaf-6.png) no-repeat center;
}

.container-leaf .leaf.leaf-7 {
  left: 86%;
  width: 162px;
  height: 141px;
  background: url(../images/material/leaf-7.png) no-repeat center;
}

.container-leaf.about:before, .container-leaf.about:after {
  height: 3rem;
}

.container-leaf:before {
  height: 7.2rem;
  width: 100%;
  position: absolute;
  top: -1px;
  left: 0;
  content: "";
  z-index: 9;
  background: linear-gradient(to bottom, white 35%, rgba(255, 255, 255, 0));
}

.container-leaf:after {
  height: 8.2rem;
  width: 100%;
  position: absolute;
  bottom: -1px;
  left: 0;
  content: "";
  z-index: 9;
  transform: rotate(180deg);
  background: linear-gradient(to bottom, white 35%, rgba(255, 255, 255, 0));
}

/* footer
----------------------------------------------------------------------------------------------*/
footer {
  padding: 50px 0 10px 0;
  background: #000000;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

footer .footer-top .col-3 {
  width: 33.33%;
  float: left;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  padding: 0 30px;
  color: #FFF;
  position: relative;
  height: 260px;
}

footer .footer-top .col-3 p {
  font-size: 12px;
  max-width: 250px;
  color: #fff;
}

footer .footer-top .bottom-pos {
  position: absolute;
  bottom: 0;
  left: 30px;
}

footer .footer-top .link-contact a {
  padding-left: 35px;
  line-height: 28px;
  font-size: 12px;
  color: #FFF;
  margin-right: 30px;
  display: inline-block;
}

footer .footer-top .link-contact .mail {
  background: url(../images/material/email-ico.png) no-repeat left center;
}

footer .footer-top .link-contact .call {
  background: url(../images/material/phone-ico.png) no-repeat left center;
}

footer .footer-top .list-sertifikasi {
  margin: 20px 0 0 0;
}

footer .footer-top .list-sertifikasi div {
  float: left;
  margin-right: 20px;
  width: 43px;
  height: 43px;
  border-radius: 100%;
  -webkit-border-radius: 100%;
  -moz-border-radius: 100%;
  -ms-border-radius: 100%;
  -o-border-radius: 100%;
  overflow: hidden;
}

/* footer .footer-top .subscribe {
  max-width: 290px;
}

footer .footer-top .subscribe h6 {
  font-size: 9px;
  letter-spacing: 1.8px;
  padding-right: 60px;
  line-height: 18px;
  margin-bottom: 30px;
  background: url(../images/material/big-arrow.png) no-repeat right bottom;
}

footer .footer-top .subscribe input {
  width: 100%;
  height: 40px;
  border: none;
  border-radius: 40px;
  -webkit-border-radius: 40px;
  -moz-border-radius: 40px;
  -ms-border-radius: 40px;
  -o-border-radius: 40px;
  padding: 0 20px;
  font-size: 12px;
} */

footer .footer-top .subscribe .sub {
  position: relative;
  max-width: 290px;
}

footer .footer-top .subscribe input[type="email"] {
  width: 100%;
  height: 40px;
  border: none;
  border-radius: 40px;
  padding: 0 50px 0 20px; /* RUANG KANAN UNTUK ICON */
  font-size: 12px;
  box-sizing: border-box;
}

footer .footer-top .subscribe input[type="submit"] {
  position: absolute;
  right: 12px;        /* posisi horizontal */
  top: 50%;           /* posisi vertical */
  transform: translateY(-50%);
  width: 24px;
  height: 24px;
  border: none;
  padding: 0;
  background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="%23000" d="M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8-8-8z"/></svg>') no-repeat center center;
  background-size: contain;
  cursor: pointer;
  
  /* sembunyikan teks default tombol */
  text-indent: -9999px;
  appearance: none;
  -webkit-appearance: none;
}

footer .footer-bottom {
  border-top: 1px solid #FFF;
  padding-top: 10px;
  margin-top: 50px;
}

footer .footer-bottom p {
  margin: 0;
  font-size: 8px;
  color: #FFF;
  margin: 20px;
  letter-spacing: 1px;
}

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlcyI6WyJzdHlsZS5zY3NzIiwic2Fzcy1saWIuc2NzcyIsImJvdXJib24vX2JvdXJib24uc2NzcyIsImJvdXJib24vc2V0dGluZ3MvX3ByZWZpeGVyLnNjc3MiLCJib3VyYm9uL3NldHRpbmdzL19weC10by1lbS5zY3NzIiwiYm91cmJvbi9zZXR0aW5ncy9fYXNzZXQtcGlwZWxpbmUuc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL19hc3NpZ24taW5wdXRzLnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9fY29udGFpbnMuc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL19jb250YWlucy1mYWxzeS5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX2lzLWxlbmd0aC5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX2lzLWxpZ2h0LnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9faXMtbnVtYmVyLnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9faXMtc2l6ZS5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX3B4LXRvLWVtLnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9fcHgtdG8tcmVtLnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9fc2hhZGUuc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL19zdHJpcC11bml0cy5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX3RpbnQuc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL190cmFuc2l0aW9uLXByb3BlcnR5LW5hbWUuc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL191bnBhY2suc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL19tb2R1bGFyLXNjYWxlLnNjc3MiLCJib3VyYm9uL2hlbHBlcnMvX2NvbnZlcnQtdW5pdHMuc2NzcyIsImJvdXJib24vaGVscGVycy9fZGlyZWN0aW9uYWwtdmFsdWVzLnNjc3MiLCJib3VyYm9uL2hlbHBlcnMvX2ZvbnQtc291cmNlLWRlY2xhcmF0aW9uLnNjc3MiLCJib3VyYm9uL2hlbHBlcnMvX2dyYWRpZW50LXBvc2l0aW9ucy1wYXJzZXIuc2NzcyIsImJvdXJib24vaGVscGVycy9fbGluZWFyLWFuZ2xlLXBhcnNlci5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19saW5lYXItZ3JhZGllbnQtcGFyc2VyLnNjc3MiLCJib3VyYm9uL2hlbHBlcnMvX2xpbmVhci1wb3NpdGlvbnMtcGFyc2VyLnNjc3MiLCJib3VyYm9uL2hlbHBlcnMvX2xpbmVhci1zaWRlLWNvcm5lci1wYXJzZXIuc2NzcyIsImJvdXJib24vaGVscGVycy9fcmFkaWFsLWFyZy1wYXJzZXIuc2NzcyIsImJvdXJib24vaGVscGVycy9fcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXIuc2NzcyIsImJvdXJib24vaGVscGVycy9fcmFkaWFsLWdyYWRpZW50LXBhcnNlci5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19yZW5kZXItZ3JhZGllbnRzLnNjc3MiLCJib3VyYm9uL2hlbHBlcnMvX3NoYXBlLXNpemUtc3RyaXBwZXIuc2NzcyIsImJvdXJib24vaGVscGVycy9fc3RyLXRvLW51bS5zY3NzIiwiYm91cmJvbi9jc3MzL19hbmltYXRpb24uc2NzcyIsImJvdXJib24vY3NzMy9fYXBwZWFyYW5jZS5zY3NzIiwiYm91cmJvbi9jc3MzL19iYWNrZmFjZS12aXNpYmlsaXR5LnNjc3MiLCJib3VyYm9uL2NzczMvX2JhY2tncm91bmQuc2NzcyIsImJvdXJib24vY3NzMy9fYmFja2dyb3VuZC1pbWFnZS5zY3NzIiwiYm91cmJvbi9jc3MzL19ib3JkZXItaW1hZ2Uuc2NzcyIsImJvdXJib24vY3NzMy9fY2FsYy5zY3NzIiwiYm91cmJvbi9jc3MzL19jb2x1bW5zLnNjc3MiLCJib3VyYm9uL2NzczMvX2ZpbHRlci5zY3NzIiwiYm91cmJvbi9jc3MzL19mbGV4LWJveC5zY3NzIiwiYm91cmJvbi9jc3MzL19mb250LWZhY2Uuc2NzcyIsImJvdXJib24vY3NzMy9fZm9udC1mZWF0dXJlLXNldHRpbmdzLnNjc3MiLCJib3VyYm9uL2NzczMvX2hpZHBpLW1lZGlhLXF1ZXJ5LnNjc3MiLCJib3VyYm9uL2NzczMvX2h5cGhlbnMuc2NzcyIsImJvdXJib24vY3NzMy9faW1hZ2UtcmVuZGVyaW5nLnNjc3MiLCJib3VyYm9uL2NzczMvX2tleWZyYW1lcy5zY3NzIiwiYm91cmJvbi9jc3MzL19saW5lYXItZ3JhZGllbnQuc2NzcyIsImJvdXJib24vY3NzMy9fcGVyc3BlY3RpdmUuc2NzcyIsImJvdXJib24vY3NzMy9fcGxhY2Vob2xkZXIuc2NzcyIsImJvdXJib24vY3NzMy9fcmFkaWFsLWdyYWRpZW50LnNjc3MiLCJib3VyYm9uL2NzczMvX3NlbGVjdGlvbi5zY3NzIiwiYm91cmJvbi9jc3MzL190ZXh0LWRlY29yYXRpb24uc2NzcyIsImJvdXJib24vY3NzMy9fdHJhbnNmb3JtLnNjc3MiLCJib3VyYm9uL2NzczMvX3RyYW5zaXRpb24uc2NzcyIsImJvdXJib24vY3NzMy9fdXNlci1zZWxlY3Quc2NzcyIsImJvdXJib24vYWRkb25zL19ib3JkZXItY29sb3Iuc2NzcyIsImJvdXJib24vYWRkb25zL19ib3JkZXItcmFkaXVzLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fYm9yZGVyLXN0eWxlLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fYm9yZGVyLXdpZHRoLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fYnV0dG9ucy5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX2NsZWFyZml4LnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fZWxsaXBzaXMuc2NzcyIsImJvdXJib24vYWRkb25zL19mb250LXN0YWNrcy5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX2hpZGUtdGV4dC5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX21hcmdpbi5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX3BhZGRpbmcuc2NzcyIsImJvdXJib24vYWRkb25zL19wb3NpdGlvbi5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX3ByZWZpeGVyLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fcmV0aW5hLWltYWdlLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fc2l6ZS5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX3RleHQtaW5wdXRzLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fdGltaW5nLWZ1bmN0aW9ucy5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX3RyaWFuZ2xlLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fd29yZC13cmFwLnNjc3MiLCJib3VyYm9uL19ib3VyYm9uLWRlcHJlY2F0ZWQtdXBjb21pbmcuc2NzcyIsImhvbWUuc2NzcyIsImxlYWYtYW5pbS5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICBEb2N1bWVudCAgIDogU3R5bGVzaGVldFxyXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cclxuQGltcG9ydCBcInNhc3MtbGliXCI7XHJcblxyXG5ib2R5IHtcclxuICAgIGNvbG9yOiAjMjYzRTM1O1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgZm9udC1mYW1pbHk6ICRmb250LTQsJ01vbnRzZXJyYXQnO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xyXG59XHJcbmZpZ3VyZXtcclxuICAgIG1hcmdpbjogMDsgcGFkZGluZzogMDtcclxuICAgIGltZ3t2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO31cclxufVxyXG5pbWd7IGJvcmRlcjowOyBtYXgtd2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG87IH1cclxucCB7XHJcbiAgICBtYXJnaW46IDFweCAwIDE1cHg7XHJcbiAgICBsaW5lLWhlaWdodDogMjBweDtcclxufVxyXG5pbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCB7XHJcbiAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICBib3JkZXI6IG5vbmU7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjRDhEOEQ4O1xyXG4gICAgcGFkZGluZzogMTBweDtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIGNvbG9yOiAjNjY2O1xyXG4gICAgYXBwZWFyYW5jZTogbm9uZTtcclxuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcclxuICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcclxuICAgIGZvbnQtZmFtaWx5OiAkZm9udC00O1xyXG4gICAgQGluY2x1ZGUgYm94U2l6aW5nKGJvcmRlci1ib3gpO1xyXG59XHJcbmlucHV0W3R5cGU9Y2hlY2tib3hdLCBpbnB1dFt0eXBlPXJhZGlvXSB7XHJcbiAgICBib3JkZXItdG9wLXN0eWxlOiBub25lO1xyXG4gICAgYm9yZGVyLXJpZ2h0LXN0eWxlOiBub25lO1xyXG4gICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogbm9uZTtcclxuICAgIGJvcmRlci1sZWZ0LXN0eWxlOiBub25lO1xyXG59XHJcbmgxIHsgZm9udC1zaXplOiA1NXB4OyBmb250LWZhbWlseTokZm9udC0zO21hcmdpbi1ib3R0b206MzBweDt9XHJcbmgyIHsgZm9udC1zaXplOiA0MHB4OyBmb250LWZhbWlseTokZm9udC0zO2xpbmUtaGVpZ2h0OjY1cHg7fVxyXG5oMyB7IGZvbnQtc2l6ZTogMzJweDsgZm9udC1mYW1pbHk6JGZvbnQtMztsaW5lLWhlaWdodDo0MnB4O31cclxuaDQgeyBmb250LXNpemU6IDIwcHg7IH1cclxuaDUgeyBmb250LXNpemU6IDE2cHg7IH1cclxuaDYgeyBmb250LXNpemU6IDE0cHg7IH1cclxuLyogc3RydWN0dXJlXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5zZWN0aW9uIHsgcG9zaXRpb246IHJlbGF0aXZlOyB9XHJcbi5mbGV4LWxpc3Qge2Rpc3BsYXk6IC13ZWJraXQtYm94O2Rpc3BsYXk6IC1tb3otYm94O2Rpc3BsYXk6IC1tcy1mbGV4Ym94O2Rpc3BsYXk6IC13ZWJraXQtZmxleDtkaXNwbGF5OiBmbGV4Oy13ZWJraXQtZmxleC1mbG93OiByb3cgd3JhcDt9XHJcblxyXG4ud3JhcHBlciB7XHJcbiAgICB3aWR0aDphdXRvO21hcmdpbjogMCA2MHB4O1xyXG4gICAgJjphZnRlcntAZXh0ZW5kIC5hZnRlci1jbGVhcjt9XHJcbiAgICAmLnYyeyB3aWR0aDogMTE5MHB4OyBtYXJnaW46IDAgYXV0bzsgfVxyXG59XHJcblxyXG4uYnV0dG9ue1xyXG4gICAgZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLWJvdHRvbToyMHB4O2JvcmRlcjoycHggc29saWQgIzQxNzUwNTtsaW5lLWhlaWdodDo0MnB4O2hlaWdodDo0NnB4O2NvbG9yOiNGRkY7XHJcbiAgICBwYWRkaW5nOjAgNTBweDtmb250LXNpemU6MTJweDtsZXR0ZXItc3BhY2luZzoycHg7IGJhY2tncm91bmQ6IzQxNzUwNTsgIFxyXG4gICAgQGluY2x1ZGUgYm9yZGVyUmFkaXVzKDMwcHgpOyBAaW5jbHVkZSB0cmFuc2l0aW9uKC40cyBhbGwgJGVhc2UpOyBwb3NpdGlvbjogcmVsYXRpdmU7IHotaW5kZXg6IDE7XHJcbiAgICAmOmJlZm9yZXsgXHJcbiAgICAgICAgY29udGVudDonJzsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IGJvdHRvbTogMDsgcmlnaHQ6IDA7IGJhY2tncm91bmQ6IzQxNzUwNTsgIEBpbmNsdWRlIHRyYW5zaXRpb24oLjRzIGFsbCAkZWFzZSk7IFxyXG4gICAgICAgIHotaW5kZXg6IC0xOyBAaW5jbHVkZSBib3JkZXJSYWRpdXMoMzBweCk7XHJcbiAgICB9XHJcbiAgICAmLmJvcmRlcntcclxuICAgICAgICBjb2xvcjojZmZmO1xyXG4gICAgICAgICY6YmVmb3JleyBiYWNrZ3JvdW5kOiM0MTc1MDU7IH1cclxuICAgIH1cclxuICAgICY6aG92ZXJ7XHJcbiAgICAgICAgY29sb3I6I2ZmZjtcclxuICAgICAgICAmLmJvcmRlcntcclxuICAgICAgICAgICAgY29sb3I6ICM0MTc1MDU7XHJcbiAgICAgICAgICAgICY6YmVmb3JleyBiYWNrZ3JvdW5kOiNmZmY7IH1cclxuICAgICAgICB9XHJcbiAgICAgICAgJjpiZWZvcmV7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMzODY0MDY7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJi5zY2FsZXtcclxuICAgICAgICAmOmJlZm9yZXtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbi5saW5re1xyXG4gICAgZm9udC1zaXplOjE4cHg7bGluZS1oZWlnaHQ6MjRweDtiYWNrZ3JvdW5kOnVybCguLi9pbWFnZXMvbWF0ZXJpYWwvYXJyb3ctcmlnaHQucG5nKSBuby1yZXBlYXQgcmlnaHQgY2VudGVyO1xyXG4gICAgcGFkZGluZzowIDMwcHggMCAwO2NvbG9yOiM4MkE1M0M7QGluY2x1ZGUgdHJhbnNpdGlvbigwLjJzIGxpbmVhciBhbGwpO1xyXG4gICAgJjpob3ZlcntcclxuICAgICAgIGNvbG9yOiM0MTc1MDU7cGFkZGluZy1yaWdodDozNXB4O1xyXG4gICAgfVxyXG59XHJcbi5idG4tdXB7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7IGJvdHRvbTogMTUlOyByaWdodDogMS41JTsgYmFja2dyb3VuZDogdXJsKC4uL2ltYWdlcy9tYXRlcmlhbC9hcnItcGFnZXVwLnBuZyluby1yZXBlYXQ7XHJcbiAgICB3aWR0aDogMzRweDsgaGVpZ2h0OiAzNHB4OyAgei1pbmRleDogOTsgb3BhY2l0eTogMC43OyBAaW5jbHVkZSB0cmFuc2l0aW9uKC4ycyBhbGwgZWFzZS1vdXQpOyBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAmOmhvdmVyeyBvcGFjaXR5OjE7IH1cclxufVxyXG4udGl0dGxlLWNvbnRhY3R1c3tcclxuICAgIHBhZGRpbmctdG9wOiAxMDBweDtcclxuICAgIGg1eyBmb250LXNpemU6MTRweDsgY29sb3I6ICM4MkE1M0M7IG1hcmdpbi1ib3R0b206IDIwcHg7IH1cclxuICAgIGgzeyBmb250LXNpemU6IDUwcHg7IGZvbnQtZmFtaWx5OiAkZm9udC0zOyBjb2xvcjogIzI2M0UzNTsgfVxyXG59XHJcbi5mb3JtLW1pZGRsZXtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgcGFkZGluZzowIDEwMHB4OyBAaW5jbHVkZSBib3hTaXppbmcoYm9yZGVyLWJveCk7IG1hcmdpbi10b3A6IDEzMHB4O1xyXG4gICAgJjpiZWZvcmV7IFxyXG4gICAgICAgIGNvbnRlbnQ6Jyc7XHJcbiAgICAgICAgd2lkdGg6MTAwJTsgaGVpZ2h0OiAxMDAlOyB0b3A6MTUwcHg7IGxlZnQ6IDA7IHJpZ2h0OiAwOyBib3R0b206IDA7IGJhY2tncm91bmQ6ICNGNUY3RjE7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogLTE7XHJcbiAgICB9XHJcbiAgICAuZm9ybXtcclxuICAgICAgICBwYWRkaW5nOiA4MHB4IDEwMHB4IDEwMHB4OyBAaW5jbHVkZSBib3hTaXppbmcoYm9yZGVyLWJveCk7IGJhY2tncm91bmQ6ICNmZmY7IEBpbmNsdWRlIGJvcmRlclJhZGl1cygyMHB4KTtcclxuICAgICAgICBAaW5jbHVkZSBib3hTaGFkb3coMHB4IDBweCAyMHB4IC0xNnB4ICMwMDApO1xyXG4gICAgfVxyXG4gICAgLnJvd3tcclxuICAgICAgICAmOmFmdGVyeyBAZXh0ZW5kIC5hZnRlci1jbGVhciB9XHJcbiAgICAgICAgLmNvbHtcclxuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsgd2lkdGg6IDEwMCU7IGZsb2F0OiBsZWZ0O1xyXG4gICAgICAgICAgICAmLmhhbGZ7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDo0OCU7IG1hcmdpbi1yaWdodDogNCU7XHJcbiAgICAgICAgICAgICAgICAmOmxhc3QtY2hpbGR7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaW5wdXR7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDU1cHg7IEBpbmNsdWRlIGJvcmRlclJhZGl1cygxMHB4KTsgYm9yZGVyLWNvbG9yOiAjNzA3MDcwOyBmb250LXNpemU6IDE4cHg7IH1cclxuICAgIHRleHRhcmVheyB3aWR0aDogMTAwJTsgaGVpZ2h0OiA0MTVweDsgQGluY2x1ZGUgYm9yZGVyUmFkaXVzKDEwcHgpOyBib3JkZXItY29sb3I6ICM3MDcwNzA7IHJlc2l6ZTogbm9uZTsgZm9udC1zaXplOiAxOHB4OyAgfVxyXG59XHJcbi5saXN0LWFkZHJlc3N7XHJcbiAgICBoNnsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjogIzgyQTUzQzsgbGluZS1oZWlnaHQ6IDIycHg7IGxldHRlci1zcGFjaW5nOiAycHg7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH1cclxuICAgIHB7IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDIycHg7IGNvbG9yOiAjMjYzRTM1OyB9XHJcbiAgICAuYm94e3dpZHRoOiAzNjBweDsgbWFyZ2luOiAwIGF1dG8gMzBweDsgfVxyXG59XHJcbi5tYXBze1xyXG4gICAgaWZyYW1leyB3aWR0aDogMTAwJTsgaGVpZ2h0OiA0NTBweDsgfVxyXG59XHJcbi8qIGhlYWRlclxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuaGVhZGVye1xyXG4gICAgaGVpZ2h0OjgwcHg7YmFja2dyb3VuZDojRkZGO0BpbmNsdWRlIGJveFNoYWRvdygwcHggMHB4IDVweCByZ2JhKDAsMCwwLDAuMSkpO3Bvc2l0aW9uOiBmaXhlZDt6LWluZGV4OiA5OTtcclxuICAgIHRvcDogMDsgbGVmdDogMDsgcmlnaHQ6IDA7IEBpbmNsdWRlIHRyYW5zaXRpb24oLjJzIGFsbCBlYXNlLW91dCk7XHJcbiAgICAubG9nb3tcclxuICAgICAgICBmbG9hdDpsZWZ0O21hcmdpbjoxN3B4IDAgMCAwOyBAaW5jbHVkZSB0cmFuc2l0aW9uKC4ycyBhbGwgZWFzZS1vdXQpO1xyXG4gICAgfVxyXG4gICAgbmF2e1xyXG4gICAgICAgIHdpZHRoOjYwJTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46YXV0bztwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDtcclxuICAgICAgICA+IGRpdntcclxuICAgICAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgICAgIG1hcmdpbjowIDMwcHg7XHJcbiAgICAgICAgICAgIGF7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7IGxpbmUtaGVpZ2h0OjgwcHg7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgQGluY2x1ZGUgdHJhbnNpdGlvbiguMnMgYWxsIGVhc2Utb3V0KTtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICY6YmVmb3JleyBcclxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OicnOyBwb3NpdGlvbjogYWJzb2x1dGU7IGJvdHRvbTogMDsgbGVmdDogMDsgcmlnaHQ6IDA7IHdpZHRoOiAwOyBoZWlnaHQ6IDVweDsgYmFja2dyb3VuZDogIzgyQTUzQzsgXHJcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbiguMnMgYWxsIGVhc2Utb3V0KTsgei1pbmRleDogMjsgbWFyZ2luOiAwIGF1dG87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAmOmhvdmVyLCYuYWN0aXZle1xyXG4gICAgICAgICAgICAgICAgICAgICY6YmVmb3Jle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgJi5oYXZlLWRyb3B7XHJcbiAgICAgICAgICAgICAgID4gYXtcclxuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAzMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICY6YWZ0ZXJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6Jyc7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2VzL21hdGVyaWFsL2Ryb3Bkb3duLnBuZykgbm8tcmVwZWF0IHJpZ2h0OyB3aWR0aDogMTNweDsgaGVpZ2h0OiA3cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgcmlnaHQ6IDA7IHRvcDogMDsgYm90dG9tOiAwOyBtYXJnaW46IGF1dG8gMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLmRyb3Bkb3due1xyXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogLTQwJTsgcmlnaHQ6IC00MCU7IHdpZHRoOiBhdXRvOyBoZWlnaHQ6IDg1cHg7IGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgICAgICAgICAgICAgICAgICAgdG9wOiA5MCU7IHRleHQtYWxpZ246IGNlbnRlcjsgb3BhY2l0eTogMDsgdmlzaWJpbGl0eTogaGlkZGVuOyBAaW5jbHVkZSB0cmFuc2l0aW9uKC4ycyBhbGwgZWFzZS1vdXQpO1xyXG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIGJveFNoYWRvdygwIDVweCAxNXB4IC0xM3B4ICMwMDApO1xyXG4gICAgICAgICAgICAgICAgICAgIHVse1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA+IGxpeyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsgIHBhZGRpbmc6MCA0MHB4OyBAaW5jbHVkZSBib3hTaXppbmcoYm9yZGVyLWJveCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJjpiZWZvcmV7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6Jyc7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgcmlnaHQ6IDA7IGhlaWdodDogMzVweDsgd2lkdGg6IDFweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRDhEOEQ4OyBtYXJnaW46YXV0byAwOyB0b3A6IDA7IGJvdHRvbTogMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJjpmaXJzdC1jaGlsZHsgcGFkZGluZy1sZWZ0OiAwOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmOmxhc3QtY2hpbGR7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICY6YmVmb3JleyAgZGlzcGxheTpub25lOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBheyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE4cHg7IGZvbnQtZmFtaWx5OiAkZm9udC0zO2xpbmUtaGVpZ2h0OiA4NXB4OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7ICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAmOmhvdmVye1xyXG4gICAgICAgICAgICAgICAgICAgIC5kcm9wZG93bnsgb3BhY2l0eTogMTsgdmlzaWJpbGl0eTogdmlzaWJsZTsgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgYXtcclxuICAgICAgICBmb250LXNpemU6MTZweDtjb2xvcjojMjYzRTM1O2xpbmUtaGVpZ2h0OjI5cHg7XHJcbiAgICB9XHJcbiAgICAucmlnaHR7XHJcbiAgICAgICAgbWFyZ2luOjI1cHggMCAwIDBweDsgQGluY2x1ZGUgdHJhbnNpdGlvbiguMnMgYWxsIGVhc2Utb3V0KTtcclxuICAgICAgICBhe1xyXG4gICAgICAgICAgICBmbG9hdDpsZWZ0O21hcmdpbi1sZWZ0OjQwcHg7cG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgICAmLnBob25le1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OjM4cHg7XHJcbiAgICAgICAgICAgICAgICAmOmFmdGVye1xyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOjI5cHg7aGVpZ2h0OjI5cHg7Y29udGVudDpcIlwiO2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlcy9tYXRlcmlhbC9waG9uZS1pY28tZ3JlZW4ucG5nKSBuby1yZXBlYXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO2xlZnQ6MDt0b3A6MDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICYuZmxvYXR7XHJcbiAgICAgICAgaGVpZ2h0OiA1NXB4OyBcclxuICAgICAgICBuYXZ7XHJcbiAgICAgICAgICAgID4gZGl2e1xyXG4gICAgICAgICAgICAgICAgYXsgbGluZS1oZWlnaHQ6IDU1cHg7IH1cclxuICAgICAgICAgICAgICAgICYuaGF2ZS1kcm9we1xyXG4gICAgICAgICAgICAgICAgICAgIC5kcm9wZG93bnsgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAucmlnaHR7IG1hcmdpbjogMTBweCAwcHggMHB4IDBweDsgfVxyXG4gICAgICAgIC5sb2dveyBtYXJnaW46IDVweCAwcHggMHB4IDBweDsgfVxyXG5cclxuICAgIH1cclxufVxyXG5cclxuLyogbWlkZGxlXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5AaW1wb3J0ICdob21lJztcclxuLmJhbm5lci1taWRkbGV7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOyAgcGFkZGluZy10b3A6IDgwcHg7IGhlaWdodDogNjAwcHg7XHJcbiAgICAgICAgaDUgeyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA0MDA7IGNvbG9yOiAjZmZmOyBtYXJnaW4tYm90dG9tOiAyMHB4O31cclxuICAgICAgICBoMnsgZm9udC1zaXplOiA1MHB4OyBmb250LXdlaWdodDogMjAwOyBjb2xvcjogI2ZmZjsgIGZvbnQtZmFtaWx5OiAkZm9udC0zO31cclxuICAgIGZpZ3VyZXtcclxuICAgICAgICB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgIGltZ3sgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgb2JqZWN0LWZpdDogY292ZXI7IH1cclxuICAgIH1cclxuICAgIC50ZXh0eyBcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDA7IHJpZ2h0OiAwOyB0b3A6IDUwJTsgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpOyB0ZXh0LWFsaWduOiBjZW50ZXI7IFxyXG4gICAgICAgIHdpZHRoOiA4NDBweDsgbWFyZ2luOiAwIGF1dG87XHJcbiAgICB9XHJcbn1cclxuLmNvbnRlbnQtbWlkZGxleyBcclxuICAgIHBhZGRpbmctdG9wOiAwcHg7XHJcbiAgICBoMnsgZm9udC1zaXplOiA0MHB4OyBjb2xvcjogIzI2M0UzNTsgIH1cclxuICAgIGgzeyBmb250LXNpemU6IDMwcHg7IGxpbmUtaGVpZ2h0OiA0NXB4OyBjb2xvcjojMjYzRTM1OyBmb250LWZhbWlseTogJGZvbnQtMzsgZm9udC13ZWlnaHQ6IDIwMDt9XHJcbiAgICBoNXsgZm9udC1zaXplOiAyMHB4OyBmb250LWZhbWlseTogJGZvbnQtNDsgbGluZS1oZWlnaHQ6IDMycHg7IGNvbG9yOiMyNjNFMzU7fVxyXG4gICAgcHsgZm9udC1zaXplOiAxOHB4OyBsaW5lLWhlaWdodDogMzBweDsgY29sb3I6ICMyNjNFMzU7IGZvbnQtZmFtaWx5OiAkZm9udC00OyB9XHJcbiAgICB1bHtcclxuICAgICAgICBsaXsgXHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDsgbWFyZ2luOiAxMHB4IDA7IGZvbnQtZmFtaWx5OiAkZm9udC00OyBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMTVweDsgQGluY2x1ZGUgYm94U2l6aW5nKGJvcmRlci1ib3gpOyBsaW5lLWhlaWdodDogMzJweDsgY29sb3I6ICMyNjNFMzU7XHJcbiAgICAgICAgICAgICY6YmVmb3JleyBcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6Jyc7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMDsgdG9wOiAxMnB4OyBiYWNrZ3JvdW5kOiAjODJBNTNDOyBAaW5jbHVkZSBib3JkZXJSYWRpdXMoMTAwJSk7IFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6IDlweDsgaGVpZ2h0OiA5cHg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuLnR3by1ib3gtbWlkZGxle1xyXG4gICAgcGFkZGluZzogMTQwcHggMDtcclxuICAgICYubm9wYWRib3R7IHBhZGRpbmctYm90dG9tOiAwOyB9XHJcbiAgICAmLm5vcGFkdG9weyBwYWRkaW5nLXRvcDogMDsgfVxyXG5cclxuICAgICY6YWZ0ZXJ7QGV4dGVuZCAuYWZ0ZXItY2xlYXJ9XHJcbiAgICAubGVmdCwucmlnaHR7IHdpZHRoOiA0OCU7IG1hcmdpbi1yaWdodDogNCU7IH1cclxuICAgIC5yaWdodHsgbWFyZ2luLXJpZ2h0OiAwOyB9XHJcbn1cclxuLnNlYy1hYm91dHVze1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyB6LWluZGV4OiAxO1xyXG4gICAgLnZpc2l7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOyBcclxuICAgICAgICAmLnAxeyBcclxuICAgICAgICAgICAgQGluY2x1ZGUgYm94U2l6aW5nKGJvcmRlci1ib3gpOyBcclxuICAgICAgICAgICAgaDN7bWFyZ2luLWJvdHRvbTogNDBweDt9XHJcbiAgICAgICAgICAgIGg1eyAgcGFkZGluZzogMCAxMDBweDsgQGluY2x1ZGUgYm94U2l6aW5nKGJvcmRlci1ib3gpOyB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbi52aWRlby1taWRkbGV7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAudGh1bWItdmlkZW97IFxyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgXHJcbiAgICAgICAgaW1neyB3aWR0aDogMTAwJTsgfVxyXG4gICAgfVxyXG4gICAgLmljLXBsYXl7IFxyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMDsgcmlnaHQ6IDA7IHRvcDogMDsgYm90dG9tOiAwOyBtYXJnaW46IGF1dG87IFxyXG4gICAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWFnZXMvbWF0ZXJpYWwvaWMtcGxheS5wbmcpbm8tcmVwZWF0IGNlbnRlcjsgY3Vyc29yOiBwb2ludGVyOyB3aWR0aDogNzhweDsgaGVpZ2h0OiA3OHB4O1xyXG4gICAgfVxyXG4gICAgIC53cmFwLXl0e1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMDsgdG9wOiAwOyBib3R0b206IDA7IHJpZ2h0OiAwOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyB6LWluZGV4OiAyO1xyXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgICAgaWZyYW1leyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyB9XHJcbiAgICB9XHJcbn1cclxuLmJnLWdyeXsgXHJcbiAgICBiYWNrZ3JvdW5kOiAjRjVGN0YxOyBwb3NpdGlvbjogcmVsYXRpdmU7ICBAaW5jbHVkZSBib3hTaXppbmcoYm9yZGVyLWJveCk7XHJcbiAgICAmLmJmcntcclxuICAgICAgICAmOmJlZm9yZXsgXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6Jyc7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMDsgdG9wOiAwOyByaWdodDogMDt3aWR0aDogMTAwJTsgaGVpZ2h0OiAzNTBweDtcclxuICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZmZjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuLmZvbnQtb3JneyBjb2xvcjogI0ZGODYyQTsgfVxyXG4uZG91YmxlLWltZ3tcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgcGFkZGluZy1ib3R0b206IDE1MHB4OyB3aWR0aDogMTAwJTtcclxuICAgICY6YWZ0ZXJ7IEBleHRlbmQgLmFmdGVyLWNsZWFyOyB9XHJcbiAgICBpbWd7IHdpZHRoOiAxMDAlOyB9XHJcbiAgICAuaW1nLWJpZ3sgd2lkdGg6IDcwJTsgZmxvYXQ6cmlnaHQ7IH1cclxuICAgIC5pbWctc21hbGx7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMDsgdG9wOiAyMCU7IGhlaWdodDogNTI1cHg7IHdpZHRoOiA0MCU7ICB9XHJcblxyXG59XHJcbi5iZW5lZml0c3sgIH1cclxuLnRocmVlLWJveC1taWRkbGV7IFxyXG4gICAgcGFkZGluZzogMTYwcHggMCAwOyAgQGluY2x1ZGUgYm94U2l6aW5nKGJvcmRlci1ib3gpO1xyXG4gICAgJi5ub3BhZHRvcHsgcGFkZGluZy10b3A6IDA7IH1cclxufVxyXG4uc2VjdHtcclxuICAgIHBhZGRpbmc6IDE0MHB4IDBweCA7IEBpbmNsdWRlIGJveFNpemluZyhib3JkZXItYm94KTtcclxuICAgICYubm9wYWRib3R7IHBhZGRpbmctYm90dG9tOiAwOyB9IFxyXG4gICAgJi5ub3BhZHRvcHsgcGFkZGluZy10b3A6IDA7IH0gXHJcbn1cclxuLmJveC10aHJlZXtcclxuICAgIEBleHRlbmQgLmZsZXgtbGlzdDsgbWFyZ2luOjEwMHB4IC01MHB4IDA7IFxyXG4gICAgLmJveHsgXHJcbiAgICAgICAgd2lkdGg6IDMzLjMzMyU7IHRleHQtYWxpZ246IGNlbnRlcjsgcGFkZGluZzogMCA0MHB4OyBAaW5jbHVkZSBib3hTaXppbmcoYm9yZGVyLWJveCk7IG1hcmdpbi1ib3R0b206IDIwcHg7IFxyXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgICAgJjpob3ZlcntcclxuICAgICAgICAgICAgLnRleHQtaG92ZXJ7XHJcbiAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7IHZpc2liaWxpdHk6IHZpc2libGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBmaWd1cmV7IFxyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7IHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGltZ3sgaGVpZ2h0OiAxMDAlOyB9XHJcbiAgICB9XHJcbiAgICBoNnsgZm9udC1zaXplOiAyMHB4OyBsaW5lLWhlaWdodDogMzJweDsgfVxyXG4gICAgJi5wcm9kdWt7XHJcbiAgICAgICAgZmlndXJle1xyXG4gICAgICAgICAgICB3aWR0aDogMTAwJTsgaGVpZ2h0OiAzNDVweDsgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpbWd7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgaGVpZ2h0OiBhdXRvOyBtYXJnaW46IGF1dG87IGxlZnQ6IDA7IHRvcDogMDsgYm90dG9tOiAwOyByaWdodDogMDsgfVxyXG4gICAgICAgIC50ZXh0LWhvdmVye1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDA7IHRvcDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMDsgd2lkdGg6IDEwMCU7IGhlaWdodDogYXV0bztcclxuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgICAgQGluY2x1ZGUgdHJhbnNpdGlvbigwLjNzICRlYXNlIGFsbCk7IG9wYWNpdHk6IDA7IHZpc2liaWxpdHk6IHZpc2libGU7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIGJveFNoYWRvdygwIDAgMTBweCAtOHB4ICMwMDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBoNXsgZm9udC1zaXplOiAzNnB4OyBjb2xvcjogIzgyQTUzQzsgbWFyZ2luLWJvdHRvbTogNzBweDsgfVxyXG4gICAgICAgIHB7IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDI2cHg7ICB9XHJcbiAgICAgICAucGFke3BhZGRpbmc6IDcwcHggNTBweDsgQGluY2x1ZGUgYm94U2l6aW5nKGJvcmRlci1ib3gpOyAgYmFja2dyb3VuZDogI2ZmZjsgaGVpZ2h0OiAxMDAlOyBvdmVyZmxvdzogaGlkZGVuOyB9XHJcbiAgICB9XHJcbiAgICAmLmJlbntcclxuICAgICAgICBmaWd1cmV7XHJcbiAgICAgICAgICAgIGhlaWdodDogMTQwcHg7IFxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4uc29zbWVkLW1pZGRsZXtcclxuICAgIHBhZGRpbmc6IDE1MHB4IDBweCAxODBweDtcclxuICAgIGg2eyBmb250LXNpemU6IDIwcHg7IH1cclxufVxyXG4ud3JhcC1zb3NtZWR7XHJcbiAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgYXsgXHJcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOyAgbWFyZ2luOjgwcHggNDBweCAwO1xyXG4gICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oLjJzIGFsbCBlYXNlLW91dCk7IFxyXG4gICAgICAgIGltZ3sgQGluY2x1ZGUgdHJhbnNpdGlvbiguMnMgYWxsIGVhc2Utb3V0KTsgfVxyXG4gICAgICAgICY6aG92ZXJ7XHJcbiAgICAgICAgICAgIG9wYWNpdHk6MC44O1xyXG4gICAgICAgICAgICBpbWd7IEBpbmNsdWRlIHRyYW5zZm9ybShzY2FsZSgxLjEpKTsgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4uc2xpZGVyLW1pZGRsZXtcclxuICAgIHBhZGRpbmc6IDcwcHggMDtcclxuICAgIC5saXN0LXNsaWRlcnsgZGlzcGxheTogdGFibGU7IHBhZGRpbmc6MCAyNXB4OyBAaW5jbHVkZSBib3hTaXppbmcoYm9yZGVyLWJveCk7IH1cclxuICAgIGZpZ3VyZSwudGV4dHsgZGlzcGxheTogdGFibGUtY2VsbDsgfVxyXG4gICAgZmlndXJle1xyXG4gICAgICAgIGltZ3sgd2lkdGg6IDEwMCU7IGhlaWdodDogNDAwcHg7IG9iamVjdC1maXQ6IGNvdmVyOyB9XHJcbiAgICB9XHJcbiAgICBweyBmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAyNHB4OyBtYXJnaW4tYm90dG9tOiA1MHB4OyB9XHJcbiAgICBoNHsgZm9udC1zaXplOiAyOXB4OyBmb250LWZhbWlseTogJGZvbnQtMzsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiAjODJBNTNDOyBtYXJnaW4tYm90dG9tOiAxMHB4O31cclxuICAgIGg1eyBmb250LXNpemU6IDI0cHg7IGZvbnQtZmFtaWx5OiAkZm9udC0zOyBmb250LXdlaWdodDogMjAwOyBsZXR0ZXItc3BhY2luZzogMnB4O31cclxuICAgIC50ZXh0eyBcclxuICAgICAgICB3aWR0aDogNTAlOyBiYWNrZ3JvdW5kOiAjZmZmOyAgdGV4dC1hbGlnbjogY2VudGVyOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgICAgIHBhZGRpbmc6IDc1cHggOTBweDsgQGluY2x1ZGUgYm94U2l6aW5nKGJvcmRlci1ib3gpO1xyXG4gICAgfVxyXG4gICAgLnNsaWNrLWRvdHN7IFxyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMDsgbWFyZ2luOiAwIGF1dG87IHRleHQtYWxpZ246IGNlbnRlcjsgXHJcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgICAgIGxpeyBcclxuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOyBcclxuICAgICAgICAgICAgJjpiZWZvcmV7IGRpc3BsYXk6bm9uZTsgfVxyXG4gICAgICAgICAgICAmLnNsaWNrLWFjdGl2ZXtcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnsgYmFja2dyb3VuZDojOUI5QjlCOyB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgYnV0dG9ueyBcclxuICAgICAgICAgICAgd2lkdGg6IDEycHg7IGhlaWdodDogMTJweDsgcGFkZGluZzogMDsgYmFja2dyb3VuZDogI0UyRTFFMTsgZm9udC1zaXplOiAwOyBcclxuICAgICAgICAgICAgYm9yZGVyOm5vbmU7IEBpbmNsdWRlIGJvcmRlclJhZGl1cygxMDAlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuLmRldGFpbC1wcm9kdWt7XHJcbiAgICBwYWRkaW5nLXRvcDoxNjBweDsgQGluY2x1ZGUgYm94U2l6aW5nKGJvcmRlci1ib3gpO1xyXG4gICAgLnRpdHRsZXtcclxuICAgICAgICBoNXsgZm9udC1zaXplOiAxNXB4OyBtYXJnaW4tYm90dG9tOiAyMHB4OyBjb2xvcjogIzgyQTUzQzsgfVxyXG4gICAgICAgIGgyeyBmb250LXNpemU6IDUwcHg7IGZvbnQtZmFtaWx5OiAkZm9udC0zOyB9XHJcbiAgICB9XHJcbiAgICAucHJvZHVre1xyXG4gICAgICAgIHBhZGRpbmc6IDEwMHB4IDBweCAwOyBAaW5jbHVkZSBib3hTaXppbmcoYm9yZGVyLWJveCk7IGRpc3BsYXk6IHRhYmxlOyB3aWR0aDogMTAwJTtcclxuICAgICAgICAubGVmdCwucmlnaHR7IHdpZHRoOiA0OCU7IGZsb2F0OiBub25lOyBkaXNwbGF5OiB0YWJsZS1jZWxsOyB9XHJcbiAgICAgICAgLnJpZ2h0eyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBwYWRkaW5nLWxlZnQ6IDQlOyB3aWR0aDogYXV0bzsgfVxyXG4gICAgICAgIC5sZWZ0eyBcclxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOyBiYWNrZ3JvdW5kOiAjRjVGN0YxO1xyXG4gICAgICAgICAgICAmOmJlZm9yZXsgXHJcbiAgICAgICAgICAgICAgICBjb250ZW50OicnOyBwb3NpdGlvbjogYWJzb2x1dGU7ICB0b3A6IDA7IGJvdHRvbTogMDsgd2lkdGg6IDEwMCU7IHJpZ2h0OiAxMDAlOyB6LWluZGV4OiAtMTtcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGNUY3RjE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZmlndXJleyB0ZXh0LWFsaWduOiBjZW50ZXI7IHBhZGRpbmc6MTIwcHggMTAwcHg7IEBpbmNsdWRlIGJveFNpemluZyhib3JkZXItYm94KTsgIH1cclxuICAgIH1cclxufVxyXG4ud3JhcC1hY2MtbWlkZGxle1xyXG4gICAgaDR7IGZvbnQtc2l6ZTogMzJweDsgIGZvbnQtZmFtaWx5OiAkZm9udC0zOyB9XHJcbiAgICBweyBmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAyNHB4OyB9XHJcbiAgICAubGlzdHsgXHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA0NXB4OyBAaW5jbHVkZSBib3hTaXppbmcoYm9yZGVyLWJveCk7IG1hcmdpbi1ib3R0b206IDQwcHg7IFxyXG4gICAgICAgICYuYWN0e1xyXG4gICAgICAgICAgICAuZ3JpZC1hY2N7XHJcbiAgICAgICAgICAgICAgICAmOmJlZm9yZXsgQGluY2x1ZGUgdHJhbnNmb3JtKHJvdGF0ZSgwZGVnKSk7IH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC5ncmlkLWFjY3tcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7IGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICAmOmJlZm9yZXsgXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6Jyc7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgIHRvcDogMHB4OyBsZWZ0OiAtNDVweDsgd2lkdGg6IDMycHg7IGhlaWdodDogMzJweDsgXHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWFnZXMvbWF0ZXJpYWwvYXJyLWFjYy5wbmcpbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHJvdGF0ZSgtOTBkZWcpKTsgQGluY2x1ZGUgdHJhbnNpdGlvbiguMnMgYWxsIGVhc2Utb3V0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAuY29udGVudC1hY2N7IHBhZGRpbmc6IDE1cHggMHB4OyBAaW5jbHVkZSBib3hTaXppbmcoYm9yZGVyLWJveCk7IGRpc3BsYXk6IG5vbmU7IH1cclxufVxyXG4ud3JhcC1ldmVudHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgQGV4dGVuZCAuZmxleC1saXN0OyBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgJjpiZWZvcmV7XHJcbiAgICAgICAgY29udGVudDonJztiYWNrZ3JvdW5kOnVybCguLi9pbWFnZXMvbWF0ZXJpYWwvY29ybmVyLWxlYWYucG5nKSBuby1yZXBlYXQ7d2lkdGg6MTY1cHg7aGVpZ2h0OjEyOHB4O1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtib3R0b206MHB4OyBsZWZ0Oi0wcHg7XHJcbiAgICB9XHJcbiAgICAmOmFmdGVyeyBAZXh0ZW5kIC5hZnRlci1jbGVhciB9XHJcbiAgICAuYm94eyBcclxuICAgICAgICBmbG9hdDogbGVmdDsgd2lkdGg6IDQ5JTsgbWFyZ2luLXJpZ2h0OiAyJTsgIG1hcmdpbi1ib3R0b206IDM1cHg7IHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICAmOm50aC1jaGlsZCgybil7XHJcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBoM3sgZm9udC1zaXplOiAzMnB4OyBmb250LWZhbWlseTogJGZvbnQtMzsgdGV4dC1hbGlnbjogY2VudGVyOyBwYWRkaW5nOiA3MHB4IDYwcHg7IH1cclxuICAgIC5kYXRleyAgZm9udC1zaXplOiAxOHB4OyBjb2xvcjogIzgyQTUzQzsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtYXJnaW4tYm90dG9tOiA3MHB4OyB9XHJcbiAgICBmaWd1cmV7XHJcbiAgICAgICAgaW1neyB3aWR0aDogMTAwJTsgIH1cclxuICAgIH1cclxufVxyXG5cclxuLmZpbHRlcntcclxuICAgIHBhZGRpbmctdG9wOiAxNTBweDtcclxuICAgIC5yb3d7IGRpc3BsYXk6IHRhYmxlOyB3aWR0aDogMTAwJTsgfVxyXG4gICAgLmxlZnQsLnJpZ2h0eyBkaXNwbGF5OiB0YWJsZS1jZWxsOyAgZmxvYXQ6IG5vbmU7fVxyXG4gICAgLnJpZ2h0eyB0ZXh0LWFsaWduOiByaWdodDsgfVxyXG4gICAgLmxlZnR7IHdpZHRoOiA4MCU7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cclxuICAgIHVse1xyXG4gICAgICAgIGxpeyBcclxuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtYXJnaW46IDAgMTVweDsgXHJcbiAgICAgICAgICAgICYuYWN0aXZle1xyXG4gICAgICAgICAgICAgICAgYXsgY29sb3I6IzgyQTUzQzsgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAmOmZpcnN0LWNoaWxkeyBtYXJnaW4tbGVmdDowOyB9XHJcbiAgICAgICAgICAgIGF7IFxyXG4gICAgICAgICAgICAgICAgY29sb3I6ICNDNkM2QzY7IGZvbnQtc2l6ZTogMThweDsgZm9udC1mYW1pbHk6ICRmb250LTM7IEBpbmNsdWRlIHRyYW5zaXRpb24oLjJzIGFsbCBlYXNlLW91dCk7XHJcblxyXG4gICAgICAgICAgICAgICAgJjpob3ZlciwmLmFjdGl2ZXsgY29sb3I6IzgyQTUzQzsgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgc2VsZWN0eyBib3JkZXI6IG5vbmU7ICBmb250LXNpemU6IDE4cHg7IGZvbnQtZmFtaWx5OiAkZm9udC0zOyBjb2xvcjojQzZDNkM2OyBjdXJzb3I6IHBvaW50ZXI7ICB9XHJcbiAgICAuY29seyBcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBvc2l0aW9uOiByZWxhdGl2ZTsgcGFkZGluZy1yaWdodDogMTBweDsgQGluY2x1ZGUgYm94U2l6aW5nKGJvcmRlci1ib3gpO1xyXG4gICAgICAgICY6YWZ0ZXJ7IFxyXG4gICAgICAgICAgICBjb250ZW50OicnOyBwb3NpdGlvbjogYWJzb2x1dGU7IHJpZ2h0OiAwOyB0b3A6IDA7IGJvdHRvbTogMDsgbWFyZ2luOiBhdXRvIDA7IFxyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL21hdGVyaWFsL2Fyci1zZWxlY3QucG5nKW5vLXJlcGVhdDsgd2lkdGg6IDExcHg7IGhlaWdodDogNnB4OyBcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuLnBhZ2dpbmd7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAuYXJye1xyXG4gICAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWFnZXMvbWF0ZXJpYWwvYXJyLXBhZ2luZy5wbmcpbm8tcmVwZWF0IGNlbnRlcjsgd2lkdGg6IDlweDsgaGVpZ2h0OiAyMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgbWFyZ2luLXRvcDogNXB4O1xyXG4gICAgICAgICY6YmVmb3JleyBkaXNwbGF5Om5vbmU7IH1cclxuICAgICAgICAmLm5leHR7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybShyb3RhdGUoMTgwZGVnKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgYXtcclxuICAgICAgICBmb250LXNpemU6IDE4cHg7IGZvbnQtZmFtaWx5OiAkZm9udC00OyBjb2xvcjogIzI2M0UzNTsgcGFkZGluZzoxNXB4IDEwcHg7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7IEBpbmNsdWRlIGJveFNpemluZyhib3JkZXItYm94KTtcclxuICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKC4ycyBhbGwgZWFzZS1vdXQpO1xyXG4gICAgICAgICY6YmVmb3Jle1xyXG4gICAgICAgICAgICBjb250ZW50OicnOyBwb3NpdGlvbjogYWJzb2x1dGU7IGJvdHRvbTogMDsgbGVmdDogMDsgcmlnaHQ6IDA7IHdpZHRoOiAwOyBoZWlnaHQ6IDNweDsgYmFja2dyb3VuZDogIzgyQTUzQztcclxuICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbiguMnMgYWxsIGVhc2Utb3V0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgJjpob3ZlciwmLmFjdGl2ZXtcclxuICAgICAgICAgICAgY29sb3I6ICMxMTE7XHJcbiAgICAgICAgICAgICY6YmVmb3JleyB3aWR0aDoxMDAlOyB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbi5kZXRhaWwtcGFnZXtcclxuICAgIC50d29ib3h7XHJcbiAgICAgICAgZGlzcGxheTogdGFibGU7IHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIC5sZWZ0LC5yaWdodHsgZGlzcGxheTogdGFibGUtY2VsbDsgZmxvYXQ6IG5vbmU7IH1cclxuICAgICAgICAubGVmdHtcclxuICAgICAgICAgICAgaW1neyB3aWR0aDogMTAwJTsgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAucmlnaHR7IFxyXG4gICAgICAgICAgICB3aWR0aDogNTAlOyBwYWRkaW5nOjBweCA0MHB4OyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBcclxuICAgICAgICAgICAgQGluY2x1ZGUgYm94U2l6aW5nKGJvcmRlci1ib3gpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGg1eyBcclxuICAgICAgICBmb250LXNpemU6IDE4cHg7ICBtYXJnaW4tYm90dG9tOiAxNXB4O1xyXG4gICAgICAgICYuZGF0ZXsgY29sb3I6ICM4MkE1M0M7IH1cclxuICAgIH1cclxuICAgIGg0eyBmb250LXNpemU6IDMycHg7IGZvbnQtZmFtaWx5OiAkZm9udC00OyAgfVxyXG59XHJcbi5zdGQtY29udGVudHtcclxuICAgIHdpZHRoOiA3ODdweDsgbWFyZ2luOiAwIGF1dG87XHJcbiAgICBweyBmb250LXNpemU6IDE4cHg7bGluZS1oZWlnaHQ6IDI4cHg7IH1cclxufVxyXG4uaW1nLW1pZGRsZXtcclxuICAgIGltZ3sgd2lkdGg6IDEwMCU7IH1cclxufVxyXG4uZG90cy10d297XHJcbiAgIGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBwYWRkaW5nOiAxMDBweCAwcHg7XHJcbiAgICB1bHtcclxuICAgICAgICBAZXh0ZW5kIC5mbGV4LWxpc3Q7XHJcbiAgICAgICAgbGl7IHdpZHRoOiA1MCU7IHBhZGRpbmctbGVmdDogMjBweDt9XHJcbiAgICB9XHJcbn1cclxuQGltcG9ydCAnbGVhZi1hbmltJztcclxuLyogZm9vdGVyXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5mb290ZXJ7XHJcbiAgICBwYWRkaW5nOjUwcHggMCAxMHB4IDA7YmFja2dyb3VuZDojMTI1QjQwOyBAaW5jbHVkZSBib3hTaXppbmcoYm9yZGVyLWJveCk7XHJcbiAgICAuZm9vdGVyLXRvcHtcclxuICAgICAgICAuY29sLTN7XHJcbiAgICAgICAgICAgIHdpZHRoOjMzLjMzJTtmbG9hdDpsZWZ0O0BpbmNsdWRlIGJveFNpemluZyhib3JkZXItYm94KTtwYWRkaW5nOjAgMzBweDtjb2xvcjojRkZGO3Bvc2l0aW9uOiByZWxhdGl2ZTtoZWlnaHQ6MjYwcHg7XHJcbiAgICAgICAgICAgIHB7Zm9udC1zaXplOjEycHg7bWF4LXdpZHRoOjI1MHB4OyBjb2xvcjogI2ZmZjt9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC5ib3R0b20tcG9ze1xyXG4gICAgICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDtsZWZ0OjMwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC5saW5rLWNvbnRhY3R7XHJcbiAgICAgICAgICAgIGF7XHJcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6MzVweDtsaW5lLWhlaWdodDoyOHB4O2ZvbnQtc2l6ZToxMnB4O2NvbG9yOiNGRkY7bWFyZ2luLXJpZ2h0OjMwcHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLm1haWx7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2VzL21hdGVyaWFsL2VtYWlsLWljby5wbmcpIG5vLXJlcGVhdCBsZWZ0IGNlbnRlcjt9XHJcbiAgICAgICAgICAgIC5jYWxse2JhY2tncm91bmQ6dXJsKC4uL2ltYWdlcy9tYXRlcmlhbC9waG9uZS1pY28ucG5nKSBuby1yZXBlYXQgbGVmdCBjZW50ZXI7fVxyXG4gICAgICAgIH1cclxuICAgICAgICAubGlzdC1zZXJ0aWZpa2FzaXtcclxuICAgICAgICAgICAgbWFyZ2luOjIwcHggMCAwIDA7XHJcbiAgICAgICAgICAgIGRpdntcclxuICAgICAgICAgICAgICAgIGZsb2F0OmxlZnQ7bWFyZ2luLXJpZ2h0OjIwcHg7d2lkdGg6NDNweDtoZWlnaHQ6NDNweDtAaW5jbHVkZSBib3JkZXJSYWRpdXMoMTAwJSk7b3ZlcmZsb3c6aGlkZGVuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICY6YWZ0ZXJ7QGV4dGVuZCAuYWZ0ZXItY2xlYXJ9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC5zdWJzY3JpYmV7XHJcbiAgICAgICAgICAgIG1heC13aWR0aDoyOTBweDtcclxuICAgICAgICAgICAgaDZ7XHJcbiAgICAgICAgICAgICAgICBmb250LXNpemU6OXB4O2xldHRlci1zcGFjaW5nOjEuOHB4O3BhZGRpbmctcmlnaHQ6NjBweDtsaW5lLWhlaWdodDoxOHB4O21hcmdpbi1ib3R0b206MzBweDtcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6dXJsKC4uL2ltYWdlcy9tYXRlcmlhbC9iaWctYXJyb3cucG5nKSBuby1yZXBlYXQgcmlnaHQgYm90dG9tO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlucHV0e1xyXG4gICAgICAgICAgICAgICAgd2lkdGg6MTAwJTtoZWlnaHQ6NDBweDtib3JkZXI6bm9uZTtAaW5jbHVkZSBib3JkZXJSYWRpdXMoNDBweCk7cGFkZGluZzowIDIwcHg7Zm9udC1zaXplOjEycHg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6YWZ0ZXJ7QGV4dGVuZCAuYWZ0ZXItY2xlYXJ9XHJcbiAgICB9XHJcbiAgICAuZm9vdGVyLWJvdHRvbXtcclxuICAgICAgICBib3JkZXItdG9wOjFweCBzb2xpZCAjRkZGO3BhZGRpbmctdG9wOjEwcHg7bWFyZ2luLXRvcDo1MHB4O1xyXG4gICAgICAgIHB7bWFyZ2luOjA7Zm9udC1zaXplOjhweDtjb2xvcjojRkZGO21hcmdpbjoyMHB4O2xldHRlci1zcGFjaW5nOjFweH1cclxuICAgIH1cclxufVxyXG4iLCIvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgQ29tcGFueSAgICA6IFBUIFdlYiBBcmNoaXRlY3QgVGVjaG5vbG9neSAtIHdlYmFycS5jb21cclxuICAgIERvY3VtZW50ICAgOiBTdHlsZXNoZWV0XHJcbiAgICBBdXRob3IgICAgIDogRnJvbnRFbmQgVGVhbVxyXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cclxuXHJcbi8qIGltcG9ydCBib3VyYm9uIC0gaHR0cDovL2JvdXJib24uaW8vZG9jcyAqL1xyXG5AaW1wb3J0IFwiYm91cmJvbi9ib3VyYm9uXCI7XHJcblxyXG5AbWl4aW4gdHJhbnNpdGlvbigkYXR0cil7XHJcbiAgICB0cmFuc2l0aW9uOiAkYXR0cjtcclxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogJGF0dHI7XHJcbiAgICAtbW96LXRyYW5zaXRpb246ICRhdHRyO1xyXG4gICAgLW1zLXRyYW5zaXRpb246ICRhdHRyO1xyXG4gICAgLW8tdHJhbnNpdGlvbjogJGF0dHI7XHJcbn1cclxuQG1peGluIHRyYW5zZm9ybSgkYXR0cil7XHJcbiAgICB0cmFuc2Zvcm06ICRhdHRyO1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICRhdHRyO1xyXG4gICAgLW1vei10cmFuc2Zvcm06ICRhdHRyO1xyXG4gICAgLW1zLXRyYW5zZm9ybTogJGF0dHI7XHJcbiAgICAtby10cmFuc2Zvcm06ICRhdHRyO1xyXG59XHJcbkBtaXhpbiBib3JkZXJSYWRpdXMoJGF0dHIpe1xyXG4gICAgYm9yZGVyLXJhZGl1czogJGF0dHI7XHJcbiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6ICRhdHRyO1xyXG4gICAgLW1vei1ib3JkZXItcmFkaXVzOiAkYXR0cjtcclxuICAgIC1tcy1ib3JkZXItcmFkaXVzOiAkYXR0cjtcclxuICAgIC1vLWJvcmRlci1yYWRpdXM6ICRhdHRyO1xyXG59XHJcbkBtaXhpbiBib3hTaGFkb3coJGF0dHIpe1xyXG4gICAgYm94LXNoYWRvdzogICRhdHRyO1xyXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAkYXR0cjtcclxuICAgIC1tb3otYm94LXNoYWRvdzogJGF0dHI7XHJcbiAgICAtbXMtYm94LXNoYWRvdzogJGF0dHI7XHJcbiAgICAtby1ib3gtc2hhZG93OiAkYXR0clxyXG59XHJcbkBtaXhpbiBib3hTaXppbmcoJGF0dHIpe1xyXG4gICAgYm94LXNpemluZzogICRhdHRyO1xyXG4gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiAkYXR0cjtcclxuICAgIC1tb3otYm94LXNpemluZzogJGF0dHI7XHJcbiAgICAtbXMtYm94LXNpemluZzogJGF0dHI7XHJcbiAgICAtby1ib3gtc2l6aW5nOiAkYXR0clxyXG59XHJcbkBtaXhpbiBwbGFjZWhvbGRlciB7XHJcbiAgICA6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge0Bjb250ZW50fVxyXG4gICAgOi1tb3otcGxhY2Vob2xkZXIgICAgICAgICAgIHtAY29udGVudH1cclxuICAgIDo6LW1vei1wbGFjZWhvbGRlciAgICAgICAgICB7QGNvbnRlbnR9XHJcbiAgICA6LW1zLWlucHV0LXBsYWNlaG9sZGVyICAgICAge0Bjb250ZW50fVxyXG59XHJcbkBtaXhpbiBib3hTaXppbmcoJGF0dHIpe1xyXG4gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiAkYXR0cjtcclxuICAgIC1tb3otYm94LXNpemluZzogJGF0dHI7XHJcbiAgICBib3gtc2l6aW5nOiAkYXR0cjtcclxufVxyXG5cclxuLmEtY2VudGVye3RleHQtYWxpZ246Y2VudGVyICFpbXBvcnRhbnQ7fVxyXG4uYS1sZWZ0e3RleHQtYWxpZ246bGVmdCAhaW1wb3J0YW50O31cclxuLmEtcmlnaHR7dGV4dC1hbGlnbjpyaWdodCAhaW1wb3J0YW50O31cclxuLmFmdGVyLWNsZWFye2NsZWFyOmJvdGg7ZGlzcGxheTpibG9jaztcclxuICAgICY6YWZ0ZXJ7XHJcbiAgICAgICAgY29udGVudDpcIlwiO2Rpc3BsYXk6YmxvY2s7Y2xlYXI6Ym90aDtcclxuICAgIH1cclxufVxyXG4ucmlnaHR7ZmxvYXQ6cmlnaHQ7fVxyXG4ubGVmdHtmbG9hdDpsZWZ0O31cclxuJGVhc2UgOmN1YmljLWJlemllcigwLjAwNSwgMC43MjAsIDAuMzUwLCAxLjAxMCk7XHJcbkBtaXhpbiBhZnRlcmNsZWFye1xyXG4gICAgJjphZnRlcnsgY29udGVudDonJzsgZGlzcGxheTogYmxvY2s7IGNsZWFyOiBib3RoOyB9XHJcbn1cclxuXHJcbi8qIGNvbG9yIGdsb2JhbFxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuJGNfMTExOiAjMTExO1xyXG4kY18zMzM6ICMzMzM7XHJcbiRjXzY2NjogIzY2NjtcclxuJGNfOTk5OiAjOTk5O1xyXG4kY19lYTogI2VhZWFlYTtcclxuXHJcbiRmb250LTE6J01vbnRzZXJyYXQnO1xyXG4kZm9udC0yOidCaXR0ZXInO1xyXG4kZm9udC0zOidDb29wZXIgTHQgQlQnO1xyXG4kZm9udC00OidOdW5pdG8gU2Fucyc7XHJcbiIsIi8vIEJvdXJib24gNC4yLjdcclxuLy8gaHR0cDovL2JvdXJib24uaW9cclxuLy8gQ29weXJpZ2h0IDIwMTEtMjAxNSB0aG91Z2h0Ym90LCBpbmMuXHJcbi8vIE1JVCBMaWNlbnNlXHJcblxyXG5AaW1wb3J0IFwic2V0dGluZ3MvcHJlZml4ZXJcIjtcclxuQGltcG9ydCBcInNldHRpbmdzL3B4LXRvLWVtXCI7XHJcbkBpbXBvcnQgXCJzZXR0aW5ncy9hc3NldC1waXBlbGluZVwiO1xyXG5cclxuQGltcG9ydCBcImZ1bmN0aW9ucy9hc3NpZ24taW5wdXRzXCI7XHJcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY29udGFpbnNcIjtcclxuQGltcG9ydCBcImZ1bmN0aW9ucy9jb250YWlucy1mYWxzeVwiO1xyXG5AaW1wb3J0IFwiZnVuY3Rpb25zL2lzLWxlbmd0aFwiO1xyXG5AaW1wb3J0IFwiZnVuY3Rpb25zL2lzLWxpZ2h0XCI7XHJcbkBpbXBvcnQgXCJmdW5jdGlvbnMvaXMtbnVtYmVyXCI7XHJcbkBpbXBvcnQgXCJmdW5jdGlvbnMvaXMtc2l6ZVwiO1xyXG5AaW1wb3J0IFwiZnVuY3Rpb25zL3B4LXRvLWVtXCI7XHJcbkBpbXBvcnQgXCJmdW5jdGlvbnMvcHgtdG8tcmVtXCI7XHJcbkBpbXBvcnQgXCJmdW5jdGlvbnMvc2hhZGVcIjtcclxuQGltcG9ydCBcImZ1bmN0aW9ucy9zdHJpcC11bml0c1wiO1xyXG5AaW1wb3J0IFwiZnVuY3Rpb25zL3RpbnRcIjtcclxuQGltcG9ydCBcImZ1bmN0aW9ucy90cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVcIjtcclxuQGltcG9ydCBcImZ1bmN0aW9ucy91bnBhY2tcIjtcclxuQGltcG9ydCBcImZ1bmN0aW9ucy9tb2R1bGFyLXNjYWxlXCI7XHJcblxyXG5AaW1wb3J0IFwiaGVscGVycy9jb252ZXJ0LXVuaXRzXCI7XHJcbkBpbXBvcnQgXCJoZWxwZXJzL2RpcmVjdGlvbmFsLXZhbHVlc1wiO1xyXG5AaW1wb3J0IFwiaGVscGVycy9mb250LXNvdXJjZS1kZWNsYXJhdGlvblwiO1xyXG5AaW1wb3J0IFwiaGVscGVycy9ncmFkaWVudC1wb3NpdGlvbnMtcGFyc2VyXCI7XHJcbkBpbXBvcnQgXCJoZWxwZXJzL2xpbmVhci1hbmdsZS1wYXJzZXJcIjtcclxuQGltcG9ydCBcImhlbHBlcnMvbGluZWFyLWdyYWRpZW50LXBhcnNlclwiO1xyXG5AaW1wb3J0IFwiaGVscGVycy9saW5lYXItcG9zaXRpb25zLXBhcnNlclwiO1xyXG5AaW1wb3J0IFwiaGVscGVycy9saW5lYXItc2lkZS1jb3JuZXItcGFyc2VyXCI7XHJcbkBpbXBvcnQgXCJoZWxwZXJzL3JhZGlhbC1hcmctcGFyc2VyXCI7XHJcbkBpbXBvcnQgXCJoZWxwZXJzL3JhZGlhbC1wb3NpdGlvbnMtcGFyc2VyXCI7XHJcbkBpbXBvcnQgXCJoZWxwZXJzL3JhZGlhbC1ncmFkaWVudC1wYXJzZXJcIjtcclxuQGltcG9ydCBcImhlbHBlcnMvcmVuZGVyLWdyYWRpZW50c1wiO1xyXG5AaW1wb3J0IFwiaGVscGVycy9zaGFwZS1zaXplLXN0cmlwcGVyXCI7XHJcbkBpbXBvcnQgXCJoZWxwZXJzL3N0ci10by1udW1cIjtcclxuXHJcbkBpbXBvcnQgXCJjc3MzL2FuaW1hdGlvblwiO1xyXG5AaW1wb3J0IFwiY3NzMy9hcHBlYXJhbmNlXCI7XHJcbkBpbXBvcnQgXCJjc3MzL2JhY2tmYWNlLXZpc2liaWxpdHlcIjtcclxuQGltcG9ydCBcImNzczMvYmFja2dyb3VuZFwiO1xyXG5AaW1wb3J0IFwiY3NzMy9iYWNrZ3JvdW5kLWltYWdlXCI7XHJcbkBpbXBvcnQgXCJjc3MzL2JvcmRlci1pbWFnZVwiO1xyXG5AaW1wb3J0IFwiY3NzMy9jYWxjXCI7XHJcbkBpbXBvcnQgXCJjc3MzL2NvbHVtbnNcIjtcclxuQGltcG9ydCBcImNzczMvZmlsdGVyXCI7XHJcbkBpbXBvcnQgXCJjc3MzL2ZsZXgtYm94XCI7XHJcbkBpbXBvcnQgXCJjc3MzL2ZvbnQtZmFjZVwiO1xyXG5AaW1wb3J0IFwiY3NzMy9mb250LWZlYXR1cmUtc2V0dGluZ3NcIjtcclxuQGltcG9ydCBcImNzczMvaGlkcGktbWVkaWEtcXVlcnlcIjtcclxuQGltcG9ydCBcImNzczMvaHlwaGVuc1wiO1xyXG5AaW1wb3J0IFwiY3NzMy9pbWFnZS1yZW5kZXJpbmdcIjtcclxuQGltcG9ydCBcImNzczMva2V5ZnJhbWVzXCI7XHJcbkBpbXBvcnQgXCJjc3MzL2xpbmVhci1ncmFkaWVudFwiO1xyXG5AaW1wb3J0IFwiY3NzMy9wZXJzcGVjdGl2ZVwiO1xyXG5AaW1wb3J0IFwiY3NzMy9wbGFjZWhvbGRlclwiO1xyXG5AaW1wb3J0IFwiY3NzMy9yYWRpYWwtZ3JhZGllbnRcIjtcclxuQGltcG9ydCBcImNzczMvc2VsZWN0aW9uXCI7XHJcbkBpbXBvcnQgXCJjc3MzL3RleHQtZGVjb3JhdGlvblwiO1xyXG5AaW1wb3J0IFwiY3NzMy90cmFuc2Zvcm1cIjtcclxuQGltcG9ydCBcImNzczMvdHJhbnNpdGlvblwiO1xyXG5AaW1wb3J0IFwiY3NzMy91c2VyLXNlbGVjdFwiO1xyXG5cclxuQGltcG9ydCBcImFkZG9ucy9ib3JkZXItY29sb3JcIjtcclxuQGltcG9ydCBcImFkZG9ucy9ib3JkZXItcmFkaXVzXCI7XHJcbkBpbXBvcnQgXCJhZGRvbnMvYm9yZGVyLXN0eWxlXCI7XHJcbkBpbXBvcnQgXCJhZGRvbnMvYm9yZGVyLXdpZHRoXCI7XHJcbkBpbXBvcnQgXCJhZGRvbnMvYnV0dG9uc1wiO1xyXG5AaW1wb3J0IFwiYWRkb25zL2NsZWFyZml4XCI7XHJcbkBpbXBvcnQgXCJhZGRvbnMvZWxsaXBzaXNcIjtcclxuQGltcG9ydCBcImFkZG9ucy9mb250LXN0YWNrc1wiO1xyXG5AaW1wb3J0IFwiYWRkb25zL2hpZGUtdGV4dFwiO1xyXG5AaW1wb3J0IFwiYWRkb25zL21hcmdpblwiO1xyXG5AaW1wb3J0IFwiYWRkb25zL3BhZGRpbmdcIjtcclxuQGltcG9ydCBcImFkZG9ucy9wb3NpdGlvblwiO1xyXG5AaW1wb3J0IFwiYWRkb25zL3ByZWZpeGVyXCI7XHJcbkBpbXBvcnQgXCJhZGRvbnMvcmV0aW5hLWltYWdlXCI7XHJcbkBpbXBvcnQgXCJhZGRvbnMvc2l6ZVwiO1xyXG5AaW1wb3J0IFwiYWRkb25zL3RleHQtaW5wdXRzXCI7XHJcbkBpbXBvcnQgXCJhZGRvbnMvdGltaW5nLWZ1bmN0aW9uc1wiO1xyXG5AaW1wb3J0IFwiYWRkb25zL3RyaWFuZ2xlXCI7XHJcbkBpbXBvcnQgXCJhZGRvbnMvd29yZC13cmFwXCI7XHJcblxyXG5AaW1wb3J0IFwiYm91cmJvbi1kZXByZWNhdGVkLXVwY29taW5nXCI7XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBHbG9iYWwgdmFyaWFibGVzIHRvIGVuYWJsZSBvciBkaXNhYmxlIHZlbmRvciBwcmVmaXhlc1xyXG5cclxuJHByZWZpeC1mb3Itd2Via2l0OiAgICB0cnVlICFkZWZhdWx0O1xyXG4kcHJlZml4LWZvci1tb3ppbGxhOiAgIHRydWUgIWRlZmF1bHQ7XHJcbiRwcmVmaXgtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcclxuJHByZWZpeC1mb3Itb3BlcmE6ICAgICB0cnVlICFkZWZhdWx0O1xyXG4kcHJlZml4LWZvci1zcGVjOiAgICAgIHRydWUgIWRlZmF1bHQ7XHJcbiIsIiRlbS1iYXNlOiAxNnB4ICFkZWZhdWx0O1xyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gQSBnbG9iYWwgc2V0dGluZyB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGUgYCRhc3NldC1waXBlbGluZWAgdmFyaWFibGUgZm9yIGFsbCBmdW5jdGlvbnMgdGhhdCBhY2NlcHQgaXQuXHJcbi8vL1xyXG4vLy8gQHR5cGUgQm9vbFxyXG5cclxuJGFzc2V0LXBpcGVsaW5lOiBmYWxzZSAhZGVmYXVsdDtcclxuIiwiQGZ1bmN0aW9uIGFzc2lnbi1pbnB1dHMoJGlucHV0cywgJHBzZXVkbzogbnVsbCkge1xyXG4gICRsaXN0OiAoKTtcclxuXHJcbiAgQGVhY2ggJGlucHV0IGluICRpbnB1dHMge1xyXG4gICAgJGlucHV0OiB1bnF1b3RlKCRpbnB1dCk7XHJcbiAgICAkaW5wdXQ6IGlmKCRwc2V1ZG8sICRpbnB1dCArIFwiOlwiICsgJHBzZXVkbywgJGlucHV0KTtcclxuICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICRpbnB1dCwgY29tbWEpO1xyXG4gIH1cclxuXHJcbiAgQHJldHVybiAkbGlzdDtcclxufVxyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gQ2hlY2tzIGlmIGEgbGlzdCBjb250YWlucyBhIHZhbHVlKHMpLlxyXG4vLy9cclxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3RcclxuLy8vICAgVGhlIGxpc3QgdG8gY2hlY2sgYWdhaW5zdC5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0xpc3R9ICR2YWx1ZXNcclxuLy8vICAgQSBzaW5nbGUgdmFsdWUgb3IgbGlzdCBvZiB2YWx1ZXMgdG8gY2hlY2sgZm9yLlxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICBjb250YWlucygkbGlzdCwgJHZhbHVlKVxyXG4vLy9cclxuLy8vIEByZXR1cm4ge0Jvb2x9XHJcblxyXG5AZnVuY3Rpb24gY29udGFpbnMoJGxpc3QsICR2YWx1ZXMuLi4pIHtcclxuICBAZWFjaCAkdmFsdWUgaW4gJHZhbHVlcyB7XHJcbiAgICBAaWYgdHlwZS1vZihpbmRleCgkbGlzdCwgJHZhbHVlKSkgIT0gXCJudW1iZXJcIiB7XHJcbiAgICAgIEByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuIHRydWU7XHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIENoZWNrcyBpZiBhIGxpc3QgZG9lcyBub3QgY29udGFpbnMgYSB2YWx1ZS5cclxuLy8vXHJcbi8vLyBAYWNjZXNzIHByaXZhdGVcclxuLy8vXHJcbi8vLyBAcGFyYW0ge0xpc3R9ICRsaXN0XHJcbi8vLyAgIFRoZSBsaXN0IHRvIGNoZWNrIGFnYWluc3QuXHJcbi8vL1xyXG4vLy8gQHJldHVybiB7Qm9vbH1cclxuXHJcbkBmdW5jdGlvbiBjb250YWlucy1mYWxzeSgkbGlzdCkge1xyXG4gIEBlYWNoICRpdGVtIGluICRsaXN0IHtcclxuICAgIEBpZiBub3QgJGl0ZW0ge1xyXG4gICAgICBAcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuIGZhbHNlO1xyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBDaGVja3MgZm9yIGEgdmFsaWQgQ1NTIGxlbmd0aC5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHZhbHVlXHJcblxyXG5AZnVuY3Rpb24gaXMtbGVuZ3RoKCR2YWx1ZSkge1xyXG4gIEByZXR1cm4gdHlwZS1vZigkdmFsdWUpICE9IFwibnVsbFwiIGFuZCAoc3RyLXNsaWNlKCR2YWx1ZSArIFwiXCIsIDEsIDQpID09IFwiY2FsY1wiXHJcbiAgICAgICBvciBpbmRleChhdXRvIGluaGVyaXQgaW5pdGlhbCAwLCAkdmFsdWUpXHJcbiAgICAgICBvciAodHlwZS1vZigkdmFsdWUpID09IFwibnVtYmVyXCIgYW5kIG5vdCh1bml0bGVzcygkdmFsdWUpKSkpO1xyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBQcm9ncmFtYXRpY2FsbHkgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgY29sb3IgaXMgbGlnaHQgb3IgZGFyay5cclxuLy8vXHJcbi8vLyBAbGluayBodHRwOi8vcm9ib3RzLnRob3VnaHRib3QuY29tL2Nsb3Nlci1sb29rLWNvbG9yLWxpZ2h0bmVzc1xyXG4vLy9cclxuLy8vIEBwYXJhbSB7Q29sb3IgKEhleCl9ICRjb2xvclxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICBpcy1saWdodCgkY29sb3IpXHJcbi8vL1xyXG4vLy8gQHJldHVybiB7Qm9vbH1cclxuXHJcbkBmdW5jdGlvbiBpcy1saWdodCgkaGV4LWNvbG9yKSB7XHJcbiAgJC1sb2NhbC1yZWQ6IHJlZChyZ2JhKCRoZXgtY29sb3IsIDEpKTtcclxuICAkLWxvY2FsLWdyZWVuOiBncmVlbihyZ2JhKCRoZXgtY29sb3IsIDEpKTtcclxuICAkLWxvY2FsLWJsdWU6IGJsdWUocmdiYSgkaGV4LWNvbG9yLCAxKSk7XHJcbiAgJC1sb2NhbC1saWdodG5lc3M6ICgkLWxvY2FsLXJlZCAqIDAuMjEyNiArICQtbG9jYWwtZ3JlZW4gKiAwLjcxNTIgKyAkLWxvY2FsLWJsdWUgKiAwLjA3MjIpIC8gMjU1O1xyXG5cclxuICBAcmV0dXJuICQtbG9jYWwtbGlnaHRuZXNzID4gMC42O1xyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBDaGVja3MgZm9yIGEgdmFsaWQgbnVtYmVyLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdmFsdWVcclxuLy8vXHJcbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGNvbnRhaW5zXHJcblxyXG5AZnVuY3Rpb24gaXMtbnVtYmVyKCR2YWx1ZSkge1xyXG4gIEByZXR1cm4gY29udGFpbnMoXCIwXCIgXCIxXCIgXCIyXCIgXCIzXCIgXCI0XCIgXCI1XCIgXCI2XCIgXCI3XCIgXCI4XCIgXCI5XCIgMCAxIDIgMyA0IDUgNiA3IDggOSwgJHZhbHVlKTtcclxufVxyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gQ2hlY2tzIGZvciBhIHZhbGlkIENTUyBzaXplLlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdmFsdWVcclxuLy8vXHJcbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGNvbnRhaW5zXHJcbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGlzLWxlbmd0aFxyXG5cclxuQGZ1bmN0aW9uIGlzLXNpemUoJHZhbHVlKSB7XHJcbiAgQHJldHVybiBpcy1sZW5ndGgoJHZhbHVlKVxyXG4gICAgICAgICAgb3IgY29udGFpbnMoXCJmaWxsXCIgXCJmaXQtY29udGVudFwiIFwibWluLWNvbnRlbnRcIiBcIm1heC1jb250ZW50XCIsICR2YWx1ZSk7XHJcbn1cclxuIiwiLy8gQ29udmVydCBwaXhlbHMgdG8gZW1zXHJcbi8vIGVnLiBmb3IgYSByZWxhdGlvbmFsIHZhbHVlIG9mIDEycHggd3JpdGUgZW0oMTIpIHdoZW4gdGhlIHBhcmVudCBpcyAxNnB4XHJcbi8vIGlmIHRoZSBwYXJlbnQgaXMgYW5vdGhlciB2YWx1ZSBzYXkgMjRweCB3cml0ZSBlbSgxMiwgMjQpXHJcblxyXG5AZnVuY3Rpb24gZW0oJHB4dmFsLCAkYmFzZTogJGVtLWJhc2UpIHtcclxuICBAaWYgbm90IHVuaXRsZXNzKCRweHZhbCkge1xyXG4gICAgJHB4dmFsOiBzdHJpcC11bml0cygkcHh2YWwpO1xyXG4gIH1cclxuICBAaWYgbm90IHVuaXRsZXNzKCRiYXNlKSB7XHJcbiAgICAkYmFzZTogc3RyaXAtdW5pdHMoJGJhc2UpO1xyXG4gIH1cclxuICBAcmV0dXJuICgkcHh2YWwgLyAkYmFzZSkgKiAxZW07XHJcbn1cclxuIiwiLy8gQ29udmVydCBwaXhlbHMgdG8gcmVtc1xyXG4vLyBlZy4gZm9yIGEgcmVsYXRpb25hbCB2YWx1ZSBvZiAxMnB4IHdyaXRlIHJlbSgxMilcclxuLy8gQXNzdW1lcyAkZW0tYmFzZSBpcyB0aGUgZm9udC1zaXplIG9mIDxodG1sPlxyXG5cclxuQGZ1bmN0aW9uIHJlbSgkcHh2YWwpIHtcclxuICBAaWYgbm90IHVuaXRsZXNzKCRweHZhbCkge1xyXG4gICAgJHB4dmFsOiBzdHJpcC11bml0cygkcHh2YWwpO1xyXG4gIH1cclxuXHJcbiAgJGJhc2U6ICRlbS1iYXNlO1xyXG4gIEBpZiBub3QgdW5pdGxlc3MoJGJhc2UpIHtcclxuICAgICRiYXNlOiBzdHJpcC11bml0cygkYmFzZSk7XHJcbiAgfVxyXG4gIEByZXR1cm4gKCRweHZhbCAvICRiYXNlKSAqIDFyZW07XHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIE1peGVzIGEgY29sb3Igd2l0aCBibGFjay5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3JcclxuLy8vXHJcbi8vLyBAcGFyYW0ge051bWJlciAoUGVyY2VudGFnZSl9ICRwZXJjZW50XHJcbi8vLyAgIFRoZSBhbW91bnQgb2YgYmxhY2sgdG8gYmUgbWl4ZWQgaW4uXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBzaGFkZSgjZmZiYjUyLCA2MCUpO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogIzY2NGEyMDtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEByZXR1cm4ge0NvbG9yfVxyXG5cclxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJHBlcmNlbnQpIHtcclxuICBAcmV0dXJuIG1peCgjMDAwLCAkY29sb3IsICRwZXJjZW50KTtcclxufVxyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gU3RyaXBzIHRoZSB1bml0IGZyb20gYSBudW1iZXIuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXIgKFdpdGggVW5pdCl9ICR2YWx1ZVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICAkZGltZW5zaW9uOiBzdHJpcC11bml0cygxMGVtKTtcclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgICRkaW1lbnNpb246IDEwO1xyXG4vLy9cclxuLy8vIEByZXR1cm4ge051bWJlciAoVW5pdGxlc3MpfVxyXG5cclxuQGZ1bmN0aW9uIHN0cmlwLXVuaXRzKCR2YWx1ZSkge1xyXG4gIEByZXR1cm4gKCR2YWx1ZSAvICgkdmFsdWUgKiAwICsgMSkpO1xyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBNaXhlcyBhIGNvbG9yIHdpdGggd2hpdGUuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXIgKFBlcmNlbnRhZ2UpfSAkcGVyY2VudFxyXG4vLy8gICBUaGUgYW1vdW50IG9mIHdoaXRlIHRvIGJlIG1peGVkIGluLlxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogdGludCgjNmVjYWE2LCA0MCUpO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogI2E4ZGZjOTtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEByZXR1cm4ge0NvbG9yfVxyXG5cclxuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkcGVyY2VudCkge1xyXG4gIEByZXR1cm4gbWl4KCNmZmYsICRjb2xvciwgJHBlcmNlbnQpO1xyXG59XHJcbiIsIi8vIFJldHVybiB2ZW5kb3ItcHJlZml4ZWQgcHJvcGVydHkgbmFtZXMgaWYgYXBwcm9wcmlhdGVcclxuLy8gRXhhbXBsZTogdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lcygodHJhbnNmb3JtLCBjb2xvciwgYmFja2dyb3VuZCksIG1veikgLT4gLW1vei10cmFuc2Zvcm0sIGNvbG9yLCBiYWNrZ3JvdW5kXHJcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cclxuQGZ1bmN0aW9uIHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoJHByb3BzLCAkdmVuZG9yOiBmYWxzZSkge1xyXG4gICRuZXctcHJvcHM6ICgpO1xyXG5cclxuICBAZWFjaCAkcHJvcCBpbiAkcHJvcHMge1xyXG4gICAgJG5ldy1wcm9wczogYXBwZW5kKCRuZXctcHJvcHMsIHRyYW5zaXRpb24tcHJvcGVydHktbmFtZSgkcHJvcCwgJHZlbmRvciksIGNvbW1hKTtcclxuICB9XHJcblxyXG4gIEByZXR1cm4gJG5ldy1wcm9wcztcclxufVxyXG5cclxuQGZ1bmN0aW9uIHRyYW5zaXRpb24tcHJvcGVydHktbmFtZSgkcHJvcCwgJHZlbmRvcjogZmFsc2UpIHtcclxuICAvLyBwdXQgb3RoZXIgcHJvcGVydGllcyB0aGF0IG5lZWQgdG8gYmUgcHJlZml4ZWQgaGVyZSBhc3dlbGxcclxuICBAaWYgJHZlbmRvciBhbmQgJHByb3AgPT0gdHJhbnNmb3JtIHtcclxuICAgIEByZXR1cm4gdW5xdW90ZSgnLScrJHZlbmRvcisnLScrJHByb3ApO1xyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICBAcmV0dXJuICRwcm9wO1xyXG4gIH1cclxufVxyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gQ29udmVydHMgc2hvcnRoYW5kIHRvIHRoZSA0LXZhbHVlIHN5bnRheC5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0xpc3R9ICRzaG9ydGhhbmRcclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2VcclxuLy8vICAgLmVsZW1lbnQge1xyXG4vLy8gICAgIG1hcmdpbjogdW5wYWNrKDFlbSAyZW0pO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgbWFyZ2luOiAxZW0gMmVtIDFlbSAyZW07XHJcbi8vLyAgIH1cclxuXHJcbkBmdW5jdGlvbiB1bnBhY2soJHNob3J0aGFuZCkge1xyXG4gIEBpZiBsZW5ndGgoJHNob3J0aGFuZCkgPT0gMSB7XHJcbiAgICBAcmV0dXJuIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDEpIG50aCgkc2hvcnRoYW5kLCAxKTtcclxuICB9IEBlbHNlIGlmIGxlbmd0aCgkc2hvcnRoYW5kKSA9PSAyIHtcclxuICAgIEByZXR1cm4gbnRoKCRzaG9ydGhhbmQsIDEpIG50aCgkc2hvcnRoYW5kLCAyKSBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDIpO1xyXG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCRzaG9ydGhhbmQpID09IDMge1xyXG4gICAgQHJldHVybiBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDIpIG50aCgkc2hvcnRoYW5kLCAzKSBudGgoJHNob3J0aGFuZCwgMik7XHJcbiAgfSBAZWxzZSB7XHJcbiAgICBAcmV0dXJuICRzaG9ydGhhbmQ7XHJcbiAgfVxyXG59XHJcbiIsIi8vIFNjYWxpbmcgVmFyaWFibGVzXHJcbiRnb2xkZW46ICAgICAgICAgICAxLjYxODtcclxuJG1pbm9yLXNlY29uZDogICAgIDEuMDY3O1xyXG4kbWFqb3Itc2Vjb25kOiAgICAgMS4xMjU7XHJcbiRtaW5vci10aGlyZDogICAgICAxLjI7XHJcbiRtYWpvci10aGlyZDogICAgICAxLjI1O1xyXG4kcGVyZmVjdC1mb3VydGg6ICAgMS4zMzM7XHJcbiRhdWdtZW50ZWQtZm91cnRoOiAxLjQxNDtcclxuJHBlcmZlY3QtZmlmdGg6ICAgIDEuNTtcclxuJG1pbm9yLXNpeHRoOiAgICAgIDEuNjtcclxuJG1ham9yLXNpeHRoOiAgICAgIDEuNjY3O1xyXG4kbWlub3Itc2V2ZW50aDogICAgMS43Nzg7XHJcbiRtYWpvci1zZXZlbnRoOiAgICAxLjg3NTtcclxuJG9jdGF2ZTogICAgICAgICAgIDI7XHJcbiRtYWpvci10ZW50aDogICAgICAyLjU7XHJcbiRtYWpvci1lbGV2ZW50aDogICAyLjY2NztcclxuJG1ham9yLXR3ZWxmdGg6ICAgIDM7XHJcbiRkb3VibGUtb2N0YXZlOiAgICA0O1xyXG5cclxuJG1vZHVsYXItc2NhbGUtcmF0aW86ICRwZXJmZWN0LWZvdXJ0aCAhZGVmYXVsdDtcclxuJG1vZHVsYXItc2NhbGUtYmFzZTogZW0oJGVtLWJhc2UpICFkZWZhdWx0O1xyXG5cclxuQGZ1bmN0aW9uIG1vZHVsYXItc2NhbGUoJGluY3JlbWVudCwgJHZhbHVlOiAkbW9kdWxhci1zY2FsZS1iYXNlLCAkcmF0aW86ICRtb2R1bGFyLXNjYWxlLXJhdGlvKSB7XHJcbiAgJHYxOiBudGgoJHZhbHVlLCAxKTtcclxuICAkdjI6IG50aCgkdmFsdWUsIGxlbmd0aCgkdmFsdWUpKTtcclxuICAkdmFsdWU6ICR2MTtcclxuXHJcbiAgLy8gc2NhbGUgJHYyIHRvIGp1c3QgYWJvdmUgJHYxXHJcbiAgQHdoaWxlICR2MiA+ICR2MSB7XHJcbiAgICAkdjI6ICgkdjIgLyAkcmF0aW8pOyAvLyB3aWxsIGJlIG9mZi1ieS0xXHJcbiAgfVxyXG4gIEB3aGlsZSAkdjIgPCAkdjEge1xyXG4gICAgJHYyOiAoJHYyICogJHJhdGlvKTsgLy8gd2lsbCBmaXggb2ZmLWJ5LTFcclxuICB9XHJcblxyXG4gIC8vIGNoZWNrIEFGVEVSIHNjYWxpbmcgJHYyIHRvIHByZXZlbnQgZG91YmxlLWNvdW50aW5nIGNvcm5lci1jYXNlXHJcbiAgJGRvdWJsZS1zdHJhbmRlZDogJHYyID4gJHYxO1xyXG5cclxuICBAaWYgJGluY3JlbWVudCA+IDAge1xyXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkaW5jcmVtZW50IHtcclxuICAgICAgQGlmICRkb3VibGUtc3RyYW5kZWQgYW5kICgkdjEgKiAkcmF0aW8pID4gJHYyIHtcclxuICAgICAgICAkdmFsdWU6ICR2MjtcclxuICAgICAgICAkdjI6ICgkdjIgKiAkcmF0aW8pO1xyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICAkdjE6ICgkdjEgKiAkcmF0aW8pO1xyXG4gICAgICAgICR2YWx1ZTogJHYxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaWYgJGluY3JlbWVudCA8IDAge1xyXG4gICAgLy8gYWRqdXN0ICR2MiB0byBqdXN0IGJlbG93ICR2MVxyXG4gICAgQGlmICRkb3VibGUtc3RyYW5kZWQge1xyXG4gICAgICAkdjI6ICgkdjIgLyAkcmF0aW8pO1xyXG4gICAgfVxyXG5cclxuICAgIEBmb3IgJGkgZnJvbSAkaW5jcmVtZW50IHRocm91Z2ggLTEge1xyXG4gICAgICBAaWYgJGRvdWJsZS1zdHJhbmRlZCBhbmQgKCR2MSAvICRyYXRpbykgPCAkdjIge1xyXG4gICAgICAgICR2YWx1ZTogJHYyO1xyXG4gICAgICAgICR2MjogKCR2MiAvICRyYXRpbyk7XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICR2MTogKCR2MSAvICRyYXRpbyk7XHJcbiAgICAgICAgJHZhbHVlOiAkdjE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEByZXR1cm4gJHZhbHVlO1xyXG59XHJcbiIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cclxuLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBzdHItdG8tbnVtIGZuLlxyXG4vLyBTb3VyY2U6IGh0dHA6Ly9zYXNzbWVpc3Rlci5jb20vZ2lzdC85NjQ3NDA4XHJcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cclxuQGZ1bmN0aW9uIF9jb252ZXJ0LXVuaXRzKCRudW1iZXIsICR1bml0KSB7XHJcbiAgJHN0cmluZ3M6IFwicHhcIiwgXCJjbVwiLCBcIm1tXCIsIFwiJVwiLCBcImNoXCIsIFwicGljYVwiLCBcImluXCIsIFwiZW1cIiwgXCJyZW1cIiwgXCJwdFwiLCBcInBjXCIsIFwiZXhcIiwgXCJ2d1wiLCBcInZoXCIsIFwidm1pblwiLCBcInZtYXhcIiwgXCJkZWdcIiwgXCJyYWRcIiwgXCJncmFkXCIsIFwidHVyblwiO1xyXG4gICR1bml0czogICAxcHgsIDFjbSwgMW1tLCAxJSwgMWNoLCAxcGljYSwgMWluLCAxZW0sIDFyZW0sIDFwdCwgMXBjLCAxZXgsIDF2dywgMXZoLCAxdm1pbiwgMXZtYXgsIDFkZWcsIDFyYWQsIDFncmFkLCAxdHVybjtcclxuICAkaW5kZXg6IGluZGV4KCRzdHJpbmdzLCAkdW5pdCk7XHJcblxyXG4gIEBpZiBub3QgJGluZGV4IHtcclxuICAgIEB3YXJuIFwiVW5rbm93biB1bml0IGAjeyR1bml0fWAuXCI7XHJcbiAgICBAcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgQGlmIHR5cGUtb2YoJG51bWJlcikgIT0gXCJudW1iZXJcIiB7XHJcbiAgICBAd2FybiBcImAjeyRudW1iZXJ9IGlzIG5vdCBhIG51bWJlcmBcIjtcclxuICAgIEByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBAcmV0dXJuICRudW1iZXIgKiBudGgoJHVuaXRzLCAkaW5kZXgpO1xyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBEaXJlY3Rpb25hbC1wcm9wZXJ0eSBtaXhpbnMgYXJlIHNob3J0aGFuZHMgZm9yIHdyaXRpbmcgcHJvcGVydGllcyBsaWtlIHRoZSBmb2xsb3dpbmdcclxuLy8vXHJcbi8vLyBAaWdub3JlIFlvdSBjYW4gYWxzbyB1c2UgYGZhbHNlYCBpbnN0ZWFkIG9mIGBudWxsYC5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0xpc3R9ICR2YWxzXHJcbi8vLyAgIExpc3Qgb2YgZGlyZWN0aW9uYWwgdmFsdWVzXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBAaW5jbHVkZSBib3JkZXItc3R5bGUoZG90dGVkIG51bGwpO1xyXG4vLy8gICAgIEBpbmNsdWRlIG1hcmdpbihudWxsIDAgMTBweCk7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBib3JkZXItYm90dG9tLXN0eWxlOiBkb3R0ZWQ7XHJcbi8vLyAgICAgYm9yZGVyLXRvcC1zdHlsZTogZG90dGVkO1xyXG4vLy8gICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XHJcbi8vLyAgICAgbWFyZ2luLWxlZnQ6IDA7XHJcbi8vLyAgICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBjb250YWlucy1mYWxzeVxyXG4vLy9cclxuLy8vIEByZXR1cm4ge0xpc3R9XHJcblxyXG5AZnVuY3Rpb24gY29sbGFwc2UtZGlyZWN0aW9uYWxzKCR2YWxzKSB7XHJcbiAgJG91dHB1dDogbnVsbDtcclxuXHJcbiAgJGE6IG50aCgkdmFscywgMSk7XHJcbiAgJGI6IGlmKGxlbmd0aCgkdmFscykgPCAyLCAkYSwgbnRoKCR2YWxzLCAyKSk7XHJcbiAgJGM6IGlmKGxlbmd0aCgkdmFscykgPCAzLCAkYSwgbnRoKCR2YWxzLCAzKSk7XHJcbiAgJGQ6IGlmKGxlbmd0aCgkdmFscykgPCAyLCAkYSwgbnRoKCR2YWxzLCBpZihsZW5ndGgoJHZhbHMpIDwgNCwgMiwgNCkpKTtcclxuXHJcbiAgQGlmICRhID09IDAgeyAkYTogMDsgfVxyXG4gIEBpZiAkYiA9PSAwIHsgJGI6IDA7IH1cclxuICBAaWYgJGMgPT0gMCB7ICRjOiAwOyB9XHJcbiAgQGlmICRkID09IDAgeyAkZDogMDsgfVxyXG5cclxuICBAaWYgJGEgPT0gJGIgYW5kICRhID09ICRjIGFuZCAkYSA9PSAkZCB7ICRvdXRwdXQ6ICRhOyAgICAgICAgICB9XHJcbiAgQGVsc2UgaWYgJGEgPT0gJGMgYW5kICRiID09ICRkICAgICAgICAgeyAkb3V0cHV0OiAkYSAkYjsgICAgICAgfVxyXG4gIEBlbHNlIGlmICRiID09ICRkICAgICAgICAgICAgICAgICAgICAgIHsgJG91dHB1dDogJGEgJGIgJGM7ICAgIH1cclxuICBAZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICRvdXRwdXQ6ICRhICRiICRjICRkOyB9XHJcblxyXG4gIEByZXR1cm4gJG91dHB1dDtcclxufVxyXG5cclxuLy8vIE91dHB1dCBkaXJlY3Rpb25hbCBwcm9wZXJ0aWVzLCBmb3IgaW5zdGFuY2UgYG1hcmdpbmAuXHJcbi8vL1xyXG4vLy8gQGFjY2VzcyBwcml2YXRlXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRwcmVcclxuLy8vICAgUHJlZml4IHRvIHVzZVxyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzdWZcclxuLy8vICAgU3VmZml4IHRvIHVzZVxyXG4vLy8gQHBhcmFtIHtMaXN0fSAkdmFsc1xyXG4vLy8gICBMaXN0IG9mIHZhbHVlc1xyXG4vLy9cclxuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gY29sbGFwc2UtZGlyZWN0aW9uYWxzXHJcbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGNvbnRhaW5zLWZhbHN5XHJcblxyXG5AbWl4aW4gZGlyZWN0aW9uYWwtcHJvcGVydHkoJHByZSwgJHN1ZiwgJHZhbHMpIHtcclxuICAvLyBQcm9wZXJ0eSBOYW1lc1xyXG4gICR0b3A6ICAgICRwcmUgKyBcIi10b3BcIiAgICArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XHJcbiAgJGJvdHRvbTogJHByZSArIFwiLWJvdHRvbVwiICsgaWYoJHN1ZiwgXCItI3skc3VmfVwiLCBcIlwiKTtcclxuICAkbGVmdDogICAkcHJlICsgXCItbGVmdFwiICAgKyBpZigkc3VmLCBcIi0jeyRzdWZ9XCIsIFwiXCIpO1xyXG4gICRyaWdodDogICRwcmUgKyBcIi1yaWdodFwiICArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XHJcbiAgJGFsbDogICAgJHByZSArICAgICAgICAgICAgIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XHJcblxyXG4gICR2YWxzOiBjb2xsYXBzZS1kaXJlY3Rpb25hbHMoJHZhbHMpO1xyXG5cclxuICBAaWYgY29udGFpbnMtZmFsc3koJHZhbHMpIHtcclxuICAgIEBpZiBudGgoJHZhbHMsIDEpIHsgI3skdG9wfTogbnRoKCR2YWxzLCAxKTsgfVxyXG5cclxuICAgIEBpZiBsZW5ndGgoJHZhbHMpID09IDEge1xyXG4gICAgICBAaWYgbnRoKCR2YWxzLCAxKSB7ICN7JHJpZ2h0fTogbnRoKCR2YWxzLCAxKTsgfVxyXG4gICAgfSBAZWxzZSB7XHJcbiAgICAgIEBpZiBudGgoJHZhbHMsIDIpIHsgI3skcmlnaHR9OiBudGgoJHZhbHMsIDIpOyB9XHJcbiAgICB9XHJcblxyXG4gICAgQGlmIGxlbmd0aCgkdmFscykgPT0gMiB7XHJcbiAgICAgIEBpZiBudGgoJHZhbHMsIDEpIHsgI3skYm90dG9tfTogbnRoKCR2YWxzLCAxKTsgfVxyXG4gICAgICBAaWYgbnRoKCR2YWxzLCAyKSB7ICN7JGxlZnR9OiAgIG50aCgkdmFscywgMik7IH1cclxuICAgIH0gQGVsc2UgaWYgbGVuZ3RoKCR2YWxzKSA9PSAzIHtcclxuICAgICAgQGlmIG50aCgkdmFscywgMykgeyAjeyRib3R0b219OiBudGgoJHZhbHMsIDMpOyB9XHJcbiAgICAgIEBpZiBudGgoJHZhbHMsIDIpIHsgI3skbGVmdH06ICAgbnRoKCR2YWxzLCAyKTsgfVxyXG4gICAgfSBAZWxzZSBpZiBsZW5ndGgoJHZhbHMpID09IDQge1xyXG4gICAgICBAaWYgbnRoKCR2YWxzLCAzKSB7ICN7JGJvdHRvbX06IG50aCgkdmFscywgMyk7IH1cclxuICAgICAgQGlmIG50aCgkdmFscywgNCkgeyAjeyRsZWZ0fTogICBudGgoJHZhbHMsIDQpOyB9XHJcbiAgICB9XHJcbiAgfSBAZWxzZSB7XHJcbiAgICAjeyRhbGx9OiAkdmFscztcclxuICB9XHJcbn1cclxuIiwiLy8gVXNlZCBmb3IgY3JlYXRpbmcgdGhlIHNvdXJjZSBzdHJpbmcgZm9yIGZvbnRzIHVzaW5nIEBmb250LWZhY2VcclxuLy8gUmVmZXJlbmNlOiBodHRwOi8vZ29vLmdsL1J1MWJLUFxyXG5cclxuQGZ1bmN0aW9uIGZvbnQtdXJsLXByZWZpeGVyKCRhc3NldC1waXBlbGluZSkge1xyXG4gIEBpZiAkYXNzZXQtcGlwZWxpbmUgPT0gdHJ1ZSB7XHJcbiAgICBAcmV0dXJuIGZvbnQtdXJsO1xyXG4gIH0gQGVsc2Uge1xyXG4gICAgQHJldHVybiB1cmw7XHJcbiAgfVxyXG59XHJcblxyXG5AZnVuY3Rpb24gZm9udC1zb3VyY2UtZGVjbGFyYXRpb24oXHJcbiAgJGZvbnQtZmFtaWx5LFxyXG4gICRmaWxlLXBhdGgsXHJcbiAgJGFzc2V0LXBpcGVsaW5lLFxyXG4gICRmaWxlLWZvcm1hdHMsXHJcbiAgJGZvbnQtdXJsKSB7XHJcblxyXG4gICRzcmM6ICgpO1xyXG5cclxuICAkZm9ybWF0cy1tYXA6IChcclxuICAgIGVvdDogICBcIiN7JGZpbGUtcGF0aH0uZW90PyNpZWZpeFwiIGZvcm1hdChcImVtYmVkZGVkLW9wZW50eXBlXCIpLFxyXG4gICAgd29mZjI6IFwiI3skZmlsZS1wYXRofS53b2ZmMlwiIGZvcm1hdChcIndvZmYyXCIpLFxyXG4gICAgd29mZjogIFwiI3skZmlsZS1wYXRofS53b2ZmXCIgZm9ybWF0KFwid29mZlwiKSxcclxuICAgIHR0ZjogICBcIiN7JGZpbGUtcGF0aH0udHRmXCIgZm9ybWF0KFwidHJ1ZXR5cGVcIiksXHJcbiAgICBzdmc6ICAgXCIjeyRmaWxlLXBhdGh9LnN2ZyMjeyRmb250LWZhbWlseX1cIiBmb3JtYXQoXCJzdmdcIilcclxuICApO1xyXG5cclxuICBAZWFjaCAka2V5LCAkdmFsdWVzIGluICRmb3JtYXRzLW1hcCB7XHJcbiAgICBAaWYgY29udGFpbnMoJGZpbGUtZm9ybWF0cywgJGtleSkge1xyXG4gICAgICAkZmlsZS1wYXRoOiBudGgoJHZhbHVlcywgMSk7XHJcbiAgICAgICRmb250LWZvcm1hdDogbnRoKCR2YWx1ZXMsIDIpO1xyXG5cclxuICAgICAgQGlmICRhc3NldC1waXBlbGluZSA9PSB0cnVlIHtcclxuICAgICAgICAkc3JjOiBhcHBlbmQoJHNyYywgZm9udC11cmwoJGZpbGUtcGF0aCkgJGZvbnQtZm9ybWF0LCBjb21tYSk7XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICRzcmM6IGFwcGVuZCgkc3JjLCB1cmwoJGZpbGUtcGF0aCkgJGZvbnQtZm9ybWF0LCBjb21tYSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEByZXR1cm4gJHNyYztcclxufVxyXG4iLCJAZnVuY3Rpb24gX2dyYWRpZW50LXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXR5cGUsICRncmFkaWVudC1wb3NpdGlvbnMpIHtcclxuICBAaWYgJGdyYWRpZW50LXBvc2l0aW9uc1xyXG4gIGFuZCAoJGdyYWRpZW50LXR5cGUgPT0gbGluZWFyKVxyXG4gIGFuZCAodHlwZS1vZigkZ3JhZGllbnQtcG9zaXRpb25zKSAhPSBjb2xvcikge1xyXG4gICAgJGdyYWRpZW50LXBvc2l0aW9uczogX2xpbmVhci1wb3NpdGlvbnMtcGFyc2VyKCRncmFkaWVudC1wb3NpdGlvbnMpO1xyXG4gIH1cclxuICBAZWxzZSBpZiAkZ3JhZGllbnQtcG9zaXRpb25zXHJcbiAgYW5kICgkZ3JhZGllbnQtdHlwZSA9PSByYWRpYWwpXHJcbiAgYW5kICh0eXBlLW9mKCRncmFkaWVudC1wb3NpdGlvbnMpICE9IGNvbG9yKSB7XHJcbiAgICAkZ3JhZGllbnQtcG9zaXRpb25zOiBfcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXBvc2l0aW9ucyk7XHJcbiAgfVxyXG4gIEByZXR1cm4gJGdyYWRpZW50LXBvc2l0aW9ucztcclxufVxyXG4iLCIvLyBQcml2YXRlIGZ1bmN0aW9uIGZvciBsaW5lYXItZ3JhZGllbnQtcGFyc2VyXHJcbkBmdW5jdGlvbiBfbGluZWFyLWFuZ2xlLXBhcnNlcigkaW1hZ2UsICRmaXJzdC12YWwsICRwcmVmaXgsICRzdWZmaXgpIHtcclxuICAkb2Zmc2V0OiBudWxsO1xyXG4gICR1bml0LXNob3J0OiAgc3RyLXNsaWNlKCRmaXJzdC12YWwsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkgLSAyLCBzdHItbGVuZ3RoKCRmaXJzdC12YWwpKTtcclxuICAkdW5pdC1sb25nOiAgIHN0ci1zbGljZSgkZmlyc3QtdmFsLCBzdHItbGVuZ3RoKCRmaXJzdC12YWwpIC0gMywgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSk7XHJcblxyXG4gIEBpZiAoJHVuaXQtbG9uZyA9PSBcImdyYWRcIikgb3JcclxuICAgICAgKCR1bml0LWxvbmcgPT0gXCJ0dXJuXCIpIHtcclxuICAgICRvZmZzZXQ6IGlmKCR1bml0LWxvbmcgPT0gXCJncmFkXCIsIC0xMDBncmFkICogMywgLTAuNzV0dXJuKTtcclxuICB9XHJcblxyXG4gIEBlbHNlIGlmICgkdW5pdC1zaG9ydCA9PSBcImRlZ1wiKSBvclxyXG4gICAgICAgICAgICgkdW5pdC1zaG9ydCA9PSBcInJhZFwiKSB7XHJcbiAgICAkb2Zmc2V0OiBpZigkdW5pdC1zaG9ydCA9PSBcImRlZ1wiLCAtOTAgKiAzLCAxLjZyYWQpO1xyXG4gIH1cclxuXHJcbiAgQGlmICRvZmZzZXQge1xyXG4gICAgJG51bTogX3N0ci10by1udW0oJGZpcnN0LXZhbCk7XHJcblxyXG4gICAgQHJldHVybiAoXHJcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkcHJlZml4ICsgKCRvZmZzZXQgLSAkbnVtKSArICRzdWZmaXgsXHJcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiQGZ1bmN0aW9uIF9saW5lYXItZ3JhZGllbnQtcGFyc2VyKCRpbWFnZSkge1xyXG4gICRpbWFnZTogdW5xdW90ZSgkaW1hZ2UpO1xyXG4gICRncmFkaWVudHM6ICgpO1xyXG4gICRzdGFydDogc3RyLWluZGV4KCRpbWFnZSwgXCIoXCIpO1xyXG4gICRlbmQ6IHN0ci1pbmRleCgkaW1hZ2UsIFwiLFwiKTtcclxuICAkZmlyc3QtdmFsOiBzdHItc2xpY2UoJGltYWdlLCAkc3RhcnQgKyAxLCAkZW5kIC0gMSk7XHJcblxyXG4gICRwcmVmaXg6IHN0ci1zbGljZSgkaW1hZ2UsIDEsICRzdGFydCk7XHJcbiAgJHN1ZmZpeDogc3RyLXNsaWNlKCRpbWFnZSwgJGVuZCwgc3RyLWxlbmd0aCgkaW1hZ2UpKTtcclxuXHJcbiAgJGhhcy1tdWx0aXBsZS12YWxzOiBzdHItaW5kZXgoJGZpcnN0LXZhbCwgXCIgXCIpO1xyXG4gICRoYXMtc2luZ2xlLXBvc2l0aW9uOiB1bnF1b3RlKF9wb3NpdGlvbi1mbGlwcGVyKCRmaXJzdC12YWwpICsgXCJcIik7XHJcbiAgJGhhcy1hbmdsZTogaXMtbnVtYmVyKHN0ci1zbGljZSgkZmlyc3QtdmFsLCAxLCAxKSk7XHJcblxyXG4gIEBpZiAkaGFzLW11bHRpcGxlLXZhbHMge1xyXG4gICAgJGdyYWRpZW50czogX2xpbmVhci1zaWRlLWNvcm5lci1wYXJzZXIoJGltYWdlLCAkZmlyc3QtdmFsLCAkcHJlZml4LCAkc3VmZml4LCAkaGFzLW11bHRpcGxlLXZhbHMpO1xyXG4gIH1cclxuXHJcbiAgQGVsc2UgaWYgJGhhcy1zaW5nbGUtcG9zaXRpb24gIT0gXCJcIiB7XHJcbiAgICAkcG9zOiB1bnF1b3RlKCRoYXMtc2luZ2xlLXBvc2l0aW9uICsgXCJcIik7XHJcblxyXG4gICAgJGdyYWRpZW50czogKFxyXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJGltYWdlLFxyXG4gICAgICBzcGVjLWltYWdlOiAkcHJlZml4ICsgXCJ0byBcIiArICRwb3MgKyAkc3VmZml4XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgQGVsc2UgaWYgJGhhcy1hbmdsZSB7XHJcbiAgICAvLyBSb3RhdGUgZGVncmVlIGZvciB3ZWJraXRcclxuICAgICRncmFkaWVudHM6IF9saW5lYXItYW5nbGUtcGFyc2VyKCRpbWFnZSwgJGZpcnN0LXZhbCwgJHByZWZpeCwgJHN1ZmZpeCk7XHJcbiAgfVxyXG5cclxuICBAZWxzZSB7XHJcbiAgICAkZ3JhZGllbnRzOiAoXHJcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkaW1hZ2UsXHJcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIEByZXR1cm4gJGdyYWRpZW50cztcclxufVxyXG4iLCJAZnVuY3Rpb24gX2xpbmVhci1wb3NpdGlvbnMtcGFyc2VyKCRwb3MpIHtcclxuICAkdHlwZTogdHlwZS1vZihudGgoJHBvcywgMSkpO1xyXG4gICRzcGVjOiBudWxsO1xyXG4gICRkZWdyZWU6IG51bGw7XHJcbiAgJHNpZGU6IG51bGw7XHJcbiAgJGNvcm5lcjogbnVsbDtcclxuICAkbGVuZ3RoOiBsZW5ndGgoJHBvcyk7XHJcbiAgLy8gUGFyc2UgU2lkZSBhbmQgY29ybmVyIHBvc2l0aW9uc1xyXG4gIEBpZiAoJGxlbmd0aCA+IDEpIHtcclxuICAgIEBpZiBudGgoJHBvcywgMSkgPT0gXCJ0b1wiIHsgLy8gTmV3ZXIgc3ludGF4XHJcbiAgICAgICRzaWRlOiBudGgoJHBvcywgMik7XHJcblxyXG4gICAgICBAaWYgJGxlbmd0aCA9PSAyIHsgLy8gZWcuIHRvIHRvcFxyXG4gICAgICAgIC8vIFN3YXAgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XHJcbiAgICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIobnRoKCRwb3MsIDIpKTtcclxuICAgICAgfVxyXG4gICAgICBAZWxzZSBpZiAkbGVuZ3RoID09IDMgeyAvLyBlZy4gdG8gdG9wIGxlZnRcclxuICAgICAgICAkY29ybmVyOiBudGgoJHBvcywgMyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIEBlbHNlIGlmICRsZW5ndGggPT0gMiB7IC8vIE9sZGVyIHN5bnRheCAoXCJ0b3AgbGVmdFwiKVxyXG4gICAgICAkc2lkZTogX3Bvc2l0aW9uLWZsaXBwZXIobnRoKCRwb3MsIDEpKTtcclxuICAgICAgJGNvcm5lcjogX3Bvc2l0aW9uLWZsaXBwZXIobnRoKCRwb3MsIDIpKTtcclxuICAgIH1cclxuXHJcbiAgICBAaWYgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwibGVmdCB0b3BcIikgb3IgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwidG9wIGxlZnRcIikge1xyXG4gICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcigjeyRzaWRlfSkgX3Bvc2l0aW9uLWZsaXBwZXIoI3skY29ybmVyfSk7XHJcbiAgICB9XHJcbiAgICBAZWxzZSBpZiAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJyaWdodCB0b3BcIikgb3IgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwidG9wIHJpZ2h0XCIpIHtcclxuICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIoI3skc2lkZX0pIF9wb3NpdGlvbi1mbGlwcGVyKCN7JGNvcm5lcn0pO1xyXG4gICAgfVxyXG4gICAgQGVsc2UgaWYgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwicmlnaHQgYm90dG9tXCIpIG9yIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcImJvdHRvbSByaWdodFwiKSB7XHJcbiAgICAgICRkZWdyZWU6IF9wb3NpdGlvbi1mbGlwcGVyKCN7JHNpZGV9KSBfcG9zaXRpb24tZmxpcHBlcigjeyRjb3JuZXJ9KTtcclxuICAgIH1cclxuICAgIEBlbHNlIGlmIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcImxlZnQgYm90dG9tXCIpIG9yIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcImJvdHRvbSBsZWZ0XCIpIHtcclxuICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIoI3skc2lkZX0pIF9wb3NpdGlvbi1mbGlwcGVyKCN7JGNvcm5lcn0pO1xyXG4gICAgfVxyXG4gICAgJHNwZWM6IHRvICRzaWRlICRjb3JuZXI7XHJcbiAgfVxyXG4gIEBlbHNlIGlmICRsZW5ndGggPT0gMSB7XHJcbiAgICAvLyBTd2FwIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxyXG4gICAgQGlmICR0eXBlID09IHN0cmluZyB7XHJcbiAgICAgICRkZWdyZWU6ICRwb3M7XHJcbiAgICAgICRzcGVjOiB0byBfcG9zaXRpb24tZmxpcHBlcigkcG9zKTtcclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgJGRlZ3JlZTogLTI3MCAtICRwb3M7IC8vcm90YXRlIHRoZSBncmFkaWVudCBvcHBvc2l0ZSBmcm9tIHNwZWNcclxuICAgICAgJHNwZWM6ICRwb3M7XHJcbiAgICB9XHJcbiAgfVxyXG4gICRkZWdyZWU6IHVucXVvdGUoJGRlZ3JlZSArIFwiLFwiKTtcclxuICAkc3BlYzogICB1bnF1b3RlKCRzcGVjICsgXCIsXCIpO1xyXG4gIEByZXR1cm4gJGRlZ3JlZSAkc3BlYztcclxufVxyXG5cclxuQGZ1bmN0aW9uIF9wb3NpdGlvbi1mbGlwcGVyKCRwb3MpIHtcclxuICBAcmV0dXJuIGlmKCRwb3MgPT0gbGVmdCwgcmlnaHQsIG51bGwpXHJcbiAgICAgICAgIGlmKCRwb3MgPT0gcmlnaHQsIGxlZnQsIG51bGwpXHJcbiAgICAgICAgIGlmKCRwb3MgPT0gdG9wLCBib3R0b20sIG51bGwpXHJcbiAgICAgICAgIGlmKCRwb3MgPT0gYm90dG9tLCB0b3AsIG51bGwpO1xyXG59XHJcbiIsIi8vIFByaXZhdGUgZnVuY3Rpb24gZm9yIGxpbmVhci1ncmFkaWVudC1wYXJzZXJcclxuQGZ1bmN0aW9uIF9saW5lYXItc2lkZS1jb3JuZXItcGFyc2VyKCRpbWFnZSwgJGZpcnN0LXZhbCwgJHByZWZpeCwgJHN1ZmZpeCwgJGhhcy1tdWx0aXBsZS12YWxzKSB7XHJcbiAgJHZhbC0xOiBzdHItc2xpY2UoJGZpcnN0LXZhbCwgMSwgJGhhcy1tdWx0aXBsZS12YWxzIC0gMSk7XHJcbiAgJHZhbC0yOiBzdHItc2xpY2UoJGZpcnN0LXZhbCwgJGhhcy1tdWx0aXBsZS12YWxzICsgMSwgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSk7XHJcbiAgJHZhbC0zOiBudWxsO1xyXG4gICRoYXMtdmFsLTM6IHN0ci1pbmRleCgkdmFsLTIsIFwiIFwiKTtcclxuXHJcbiAgQGlmICRoYXMtdmFsLTMge1xyXG4gICAgJHZhbC0zOiBzdHItc2xpY2UoJHZhbC0yLCAkaGFzLXZhbC0zICsgMSwgc3RyLWxlbmd0aCgkdmFsLTIpKTtcclxuICAgICR2YWwtMjogc3RyLXNsaWNlKCR2YWwtMiwgMSwgJGhhcy12YWwtMyAtIDEpO1xyXG4gIH1cclxuXHJcbiAgJHBvczogX3Bvc2l0aW9uLWZsaXBwZXIoJHZhbC0xKSBfcG9zaXRpb24tZmxpcHBlcigkdmFsLTIpIF9wb3NpdGlvbi1mbGlwcGVyKCR2YWwtMyk7XHJcbiAgJHBvczogdW5xdW90ZSgkcG9zICsgXCJcIik7XHJcblxyXG4gIC8vIFVzZSBvbGQgc3BlYyBmb3Igd2Via2l0XHJcbiAgQGlmICR2YWwtMSA9PSBcInRvXCIge1xyXG4gICAgQHJldHVybiAoXHJcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkcHJlZml4ICsgJHBvcyArICRzdWZmaXgsXHJcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vIEJyaW5nIHRoZSBjb2RlIHVwIHRvIHNwZWNcclxuICBAZWxzZSB7XHJcbiAgICBAcmV0dXJuIChcclxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRpbWFnZSxcclxuICAgICAgc3BlYy1pbWFnZTogJHByZWZpeCArIFwidG8gXCIgKyAkcG9zICsgJHN1ZmZpeFxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiQGZ1bmN0aW9uIF9yYWRpYWwtYXJnLXBhcnNlcigkZzEsICRnMiwgJHBvcywgJHNoYXBlLXNpemUpIHtcclxuICBAZWFjaCAkdmFsdWUgaW4gJGcxLCAkZzIge1xyXG4gICAgJGZpcnN0LXZhbDogbnRoKCR2YWx1ZSwgMSk7XHJcbiAgICAkcG9zLXR5cGU6ICB0eXBlLW9mKCRmaXJzdC12YWwpO1xyXG4gICAgJHNwZWMtYXQtaW5kZXg6IG51bGw7XHJcblxyXG4gICAgLy8gRGV0ZXJtaW5lIGlmIHNwZWMgd2FzIHBhc3NlZCB0byBtaXhpblxyXG4gICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSBsaXN0IHtcclxuICAgICAgJHNwZWMtYXQtaW5kZXg6IGlmKGluZGV4KCR2YWx1ZSwgYXQpLCBpbmRleCgkdmFsdWUsIGF0KSwgZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgQGlmICRzcGVjLWF0LWluZGV4IHtcclxuICAgICAgQGlmICRzcGVjLWF0LWluZGV4ID4gMSB7XHJcbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAoJHNwZWMtYXQtaW5kZXggLSAxKSB7XHJcbiAgICAgICAgICAkc2hhcGUtc2l6ZTogJHNoYXBlLXNpemUgbnRoKCR2YWx1ZSwgJGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBAZm9yICRpIGZyb20gKCRzcGVjLWF0LWluZGV4ICsgMSkgdGhyb3VnaCBsZW5ndGgoJHZhbHVlKSB7XHJcbiAgICAgICAgICAkcG9zOiAkcG9zIG50aCgkdmFsdWUsICRpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgQGVsc2UgaWYgJHNwZWMtYXQtaW5kZXggPT0gMSB7XHJcbiAgICAgICAgQGZvciAkaSBmcm9tICgkc3BlYy1hdC1pbmRleCArIDEpIHRocm91Z2ggbGVuZ3RoKCR2YWx1ZSkge1xyXG4gICAgICAgICAgJHBvczogJHBvcyBudGgoJHZhbHVlLCAkaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgICRnMTogbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBJZiBub3Qgc3BlYyBjYWxjdWxhdGUgY29ycmVjdCB2YWx1ZXNcclxuICAgIEBlbHNlIHtcclxuICAgICAgQGlmICgkcG9zLXR5cGUgIT0gY29sb3IpIG9yICgkZmlyc3QtdmFsICE9IFwidHJhbnNwYXJlbnRcIikge1xyXG4gICAgICAgIEBpZiAoJHBvcy10eXBlID09IG51bWJlcilcclxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNlbnRlclwiKVxyXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwidG9wXCIpXHJcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJyaWdodFwiKVxyXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiYm90dG9tXCIpXHJcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJsZWZ0XCIpIHtcclxuXHJcbiAgICAgICAgICAkcG9zOiAkdmFsdWU7XHJcblxyXG4gICAgICAgICAgQGlmICRwb3MgPT0gJGcxIHtcclxuICAgICAgICAgICAgJGcxOiBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGVsc2UgaWZcclxuICAgICAgICAgICAoJGZpcnN0LXZhbCA9PSBcImVsbGlwc2VcIilcclxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNpcmNsZVwiKVxyXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiY2xvc2VzdC1zaWRlXCIpXHJcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjbG9zZXN0LWNvcm5lclwiKVxyXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiZmFydGhlc3Qtc2lkZVwiKVxyXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiZmFydGhlc3QtY29ybmVyXCIpXHJcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjb250YWluXCIpXHJcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjb3ZlclwiKSB7XHJcblxyXG4gICAgICAgICAgJHNoYXBlLXNpemU6ICR2YWx1ZTtcclxuXHJcbiAgICAgICAgICBAaWYgJHZhbHVlID09ICRnMSB7XHJcbiAgICAgICAgICAgICRnMTogbnVsbDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBAZWxzZSBpZiAkdmFsdWUgPT0gJGcyIHtcclxuICAgICAgICAgICAgJGcyOiBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBAcmV0dXJuICRnMSwgJGcyLCAkcG9zLCAkc2hhcGUtc2l6ZTtcclxufVxyXG4iLCJAZnVuY3Rpb24gX3JhZGlhbC1wb3NpdGlvbnMtcGFyc2VyKCRncmFkaWVudC1wb3MpIHtcclxuICAkc2hhcGUtc2l6ZTogbnRoKCRncmFkaWVudC1wb3MsIDEpO1xyXG4gICRwb3M6ICAgICAgICBudGgoJGdyYWRpZW50LXBvcywgMik7XHJcbiAgJHNoYXBlLXNpemUtc3BlYzogX3NoYXBlLXNpemUtc3RyaXBwZXIoJHNoYXBlLXNpemUpO1xyXG5cclxuICAkcHJlLXNwZWM6IHVucXVvdGUoaWYoJHBvcywgXCIjeyRwb3N9LCBcIiwgbnVsbCkpXHJcbiAgICAgICAgICAgICB1bnF1b3RlKGlmKCRzaGFwZS1zaXplLCBcIiN7JHNoYXBlLXNpemV9LFwiLCBudWxsKSk7XHJcbiAgJHBvcy1zcGVjOiBpZigkcG9zLCBcImF0ICN7JHBvc31cIiwgbnVsbCk7XHJcblxyXG4gICRzcGVjOiBcIiN7JHNoYXBlLXNpemUtc3BlY30gI3skcG9zLXNwZWN9XCI7XHJcblxyXG4gIC8vIEFkZCBjb21tYVxyXG4gIEBpZiAoJHNwZWMgIT0gXCIgIFwiKSB7XHJcbiAgICAkc3BlYzogXCIjeyRzcGVjfSxcIjtcclxuICB9XHJcblxyXG4gIEByZXR1cm4gJHByZS1zcGVjICRzcGVjO1xyXG59XHJcbiIsIkBmdW5jdGlvbiBfcmFkaWFsLWdyYWRpZW50LXBhcnNlcigkaW1hZ2UpIHtcclxuICAkaW1hZ2U6IHVucXVvdGUoJGltYWdlKTtcclxuICAkZ3JhZGllbnRzOiAoKTtcclxuICAkc3RhcnQ6IHN0ci1pbmRleCgkaW1hZ2UsIFwiKFwiKTtcclxuICAkZW5kOiBzdHItaW5kZXgoJGltYWdlLCBcIixcIik7XHJcbiAgJGZpcnN0LXZhbDogc3RyLXNsaWNlKCRpbWFnZSwgJHN0YXJ0ICsgMSwgJGVuZCAtIDEpO1xyXG5cclxuICAkcHJlZml4OiBzdHItc2xpY2UoJGltYWdlLCAxLCAkc3RhcnQpO1xyXG4gICRzdWZmaXg6IHN0ci1zbGljZSgkaW1hZ2UsICRlbmQsIHN0ci1sZW5ndGgoJGltYWdlKSk7XHJcblxyXG4gICRpcy1zcGVjLXN5bnRheDogc3RyLWluZGV4KCRmaXJzdC12YWwsIFwiYXRcIik7XHJcblxyXG4gIEBpZiAkaXMtc3BlYy1zeW50YXggYW5kICRpcy1zcGVjLXN5bnRheCA+IDEge1xyXG4gICAgJGtleXdvcmQ6IHN0ci1zbGljZSgkZmlyc3QtdmFsLCAxLCAkaXMtc3BlYy1zeW50YXggLSAyKTtcclxuICAgICRwb3M6IHN0ci1zbGljZSgkZmlyc3QtdmFsLCAkaXMtc3BlYy1zeW50YXggKyAzLCBzdHItbGVuZ3RoKCRmaXJzdC12YWwpKTtcclxuICAgICRwb3M6IGFwcGVuZCgkcG9zLCAka2V5d29yZCwgY29tbWEpO1xyXG5cclxuICAgICRncmFkaWVudHM6IChcclxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRwcmVmaXggKyAkcG9zICsgJHN1ZmZpeCxcclxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgQGVsc2UgaWYgJGlzLXNwZWMtc3ludGF4ID09IDEge1xyXG4gICAgJHBvczogc3RyLXNsaWNlKCRmaXJzdC12YWwsICRpcy1zcGVjLXN5bnRheCArIDMsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkpO1xyXG5cclxuICAgICRncmFkaWVudHM6IChcclxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRwcmVmaXggKyAkcG9zICsgJHN1ZmZpeCxcclxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgQGVsc2UgaWYgc3RyLWluZGV4KCRpbWFnZSwgXCJjb3ZlclwiKSBvciBzdHItaW5kZXgoJGltYWdlLCBcImNvbnRhaW5cIikge1xyXG4gICAgQHdhcm4gXCJSYWRpYWwtZ3JhZGllbnQgbmVlZHMgdG8gYmUgdXBkYXRlZCB0byBjb25mb3JtIHRvIGxhdGVzdCBzcGVjLlwiO1xyXG5cclxuICAgICRncmFkaWVudHM6IChcclxuICAgICAgd2Via2l0LWltYWdlOiBudWxsLFxyXG4gICAgICBzcGVjLWltYWdlOiAkaW1hZ2VcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBAZWxzZSB7XHJcbiAgICAkZ3JhZGllbnRzOiAoXHJcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkaW1hZ2UsXHJcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIEByZXR1cm4gJGdyYWRpZW50cztcclxufVxyXG4iLCIvLyBVc2VyIGZvciBsaW5lYXIgYW5kIHJhZGlhbCBncmFkaWVudHMgd2l0aGluIGJhY2tncm91bmQtaW1hZ2Ugb3IgYm9yZGVyLWltYWdlIHByb3BlcnRpZXNcclxuXHJcbkBmdW5jdGlvbiBfcmVuZGVyLWdyYWRpZW50cygkZ3JhZGllbnQtcG9zaXRpb25zLCAkZ3JhZGllbnRzLCAkZ3JhZGllbnQtdHlwZSwgJHZlbmRvcjogZmFsc2UpIHtcclxuICAkcHJlLXNwZWM6IG51bGw7XHJcbiAgJHNwZWM6IG51bGw7XHJcbiAgJHZlbmRvci1ncmFkaWVudHM6IG51bGw7XHJcbiAgQGlmICRncmFkaWVudC10eXBlID09IGxpbmVhciB7XHJcbiAgICBAaWYgJGdyYWRpZW50LXBvc2l0aW9ucyB7XHJcbiAgICAgICRwcmUtc3BlYzogbnRoKCRncmFkaWVudC1wb3NpdGlvbnMsIDEpO1xyXG4gICAgICAkc3BlYzogICAgIG50aCgkZ3JhZGllbnQtcG9zaXRpb25zLCAyKTtcclxuICAgIH1cclxuICB9XHJcbiAgQGVsc2UgaWYgJGdyYWRpZW50LXR5cGUgPT0gcmFkaWFsIHtcclxuICAgICRwcmUtc3BlYzogbnRoKCRncmFkaWVudC1wb3NpdGlvbnMsIDEpO1xyXG4gICAgJHNwZWM6ICAgICBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMik7XHJcbiAgfVxyXG5cclxuICBAaWYgJHZlbmRvciB7XHJcbiAgICAkdmVuZG9yLWdyYWRpZW50czogLSN7JHZlbmRvcn0tI3skZ3JhZGllbnQtdHlwZX0tZ3JhZGllbnQoI3skcHJlLXNwZWN9ICRncmFkaWVudHMpO1xyXG4gIH1cclxuICBAZWxzZSBpZiAkdmVuZG9yID09IGZhbHNlIHtcclxuICAgICR2ZW5kb3ItZ3JhZGllbnRzOiBcIiN7JGdyYWRpZW50LXR5cGV9LWdyYWRpZW50KCN7JHNwZWN9ICN7JGdyYWRpZW50c30pXCI7XHJcbiAgICAkdmVuZG9yLWdyYWRpZW50czogdW5xdW90ZSgkdmVuZG9yLWdyYWRpZW50cyk7XHJcbiAgfVxyXG4gIEByZXR1cm4gJHZlbmRvci1ncmFkaWVudHM7XHJcbn1cclxuIiwiQGZ1bmN0aW9uIF9zaGFwZS1zaXplLXN0cmlwcGVyKCRzaGFwZS1zaXplKSB7XHJcbiAgJHNoYXBlLXNpemUtc3BlYzogbnVsbDtcclxuICBAZWFjaCAkdmFsdWUgaW4gJHNoYXBlLXNpemUge1xyXG4gICAgQGlmICgkdmFsdWUgPT0gXCJjb3ZlclwiKSBvciAoJHZhbHVlID09IFwiY29udGFpblwiKSB7XHJcbiAgICAgICR2YWx1ZTogbnVsbDtcclxuICAgIH1cclxuICAgICRzaGFwZS1zaXplLXNwZWM6IFwiI3skc2hhcGUtc2l6ZS1zcGVjfSAjeyR2YWx1ZX1cIjtcclxuICB9XHJcbiAgQHJldHVybiAkc2hhcGUtc2l6ZS1zcGVjO1xyXG59XHJcbiIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cclxuLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBsaW5lYXIvcmFkaWFsLWdyYWRpZW50LXBhcnNlcnMuXHJcbi8vIFNvdXJjZTogaHR0cDovL3Nhc3NtZWlzdGVyLmNvbS9naXN0Lzk2NDc0MDhcclxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG5AZnVuY3Rpb24gX3N0ci10by1udW0oJHN0cmluZykge1xyXG4gIC8vIE1hdHJpY2VzXHJcbiAgJHN0cmluZ3M6IFwiMFwiIFwiMVwiIFwiMlwiIFwiM1wiIFwiNFwiIFwiNVwiIFwiNlwiIFwiN1wiIFwiOFwiIFwiOVwiO1xyXG4gICRudW1iZXJzOiAgMCAgIDEgICAyICAgMyAgIDQgICA1ICAgNiAgIDcgICA4ICAgOTtcclxuXHJcbiAgLy8gUmVzdWx0XHJcbiAgJHJlc3VsdDogMDtcclxuICAkZGl2aWRlcjogMDtcclxuICAkbWludXM6IGZhbHNlO1xyXG5cclxuICAvLyBMb29waW5nIHRocm91Z2ggYWxsIGNoYXJhY3RlcnNcclxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIHN0ci1sZW5ndGgoJHN0cmluZykge1xyXG4gICAgJGNoYXJhY3Rlcjogc3RyLXNsaWNlKCRzdHJpbmcsICRpLCAkaSk7XHJcbiAgICAkaW5kZXg6IGluZGV4KCRzdHJpbmdzLCAkY2hhcmFjdGVyKTtcclxuXHJcbiAgICBAaWYgJGNoYXJhY3RlciA9PSBcIi1cIiB7XHJcbiAgICAgICRtaW51czogdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBAZWxzZSBpZiAkY2hhcmFjdGVyID09IFwiLlwiIHtcclxuICAgICAgJGRpdmlkZXI6IDE7XHJcbiAgICB9XHJcblxyXG4gICAgQGVsc2Uge1xyXG4gICAgICBAaWYgbm90ICRpbmRleCB7XHJcbiAgICAgICAgJHJlc3VsdDogaWYoJG1pbnVzLCAkcmVzdWx0ICogLTEsICRyZXN1bHQpO1xyXG4gICAgICAgIEByZXR1cm4gX2NvbnZlcnQtdW5pdHMoJHJlc3VsdCwgc3RyLXNsaWNlKCRzdHJpbmcsICRpKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICRudW1iZXI6IG50aCgkbnVtYmVycywgJGluZGV4KTtcclxuXHJcbiAgICAgIEBpZiAkZGl2aWRlciA9PSAwIHtcclxuICAgICAgICAkcmVzdWx0OiAkcmVzdWx0ICogMTA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBlbHNlIHtcclxuICAgICAgICAvLyBNb3ZlIHRoZSBkZWNpbWFsIGRvdCB0byB0aGUgbGVmdFxyXG4gICAgICAgICRkaXZpZGVyOiAkZGl2aWRlciAqIDEwO1xyXG4gICAgICAgICRudW1iZXI6ICRudW1iZXIgLyAkZGl2aWRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJHJlc3VsdDogJHJlc3VsdCArICRudW1iZXI7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEByZXR1cm4gaWYoJG1pbnVzLCAkcmVzdWx0ICogLTEsICRyZXN1bHQpO1xyXG59XHJcbiIsIi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtYW5pbWF0aW9ucy8jdGhlLWFuaW1hdGlvbi1uYW1lLXByb3BlcnR5LVxyXG4vLyBFYWNoIG9mIHRoZXNlIG1peGlucyBzdXBwb3J0IGNvbW1hIHNlcGFyYXRlZCBsaXN0cyBvZiB2YWx1ZXMsIHdoaWNoIGFsbG93cyBkaWZmZXJlbnQgdHJhbnNpdGlvbnMgZm9yIGluZGl2aWR1YWwgcHJvcGVydGllcyB0byBiZSBkZXNjcmliZWQgaW4gYSBzaW5nbGUgc3R5bGUgcnVsZS4gRWFjaCB2YWx1ZSBpbiB0aGUgbGlzdCBjb3JyZXNwb25kcyB0byB0aGUgdmFsdWUgYXQgdGhhdCBzYW1lIHBvc2l0aW9uIGluIHRoZSBvdGhlciBwcm9wZXJ0aWVzLlxyXG5cclxuQG1peGluIGFuaW1hdGlvbigkYW5pbWF0aW9ucy4uLikge1xyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbiwgJGFuaW1hdGlvbnMsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBhbmltYXRpb24tbmFtZSgkbmFtZXMuLi4pIHtcclxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tbmFtZSwgJG5hbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xyXG59XHJcblxyXG5AbWl4aW4gYW5pbWF0aW9uLWR1cmF0aW9uKCR0aW1lcy4uLikge1xyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1kdXJhdGlvbiwgJHRpbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xyXG59XHJcblxyXG5AbWl4aW4gYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbigkbW90aW9ucy4uLikge1xyXG4gIC8vIGVhc2UgfCBsaW5lYXIgfCBlYXNlLWluIHwgZWFzZS1vdXQgfCBlYXNlLWluLW91dFxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24sICRtb3Rpb25zLCB3ZWJraXQgbW96IHNwZWMpO1xyXG59XHJcblxyXG5AbWl4aW4gYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCgkdmFsdWVzLi4uKSB7XHJcbiAgLy8gaW5maW5pdGUgfCA8bnVtYmVyPlxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsICR2YWx1ZXMsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBhbmltYXRpb24tZGlyZWN0aW9uKCRkaXJlY3Rpb25zLi4uKSB7XHJcbiAgLy8gbm9ybWFsIHwgYWx0ZXJuYXRlXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWRpcmVjdGlvbiwgJGRpcmVjdGlvbnMsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBhbmltYXRpb24tcGxheS1zdGF0ZSgkc3RhdGVzLi4uKSB7XHJcbiAgLy8gcnVubmluZyB8IHBhdXNlZFxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1wbGF5LXN0YXRlLCAkc3RhdGVzLCB3ZWJraXQgbW96IHNwZWMpO1xyXG59XHJcblxyXG5AbWl4aW4gYW5pbWF0aW9uLWRlbGF5KCR0aW1lcy4uLikge1xyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1kZWxheSwgJHRpbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xyXG59XHJcblxyXG5AbWl4aW4gYW5pbWF0aW9uLWZpbGwtbW9kZSgkbW9kZXMuLi4pIHtcclxuICAvLyBub25lIHwgZm9yd2FyZHMgfCBiYWNrd2FyZHMgfCBib3RoXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWZpbGwtbW9kZSwgJG1vZGVzLCB3ZWJraXQgbW96IHNwZWMpO1xyXG59XHJcbiIsIkBtaXhpbiBhcHBlYXJhbmNlKCR2YWx1ZSkge1xyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFwcGVhcmFuY2UsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xyXG59XHJcbiIsIkBtaXhpbiBiYWNrZmFjZS12aXNpYmlsaXR5KCR2aXNpYmlsaXR5KSB7XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYmFja2ZhY2UtdmlzaWJpbGl0eSwgJHZpc2liaWxpdHksIHdlYmtpdCBzcGVjKTtcclxufVxyXG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXHJcbi8vIEJhY2tncm91bmQgcHJvcGVydHkgZm9yIGFkZGluZyBtdWx0aXBsZSBiYWNrZ3JvdW5kcyB1c2luZyBzaG9ydGhhbmRcclxuLy8gbm90YXRpb24uXHJcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cclxuXHJcbkBtaXhpbiBiYWNrZ3JvdW5kKCRiYWNrZ3JvdW5kcy4uLikge1xyXG4gICR3ZWJraXQtYmFja2dyb3VuZHM6ICgpO1xyXG4gICRzcGVjLWJhY2tncm91bmRzOiAoKTtcclxuXHJcbiAgQGVhY2ggJGJhY2tncm91bmQgaW4gJGJhY2tncm91bmRzIHtcclxuICAgICR3ZWJraXQtYmFja2dyb3VuZDogKCk7XHJcbiAgICAkc3BlYy1iYWNrZ3JvdW5kOiAoKTtcclxuICAgICRiYWNrZ3JvdW5kLXR5cGU6IHR5cGUtb2YoJGJhY2tncm91bmQpO1xyXG5cclxuICAgIEBpZiAkYmFja2dyb3VuZC10eXBlID09IHN0cmluZyBvciAkYmFja2dyb3VuZC10eXBlID09IGxpc3Qge1xyXG4gICAgICAkYmFja2dyb3VuZC1zdHI6IGlmKCRiYWNrZ3JvdW5kLXR5cGUgPT0gbGlzdCwgbnRoKCRiYWNrZ3JvdW5kLCAxKSwgJGJhY2tncm91bmQpO1xyXG5cclxuICAgICAgJHVybC1zdHI6ICAgICAgIHN0ci1zbGljZSgkYmFja2dyb3VuZC1zdHIsIDEsIDMpO1xyXG4gICAgICAkZ3JhZGllbnQtdHlwZTogc3RyLXNsaWNlKCRiYWNrZ3JvdW5kLXN0ciwgMSwgNik7XHJcblxyXG4gICAgICBAaWYgJHVybC1zdHIgPT0gXCJ1cmxcIiB7XHJcbiAgICAgICAgJHdlYmtpdC1iYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcclxuICAgICAgICAkc3BlYy1iYWNrZ3JvdW5kOiAgICRiYWNrZ3JvdW5kO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSBcImxpbmVhclwiIHtcclxuICAgICAgICAkZ3JhZGllbnRzOiBfbGluZWFyLWdyYWRpZW50LXBhcnNlcihcIiN7JGJhY2tncm91bmR9XCIpO1xyXG4gICAgICAgICR3ZWJraXQtYmFja2dyb3VuZDogbWFwLWdldCgkZ3JhZGllbnRzLCB3ZWJraXQtaW1hZ2UpO1xyXG4gICAgICAgICRzcGVjLWJhY2tncm91bmQ6ICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgQGVsc2UgaWYgJGdyYWRpZW50LXR5cGUgPT0gXCJyYWRpYWxcIiB7XHJcbiAgICAgICAgJGdyYWRpZW50czogX3JhZGlhbC1ncmFkaWVudC1wYXJzZXIoXCIjeyRiYWNrZ3JvdW5kfVwiKTtcclxuICAgICAgICAkd2Via2l0LWJhY2tncm91bmQ6IG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcclxuICAgICAgICAkc3BlYy1iYWNrZ3JvdW5kOiAgIG1hcC1nZXQoJGdyYWRpZW50cywgc3BlYy1pbWFnZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBlbHNlIHtcclxuICAgICAgICAkd2Via2l0LWJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xyXG4gICAgICAgICRzcGVjLWJhY2tncm91bmQ6ICAgJGJhY2tncm91bmQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAZWxzZSB7XHJcbiAgICAgICR3ZWJraXQtYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XHJcbiAgICAgICRzcGVjLWJhY2tncm91bmQ6ICAgJGJhY2tncm91bmQ7XHJcbiAgICB9XHJcblxyXG4gICAgJHdlYmtpdC1iYWNrZ3JvdW5kczogYXBwZW5kKCR3ZWJraXQtYmFja2dyb3VuZHMsICR3ZWJraXQtYmFja2dyb3VuZCwgY29tbWEpO1xyXG4gICAgJHNwZWMtYmFja2dyb3VuZHM6ICAgYXBwZW5kKCRzcGVjLWJhY2tncm91bmRzLCAgICRzcGVjLWJhY2tncm91bmQsICAgY29tbWEpO1xyXG4gIH1cclxuXHJcbiAgYmFja2dyb3VuZDogJHdlYmtpdC1iYWNrZ3JvdW5kcztcclxuICBiYWNrZ3JvdW5kOiAkc3BlYy1iYWNrZ3JvdW5kcztcclxufVxyXG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXHJcbi8vIEJhY2tncm91bmQtaW1hZ2UgcHJvcGVydHkgZm9yIGFkZGluZyBtdWx0aXBsZSBiYWNrZ3JvdW5kIGltYWdlcyB3aXRoXHJcbi8vIGdyYWRpZW50cywgb3IgZm9yIHN0cmluZ2luZyBtdWx0aXBsZSBncmFkaWVudHMgdG9nZXRoZXIuXHJcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cclxuXHJcbkBtaXhpbiBiYWNrZ3JvdW5kLWltYWdlKCRpbWFnZXMuLi4pIHtcclxuICAkd2Via2l0LWltYWdlczogKCk7XHJcbiAgJHNwZWMtaW1hZ2VzOiAoKTtcclxuXHJcbiAgQGVhY2ggJGltYWdlIGluICRpbWFnZXMge1xyXG4gICAgJHdlYmtpdC1pbWFnZTogKCk7XHJcbiAgICAkc3BlYy1pbWFnZTogKCk7XHJcblxyXG4gICAgQGlmICh0eXBlLW9mKCRpbWFnZSkgPT0gc3RyaW5nKSB7XHJcbiAgICAgICR1cmwtc3RyOiAgICAgICBzdHItc2xpY2UoJGltYWdlLCAxLCAzKTtcclxuICAgICAgJGdyYWRpZW50LXR5cGU6IHN0ci1zbGljZSgkaW1hZ2UsIDEsIDYpO1xyXG5cclxuICAgICAgQGlmICR1cmwtc3RyID09IFwidXJsXCIge1xyXG4gICAgICAgICR3ZWJraXQtaW1hZ2U6ICRpbWFnZTtcclxuICAgICAgICAkc3BlYy1pbWFnZTogICAkaW1hZ2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwibGluZWFyXCIge1xyXG4gICAgICAgICRncmFkaWVudHM6IF9saW5lYXItZ3JhZGllbnQtcGFyc2VyKCRpbWFnZSk7XHJcbiAgICAgICAgJHdlYmtpdC1pbWFnZTogIG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcclxuICAgICAgICAkc3BlYy1pbWFnZTogICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgQGVsc2UgaWYgJGdyYWRpZW50LXR5cGUgPT0gXCJyYWRpYWxcIiB7XHJcbiAgICAgICAgJGdyYWRpZW50czogX3JhZGlhbC1ncmFkaWVudC1wYXJzZXIoJGltYWdlKTtcclxuICAgICAgICAkd2Via2l0LWltYWdlOiBtYXAtZ2V0KCRncmFkaWVudHMsIHdlYmtpdC1pbWFnZSk7XHJcbiAgICAgICAgJHNwZWMtaW1hZ2U6ICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICR3ZWJraXQtaW1hZ2VzOiBhcHBlbmQoJHdlYmtpdC1pbWFnZXMsICR3ZWJraXQtaW1hZ2UsIGNvbW1hKTtcclxuICAgICRzcGVjLWltYWdlczogICBhcHBlbmQoJHNwZWMtaW1hZ2VzLCAgICRzcGVjLWltYWdlLCAgIGNvbW1hKTtcclxuICB9XHJcblxyXG4gIGJhY2tncm91bmQtaW1hZ2U6ICR3ZWJraXQtaW1hZ2VzO1xyXG4gIGJhY2tncm91bmQtaW1hZ2U6ICRzcGVjLWltYWdlcztcclxufVxyXG4iLCJAbWl4aW4gYm9yZGVyLWltYWdlKCRib3JkZXJzLi4uKSB7XHJcbiAgJHdlYmtpdC1ib3JkZXJzOiAoKTtcclxuICAkc3BlYy1ib3JkZXJzOiAoKTtcclxuXHJcbiAgQGVhY2ggJGJvcmRlciBpbiAkYm9yZGVycyB7XHJcbiAgICAkd2Via2l0LWJvcmRlcjogKCk7XHJcbiAgICAkc3BlYy1ib3JkZXI6ICgpO1xyXG4gICAgJGJvcmRlci10eXBlOiB0eXBlLW9mKCRib3JkZXIpO1xyXG5cclxuICAgIEBpZiAkYm9yZGVyLXR5cGUgPT0gc3RyaW5nIG9yIGxpc3Qge1xyXG4gICAgICAkYm9yZGVyLXN0cjogaWYoJGJvcmRlci10eXBlID09IGxpc3QsIG50aCgkYm9yZGVyLCAxKSwgJGJvcmRlcik7XHJcblxyXG4gICAgICAkdXJsLXN0cjogICAgICAgc3RyLXNsaWNlKCRib3JkZXItc3RyLCAxLCAzKTtcclxuICAgICAgJGdyYWRpZW50LXR5cGU6IHN0ci1zbGljZSgkYm9yZGVyLXN0ciwgMSwgNik7XHJcblxyXG4gICAgICBAaWYgJHVybC1zdHIgPT0gXCJ1cmxcIiB7XHJcbiAgICAgICAgJHdlYmtpdC1ib3JkZXI6ICRib3JkZXI7XHJcbiAgICAgICAgJHNwZWMtYm9yZGVyOiAgICRib3JkZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwibGluZWFyXCIge1xyXG4gICAgICAgICRncmFkaWVudHM6IF9saW5lYXItZ3JhZGllbnQtcGFyc2VyKFwiI3skYm9yZGVyfVwiKTtcclxuICAgICAgICAkd2Via2l0LWJvcmRlcjogbWFwLWdldCgkZ3JhZGllbnRzLCB3ZWJraXQtaW1hZ2UpO1xyXG4gICAgICAgICRzcGVjLWJvcmRlcjogICBtYXAtZ2V0KCRncmFkaWVudHMsIHNwZWMtaW1hZ2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSBcInJhZGlhbFwiIHtcclxuICAgICAgICAkZ3JhZGllbnRzOiBfcmFkaWFsLWdyYWRpZW50LXBhcnNlcihcIiN7JGJvcmRlcn1cIik7XHJcbiAgICAgICAgJHdlYmtpdC1ib3JkZXI6IG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcclxuICAgICAgICAkc3BlYy1ib3JkZXI6ICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgQGVsc2Uge1xyXG4gICAgICAgICR3ZWJraXQtYm9yZGVyOiAkYm9yZGVyO1xyXG4gICAgICAgICRzcGVjLWJvcmRlcjogICAkYm9yZGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQGVsc2Uge1xyXG4gICAgICAkd2Via2l0LWJvcmRlcjogJGJvcmRlcjtcclxuICAgICAgJHNwZWMtYm9yZGVyOiAgICRib3JkZXI7XHJcbiAgICB9XHJcblxyXG4gICAgJHdlYmtpdC1ib3JkZXJzOiBhcHBlbmQoJHdlYmtpdC1ib3JkZXJzLCAkd2Via2l0LWJvcmRlciwgY29tbWEpO1xyXG4gICAgJHNwZWMtYm9yZGVyczogICBhcHBlbmQoJHNwZWMtYm9yZGVycywgICAkc3BlYy1ib3JkZXIsICAgY29tbWEpO1xyXG4gIH1cclxuXHJcbiAgLXdlYmtpdC1ib3JkZXItaW1hZ2U6ICR3ZWJraXQtYm9yZGVycztcclxuICAgICAgICAgIGJvcmRlci1pbWFnZTogJHNwZWMtYm9yZGVycztcclxuICAgICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcbn1cclxuXHJcbi8vRXhhbXBsZXM6XHJcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZSh1cmwoXCJpbWFnZS5wbmdcIikpO1xyXG4vLyBAaW5jbHVkZSBib3JkZXItaW1hZ2UodXJsKFwiaW1hZ2UucG5nXCIpIDIwIHN0cmV0Y2gpO1xyXG4vLyBAaW5jbHVkZSBib3JkZXItaW1hZ2UobGluZWFyLWdyYWRpZW50KDQ1ZGVnLCBvcmFuZ2UsIHllbGxvdykpO1xyXG4vLyBAaW5jbHVkZSBib3JkZXItaW1hZ2UobGluZWFyLWdyYWRpZW50KDQ1ZGVnLCBvcmFuZ2UsIHllbGxvdykgc3RyZXRjaCk7XHJcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShsaW5lYXItZ3JhZGllbnQoNDVkZWcsIG9yYW5nZSwgeWVsbG93KSAyMCAzMCA0MCA1MCBzdHJldGNoIHJvdW5kKTtcclxuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKHJhZGlhbC1ncmFkaWVudCh0b3AsIGNvdmVyLCBvcmFuZ2UsIHllbGxvdywgb3JhbmdlKSk7XHJcbiIsIkBtaXhpbiBjYWxjKCRwcm9wZXJ0eSwgJHZhbHVlKSB7XHJcbiAgI3skcHJvcGVydHl9OiAtd2Via2l0LWNhbGMoI3skdmFsdWV9KTtcclxuICAjeyRwcm9wZXJ0eX06IGNhbGMoI3skdmFsdWV9KTtcclxufVxyXG4iLCJAbWl4aW4gY29sdW1ucygkYXJnOiBhdXRvKSB7XHJcbiAgLy8gPGNvbHVtbi1jb3VudD4gfHwgPGNvbHVtbi13aWR0aD5cclxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW5zLCAkYXJnLCB3ZWJraXQgbW96IHNwZWMpO1xyXG59XHJcblxyXG5AbWl4aW4gY29sdW1uLWNvdW50KCRpbnQ6IGF1dG8pIHtcclxuICAvLyBhdXRvIHx8IGludGVnZXJcclxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tY291bnQsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBjb2x1bW4tZ2FwKCRsZW5ndGg6IG5vcm1hbCkge1xyXG4gIC8vIG5vcm1hbCB8fCBsZW5ndGhcclxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tZ2FwLCAkbGVuZ3RoLCB3ZWJraXQgbW96IHNwZWMpO1xyXG59XHJcblxyXG5AbWl4aW4gY29sdW1uLWZpbGwoJGFyZzogYXV0bykge1xyXG4gIC8vIGF1dG8gfHwgbGVuZ3RoXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLWZpbGwsICRhcmcsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBjb2x1bW4tcnVsZSgkYXJnKSB7XHJcbiAgLy8gPGJvcmRlci13aWR0aD4gfHwgPGJvcmRlci1zdHlsZT4gfHwgPGNvbG9yPlxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLCAkYXJnLCB3ZWJraXQgbW96IHNwZWMpO1xyXG59XHJcblxyXG5AbWl4aW4gY29sdW1uLXJ1bGUtY29sb3IoJGNvbG9yKSB7XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXJ1bGUtY29sb3IsICRjb2xvciwgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG5cclxuQG1peGluIGNvbHVtbi1ydWxlLXN0eWxlKCRzdHlsZTogbm9uZSkge1xyXG4gIC8vIG5vbmUgfCBoaWRkZW4gfCBkYXNoZWQgfCBkb3R0ZWQgfCBkb3VibGUgfCBncm9vdmUgfCBpbnNldCB8IGluc2V0IHwgb3V0c2V0IHwgcmlkZ2UgfCBzb2xpZFxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLXN0eWxlLCAkc3R5bGUsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBjb2x1bW4tcnVsZS13aWR0aCAoJHdpZHRoOiBub25lKSB7XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXJ1bGUtd2lkdGgsICR3aWR0aCwgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG5cclxuQG1peGluIGNvbHVtbi1zcGFuKCRhcmc6IG5vbmUpIHtcclxuICAvLyBub25lIHx8IGFsbFxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1zcGFuLCAkYXJnLCB3ZWJraXQgbW96IHNwZWMpO1xyXG59XHJcblxyXG5AbWl4aW4gY29sdW1uLXdpZHRoKCRsZW5ndGg6IGF1dG8pIHtcclxuICAvLyBhdXRvIHx8IGxlbmd0aFxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi13aWR0aCwgJGxlbmd0aCwgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG4iLCJAbWl4aW4gZmlsdGVyKCRmdW5jdGlvbjogbm9uZSkge1xyXG4gIC8vIDxmaWx0ZXItZnVuY3Rpb24+IFs8ZmlsdGVyLWZ1bmN0aW9uXSogfCBub25lXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmlsdGVyLCAkZnVuY3Rpb24sIHdlYmtpdCBzcGVjKTtcclxufVxyXG4iLCIvLyBDU1MzIEZsZXhpYmxlIEJveCBNb2RlbCBhbmQgcHJvcGVydHkgZGVmYXVsdHNcclxuXHJcbi8vIEN1c3RvbSBzaG9ydGhhbmQgbm90YXRpb24gZm9yIGZsZXhib3hcclxuQG1peGluIGJveCgkb3JpZW50OiBpbmxpbmUtYXhpcywgJHBhY2s6IHN0YXJ0LCAkYWxpZ246IHN0cmV0Y2gpIHtcclxuICBAaW5jbHVkZSBkaXNwbGF5LWJveDtcclxuICBAaW5jbHVkZSBib3gtb3JpZW50KCRvcmllbnQpO1xyXG4gIEBpbmNsdWRlIGJveC1wYWNrKCRwYWNrKTtcclxuICBAaW5jbHVkZSBib3gtYWxpZ24oJGFsaWduKTtcclxufVxyXG5cclxuQG1peGluIGRpc3BsYXktYm94IHtcclxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcclxuICBkaXNwbGF5OiAtbW96LWJveDtcclxuICBkaXNwbGF5OiAtbXMtZmxleGJveDsgLy8gSUUgMTBcclxuICBkaXNwbGF5OiBib3g7XHJcbn1cclxuXHJcbkBtaXhpbiBib3gtb3JpZW50KCRvcmllbnQ6IGlubGluZS1heGlzKSB7XHJcbi8vIGhvcml6b250YWx8dmVydGljYWx8aW5saW5lLWF4aXN8YmxvY2stYXhpc3xpbmhlcml0XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LW9yaWVudCwgJG9yaWVudCwgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG5cclxuQG1peGluIGJveC1wYWNrKCRwYWNrOiBzdGFydCkge1xyXG4vLyBzdGFydHxlbmR8Y2VudGVyfGp1c3RpZnlcclxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtcGFjaywgJHBhY2ssIHdlYmtpdCBtb3ogc3BlYyk7XHJcbiAgLW1zLWZsZXgtcGFjazogJHBhY2s7IC8vIElFIDEwXHJcbn1cclxuXHJcbkBtaXhpbiBib3gtYWxpZ24oJGFsaWduOiBzdHJldGNoKSB7XHJcbi8vIHN0YXJ0fGVuZHxjZW50ZXJ8YmFzZWxpbmV8c3RyZXRjaFxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1hbGlnbiwgJGFsaWduLCB3ZWJraXQgbW96IHNwZWMpO1xyXG4gIC1tcy1mbGV4LWFsaWduOiAkYWxpZ247IC8vIElFIDEwXHJcbn1cclxuXHJcbkBtaXhpbiBib3gtZGlyZWN0aW9uKCRkaXJlY3Rpb246IG5vcm1hbCkge1xyXG4vLyBub3JtYWx8cmV2ZXJzZXxpbmhlcml0XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWRpcmVjdGlvbiwgJGRpcmVjdGlvbiwgd2Via2l0IG1veiBzcGVjKTtcclxuICAtbXMtZmxleC1kaXJlY3Rpb246ICRkaXJlY3Rpb247IC8vIElFIDEwXHJcbn1cclxuXHJcbkBtaXhpbiBib3gtbGluZXMoJGxpbmVzOiBzaW5nbGUpIHtcclxuLy8gc2luZ2xlfG11bHRpcGxlXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWxpbmVzLCAkbGluZXMsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBib3gtb3JkaW5hbC1ncm91cCgkaW50OiAxKSB7XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LW9yZGluYWwtZ3JvdXAsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbiAgLW1zLWZsZXgtb3JkZXI6ICRpbnQ7IC8vIElFIDEwXHJcbn1cclxuXHJcbkBtaXhpbiBib3gtZmxleCgkdmFsdWU6IDApIHtcclxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZmxleCwgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xyXG4gIC1tcy1mbGV4OiAkdmFsdWU7IC8vIElFIDEwXHJcbn1cclxuXHJcbkBtaXhpbiBib3gtZmxleC1ncm91cCgkaW50OiAxKSB7XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWZsZXgtZ3JvdXAsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbi8vIENTUzMgRmxleGlibGUgQm94IE1vZGVsIGFuZCBwcm9wZXJ0eSBkZWZhdWx0c1xyXG4vLyBVbmlmaWVkIGF0dHJpYnV0ZXMgZm9yIDIwMDksIDIwMTEsIGFuZCAyMDEyIGZsYXZvdXJzLlxyXG5cclxuLy8gMjAwOSAtIGRpc3BsYXkgKGJveCB8IGlubGluZS1ib3gpXHJcbi8vIDIwMTEgLSBkaXNwbGF5IChmbGV4Ym94IHwgaW5saW5lLWZsZXhib3gpXHJcbi8vIDIwMTIgLSBkaXNwbGF5IChmbGV4IHwgaW5saW5lLWZsZXgpXHJcbkBtaXhpbiBkaXNwbGF5KCR2YWx1ZSkge1xyXG4vLyBmbGV4IHwgaW5saW5lLWZsZXhcclxuICBAaWYgJHZhbHVlID09IFwiZmxleFwiIHtcclxuICAgIC8vIDIwMDlcclxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xyXG4gICAgZGlzcGxheTogLW1vei1ib3g7XHJcbiAgICBkaXNwbGF5OiBib3g7XHJcblxyXG4gICAgLy8gMjAxMlxyXG4gICAgZGlzcGxheTogLXdlYmtpdC1mbGV4O1xyXG4gICAgZGlzcGxheTogLW1vei1mbGV4O1xyXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7IC8vIDIwMTEgKElFIDEwKVxyXG4gICAgZGlzcGxheTogZmxleDtcclxuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImlubGluZS1mbGV4XCIge1xyXG4gICAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtYm94O1xyXG4gICAgZGlzcGxheTogLW1vei1pbmxpbmUtYm94O1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJveDtcclxuXHJcbiAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1mbGV4O1xyXG4gICAgZGlzcGxheTogLW1vei1pbmxpbmUtZmxleDtcclxuICAgIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDtcclxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xyXG4gIH0gQGVsc2Uge1xyXG4gICAgZGlzcGxheTogJHZhbHVlO1xyXG4gIH1cclxufVxyXG5cclxuLy8gMjAwOSAtIGJveC1mbGV4IChpbnRlZ2VyKVxyXG4vLyAyMDExIC0gZmxleCAoZGVjaW1hbCB8IHdpZHRoIGRlY2ltYWwpXHJcbi8vIDIwMTIgLSBmbGV4IChpbnRlZ2VyIGludGVnZXIgd2lkdGgpXHJcbkBtaXhpbiBmbGV4KCR2YWx1ZSkge1xyXG5cclxuICAvLyBHcmFiIGZsZXgtZ3JvdyBmb3Igb2xkZXIgYnJvd3NlcnMuXHJcbiAgJGZsZXgtZ3JvdzogbnRoKCR2YWx1ZSwgMSk7XHJcblxyXG4gIC8vIDIwMDlcclxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZmxleCwgJGZsZXgtZ3Jvdywgd2Via2l0IG1veiBzcGVjKTtcclxuXHJcbiAgLy8gMjAxMSAoSUUgMTApLCAyMDEyXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleCwgJHZhbHVlLCB3ZWJraXQgbW96IG1zIHNwZWMpO1xyXG59XHJcblxyXG4vLyAyMDA5IC0gYm94LW9yaWVudCAoIGhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGlubGluZS1heGlzIHwgYmxvY2stYXhpcylcclxuLy8gICAgICAtIGJveC1kaXJlY3Rpb24gKG5vcm1hbCB8IHJldmVyc2UpXHJcbi8vIDIwMTEgLSBmbGV4LWRpcmVjdGlvbiAocm93IHwgcm93LXJldmVyc2UgfCBjb2x1bW4gfCBjb2x1bW4tcmV2ZXJzZSlcclxuLy8gMjAxMiAtIGZsZXgtZGlyZWN0aW9uIChyb3cgfCByb3ctcmV2ZXJzZSB8IGNvbHVtbiB8IGNvbHVtbi1yZXZlcnNlKVxyXG5AbWl4aW4gZmxleC1kaXJlY3Rpb24oJHZhbHVlOiByb3cpIHtcclxuXHJcbiAgLy8gQWx0IHZhbHVlcy5cclxuICAkdmFsdWUtMjAwOTogJHZhbHVlO1xyXG4gICR2YWx1ZS0yMDExOiAkdmFsdWU7XHJcbiAgJGRpcmVjdGlvbjogbm9ybWFsO1xyXG5cclxuICBAaWYgJHZhbHVlID09IHJvdyB7XHJcbiAgICAkdmFsdWUtMjAwOTogaG9yaXpvbnRhbDtcclxuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcInJvdy1yZXZlcnNlXCIge1xyXG4gICAgJHZhbHVlLTIwMDk6IGhvcml6b250YWw7XHJcbiAgICAkZGlyZWN0aW9uOiByZXZlcnNlO1xyXG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IGNvbHVtbiB7XHJcbiAgICAkdmFsdWUtMjAwOTogdmVydGljYWw7XHJcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJjb2x1bW4tcmV2ZXJzZVwiIHtcclxuICAgICR2YWx1ZS0yMDA5OiB2ZXJ0aWNhbDtcclxuICAgICRkaXJlY3Rpb246IHJldmVyc2U7XHJcbiAgfVxyXG5cclxuICAvLyAyMDA5XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LW9yaWVudCwgJHZhbHVlLTIwMDksIHdlYmtpdCBtb3ogc3BlYyk7XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWRpcmVjdGlvbiwgJGRpcmVjdGlvbiwgd2Via2l0IG1veiBzcGVjKTtcclxuXHJcbiAgLy8gMjAxMlxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtZGlyZWN0aW9uLCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XHJcblxyXG4gIC8vIDIwMTEgKElFIDEwKVxyXG4gIC1tcy1mbGV4LWRpcmVjdGlvbjogJHZhbHVlO1xyXG59XHJcblxyXG4vLyAyMDA5IC0gYm94LWxpbmVzIChzaW5nbGUgfCBtdWx0aXBsZSlcclxuLy8gMjAxMSAtIGZsZXgtd3JhcCAobm93cmFwIHwgd3JhcCB8IHdyYXAtcmV2ZXJzZSlcclxuLy8gMjAxMiAtIGZsZXgtd3JhcCAobm93cmFwIHwgd3JhcCB8IHdyYXAtcmV2ZXJzZSlcclxuQG1peGluIGZsZXgtd3JhcCgkdmFsdWU6IG5vd3JhcCkge1xyXG4gIC8vIEFsdCB2YWx1ZXNcclxuICAkYWx0LXZhbHVlOiAkdmFsdWU7XHJcbiAgQGlmICR2YWx1ZSA9PSBub3dyYXAge1xyXG4gICAgJGFsdC12YWx1ZTogc2luZ2xlO1xyXG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IHdyYXAge1xyXG4gICAgJGFsdC12YWx1ZTogbXVsdGlwbGU7XHJcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJ3cmFwLXJldmVyc2VcIiB7XHJcbiAgICAkYWx0LXZhbHVlOiBtdWx0aXBsZTtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1saW5lcywgJGFsdC12YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcclxuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LXdyYXAsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBzcGVjKTtcclxufVxyXG5cclxuLy8gMjAwOSAtIFRPRE86IHBhcnNlIHZhbHVlcyBpbnRvIGZsZXgtZGlyZWN0aW9uL2ZsZXgtd3JhcFxyXG4vLyAyMDExIC0gVE9ETzogcGFyc2UgdmFsdWVzIGludG8gZmxleC1kaXJlY3Rpb24vZmxleC13cmFwXHJcbi8vIDIwMTIgLSBmbGV4LWZsb3cgKGZsZXgtZGlyZWN0aW9uIHx8IGZsZXgtd3JhcClcclxuQG1peGluIGZsZXgtZmxvdygkdmFsdWUpIHtcclxuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LWZsb3csICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG5cclxuLy8gMjAwOSAtIGJveC1vcmRpbmFsLWdyb3VwIChpbnRlZ2VyKVxyXG4vLyAyMDExIC0gZmxleC1vcmRlciAoaW50ZWdlcilcclxuLy8gMjAxMiAtIG9yZGVyIChpbnRlZ2VyKVxyXG5AbWl4aW4gb3JkZXIoJGludDogMCkge1xyXG4gIC8vIDIwMDlcclxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtb3JkaW5hbC1ncm91cCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcclxuXHJcbiAgLy8gMjAxMlxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKG9yZGVyLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xyXG5cclxuICAvLyAyMDExIChJRSAxMClcclxuICAtbXMtZmxleC1vcmRlcjogJGludDtcclxufVxyXG5cclxuLy8gMjAxMiAtIGZsZXgtZ3JvdyAobnVtYmVyKVxyXG5AbWl4aW4gZmxleC1ncm93KCRudW1iZXI6IDApIHtcclxuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LWdyb3csICRudW1iZXIsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbiAgLW1zLWZsZXgtcG9zaXRpdmU6ICRudW1iZXI7XHJcbn1cclxuXHJcbi8vIDIwMTIgLSBmbGV4LXNocmluayAobnVtYmVyKVxyXG5AbWl4aW4gZmxleC1zaHJpbmsoJG51bWJlcjogMSkge1xyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtc2hyaW5rLCAkbnVtYmVyLCB3ZWJraXQgbW96IHNwZWMpO1xyXG4gIC1tcy1mbGV4LW5lZ2F0aXZlOiAkbnVtYmVyO1xyXG59XHJcblxyXG4vLyAyMDEyIC0gZmxleC1iYXNpcyAobnVtYmVyKVxyXG5AbWl4aW4gZmxleC1iYXNpcygkd2lkdGg6IGF1dG8pIHtcclxuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LWJhc2lzLCAkd2lkdGgsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbiAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6ICR3aWR0aDtcclxufVxyXG5cclxuLy8gMjAwOSAtIGJveC1wYWNrIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGp1c3RpZnkpXHJcbi8vIDIwMTEgLSBmbGV4LXBhY2sgKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwganVzdGlmeSlcclxuLy8gMjAxMiAtIGp1c3RpZnktY29udGVudCAoZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgc3BhY2UtYmV0d2VlbiB8IHNwYWNlLWFyb3VuZClcclxuQG1peGluIGp1c3RpZnktY29udGVudCgkdmFsdWU6IGZsZXgtc3RhcnQpIHtcclxuXHJcbiAgLy8gQWx0IHZhbHVlcy5cclxuICAkYWx0LXZhbHVlOiAkdmFsdWU7XHJcbiAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XHJcbiAgICAkYWx0LXZhbHVlOiBzdGFydDtcclxuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImZsZXgtZW5kXCIge1xyXG4gICAgJGFsdC12YWx1ZTogZW5kO1xyXG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwic3BhY2UtYmV0d2VlblwiIHtcclxuICAgICRhbHQtdmFsdWU6IGp1c3RpZnk7XHJcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJzcGFjZS1hcm91bmRcIiB7XHJcbiAgICAkYWx0LXZhbHVlOiBkaXN0cmlidXRlO1xyXG4gIH1cclxuXHJcbiAgLy8gMjAwOVxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1wYWNrLCAkYWx0LXZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xyXG5cclxuICAvLyAyMDEyXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoanVzdGlmeS1jb250ZW50LCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcclxuXHJcbiAgLy8gMjAxMSAoSUUgMTApXHJcbiAgLW1zLWZsZXgtcGFjazogJGFsdC12YWx1ZTtcclxufVxyXG5cclxuLy8gMjAwOSAtIGJveC1hbGlnbiAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXHJcbi8vIDIwMTEgLSBmbGV4LWFsaWduIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcclxuLy8gMjAxMiAtIGFsaWduLWl0ZW1zIChmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXHJcbkBtaXhpbiBhbGlnbi1pdGVtcygkdmFsdWU6IHN0cmV0Y2gpIHtcclxuXHJcbiAgJGFsdC12YWx1ZTogJHZhbHVlO1xyXG5cclxuICBAaWYgJHZhbHVlID09IFwiZmxleC1zdGFydFwiIHtcclxuICAgICRhbHQtdmFsdWU6IHN0YXJ0O1xyXG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XHJcbiAgICAkYWx0LXZhbHVlOiBlbmQ7XHJcbiAgfVxyXG5cclxuICAvLyAyMDA5XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWFsaWduLCAkYWx0LXZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xyXG5cclxuICAvLyAyMDEyXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYWxpZ24taXRlbXMsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xyXG5cclxuICAvLyAyMDExIChJRSAxMClcclxuICAtbXMtZmxleC1hbGlnbjogJGFsdC12YWx1ZTtcclxufVxyXG5cclxuLy8gMjAxMSAtIGZsZXgtaXRlbS1hbGlnbiAoYXV0byB8IHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxyXG4vLyAyMDEyIC0gYWxpZ24tc2VsZiAoYXV0byB8IGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcclxuQG1peGluIGFsaWduLXNlbGYoJHZhbHVlOiBhdXRvKSB7XHJcblxyXG4gICR2YWx1ZS0yMDExOiAkdmFsdWU7XHJcbiAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XHJcbiAgICAkdmFsdWUtMjAxMTogc3RhcnQ7XHJcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJmbGV4LWVuZFwiIHtcclxuICAgICR2YWx1ZS0yMDExOiBlbmQ7XHJcbiAgfVxyXG5cclxuICAvLyAyMDEyXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYWxpZ24tc2VsZiwgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xyXG5cclxuICAvLyAyMDExIChJRSAxMClcclxuICAtbXMtZmxleC1pdGVtLWFsaWduOiAkdmFsdWUtMjAxMTtcclxufVxyXG5cclxuLy8gMjAxMSAtIGZsZXgtbGluZS1wYWNrIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGp1c3RpZnkgfCBkaXN0cmlidXRlIHwgc3RyZXRjaClcclxuLy8gMjAxMiAtIGFsaWduLWNvbnRlbnQgKGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IHNwYWNlLWJldHdlZW4gfCBzcGFjZS1hcm91bmQgfCBzdHJldGNoKVxyXG5AbWl4aW4gYWxpZ24tY29udGVudCgkdmFsdWU6IHN0cmV0Y2gpIHtcclxuXHJcbiAgJHZhbHVlLTIwMTE6ICR2YWx1ZTtcclxuICBAaWYgJHZhbHVlID09IFwiZmxleC1zdGFydFwiIHtcclxuICAgICR2YWx1ZS0yMDExOiBzdGFydDtcclxuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImZsZXgtZW5kXCIge1xyXG4gICAgJHZhbHVlLTIwMTE6IGVuZDtcclxuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcInNwYWNlLWJldHdlZW5cIiB7XHJcbiAgICAkdmFsdWUtMjAxMToganVzdGlmeTtcclxuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcInNwYWNlLWFyb3VuZFwiIHtcclxuICAgICR2YWx1ZS0yMDExOiBkaXN0cmlidXRlO1xyXG4gIH1cclxuXHJcbiAgLy8gMjAxMlxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFsaWduLWNvbnRlbnQsICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcclxuXHJcbiAgLy8gMjAxMSAoSUUgMTApXHJcbiAgLW1zLWZsZXgtbGluZS1wYWNrOiAkdmFsdWUtMjAxMTtcclxufVxyXG4iLCJAbWl4aW4gZm9udC1mYWNlKFxyXG4gICRmb250LWZhbWlseSxcclxuICAkZmlsZS1wYXRoLFxyXG4gICR3ZWlnaHQ6IG5vcm1hbCxcclxuICAkc3R5bGU6IG5vcm1hbCxcclxuICAkYXNzZXQtcGlwZWxpbmU6ICRhc3NldC1waXBlbGluZSxcclxuICAkZmlsZS1mb3JtYXRzOiBlb3Qgd29mZjIgd29mZiB0dGYgc3ZnKSB7XHJcblxyXG4gICRmb250LXVybC1wcmVmaXg6IGZvbnQtdXJsLXByZWZpeGVyKCRhc3NldC1waXBlbGluZSk7XHJcblxyXG4gIEBmb250LWZhY2Uge1xyXG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcclxuICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcclxuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xyXG5cclxuICAgIHNyYzogZm9udC1zb3VyY2UtZGVjbGFyYXRpb24oXHJcbiAgICAgICRmb250LWZhbWlseSxcclxuICAgICAgJGZpbGUtcGF0aCxcclxuICAgICAgJGFzc2V0LXBpcGVsaW5lLFxyXG4gICAgICAkZmlsZS1mb3JtYXRzLFxyXG4gICAgICAkZm9udC11cmwtcHJlZml4XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iLCJAbWl4aW4gZm9udC1mZWF0dXJlLXNldHRpbmdzKCRzZXR0aW5ncy4uLikge1xyXG4gIEBpZiBsZW5ndGgoJHNldHRpbmdzKSA9PSAwIHsgJHNldHRpbmdzOiBub25lOyB9XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZm9udC1mZWF0dXJlLXNldHRpbmdzLCAkc2V0dGluZ3MsIHdlYmtpdCBtb3ogbXMgc3BlYyk7XHJcbn1cclxuIiwiLy8gSGlEUEkgbWl4aW4uIERlZmF1bHQgdmFsdWUgc2V0IHRvIDEuMyB0byB0YXJnZXQgR29vZ2xlIE5leHVzIDcgKGh0dHA6Ly9iamFuZ28uY29tL2FydGljbGVzL21pbi1kZXZpY2UtcGl4ZWwtcmF0aW8vKVxyXG5AbWl4aW4gaGlkcGkoJHJhdGlvOiAxLjMpIHtcclxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICRyYXRpbyksXHJcbiAgb25seSBzY3JlZW4gYW5kIChtaW4tLW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICRyYXRpbyksXHJcbiAgb25seSBzY3JlZW4gYW5kICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyRyYXRpb30vMSksXHJcbiAgb25seSBzY3JlZW4gYW5kIChtaW4tcmVzb2x1dGlvbjogcm91bmQoJHJhdGlvICogOTZkcGkpKSxcclxuICBvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOiAkcmF0aW8gKiAxZHBweCkge1xyXG4gICAgQGNvbnRlbnQ7XHJcbiAgfVxyXG59XHJcbiIsIkBtaXhpbiBoeXBoZW5zKCRoeXBoZW5hdGlvbjogbm9uZSkge1xyXG4gIC8vIG5vbmUgfCBtYW51YWwgfCBhdXRvXHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoaHlwaGVucywgJGh5cGhlbmF0aW9uLCB3ZWJraXQgbW96IG1zIHNwZWMpO1xyXG59XHJcbiIsIkBtaXhpbiBpbWFnZS1yZW5kZXJpbmcgKCRtb2RlOmF1dG8pIHtcclxuXHJcbiAgQGlmICgkbW9kZSA9PSBjcmlzcC1lZGdlcykge1xyXG4gICAgLW1zLWludGVycG9sYXRpb24tbW9kZTogbmVhcmVzdC1uZWlnaGJvcjsgLy8gSUU4K1xyXG4gICAgaW1hZ2UtcmVuZGVyaW5nOiAtbW96LWNyaXNwLWVkZ2VzO1xyXG4gICAgaW1hZ2UtcmVuZGVyaW5nOiAtby1jcmlzcC1lZGdlcztcclxuICAgIGltYWdlLXJlbmRlcmluZzogLXdlYmtpdC1vcHRpbWl6ZS1jb250cmFzdDtcclxuICAgIGltYWdlLXJlbmRlcmluZzogY3Jpc3AtZWRnZXM7XHJcbiAgfVxyXG5cclxuICBAZWxzZSB7XHJcbiAgICBpbWFnZS1yZW5kZXJpbmc6ICRtb2RlO1xyXG4gIH1cclxufVxyXG4iLCIvLyBBZGRzIGtleWZyYW1lcyBibG9ja3MgZm9yIHN1cHBvcnRlZCBwcmVmaXhlcywgcmVtb3ZpbmcgcmVkdW5kYW50IHByZWZpeGVzIGluIHRoZSBibG9jaydzIGNvbnRlbnRcclxuQG1peGluIGtleWZyYW1lcygkbmFtZSkge1xyXG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLXdlYmtpdDogICAgJHByZWZpeC1mb3Itd2Via2l0O1xyXG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1vemlsbGE6ICAgJHByZWZpeC1mb3ItbW96aWxsYTtcclxuICAkb3JpZ2luYWwtcHJlZml4LWZvci1taWNyb3NvZnQ6ICRwcmVmaXgtZm9yLW1pY3Jvc29mdDtcclxuICAkb3JpZ2luYWwtcHJlZml4LWZvci1vcGVyYTogICAgICRwcmVmaXgtZm9yLW9wZXJhO1xyXG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLXNwZWM6ICAgICAgJHByZWZpeC1mb3Itc3BlYztcclxuXHJcbiAgQGlmICRvcmlnaW5hbC1wcmVmaXgtZm9yLXdlYmtpdCB7XHJcbiAgICBAaW5jbHVkZSBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCk7XHJcbiAgICAkcHJlZml4LWZvci13ZWJraXQ6IHRydWUgIWdsb2JhbDtcclxuICAgIEAtd2Via2l0LWtleWZyYW1lcyAjeyRuYW1lfSB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGlmICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1vemlsbGEge1xyXG4gICAgQGluY2x1ZGUgZGlzYWJsZS1wcmVmaXgtZm9yLWFsbCgpO1xyXG4gICAgJHByZWZpeC1mb3ItbW96aWxsYTogdHJ1ZSAhZ2xvYmFsO1xyXG4gICAgQC1tb3ota2V5ZnJhbWVzICN7JG5hbWV9IHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAkcHJlZml4LWZvci13ZWJraXQ6ICAgICRvcmlnaW5hbC1wcmVmaXgtZm9yLXdlYmtpdCAgICAhZ2xvYmFsO1xyXG4gICRwcmVmaXgtZm9yLW1vemlsbGE6ICAgJG9yaWdpbmFsLXByZWZpeC1mb3ItbW96aWxsYSAgICFnbG9iYWw7XHJcbiAgJHByZWZpeC1mb3ItbWljcm9zb2Z0OiAkb3JpZ2luYWwtcHJlZml4LWZvci1taWNyb3NvZnQgIWdsb2JhbDtcclxuICAkcHJlZml4LWZvci1vcGVyYTogICAgICRvcmlnaW5hbC1wcmVmaXgtZm9yLW9wZXJhICAgICAhZ2xvYmFsO1xyXG4gICRwcmVmaXgtZm9yLXNwZWM6ICAgICAgJG9yaWdpbmFsLXByZWZpeC1mb3Itc3BlYyAgICAgICFnbG9iYWw7XHJcblxyXG4gIEBpZiAkb3JpZ2luYWwtcHJlZml4LWZvci1zcGVjIHtcclxuICAgIEBrZXlmcmFtZXMgI3skbmFtZX0ge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiQG1peGluIGxpbmVhci1ncmFkaWVudCgkcG9zLCAkZzEsICRnMjogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAkZzM6IG51bGwsICRnNDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAkZzU6IG51bGwsICRnNjogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAkZzc6IG51bGwsICRnODogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAkZzk6IG51bGwsICRnMTA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJGZhbGxiYWNrOiBudWxsKSB7XHJcbiAgLy8gRGV0ZWN0IHdoYXQgdHlwZSBvZiB2YWx1ZSBleGlzdHMgaW4gJHBvc1xyXG4gICRwb3MtdHlwZTogdHlwZS1vZihudGgoJHBvcywgMSkpO1xyXG4gICRwb3Mtc3BlYzogbnVsbDtcclxuICAkcG9zLWRlZ3JlZTogbnVsbDtcclxuXHJcbiAgLy8gSWYgJHBvcyBpcyBtaXNzaW5nIGZyb20gbWl4aW4sIHJlYXNzaWduIHZhcnMgYW5kIGFkZCBkZWZhdWx0IHBvc2l0aW9uXHJcbiAgQGlmICgkcG9zLXR5cGUgPT0gY29sb3IpIG9yIChudGgoJHBvcywgMSkgPT0gXCJ0cmFuc3BhcmVudFwiKSAge1xyXG4gICAgJGcxMDogJGc5OyAkZzk6ICRnODsgJGc4OiAkZzc7ICRnNzogJGc2OyAkZzY6ICRnNTtcclxuICAgICRnNTogJGc0OyAkZzQ6ICRnMzsgJGczOiAkZzI7ICRnMjogJGcxOyAkZzE6ICRwb3M7XHJcbiAgICAkcG9zOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgQGlmICRwb3Mge1xyXG4gICAgJHBvc2l0aW9uczogX2xpbmVhci1wb3NpdGlvbnMtcGFyc2VyKCRwb3MpO1xyXG4gICAgJHBvcy1kZWdyZWU6IG50aCgkcG9zaXRpb25zLCAxKTtcclxuICAgICRwb3Mtc3BlYzogICBudGgoJHBvc2l0aW9ucywgMik7XHJcbiAgfVxyXG5cclxuICAkZnVsbDogJGcxLCAkZzIsICRnMywgJGc0LCAkZzUsICRnNiwgJGc3LCAkZzgsICRnOSwgJGcxMDtcclxuXHJcbiAgLy8gU2V0ICRnMSBhcyB0aGUgZGVmYXVsdCBmYWxsYmFjayBjb2xvclxyXG4gICRmYWxsYmFjay1jb2xvcjogbnRoKCRnMSwgMSk7XHJcblxyXG4gIC8vIElmICRmYWxsYmFjayBpcyBhIGNvbG9yIHVzZSB0aGF0IGNvbG9yIGFzIHRoZSBmYWxsYmFjayBjb2xvclxyXG4gIEBpZiAodHlwZS1vZigkZmFsbGJhY2spID09IGNvbG9yKSBvciAoJGZhbGxiYWNrID09IFwidHJhbnNwYXJlbnRcIikge1xyXG4gICAgJGZhbGxiYWNrLWNvbG9yOiAkZmFsbGJhY2s7XHJcbiAgfVxyXG5cclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZmFsbGJhY2stY29sb3I7XHJcbiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoJHBvcy1kZWdyZWUgJGZ1bGwpOyAvLyBTYWZhcmkgNS4xKywgQ2hyb21lXHJcbiAgYmFja2dyb3VuZC1pbWFnZTogdW5xdW90ZShcImxpbmVhci1ncmFkaWVudCgjeyRwb3Mtc3BlY30jeyRmdWxsfSlcIik7XHJcbn1cclxuIiwiQG1peGluIHBlcnNwZWN0aXZlKCRkZXB0aDogbm9uZSkge1xyXG4gIC8vIG5vbmUgfCA8bGVuZ3RoPlxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKHBlcnNwZWN0aXZlLCAkZGVwdGgsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiBwZXJzcGVjdGl2ZS1vcmlnaW4oJHZhbHVlOiA1MCUgNTAlKSB7XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIocGVyc3BlY3RpdmUtb3JpZ2luLCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbn1cclxuIiwiQG1peGluIHBsYWNlaG9sZGVyIHtcclxuICAkcGxhY2Vob2xkZXJzOiBcIjotd2Via2l0LWlucHV0XCIgXCI6LW1velwiIFwiLW1velwiIFwiLW1zLWlucHV0XCI7XHJcbiAgQGVhY2ggJHBsYWNlaG9sZGVyIGluICRwbGFjZWhvbGRlcnMge1xyXG4gICAgJjojeyRwbGFjZWhvbGRlcn0tcGxhY2Vob2xkZXIge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gUmVxdWlyZXMgU2FzcyAzLjErXHJcbkBtaXhpbiByYWRpYWwtZ3JhZGllbnQoJGcxLCAkZzIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJGczOiBudWxsLCAkZzQ6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJGc1OiBudWxsLCAkZzY6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJGc3OiBudWxsLCAkZzg6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJGc5OiBudWxsLCAkZzEwOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICRwb3M6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJHNoYXBlLXNpemU6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJGZhbGxiYWNrOiBudWxsKSB7XHJcblxyXG4gICRkYXRhOiBfcmFkaWFsLWFyZy1wYXJzZXIoJGcxLCAkZzIsICRwb3MsICRzaGFwZS1zaXplKTtcclxuICAkZzE6ICBudGgoJGRhdGEsIDEpO1xyXG4gICRnMjogIG50aCgkZGF0YSwgMik7XHJcbiAgJHBvczogbnRoKCRkYXRhLCAzKTtcclxuICAkc2hhcGUtc2l6ZTogbnRoKCRkYXRhLCA0KTtcclxuXHJcbiAgJGZ1bGw6ICRnMSwgJGcyLCAkZzMsICRnNCwgJGc1LCAkZzYsICRnNywgJGc4LCAkZzksICRnMTA7XHJcblxyXG4gIC8vIFN0cmlwIGRlcHJlY2F0ZWQgY292ZXIvY29udGFpbiBmb3Igc3BlY1xyXG4gICRzaGFwZS1zaXplLXNwZWM6IF9zaGFwZS1zaXplLXN0cmlwcGVyKCRzaGFwZS1zaXplKTtcclxuXHJcbiAgLy8gU2V0ICRnMSBhcyB0aGUgZGVmYXVsdCBmYWxsYmFjayBjb2xvclxyXG4gICRmaXJzdC1jb2xvcjogbnRoKCRmdWxsLCAxKTtcclxuICAkZmFsbGJhY2stY29sb3I6IG50aCgkZmlyc3QtY29sb3IsIDEpO1xyXG5cclxuICBAaWYgKHR5cGUtb2YoJGZhbGxiYWNrKSA9PSBjb2xvcikgb3IgKCRmYWxsYmFjayA9PSBcInRyYW5zcGFyZW50XCIpIHtcclxuICAgICRmYWxsYmFjay1jb2xvcjogJGZhbGxiYWNrO1xyXG4gIH1cclxuXHJcbiAgLy8gQWRkIENvbW1hcyBhbmQgc3BhY2VzXHJcbiAgJHNoYXBlLXNpemU6IGlmKCRzaGFwZS1zaXplLCBcIiN7JHNoYXBlLXNpemV9LCBcIiwgbnVsbCk7XHJcbiAgJHBvczogICAgICAgIGlmKCRwb3MsIFwiI3skcG9zfSwgXCIsIG51bGwpO1xyXG4gICRwb3Mtc3BlYzogICBpZigkcG9zLCBcImF0ICN7JHBvc31cIiwgbnVsbCk7XHJcbiAgJHNoYXBlLXNpemUtc3BlYzogaWYoKCRzaGFwZS1zaXplLXNwZWMgIT0gXCIgXCIpIGFuZCAoJHBvcyA9PSBudWxsKSwgXCIjeyRzaGFwZS1zaXplLXNwZWN9LCBcIiwgXCIjeyRzaGFwZS1zaXplLXNwZWN9IFwiKTtcclxuXHJcbiAgYmFja2dyb3VuZC1jb2xvcjogICRmYWxsYmFjay1jb2xvcjtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LXJhZGlhbC1ncmFkaWVudCgjeyRwb3N9I3skc2hhcGUtc2l6ZX0jeyRmdWxsfSk7XHJcbiAgYmFja2dyb3VuZC1pbWFnZTogcmFkaWFsLWdyYWRpZW50KCN7JHNoYXBlLXNpemUtc3BlY30jeyRwb3Mtc3BlY30jeyRmdWxsfSk7XHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIE91dHB1dHMgdGhlIHNwZWMgYW5kIHByZWZpeGVkIHZlcnNpb25zIG9mIHRoZSBgOjpzZWxlY3Rpb25gIHBzZXVkby1lbGVtZW50LlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7Qm9vbH0gJGN1cnJlbnQtc2VsZWN0b3IgW2ZhbHNlXVxyXG4vLy8gICBJZiBzZXQgdG8gYHRydWVgLCBpdCB0YWtlcyB0aGUgY3VycmVudCBlbGVtZW50IGludG8gY29uc2lkZXJhdGlvbi5cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2VcclxuLy8vICAgLmVsZW1lbnQge1xyXG4vLy8gICAgIEBpbmNsdWRlIHNlbGVjdGlvbih0cnVlKSB7XHJcbi8vLyAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZiYjUyO1xyXG4vLy8gICAgIH1cclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcclxuLy8vICAgLmVsZW1lbnQ6Oi1tb3otc2VsZWN0aW9uIHtcclxuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZiYjUyO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gICAuZWxlbWVudDo6c2VsZWN0aW9uIHtcclxuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZiYjUyO1xyXG4vLy8gICB9XHJcblxyXG5AbWl4aW4gc2VsZWN0aW9uKCRjdXJyZW50LXNlbGVjdG9yOiBmYWxzZSkge1xyXG4gIEBpZiAkY3VycmVudC1zZWxlY3RvciB7XHJcbiAgICAmOjotbW96LXNlbGVjdGlvbiB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG5cclxuICAgICY6OnNlbGVjdGlvbiB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH0gQGVsc2Uge1xyXG4gICAgOjotbW96LXNlbGVjdGlvbiB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG5cclxuICAgIDo6c2VsZWN0aW9uIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBtaXhpbiB0ZXh0LWRlY29yYXRpb24oJHZhbHVlKSB7XHJcbi8vIDx0ZXh0LWRlY29yYXRpb24tbGluZT4gfHwgPHRleHQtZGVjb3JhdGlvbi1zdHlsZT4gfHwgPHRleHQtZGVjb3JhdGlvbi1jb2xvcj5cclxuICBAaW5jbHVkZSBwcmVmaXhlcih0ZXh0LWRlY29yYXRpb24sICR2YWx1ZSwgbW96KTtcclxufVxyXG5cclxuQG1peGluIHRleHQtZGVjb3JhdGlvbi1saW5lKCRsaW5lOiBub25lKSB7XHJcbi8vIG5vbmUgfHwgdW5kZXJsaW5lIHx8IG92ZXJsaW5lIHx8IGxpbmUtdGhyb3VnaFxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKHRleHQtZGVjb3JhdGlvbi1saW5lLCAkbGluZSwgbW96KTtcclxufVxyXG5cclxuQG1peGluIHRleHQtZGVjb3JhdGlvbi1zdHlsZSgkc3R5bGU6IHNvbGlkKSB7XHJcbi8vIHNvbGlkIHx8IGRvdWJsZSB8fCBkb3R0ZWQgfHwgZGFzaGVkIHx8IHdhdnlcclxuICBAaW5jbHVkZSBwcmVmaXhlcih0ZXh0LWRlY29yYXRpb24tc3R5bGUsICRzdHlsZSwgbW96IHdlYmtpdCk7XHJcbn1cclxuXHJcbkBtaXhpbiB0ZXh0LWRlY29yYXRpb24tY29sb3IoJGNvbG9yOiBjdXJyZW50Q29sb3IpIHtcclxuLy8gY3VycmVudENvbG9yIHx8IDxjb2xvcj5cclxuICBAaW5jbHVkZSBwcmVmaXhlcih0ZXh0LWRlY29yYXRpb24tY29sb3IsICRjb2xvciwgbW96KTtcclxufVxyXG4iLCJAbWl4aW4gdHJhbnNmb3JtKCRwcm9wZXJ0eTogbm9uZSkge1xyXG4gIC8vIG5vbmUgfCA8dHJhbnNmb3JtLWZ1bmN0aW9uPlxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zZm9ybSwgJHByb3BlcnR5LCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiB0cmFuc2Zvcm0tb3JpZ2luKCRheGVzOiA1MCUpIHtcclxuICAvLyB4LWF4aXMgLSBsZWZ0IHwgY2VudGVyIHwgcmlnaHQgIHwgbGVuZ3RoIHwgJVxyXG4gIC8vIHktYXhpcyAtIHRvcCAgfCBjZW50ZXIgfCBib3R0b20gfCBsZW5ndGggfCAlXHJcbiAgLy8gei1heGlzIC0gICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aFxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zZm9ybS1vcmlnaW4sICRheGVzLCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XHJcbn1cclxuXHJcbkBtaXhpbiB0cmFuc2Zvcm0tc3R5bGUoJHN0eWxlOiBmbGF0KSB7XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNmb3JtLXN0eWxlLCAkc3R5bGUsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcclxufVxyXG4iLCIvLyBTaG9ydGhhbmQgbWl4aW4uIFN1cHBvcnRzIG11bHRpcGxlIHBhcmVudGhlc2VzLWRlbGltaW5hdGVkIHZhbHVlcyBmb3IgZWFjaCB2YXJpYWJsZS5cclxuLy8gRXhhbXBsZTogQGluY2x1ZGUgdHJhbnNpdGlvbiAoYWxsIDJzIGVhc2UtaW4tb3V0KTtcclxuLy8gICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbiAob3BhY2l0eSAxcyBlYXNlLWluIDJzLCB3aWR0aCAycyBlYXNlLW91dCk7XHJcbi8vICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24tcHJvcGVydHkgKHRyYW5zZm9ybSwgb3BhY2l0eSk7XHJcblxyXG5AbWl4aW4gdHJhbnNpdGlvbigkcHJvcGVydGllcy4uLikge1xyXG4gIC8vIEZpeCBmb3IgdmVuZG9yLXByZWZpeCB0cmFuc2Zvcm0gcHJvcGVydHlcclxuICAkbmVlZHMtcHJlZml4ZXM6IGZhbHNlO1xyXG4gICR3ZWJraXQ6ICgpO1xyXG4gICRtb3o6ICgpO1xyXG4gICRzcGVjOiAoKTtcclxuXHJcbiAgLy8gQ3JlYXRlIGxpc3RzIGZvciB2ZW5kb3ItcHJlZml4ZWQgdHJhbnNmb3JtXHJcbiAgQGVhY2ggJGxpc3QgaW4gJHByb3BlcnRpZXMge1xyXG4gICAgQGlmIG50aCgkbGlzdCwgMSkgPT0gXCJ0cmFuc2Zvcm1cIiB7XHJcbiAgICAgICRuZWVkcy1wcmVmaXhlczogdHJ1ZTtcclxuICAgICAgJGxpc3QxOiAtd2Via2l0LXRyYW5zZm9ybTtcclxuICAgICAgJGxpc3QyOiAtbW96LXRyYW5zZm9ybTtcclxuICAgICAgJGxpc3QzOiAoKTtcclxuXHJcbiAgICAgIEBlYWNoICR2YXIgaW4gJGxpc3Qge1xyXG4gICAgICAgICRsaXN0Mzogam9pbigkbGlzdDMsICR2YXIpO1xyXG5cclxuICAgICAgICBAaWYgJHZhciAhPSBcInRyYW5zZm9ybVwiIHtcclxuICAgICAgICAgICRsaXN0MTogam9pbigkbGlzdDEsICR2YXIpO1xyXG4gICAgICAgICAgJGxpc3QyOiBqb2luKCRsaXN0MiwgJHZhcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAkd2Via2l0OiBhcHBlbmQoJHdlYmtpdCwgJGxpc3QxKTtcclxuICAgICAgJG1vejogICAgYXBwZW5kKCRtb3osICAgICRsaXN0Mik7XHJcbiAgICAgICRzcGVjOiAgIGFwcGVuZCgkc3BlYywgICAkbGlzdDMpO1xyXG4gICAgfSBAZWxzZSB7XHJcbiAgICAgICR3ZWJraXQ6IGFwcGVuZCgkd2Via2l0LCAkbGlzdCwgY29tbWEpO1xyXG4gICAgICAkbW96OiAgICBhcHBlbmQoJG1veiwgICAgJGxpc3QsIGNvbW1hKTtcclxuICAgICAgJHNwZWM6ICAgYXBwZW5kKCRzcGVjLCAgICRsaXN0LCBjb21tYSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaWYgJG5lZWRzLXByZWZpeGVzIHtcclxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogJHdlYmtpdDtcclxuICAgICAgIC1tb3otdHJhbnNpdGlvbjogJG1vejtcclxuICAgICAgICAgICAgdHJhbnNpdGlvbjogJHNwZWM7XHJcbiAgfSBAZWxzZSB7XHJcbiAgICBAaWYgbGVuZ3RoKCRwcm9wZXJ0aWVzKSA+PSAxIHtcclxuICAgICAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbiwgJHByb3BlcnRpZXMsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbiAgICB9IEBlbHNlIHtcclxuICAgICAgJHByb3BlcnRpZXM6IGFsbCAwLjE1cyBlYXNlLW91dCAwcztcclxuICAgICAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbiwgJHByb3BlcnRpZXMsIHdlYmtpdCBtb3ogc3BlYyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gdHJhbnNpdGlvbi1wcm9wZXJ0eSgkcHJvcGVydGllcy4uLikge1xyXG4gIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lcygkcHJvcGVydGllcywgXCJ3ZWJraXRcIik7XHJcbiAgICAgLW1vei10cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCRwcm9wZXJ0aWVzLCBcIm1velwiKTtcclxuICAgICAgICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoJHByb3BlcnRpZXMsIGZhbHNlKTtcclxufVxyXG5cclxuQG1peGluIHRyYW5zaXRpb24tZHVyYXRpb24oJHRpbWVzLi4uKSB7XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbi1kdXJhdGlvbiwgJHRpbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xyXG59XHJcblxyXG5AbWl4aW4gdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24oJG1vdGlvbnMuLi4pIHtcclxuICAvLyBlYXNlIHwgbGluZWFyIHwgZWFzZS1pbiB8IGVhc2Utb3V0IHwgZWFzZS1pbi1vdXQgfCBjdWJpYy1iZXppZXIoKVxyXG4gIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uLCAkbW90aW9ucywgd2Via2l0IG1veiBzcGVjKTtcclxufVxyXG5cclxuQG1peGluIHRyYW5zaXRpb24tZGVsYXkoJHRpbWVzLi4uKSB7XHJcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbi1kZWxheSwgJHRpbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xyXG59XHJcbiIsIkBtaXhpbiB1c2VyLXNlbGVjdCgkdmFsdWU6IG5vbmUpIHtcclxuICBAaW5jbHVkZSBwcmVmaXhlcih1c2VyLXNlbGVjdCwgJHZhbHVlLCB3ZWJraXQgbW96IG1zIHNwZWMpO1xyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3IgdGFyZ2V0aW5nIGBib3JkZXItY29sb3JgIG9uIHNwZWNpZmljIHNpZGVzIG9mIGEgYm94LiBVc2UgYSBgbnVsbGAgdmFsdWUgdG8g4oCcc2tpcOKAnSBhIHNpZGUuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAkdmFsc1xyXG4vLy8gICBMaXN0IG9mIGFyZ3VtZW50c1xyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgQGluY2x1ZGUgYm9yZGVyLWNvbG9yKCNhNjBiNTUgIzc2Y2Q5YyBudWxsICNlOGFlMWEpO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICNlOGFlMWE7XHJcbi8vLyAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjNzZjZDljO1xyXG4vLy8gICAgIGJvcmRlci10b3AtY29sb3I6ICNhNjBiNTU7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAcmVxdWlyZSB7bWl4aW59IGRpcmVjdGlvbmFsLXByb3BlcnR5XHJcbi8vL1xyXG4vLy8gQG91dHB1dCBgYm9yZGVyLWNvbG9yYFxyXG5cclxuQG1peGluIGJvcmRlci1jb2xvcigkdmFscy4uLikge1xyXG4gIEBpbmNsdWRlIGRpcmVjdGlvbmFsLXByb3BlcnR5KGJvcmRlciwgY29sb3IsICR2YWxzLi4uKTtcclxufVxyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gUHJvdmlkZXMgYSBxdWljayBtZXRob2QgZm9yIHRhcmdldGluZyBgYm9yZGVyLXJhZGl1c2Agb24gYm90aCBjb3JuZXJzIG9uIHRoZSBzaWRlIG9mIGEgYm94LlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcmFkaWlcclxuLy8vICAgTGlzdCBvZiBhcmd1bWVudHNcclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2VcclxuLy8vICAgLmVsZW1lbnQtb25lIHtcclxuLy8vICAgICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cyg1cHgpO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gICAuZWxlbWVudC10d28ge1xyXG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci1sZWZ0LXJhZGl1cygzcHgpO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICAuZWxlbWVudC1vbmUge1xyXG4vLy8gICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDVweDtcclxuLy8vICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4O1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gICAuZWxlbWVudC10d28ge1xyXG4vLy8gICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweDtcclxuLy8vICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAb3V0cHV0IGBib3JkZXItcmFkaXVzYFxyXG5cclxuQG1peGluIGJvcmRlci10b3AtcmFkaXVzKCRyYWRpaSkge1xyXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRyYWRpaTtcclxuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogJHJhZGlpO1xyXG59XHJcblxyXG5AbWl4aW4gYm9yZGVyLXJpZ2h0LXJhZGl1cygkcmFkaWkpIHtcclxuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJHJhZGlpO1xyXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAkcmFkaWk7XHJcbn1cclxuXHJcbkBtaXhpbiBib3JkZXItYm90dG9tLXJhZGl1cygkcmFkaWkpIHtcclxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkcmFkaWk7XHJcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6ICRyYWRpaTtcclxufVxyXG5cclxuQG1peGluIGJvcmRlci1sZWZ0LXJhZGl1cygkcmFkaWkpIHtcclxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkcmFkaWk7XHJcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJHJhZGlpO1xyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3IgdGFyZ2V0aW5nIGBib3JkZXItc3R5bGVgIG9uIHNwZWNpZmljIHNpZGVzIG9mIGEgYm94LiBVc2UgYSBgbnVsbGAgdmFsdWUgdG8g4oCcc2tpcOKAnSBhIHNpZGUuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAkdmFsc1xyXG4vLy8gICBMaXN0IG9mIGFyZ3VtZW50c1xyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgQGluY2x1ZGUgYm9yZGVyLXN0eWxlKGRhc2hlZCBudWxsIHNvbGlkKTtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcclxuLy8vICAgLmVsZW1lbnQge1xyXG4vLy8gICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xyXG4vLy8gICAgIGJvcmRlci10b3Atc3R5bGU6IGRhc2hlZDtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEByZXF1aXJlIHttaXhpbn0gZGlyZWN0aW9uYWwtcHJvcGVydHlcclxuLy8vXHJcbi8vLyBAb3V0cHV0IGBib3JkZXItc3R5bGVgXHJcblxyXG5AbWl4aW4gYm9yZGVyLXN0eWxlKCR2YWxzLi4uKSB7XHJcbiAgQGluY2x1ZGUgZGlyZWN0aW9uYWwtcHJvcGVydHkoYm9yZGVyLCBzdHlsZSwgJHZhbHMuLi4pO1xyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3IgdGFyZ2V0aW5nIGBib3JkZXItd2lkdGhgIG9uIHNwZWNpZmljIHNpZGVzIG9mIGEgYm94LiBVc2UgYSBgbnVsbGAgdmFsdWUgdG8g4oCcc2tpcOKAnSBhIHNpZGUuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAkdmFsc1xyXG4vLy8gICBMaXN0IG9mIGFyZ3VtZW50c1xyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgQGluY2x1ZGUgYm9yZGVyLXdpZHRoKDFlbSBudWxsIDIwcHgpO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMjBweDtcclxuLy8vICAgICBib3JkZXItdG9wLXdpZHRoOiAxZW07XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAcmVxdWlyZSB7bWl4aW59IGRpcmVjdGlvbmFsLXByb3BlcnR5XHJcbi8vL1xyXG4vLy8gQG91dHB1dCBgYm9yZGVyLXdpZHRoYFxyXG5cclxuQG1peGluIGJvcmRlci13aWR0aCgkdmFscy4uLikge1xyXG4gIEBpbmNsdWRlIGRpcmVjdGlvbmFsLXByb3BlcnR5KGJvcmRlciwgd2lkdGgsICR2YWxzLi4uKTtcclxufVxyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gR2VuZXJhdGVzIHZhcmlhYmxlcyBmb3IgYWxsIGJ1dHRvbnMuIFBsZWFzZSBub3RlIHRoYXQgeW91IG11c3QgdXNlIGludGVycG9sYXRpb24gb24gdGhlIHZhcmlhYmxlOiBgI3skYWxsLWJ1dHRvbnN9YC5cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2VcclxuLy8vICAgI3skYWxsLWJ1dHRvbnN9IHtcclxuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjAwO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gICAjeyRhbGwtYnV0dG9ucy1mb2N1c30sXHJcbi8vLyAgICN7JGFsbC1idXR0b25zLWhvdmVyfSB7XHJcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogIzBmMDtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vICAgI3skYWxsLWJ1dHRvbnMtYWN0aXZlfSB7XHJcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwZjtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcclxuLy8vICAgYnV0dG9uLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwicmVzZXRcIl0sXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xyXG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICNmMDA7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyAgIGJ1dHRvbjpmb2N1cyxcclxuLy8vICAgaW5wdXRbdHlwZT1cImJ1dHRvblwiXTpmb2N1cyxcclxuLy8vICAgaW5wdXRbdHlwZT1cInJlc2V0XCJdOmZvY3VzLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwic3VibWl0XCJdOmZvY3VzLFxyXG4vLy8gICBidXR0b246aG92ZXIsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJidXR0b25cIl06aG92ZXIsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJyZXNldFwiXTpob3ZlcixcclxuLy8vICAgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXTpob3ZlciB7XHJcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogIzBmMDtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vICAgYnV0dG9uOmFjdGl2ZSxcclxuLy8vICAgaW5wdXRbdHlwZT1cImJ1dHRvblwiXTphY3RpdmUsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJyZXNldFwiXTphY3RpdmUsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJzdWJtaXRcIl06YWN0aXZlIHtcclxuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBmO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQHJlcXVpcmUgYXNzaWduLWlucHV0c1xyXG4vLy9cclxuLy8vIEB0eXBlIExpc3RcclxuLy8vXHJcbi8vLyBAdG9kbyBSZW1vdmUgZG91YmxlIGFzc2lnbmVkIHZhcmlhYmxlcyAoTGluZXMgNTnigJM2MikgaW4gdjUuMC4wXHJcblxyXG4kYnV0dG9ucy1saXN0OiAnYnV0dG9uJyxcclxuICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJidXR0b25cIl0nLFxyXG4gICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInJlc2V0XCJdJyxcclxuICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJzdWJtaXRcIl0nO1xyXG5cclxuJGFsbC1idXR0b25zOiAgICAgICAgYXNzaWduLWlucHV0cygkYnV0dG9ucy1saXN0KTtcclxuJGFsbC1idXR0b25zLWFjdGl2ZTogYXNzaWduLWlucHV0cygkYnV0dG9ucy1saXN0LCBhY3RpdmUpO1xyXG4kYWxsLWJ1dHRvbnMtZm9jdXM6ICBhc3NpZ24taW5wdXRzKCRidXR0b25zLWxpc3QsIGZvY3VzKTtcclxuJGFsbC1idXR0b25zLWhvdmVyOiAgYXNzaWduLWlucHV0cygkYnV0dG9ucy1saXN0LCBob3Zlcik7XHJcblxyXG4kYWxsLWJ1dHRvbi1pbnB1dHM6ICAgICAgICAkYWxsLWJ1dHRvbnM7XHJcbiRhbGwtYnV0dG9uLWlucHV0cy1hY3RpdmU6ICRhbGwtYnV0dG9ucy1hY3RpdmU7XHJcbiRhbGwtYnV0dG9uLWlucHV0cy1mb2N1czogICRhbGwtYnV0dG9ucy1mb2N1cztcclxuJGFsbC1idXR0b24taW5wdXRzLWhvdmVyOiAgJGFsbC1idXR0b25zLWhvdmVyO1xyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gUHJvdmlkZXMgYW4gZWFzeSB3YXkgdG8gaW5jbHVkZSBhIGNsZWFyZml4IGZvciBjb250YWluaW5nIGZsb2F0cy5cclxuLy8vXHJcbi8vLyBAbGluayBodHRwOi8vY3NzbW9qby5jb20vbGF0ZXN0X25ld19jbGVhcmZpeF9zb19mYXIvXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcclxuLy8vICAgLmVsZW1lbnQ6OmFmdGVyIHtcclxuLy8vICAgICBjbGVhcjogYm90aDtcclxuLy8vICAgICBjb250ZW50OiBcIlwiO1xyXG4vLy8gICAgIGRpc3BsYXk6IHRhYmxlO1xyXG4vLy8gICB9XHJcblxyXG5AbWl4aW4gY2xlYXJmaXgge1xyXG4gICY6OmFmdGVyIHtcclxuICAgIGNsZWFyOiBib3RoO1xyXG4gICAgY29udGVudDogXCJcIjtcclxuICAgIGRpc3BsYXk6IHRhYmxlO1xyXG4gIH1cclxufVxyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gVHJ1bmNhdGVzIHRleHQgYW5kIGFkZHMgYW4gZWxsaXBzaXMgdG8gcmVwcmVzZW50IG92ZXJmbG93LlxyXG4vLy9cclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggWzEwMCVdXHJcbi8vLyAgIE1heC13aWR0aCBmb3IgdGhlIHN0cmluZyB0byByZXNwZWN0IGJlZm9yZSBiZWluZyB0cnVuY2F0ZWRcclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2VcclxuLy8vICAgLmVsZW1lbnQge1xyXG4vLy8gICAgIEBpbmNsdWRlIGVsbGlwc2lzO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4vLy8gICAgIG1heC13aWR0aDogMTAwJTtcclxuLy8vICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4vLy8gICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4vLy8gICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbi8vLyAgICAgd29yZC13cmFwOiBub3JtYWw7XHJcbi8vLyAgIH1cclxuXHJcbkBtaXhpbiBlbGxpcHNpcygkd2lkdGg6IDEwMCUpIHtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgbWF4LXdpZHRoOiAkd2lkdGg7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gIHdvcmQtd3JhcDogbm9ybWFsO1xyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBHZW9yZ2lhIGZvbnQgc3RhY2suXHJcbi8vL1xyXG4vLy8gQHR5cGUgTGlzdFxyXG5cclxuJGdlb3JnaWE6IFwiR2VvcmdpYVwiLCBcIkNhbWJyaWFcIiwgXCJUaW1lcyBOZXcgUm9tYW5cIiwgXCJUaW1lc1wiLCBzZXJpZjtcclxuXHJcbi8vLyBIZWx2ZXRpY2EgZm9udCBzdGFjay5cclxuLy8vXHJcbi8vLyBAdHlwZSBMaXN0XHJcblxyXG4kaGVsdmV0aWNhOiBcIkhlbHZldGljYSBOZXVlXCIsIFwiSGVsdmV0aWNhXCIsIFwiUm9ib3RvXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcclxuXHJcbi8vLyBMdWNpZGEgR3JhbmRlIGZvbnQgc3RhY2suXHJcbi8vL1xyXG4vLy8gQHR5cGUgTGlzdFxyXG5cclxuJGx1Y2lkYS1ncmFuZGU6IFwiTHVjaWRhIEdyYW5kZVwiLCBcIlRhaG9tYVwiLCBcIlZlcmRhbmFcIiwgXCJBcmlhbFwiLCBzYW5zLXNlcmlmO1xyXG5cclxuLy8vIE1vbm9zcGFjZSBmb250IHN0YWNrLlxyXG4vLy9cclxuLy8vIEB0eXBlIExpc3RcclxuXHJcbiRtb25vc3BhY2U6IFwiQml0c3RyZWFtIFZlcmEgU2FucyBNb25vXCIsIFwiQ29uc29sYXNcIiwgXCJDb3VyaWVyXCIsIG1vbm9zcGFjZTtcclxuXHJcbi8vLyBWZXJkYW5hIGZvbnQgc3RhY2suXHJcbi8vL1xyXG4vLy8gQHR5cGUgTGlzdFxyXG5cclxuJHZlcmRhbmE6IFwiVmVyZGFuYVwiLCBcIkdlbmV2YVwiLCBzYW5zLXNlcmlmO1xyXG4iLCIvLy8gSGlkZXMgdGhlIHRleHQgaW4gYW4gZWxlbWVudCwgY29tbW9ubHkgdXNlZCB0byBzaG93IGFuIGltYWdlLiBTb21lIGVsZW1lbnRzIHdpbGwgbmVlZCBibG9jay1sZXZlbCBzdHlsZXMgYXBwbGllZC5cclxuLy8vXHJcbi8vLyBAbGluayBodHRwOi8vemVsZG1hbi5jb20vMjAxMi8wMy8wMS9yZXBsYWNpbmctdGhlLTk5OTlweC1oYWNrLW5ldy1pbWFnZS1yZXBsYWNlbWVudFxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgQGluY2x1ZGUgaGlkZS10ZXh0O1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuLy8vICAgICB0ZXh0LWluZGVudDogMTAxJTtcclxuLy8vICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQHRvZG8gUmVtb3ZlIGhlaWdodCBhcmd1bWVudCBpbiB2NS4wLjBcclxuXHJcbkBtaXhpbiBoaWRlLXRleHQoJGhlaWdodDogbnVsbCkge1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgdGV4dC1pbmRlbnQ6IDEwMSU7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuXHJcbiAgQGlmICRoZWlnaHQge1xyXG4gICAgQHdhcm4gXCJUaGUgYGhpZGUtdGV4dGAgbWl4aW4gaGFzIGNoYW5nZWQgYW5kIG5vIGxvbmdlciByZXF1aXJlcyBhIGhlaWdodC4gVGhlIGhlaWdodCBhcmd1bWVudCB3aWxsIG5vIGxvbmdlciBiZSBhY2NlcHRlZCBpbiB2NS4wLjBcIjtcclxuICB9XHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIFByb3ZpZGVzIGEgcXVpY2sgbWV0aG9kIGZvciB0YXJnZXRpbmcgYG1hcmdpbmAgb24gc3BlY2lmaWMgc2lkZXMgb2YgYSBib3guIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGEgc2lkZS5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICR2YWxzXHJcbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBAaW5jbHVkZSBtYXJnaW4obnVsbCAxMHB4IDNlbSAyMHZoKTtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcclxuLy8vICAgLmVsZW1lbnQge1xyXG4vLy8gICAgIG1hcmdpbi1ib3R0b206IDNlbTtcclxuLy8vICAgICBtYXJnaW4tbGVmdDogMjB2aDtcclxuLy8vICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAcmVxdWlyZSB7bWl4aW59IGRpcmVjdGlvbmFsLXByb3BlcnR5XHJcbi8vL1xyXG4vLy8gQG91dHB1dCBgbWFyZ2luYFxyXG5cclxuQG1peGluIG1hcmdpbigkdmFscy4uLikge1xyXG4gIEBpbmNsdWRlIGRpcmVjdGlvbmFsLXByb3BlcnR5KG1hcmdpbiwgZmFsc2UsICR2YWxzLi4uKTtcclxufVxyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gUHJvdmlkZXMgYSBxdWljayBtZXRob2QgZm9yIHRhcmdldGluZyBgcGFkZGluZ2Agb24gc3BlY2lmaWMgc2lkZXMgb2YgYSBib3guIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGEgc2lkZS5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICR2YWxzXHJcbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBAaW5jbHVkZSBwYWRkaW5nKDEydmggbnVsbCAxMHB4IDUlKTtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcclxuLy8vICAgLmVsZW1lbnQge1xyXG4vLy8gICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xyXG4vLy8gICAgIHBhZGRpbmctbGVmdDogNSU7XHJcbi8vLyAgICAgcGFkZGluZy10b3A6IDEydmg7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAcmVxdWlyZSB7bWl4aW59IGRpcmVjdGlvbmFsLXByb3BlcnR5XHJcbi8vL1xyXG4vLy8gQG91dHB1dCBgcGFkZGluZ2BcclxuXHJcbkBtaXhpbiBwYWRkaW5nKCR2YWxzLi4uKSB7XHJcbiAgQGluY2x1ZGUgZGlyZWN0aW9uYWwtcHJvcGVydHkocGFkZGluZywgZmFsc2UsICR2YWxzLi4uKTtcclxufVxyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gUHJvdmlkZXMgYSBxdWljayBtZXRob2QgZm9yIHNldHRpbmcgYW4gZWxlbWVudOKAmXMgcG9zaXRpb24uIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGEgc2lkZS5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge1Bvc2l0aW9ufSAkcG9zaXRpb24gW3JlbGF0aXZlXVxyXG4vLy8gICBBIENTUyBwb3NpdGlvbiB2YWx1ZVxyXG4vLy9cclxuLy8vIEBwYXJhbSB7QXJnbGlzdH0gJGNvb3JkaW5hdGVzIFtudWxsIG51bGwgbnVsbCBudWxsXVxyXG4vLy8gICBMaXN0IG9mIHZhbHVlcyB0aGF0IGNvcnJlc3BvbmQgdG8gdGhlIDQtdmFsdWUgc3ludGF4IGZvciB0aGUgZWRnZXMgb2YgYSBib3hcclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2VcclxuLy8vICAgLmVsZW1lbnQge1xyXG4vLy8gICAgIEBpbmNsdWRlIHBvc2l0aW9uKGFic29sdXRlLCAwIG51bGwgbnVsbCAxMGVtKTtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcclxuLy8vICAgLmVsZW1lbnQge1xyXG4vLy8gICAgIGxlZnQ6IDEwZW07XHJcbi8vLyAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4vLy8gICAgIHRvcDogMDtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gaXMtbGVuZ3RoXHJcbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IHVucGFja1xyXG5cclxuQG1peGluIHBvc2l0aW9uKCRwb3NpdGlvbjogcmVsYXRpdmUsICRjb29yZGluYXRlczogbnVsbCBudWxsIG51bGwgbnVsbCkge1xyXG4gIEBpZiB0eXBlLW9mKCRwb3NpdGlvbikgPT0gbGlzdCB7XHJcbiAgICAkY29vcmRpbmF0ZXM6ICRwb3NpdGlvbjtcclxuICAgICRwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgfVxyXG5cclxuICAkY29vcmRpbmF0ZXM6IHVucGFjaygkY29vcmRpbmF0ZXMpO1xyXG5cclxuICAkb2Zmc2V0czogKFxyXG4gICAgdG9wOiAgICBudGgoJGNvb3JkaW5hdGVzLCAxKSxcclxuICAgIHJpZ2h0OiAgbnRoKCRjb29yZGluYXRlcywgMiksXHJcbiAgICBib3R0b206IG50aCgkY29vcmRpbmF0ZXMsIDMpLFxyXG4gICAgbGVmdDogICBudGgoJGNvb3JkaW5hdGVzLCA0KVxyXG4gICk7XHJcblxyXG4gIHBvc2l0aW9uOiAkcG9zaXRpb247XHJcblxyXG4gIEBlYWNoICRvZmZzZXQsICR2YWx1ZSBpbiAkb2Zmc2V0cyB7XHJcbiAgICBAaWYgaXMtbGVuZ3RoKCR2YWx1ZSkge1xyXG4gICAgICAjeyRvZmZzZXR9OiAkdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBBIG1peGluIGZvciBnZW5lcmF0aW5nIHZlbmRvciBwcmVmaXhlcyBvbiBub24tc3RhbmRhcmRpemVkIHByb3BlcnRpZXMuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRwcm9wZXJ0eVxyXG4vLy8gICBQcm9wZXJ0eSB0byBwcmVmaXhcclxuLy8vXHJcbi8vLyBAcGFyYW0geyp9ICR2YWx1ZVxyXG4vLy8gICBWYWx1ZSB0byB1c2VcclxuLy8vXHJcbi8vLyBAcGFyYW0ge0xpc3R9ICRwcmVmaXhlc1xyXG4vLy8gICBQcmVmaXhlcyB0byBkZWZpbmVcclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2VcclxuLy8vICAgLmVsZW1lbnQge1xyXG4vLy8gICAgIEBpbmNsdWRlIHByZWZpeGVyKGJvcmRlci1yYWRpdXMsIDEwcHgsIHdlYmtpdCBtcyBzcGVjKTtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcclxuLy8vICAgLmVsZW1lbnQge1xyXG4vLy8gICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDtcclxuLy8vICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7XHJcbi8vLyAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3Itd2Via2l0XHJcbi8vLyBAcmVxdWlyZSB7dmFyaWFibGV9ICRwcmVmaXgtZm9yLW1vemlsbGFcclxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3ItbWljcm9zb2Z0XHJcbi8vLyBAcmVxdWlyZSB7dmFyaWFibGV9ICRwcmVmaXgtZm9yLW9wZXJhXHJcbi8vLyBAcmVxdWlyZSB7dmFyaWFibGV9ICRwcmVmaXgtZm9yLXNwZWNcclxuXHJcbkBtaXhpbiBwcmVmaXhlcigkcHJvcGVydHksICR2YWx1ZSwgJHByZWZpeGVzKSB7XHJcbiAgQGVhY2ggJHByZWZpeCBpbiAkcHJlZml4ZXMge1xyXG4gICAgQGlmICRwcmVmaXggPT0gd2Via2l0IHtcclxuICAgICAgQGlmICRwcmVmaXgtZm9yLXdlYmtpdCB7XHJcbiAgICAgICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfSBAZWxzZSBpZiAkcHJlZml4ID09IG1veiB7XHJcbiAgICAgIEBpZiAkcHJlZml4LWZvci1tb3ppbGxhIHtcclxuICAgICAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9IEBlbHNlIGlmICRwcmVmaXggPT0gbXMge1xyXG4gICAgICBAaWYgJHByZWZpeC1mb3ItbWljcm9zb2Z0IHtcclxuICAgICAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH0gQGVsc2UgaWYgJHByZWZpeCA9PSBvIHtcclxuICAgICAgQGlmICRwcmVmaXgtZm9yLW9wZXJhIHtcclxuICAgICAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfSBAZWxzZSBpZiAkcHJlZml4ID09IHNwZWMge1xyXG4gICAgICBAaWYgJHByZWZpeC1mb3Itc3BlYyB7XHJcbiAgICAgICAgI3skcHJvcGVydHl9OiAkdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH0gQGVsc2UgIHtcclxuICAgICAgQHdhcm4gXCJVbnJlY29nbml6ZWQgcHJlZml4OiAjeyRwcmVmaXh9XCI7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gZGlzYWJsZS1wcmVmaXgtZm9yLWFsbCgpIHtcclxuICAkcHJlZml4LWZvci13ZWJraXQ6ICAgIGZhbHNlICFnbG9iYWw7XHJcbiAgJHByZWZpeC1mb3ItbW96aWxsYTogICBmYWxzZSAhZ2xvYmFsO1xyXG4gICRwcmVmaXgtZm9yLW1pY3Jvc29mdDogZmFsc2UgIWdsb2JhbDtcclxuICAkcHJlZml4LWZvci1vcGVyYTogICAgIGZhbHNlICFnbG9iYWw7XHJcbiAgJHByZWZpeC1mb3Itc3BlYzogICAgICBmYWxzZSAhZ2xvYmFsO1xyXG59XHJcbiIsIkBtaXhpbiByZXRpbmEtaW1hZ2UoJGZpbGVuYW1lLCAkYmFja2dyb3VuZC1zaXplLCAkZXh0ZW5zaW9uOiBwbmcsICRyZXRpbmEtZmlsZW5hbWU6IG51bGwsICRyZXRpbmEtc3VmZml4OiBfMngsICRhc3NldC1waXBlbGluZTogJGFzc2V0LXBpcGVsaW5lKSB7XHJcbiAgQGlmICRhc3NldC1waXBlbGluZSB7XHJcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWFnZS11cmwoXCIjeyRmaWxlbmFtZX0uI3skZXh0ZW5zaW9ufVwiKTtcclxuICB9IEBlbHNlIHtcclxuICAgIGJhY2tncm91bmQtaW1hZ2U6ICAgICAgIHVybChcIiN7JGZpbGVuYW1lfS4jeyRleHRlbnNpb259XCIpO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgaGlkcGkge1xyXG4gICAgQGlmICRhc3NldC1waXBlbGluZSB7XHJcbiAgICAgIEBpZiAkcmV0aW5hLWZpbGVuYW1lIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWFnZS11cmwoXCIjeyRyZXRpbmEtZmlsZW5hbWV9LiN7JGV4dGVuc2lvbn1cIik7XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGltYWdlLXVybChcIiN7JGZpbGVuYW1lfSN7JHJldGluYS1zdWZmaXh9LiN7JGV4dGVuc2lvbn1cIik7XHJcbiAgICAgIH1cclxuICAgIH0gQGVsc2Uge1xyXG4gICAgICBAaWYgJHJldGluYS1maWxlbmFtZSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiI3skcmV0aW5hLWZpbGVuYW1lfS4jeyRleHRlbnNpb259XCIpO1xyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIjeyRmaWxlbmFtZX0jeyRyZXRpbmEtc3VmZml4fS4jeyRleHRlbnNpb259XCIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYmFja2dyb3VuZC1zaXplOiAkYmFja2dyb3VuZC1zaXplO1xyXG4gIH1cclxufVxyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gU2V0cyB0aGUgYHdpZHRoYCBhbmQgYGhlaWdodGAgb2YgdGhlIGVsZW1lbnQuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtMaXN0fSAkc2l6ZVxyXG4vLy8gICBBIGxpc3Qgb2YgYXQgbW9zdCAyIHNpemUgdmFsdWVzLlxyXG4vLy9cclxuLy8vICAgSWYgdGhlcmUgaXMgb25seSBhIHNpbmdsZSB2YWx1ZSBpbiBgJHNpemVgIGl0IGlzIHVzZWQgZm9yIGJvdGggd2lkdGggYW5kIGhlaWdodC4gQWxsIHVuaXRzIGFyZSBzdXBwb3J0ZWQuXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIC5maXJzdC1lbGVtZW50IHtcclxuLy8vICAgICBAaW5jbHVkZSBzaXplKDJlbSk7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyAgIC5zZWNvbmQtZWxlbWVudCB7XHJcbi8vLyAgICAgQGluY2x1ZGUgc2l6ZShhdXRvIDEwZW0pO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICAuZmlyc3QtZWxlbWVudCB7XHJcbi8vLyAgICAgd2lkdGg6IDJlbTtcclxuLy8vICAgICBoZWlnaHQ6IDJlbTtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vICAgLnNlY29uZC1lbGVtZW50IHtcclxuLy8vICAgICB3aWR0aDogYXV0bztcclxuLy8vICAgICBoZWlnaHQ6IDEwZW07XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAdG9kbyBSZWZhY3RvciBpbiA1LjAuMCB0byB1c2UgYSBjb21tYS1zZXBhcmF0ZWQgYXJndW1lbnRcclxuXHJcbkBtaXhpbiBzaXplKCR2YWx1ZSkge1xyXG4gICR3aWR0aDogbnRoKCR2YWx1ZSwgMSk7XHJcbiAgJGhlaWdodDogJHdpZHRoO1xyXG5cclxuICBAaWYgbGVuZ3RoKCR2YWx1ZSkgPiAxIHtcclxuICAgICRoZWlnaHQ6IG50aCgkdmFsdWUsIDIpO1xyXG4gIH1cclxuXHJcbiAgQGlmIGlzLXNpemUoJGhlaWdodCkge1xyXG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xyXG4gIH0gQGVsc2Uge1xyXG4gICAgQHdhcm4gXCJgI3skaGVpZ2h0fWAgaXMgbm90IGEgdmFsaWQgbGVuZ3RoIGZvciB0aGUgYCRoZWlnaHRgIHBhcmFtZXRlciBpbiB0aGUgYHNpemVgIG1peGluLlwiO1xyXG4gIH1cclxuXHJcbiAgQGlmIGlzLXNpemUoJHdpZHRoKSB7XHJcbiAgICB3aWR0aDogJHdpZHRoO1xyXG4gIH0gQGVsc2Uge1xyXG4gICAgQHdhcm4gXCJgI3skd2lkdGh9YCBpcyBub3QgYSB2YWxpZCBsZW5ndGggZm9yIHRoZSBgJHdpZHRoYCBwYXJhbWV0ZXIgaW4gdGhlIGBzaXplYCBtaXhpbi5cIjtcclxuICB9XHJcbn1cclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIEdlbmVyYXRlcyB2YXJpYWJsZXMgZm9yIGFsbCB0ZXh0LWJhc2VkIGlucHV0cy4gUGxlYXNlIG5vdGUgdGhhdCB5b3UgbXVzdCB1c2UgaW50ZXJwb2xhdGlvbiBvbiB0aGUgdmFyaWFibGU6IGAjeyRhbGwtdGV4dC1pbnB1dHN9YC5cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2VcclxuLy8vICAgI3skYWxsLXRleHQtaW5wdXRzfSB7XHJcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgI2YwMDtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vICAgI3skYWxsLXRleHQtaW5wdXRzLWZvY3VzfSxcclxuLy8vICAgI3skYWxsLXRleHQtaW5wdXRzLWhvdmVyfSB7XHJcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgIzBmMDtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vICAgI3skYWxsLXRleHQtaW5wdXRzLWFjdGl2ZX0ge1xyXG4vLy8gICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMGY7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIGlucHV0W3R5cGU9XCJjb2xvclwiXSxcclxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGVcIl0sXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZVwiXSxcclxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwiZW1haWxcIl0sXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJtb250aFwiXSxcclxuLy8vICAgaW5wdXRbdHlwZT1cIm51bWJlclwiXSxcclxuLy8vICAgaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwic2VhcmNoXCJdLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwidGVsXCJdLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwidGV4dFwiXSxcclxuLy8vICAgaW5wdXRbdHlwZT1cInRpbWVcIl0sXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJ1cmxcIl0sXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJ3ZWVrXCJdLFxyXG4vLy8gICB0ZXh0YXJlYSB7XHJcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgI2YwMDtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vICAgaW5wdXRbdHlwZT1cImNvbG9yXCJdOmZvY3VzLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZVwiXTpmb2N1cyxcclxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lXCJdOmZvY3VzLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl06Zm9jdXMsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJlbWFpbFwiXTpmb2N1cyxcclxuLy8vICAgaW5wdXRbdHlwZT1cIm1vbnRoXCJdOmZvY3VzLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdOmZvY3VzLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl06Zm9jdXMsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJzZWFyY2hcIl06Zm9jdXMsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZWxcIl06Zm9jdXMsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZXh0XCJdOmZvY3VzLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwidGltZVwiXTpmb2N1cyxcclxuLy8vICAgaW5wdXRbdHlwZT1cInVybFwiXTpmb2N1cyxcclxuLy8vICAgaW5wdXRbdHlwZT1cIndlZWtcIl06Zm9jdXMsXHJcbi8vLyAgIHRleHRhcmVhOmZvY3VzLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwiY29sb3JcIl06aG92ZXIsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRlXCJdOmhvdmVyLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl06aG92ZXIsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXTpob3ZlcixcclxuLy8vICAgaW5wdXRbdHlwZT1cImVtYWlsXCJdOmhvdmVyLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwibW9udGhcIl06aG92ZXIsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJudW1iZXJcIl06aG92ZXIsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXTpob3ZlcixcclxuLy8vICAgaW5wdXRbdHlwZT1cInNlYXJjaFwiXTpob3ZlcixcclxuLy8vICAgaW5wdXRbdHlwZT1cInRlbFwiXTpob3ZlcixcclxuLy8vICAgaW5wdXRbdHlwZT1cInRleHRcIl06aG92ZXIsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJ0aW1lXCJdOmhvdmVyLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwidXJsXCJdOmhvdmVyLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwid2Vla1wiXTpob3ZlcixcclxuLy8vICAgdGV4dGFyZWE6aG92ZXIge1xyXG4vLy8gICAgIGJvcmRlcjogMXB4IHNvbGlkICMwZjA7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJjb2xvclwiXTphY3RpdmUsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRlXCJdOmFjdGl2ZSxcclxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lXCJdOmFjdGl2ZSxcclxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdOmFjdGl2ZSxcclxuLy8vICAgaW5wdXRbdHlwZT1cImVtYWlsXCJdOmFjdGl2ZSxcclxuLy8vICAgaW5wdXRbdHlwZT1cIm1vbnRoXCJdOmFjdGl2ZSxcclxuLy8vICAgaW5wdXRbdHlwZT1cIm51bWJlclwiXTphY3RpdmUsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXTphY3RpdmUsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJzZWFyY2hcIl06YWN0aXZlLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwidGVsXCJdOmFjdGl2ZSxcclxuLy8vICAgaW5wdXRbdHlwZT1cInRleHRcIl06YWN0aXZlLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwidGltZVwiXTphY3RpdmUsXHJcbi8vLyAgIGlucHV0W3R5cGU9XCJ1cmxcIl06YWN0aXZlLFxyXG4vLy8gICBpbnB1dFt0eXBlPVwid2Vla1wiXTphY3RpdmUsXHJcbi8vLyAgIHRleHRhcmVhOmFjdGl2ZSB7XHJcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgIzAwZjtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vIEByZXF1aXJlIGFzc2lnbi1pbnB1dHNcclxuLy8vXHJcbi8vLyBAdHlwZSBMaXN0XHJcblxyXG4kdGV4dC1pbnB1dHMtbGlzdDogJ2lucHV0W3R5cGU9XCJjb2xvclwiXScsXHJcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cImRhdGVcIl0nLFxyXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJkYXRldGltZVwiXScsXHJcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdJyxcclxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiZW1haWxcIl0nLFxyXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJtb250aFwiXScsXHJcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cIm51bWJlclwiXScsXHJcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdJyxcclxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwic2VhcmNoXCJdJyxcclxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwidGVsXCJdJyxcclxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwidGV4dFwiXScsXHJcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInRpbWVcIl0nLFxyXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJ1cmxcIl0nLFxyXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJ3ZWVrXCJdJyxcclxuICAgICAgICAgICAgICAgICAgICdpbnB1dDpub3QoW3R5cGVdKScsXHJcbiAgICAgICAgICAgICAgICAgICAndGV4dGFyZWEnO1xyXG5cclxuJGFsbC10ZXh0LWlucHV0czogICAgICAgIGFzc2lnbi1pbnB1dHMoJHRleHQtaW5wdXRzLWxpc3QpO1xyXG4kYWxsLXRleHQtaW5wdXRzLWFjdGl2ZTogYXNzaWduLWlucHV0cygkdGV4dC1pbnB1dHMtbGlzdCwgYWN0aXZlKTtcclxuJGFsbC10ZXh0LWlucHV0cy1mb2N1czogIGFzc2lnbi1pbnB1dHMoJHRleHQtaW5wdXRzLWxpc3QsIGZvY3VzKTtcclxuJGFsbC10ZXh0LWlucHV0cy1ob3ZlcjogIGFzc2lnbi1pbnB1dHMoJHRleHQtaW5wdXRzLWxpc3QsIGhvdmVyKTtcclxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuLy8vIENTUyBjdWJpYy1iZXppZXIgdGltaW5nIGZ1bmN0aW9ucy4gVGltaW5nIGZ1bmN0aW9ucyBjb3VydGVzeSBvZiBqcXVlcnkuZWFzaWUgKGdpdGh1Yi5jb20vamF1a2lhL2Vhc2llKVxyXG4vLy9cclxuLy8vIFRpbWluZyBmdW5jdGlvbnMgYXJlIHRoZSBzYW1lIGFzIGRlbW9lZCBoZXJlOiBodHRwOi8vanF1ZXJ5dWkuY29tL3Jlc291cmNlcy9kZW1vcy9lZmZlY3QvZWFzaW5nLmh0bWxcclxuLy8vXHJcbi8vLyBAdHlwZSBjdWJpYy1iZXppZXJcclxuXHJcbiRlYXNlLWluLXF1YWQ6ICAgICAgY3ViaWMtYmV6aWVyKDAuNTUwLCAgMC4wODUsIDAuNjgwLCAwLjUzMCk7XHJcbiRlYXNlLWluLWN1YmljOiAgICAgY3ViaWMtYmV6aWVyKDAuNTUwLCAgMC4wNTUsIDAuNjc1LCAwLjE5MCk7XHJcbiRlYXNlLWluLXF1YXJ0OiAgICAgY3ViaWMtYmV6aWVyKDAuODk1LCAgMC4wMzAsIDAuNjg1LCAwLjIyMCk7XHJcbiRlYXNlLWluLXF1aW50OiAgICAgY3ViaWMtYmV6aWVyKDAuNzU1LCAgMC4wNTAsIDAuODU1LCAwLjA2MCk7XHJcbiRlYXNlLWluLXNpbmU6ICAgICAgY3ViaWMtYmV6aWVyKDAuNDcwLCAgMC4wMDAsIDAuNzQ1LCAwLjcxNSk7XHJcbiRlYXNlLWluLWV4cG86ICAgICAgY3ViaWMtYmV6aWVyKDAuOTUwLCAgMC4wNTAsIDAuNzk1LCAwLjAzNSk7XHJcbiRlYXNlLWluLWNpcmM6ICAgICAgY3ViaWMtYmV6aWVyKDAuNjAwLCAgMC4wNDAsIDAuOTgwLCAwLjMzNSk7XHJcbiRlYXNlLWluLWJhY2s6ICAgICAgY3ViaWMtYmV6aWVyKDAuNjAwLCAtMC4yODAsIDAuNzM1LCAwLjA0NSk7XHJcblxyXG4kZWFzZS1vdXQtcXVhZDogICAgIGN1YmljLWJlemllcigwLjI1MCwgIDAuNDYwLCAwLjQ1MCwgMC45NDApO1xyXG4kZWFzZS1vdXQtY3ViaWM6ICAgIGN1YmljLWJlemllcigwLjIxNSwgIDAuNjEwLCAwLjM1NSwgMS4wMDApO1xyXG4kZWFzZS1vdXQtcXVhcnQ6ICAgIGN1YmljLWJlemllcigwLjE2NSwgIDAuODQwLCAwLjQ0MCwgMS4wMDApO1xyXG4kZWFzZS1vdXQtcXVpbnQ6ICAgIGN1YmljLWJlemllcigwLjIzMCwgIDEuMDAwLCAwLjMyMCwgMS4wMDApO1xyXG4kZWFzZS1vdXQtc2luZTogICAgIGN1YmljLWJlemllcigwLjM5MCwgIDAuNTc1LCAwLjU2NSwgMS4wMDApO1xyXG4kZWFzZS1vdXQtZXhwbzogICAgIGN1YmljLWJlemllcigwLjE5MCwgIDEuMDAwLCAwLjIyMCwgMS4wMDApO1xyXG4kZWFzZS1vdXQtY2lyYzogICAgIGN1YmljLWJlemllcigwLjA3NSwgIDAuODIwLCAwLjE2NSwgMS4wMDApO1xyXG4kZWFzZS1vdXQtYmFjazogICAgIGN1YmljLWJlemllcigwLjE3NSwgIDAuODg1LCAwLjMyMCwgMS4yNzUpO1xyXG5cclxuJGVhc2UtaW4tb3V0LXF1YWQ6ICBjdWJpYy1iZXppZXIoMC40NTUsICAwLjAzMCwgMC41MTUsIDAuOTU1KTtcclxuJGVhc2UtaW4tb3V0LWN1YmljOiBjdWJpYy1iZXppZXIoMC42NDUsICAwLjA0NSwgMC4zNTUsIDEuMDAwKTtcclxuJGVhc2UtaW4tb3V0LXF1YXJ0OiBjdWJpYy1iZXppZXIoMC43NzAsICAwLjAwMCwgMC4xNzUsIDEuMDAwKTtcclxuJGVhc2UtaW4tb3V0LXF1aW50OiBjdWJpYy1iZXppZXIoMC44NjAsICAwLjAwMCwgMC4wNzAsIDEuMDAwKTtcclxuJGVhc2UtaW4tb3V0LXNpbmU6ICBjdWJpYy1iZXppZXIoMC40NDUsICAwLjA1MCwgMC41NTAsIDAuOTUwKTtcclxuJGVhc2UtaW4tb3V0LWV4cG86ICBjdWJpYy1iZXppZXIoMS4wMDAsICAwLjAwMCwgMC4wMDAsIDEuMDAwKTtcclxuJGVhc2UtaW4tb3V0LWNpcmM6ICBjdWJpYy1iZXppZXIoMC43ODUsICAwLjEzNSwgMC4xNTAsIDAuODYwKTtcclxuJGVhc2UtaW4tb3V0LWJhY2s6ICBjdWJpYy1iZXppZXIoMC42ODAsIC0wLjU1MCwgMC4yNjUsIDEuNTUwKTtcclxuIiwiQG1peGluIHRyaWFuZ2xlKCRzaXplLCAkY29sb3IsICRkaXJlY3Rpb24pIHtcclxuICAkd2lkdGg6IG50aCgkc2l6ZSwgMSk7XHJcbiAgJGhlaWdodDogbnRoKCRzaXplLCBsZW5ndGgoJHNpemUpKTtcclxuICAkZm9yZWdyb3VuZC1jb2xvcjogbnRoKCRjb2xvciwgMSk7XHJcbiAgJGJhY2tncm91bmQtY29sb3I6IGlmKGxlbmd0aCgkY29sb3IpID09IDIsIG50aCgkY29sb3IsIDIpLCB0cmFuc3BhcmVudCk7XHJcbiAgaGVpZ2h0OiAwO1xyXG4gIHdpZHRoOiAwO1xyXG5cclxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIG9yICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XHJcbiAgICAkd2lkdGg6ICR3aWR0aCAvIDI7XHJcbiAgICAkaGVpZ2h0OiBpZihsZW5ndGgoJHNpemUpID4gMSwgJGhlaWdodCwgJGhlaWdodC8yKTtcclxuXHJcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB1cCB7XHJcbiAgICAgIGJvcmRlci1ib3R0b206ICRoZWlnaHQgc29saWQgJGZvcmVncm91bmQtY29sb3I7XHJcbiAgICAgIGJvcmRlci1sZWZ0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XHJcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xyXG4gICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHJpZ2h0IHtcclxuICAgICAgYm9yZGVyLWJvdHRvbTogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xyXG4gICAgICBib3JkZXItbGVmdDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcclxuICAgICAgYm9yZGVyLXRvcDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xyXG4gICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGRvd24ge1xyXG4gICAgICBib3JkZXItbGVmdDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xyXG4gICAgICBib3JkZXItcmlnaHQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcclxuICAgICAgYm9yZGVyLXRvcDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcclxuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcclxuICAgICAgYm9yZGVyLWJvdHRvbTogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xyXG4gICAgICBib3JkZXItcmlnaHQ6ICRoZWlnaHQgc29saWQgJGZvcmVncm91bmQtY29sb3I7XHJcbiAgICAgIGJvcmRlci10b3A6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcclxuICAgIH1cclxuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IHVwLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSB1cC1sZWZ0KSB7XHJcbiAgICBib3JkZXItdG9wOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xyXG5cclxuICAgIEBpZiAkZGlyZWN0aW9uID09IHVwLXJpZ2h0IHtcclxuICAgICAgYm9yZGVyLWxlZnQ6ICAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XHJcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gdXAtbGVmdCB7XHJcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xyXG4gICAgfVxyXG4gIH0gQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gZG93bi1yaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bi1sZWZ0KSB7XHJcbiAgICBib3JkZXItYm90dG9tOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xyXG5cclxuICAgIEBpZiAkZGlyZWN0aW9uID09IGRvd24tcmlnaHQge1xyXG4gICAgICBib3JkZXItbGVmdDogICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcclxuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBkb3duLWxlZnQge1xyXG4gICAgICBib3JkZXItcmlnaHQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcclxuICAgIH1cclxuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGluc2V0LXVwKSB7XHJcbiAgICBib3JkZXItY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yICRmb3JlZ3JvdW5kLWNvbG9yO1xyXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuICAgIGJvcmRlci13aWR0aDogJGhlaWdodCAkd2lkdGg7XHJcbiAgfSBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBpbnNldC1kb3duKSB7XHJcbiAgICBib3JkZXItY29sb3I6ICRmb3JlZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yO1xyXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuICAgIGJvcmRlci13aWR0aDogJGhlaWdodCAkd2lkdGg7XHJcbiAgfSBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBpbnNldC1yaWdodCkge1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvciAkZm9yZWdyb3VuZC1jb2xvcjtcclxuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcbiAgICBib3JkZXItd2lkdGg6ICR3aWR0aCAkaGVpZ2h0O1xyXG4gIH0gQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gaW5zZXQtbGVmdCkge1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvciAkZm9yZWdyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvcjtcclxuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcbiAgICBib3JkZXItd2lkdGg6ICR3aWR0aCAkaGVpZ2h0O1xyXG4gIH1cclxufVxyXG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gUHJvdmlkZXMgYW4gZWFzeSB3YXkgdG8gY2hhbmdlIHRoZSBgd29yZC13cmFwYCBwcm9wZXJ0eS5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHdyYXAgW2JyZWFrLXdvcmRdXHJcbi8vLyAgIFZhbHVlIGZvciB0aGUgYHdvcmQtYnJlYWtgIHByb3BlcnR5LlxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICAud3JhcHBlciB7XHJcbi8vLyAgICAgQGluY2x1ZGUgd29yZC13cmFwKGJyZWFrLXdvcmQpO1xyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICAud3JhcHBlciB7XHJcbi8vLyAgICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcclxuLy8vICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XHJcbi8vLyAgICAgd29yZC13cmFwOiBicmVhay13b3JkO1xyXG4vLy8gICB9XHJcblxyXG5AbWl4aW4gd29yZC13cmFwKCR3cmFwOiBicmVhay13b3JkKSB7XHJcbiAgb3ZlcmZsb3ctd3JhcDogJHdyYXA7XHJcbiAgd29yZC13cmFwOiAkd3JhcDtcclxuXHJcbiAgQGlmICR3cmFwID09IGJyZWFrLXdvcmQge1xyXG4gICAgd29yZC1icmVhazogYnJlYWstYWxsO1xyXG4gIH0gQGVsc2Uge1xyXG4gICAgd29yZC1icmVhazogJHdyYXA7XHJcbiAgfVxyXG59XHJcbiIsIi8vIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBNQUpPUiB2ZXJzaW9uIHJlbGVhc2VcclxuXHJcbkBtaXhpbiBpbmxpbmUtYmxvY2sge1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHJcbiAgQHdhcm4gXCJUaGUgaW5saW5lLWJsb2NrIG1peGluIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIHJlbGVhc2VcIjtcclxufVxyXG5cclxuQG1peGluIGJ1dHRvbiAoJHN0eWxlOiBzaW1wbGUsICRiYXNlLWNvbG9yOiAjNDI5NGYwLCAkdGV4dC1zaXplOiBpbmhlcml0LCAkcGFkZGluZzogN3B4IDE4cHgpIHtcclxuXHJcbiAgQGlmIHR5cGUtb2YoJHN0eWxlKSA9PSBzdHJpbmcgYW5kIHR5cGUtb2YoJGJhc2UtY29sb3IpID09IGNvbG9yIHtcclxuICAgIEBpbmNsdWRlIGJ1dHRvbnN0eWxlKCRzdHlsZSwgJGJhc2UtY29sb3IsICR0ZXh0LXNpemUsICRwYWRkaW5nKTtcclxuICB9XHJcblxyXG4gIEBpZiB0eXBlLW9mKCRzdHlsZSkgPT0gc3RyaW5nIGFuZCB0eXBlLW9mKCRiYXNlLWNvbG9yKSA9PSBudW1iZXIge1xyXG4gICAgJHBhZGRpbmc6ICR0ZXh0LXNpemU7XHJcbiAgICAkdGV4dC1zaXplOiAkYmFzZS1jb2xvcjtcclxuICAgICRiYXNlLWNvbG9yOiAjNDI5NGYwO1xyXG5cclxuICAgIEBpZiAkcGFkZGluZyA9PSBpbmhlcml0IHtcclxuICAgICAgJHBhZGRpbmc6IDdweCAxOHB4O1xyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIGJ1dHRvbnN0eWxlKCRzdHlsZSwgJGJhc2UtY29sb3IsICR0ZXh0LXNpemUsICRwYWRkaW5nKTtcclxuICB9XHJcblxyXG4gIEBpZiB0eXBlLW9mKCRzdHlsZSkgPT0gY29sb3IgYW5kIHR5cGUtb2YoJGJhc2UtY29sb3IpID09IGNvbG9yIHtcclxuICAgICRiYXNlLWNvbG9yOiAkc3R5bGU7XHJcbiAgICAkc3R5bGU6IHNpbXBsZTtcclxuICAgIEBpbmNsdWRlIGJ1dHRvbnN0eWxlKCRzdHlsZSwgJGJhc2UtY29sb3IsICR0ZXh0LXNpemUsICRwYWRkaW5nKTtcclxuICB9XHJcblxyXG4gIEBpZiB0eXBlLW9mKCRzdHlsZSkgPT0gY29sb3IgYW5kIHR5cGUtb2YoJGJhc2UtY29sb3IpID09IG51bWJlciB7XHJcbiAgICAkcGFkZGluZzogJHRleHQtc2l6ZTtcclxuICAgICR0ZXh0LXNpemU6ICRiYXNlLWNvbG9yO1xyXG4gICAgJGJhc2UtY29sb3I6ICRzdHlsZTtcclxuICAgICRzdHlsZTogc2ltcGxlO1xyXG5cclxuICAgIEBpZiAkcGFkZGluZyA9PSBpbmhlcml0IHtcclxuICAgICAgJHBhZGRpbmc6IDdweCAxOHB4O1xyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIGJ1dHRvbnN0eWxlKCRzdHlsZSwgJGJhc2UtY29sb3IsICR0ZXh0LXNpemUsICRwYWRkaW5nKTtcclxuICB9XHJcblxyXG4gIEBpZiB0eXBlLW9mKCRzdHlsZSkgPT0gbnVtYmVyIHtcclxuICAgICRwYWRkaW5nOiAkYmFzZS1jb2xvcjtcclxuICAgICR0ZXh0LXNpemU6ICRzdHlsZTtcclxuICAgICRiYXNlLWNvbG9yOiAjNDI5NGYwO1xyXG4gICAgJHN0eWxlOiBzaW1wbGU7XHJcblxyXG4gICAgQGlmICRwYWRkaW5nID09ICM0Mjk0ZjAge1xyXG4gICAgICAkcGFkZGluZzogN3B4IDE4cHg7XHJcbiAgICB9XHJcblxyXG4gICAgQGluY2x1ZGUgYnV0dG9uc3R5bGUoJHN0eWxlLCAkYmFzZS1jb2xvciwgJHRleHQtc2l6ZSwgJHBhZGRpbmcpO1xyXG4gIH1cclxuXHJcbiAgJjpkaXNhYmxlZCB7XHJcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgb3BhY2l0eTogMC41O1xyXG4gIH1cclxuXHJcbiAgQHdhcm4gXCJUaGUgYnV0dG9uIG1peGluIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIHJlbGVhc2VcIjtcclxufVxyXG5cclxuLy8gU2VsZWN0b3IgU3R5bGUgQnV0dG9uXHJcbkBtaXhpbiBidXR0b25zdHlsZSgkdHlwZSwgJGItY29sb3IsICR0LXNpemUsICRwYWQpIHtcclxuICAvLyBHcmF5c2NhbGUgYnV0dG9uXHJcbiAgQGlmICR0eXBlID09IHNpbXBsZSBhbmQgJGItY29sb3IgPT0gZ3JheXNjYWxlKCRiLWNvbG9yKSB7XHJcbiAgICBAaW5jbHVkZSBzaW1wbGUoJGItY29sb3IsIHRydWUsICR0LXNpemUsICRwYWQpO1xyXG4gIH1cclxuXHJcbiAgQGlmICR0eXBlID09IHNoaW55IGFuZCAkYi1jb2xvciA9PSBncmF5c2NhbGUoJGItY29sb3IpIHtcclxuICAgIEBpbmNsdWRlIHNoaW55KCRiLWNvbG9yLCB0cnVlLCAkdC1zaXplLCAkcGFkKTtcclxuICB9XHJcblxyXG4gIEBpZiAkdHlwZSA9PSBwaWxsIGFuZCAkYi1jb2xvciA9PSBncmF5c2NhbGUoJGItY29sb3IpIHtcclxuICAgIEBpbmNsdWRlIHBpbGwoJGItY29sb3IsIHRydWUsICR0LXNpemUsICRwYWQpO1xyXG4gIH1cclxuXHJcbiAgQGlmICR0eXBlID09IGZsYXQgYW5kICRiLWNvbG9yID09IGdyYXlzY2FsZSgkYi1jb2xvcikge1xyXG4gICAgQGluY2x1ZGUgZmxhdCgkYi1jb2xvciwgdHJ1ZSwgJHQtc2l6ZSwgJHBhZCk7XHJcbiAgfVxyXG5cclxuICAvLyBDb2xvcmVkIGJ1dHRvblxyXG4gIEBpZiAkdHlwZSA9PSBzaW1wbGUge1xyXG4gICAgQGluY2x1ZGUgc2ltcGxlKCRiLWNvbG9yLCBmYWxzZSwgJHQtc2l6ZSwgJHBhZCk7XHJcbiAgfVxyXG5cclxuICBAZWxzZSBpZiAkdHlwZSA9PSBzaGlueSB7XHJcbiAgICBAaW5jbHVkZSBzaGlueSgkYi1jb2xvciwgZmFsc2UsICR0LXNpemUsICRwYWQpO1xyXG4gIH1cclxuXHJcbiAgQGVsc2UgaWYgJHR5cGUgPT0gcGlsbCB7XHJcbiAgICBAaW5jbHVkZSBwaWxsKCRiLWNvbG9yLCBmYWxzZSwgJHQtc2l6ZSwgJHBhZCk7XHJcbiAgfVxyXG5cclxuICBAZWxzZSBpZiAkdHlwZSA9PSBmbGF0IHtcclxuICAgIEBpbmNsdWRlIGZsYXQoJGItY29sb3IsIGZhbHNlLCAkdC1zaXplLCAkcGFkKTtcclxuICB9XHJcbn1cclxuXHJcbi8vIFNpbXBsZSBCdXR0b25cclxuQG1peGluIHNpbXBsZSgkYmFzZS1jb2xvciwgJGdyYXlzY2FsZTogZmFsc2UsICR0ZXh0c2l6ZTogaW5oZXJpdCwgJHBhZGRpbmc6IDdweCAxOHB4KSB7XHJcbiAgJGNvbG9yOiAgICAgICAgIGhzbCgwLCAwLCAxMDAlKTtcclxuICAkYm9yZGVyOiAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogIDklLCAgJGxpZ2h0bmVzczogLTE0JSk7XHJcbiAgJGluc2V0LXNoYWRvdzogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IC04JSwgICRsaWdodG5lc3M6ICAxNSUpO1xyXG4gICRzdG9wLWdyYWRpZW50OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAgOSUsICAkbGlnaHRuZXNzOiAtMTElKTtcclxuICAkdGV4dC1zaGFkb3c6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogIDE1JSwgJGxpZ2h0bmVzczogLTE4JSk7XHJcblxyXG4gIEBpZiBpcy1saWdodCgkYmFzZS1jb2xvcikge1xyXG4gICAgJGNvbG9yOiAgICAgICBoc2woMCwgMCwgMjAlKTtcclxuICAgICR0ZXh0LXNoYWRvdzogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogMTAlLCAkbGlnaHRuZXNzOiA0JSk7XHJcbiAgfVxyXG5cclxuICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcclxuICAgICRib3JkZXI6ICAgICAgICBncmF5c2NhbGUoJGJvcmRlcik7XHJcbiAgICAkaW5zZXQtc2hhZG93OiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3cpO1xyXG4gICAgJHN0b3AtZ3JhZGllbnQ6IGdyYXlzY2FsZSgkc3RvcC1ncmFkaWVudCk7XHJcbiAgICAkdGV4dC1zaGFkb3c6ICAgZ3JheXNjYWxlKCR0ZXh0LXNoYWRvdyk7XHJcbiAgfVxyXG5cclxuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyO1xyXG4gIGJvcmRlci1yYWRpdXM6IDNweDtcclxuICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIDAgJGluc2V0LXNoYWRvdztcclxuICBjb2xvcjogJGNvbG9yO1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICBmb250LXNpemU6ICR0ZXh0c2l6ZTtcclxuICBmb250LXdlaWdodDogYm9sZDtcclxuICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQgKCRiYXNlLWNvbG9yLCAkc3RvcC1ncmFkaWVudCk7XHJcbiAgcGFkZGluZzogJHBhZGRpbmc7XHJcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gIHRleHQtc2hhZG93OiAwIDFweCAwICR0ZXh0LXNoYWRvdztcclxuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xyXG5cclxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcclxuICAgICRiYXNlLWNvbG9yLWhvdmVyOiAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAtNCUsICRsaWdodG5lc3M6IC01JSk7XHJcbiAgICAkaW5zZXQtc2hhZG93LWhvdmVyOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogLTclLCAkbGlnaHRuZXNzOiAgNSUpO1xyXG4gICAgJHN0b3AtZ3JhZGllbnQtaG92ZXI6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246ICA4JSwgJGxpZ2h0bmVzczogLTE0JSk7XHJcblxyXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XHJcbiAgICAgICRiYXNlLWNvbG9yLWhvdmVyOiAgICBncmF5c2NhbGUoJGJhc2UtY29sb3ItaG92ZXIpO1xyXG4gICAgICAkaW5zZXQtc2hhZG93LWhvdmVyOiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3ctaG92ZXIpO1xyXG4gICAgICAkc3RvcC1ncmFkaWVudC1ob3ZlcjogZ3JheXNjYWxlKCRzdG9wLWdyYWRpZW50LWhvdmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQgKCRiYXNlLWNvbG9yLWhvdmVyLCAkc3RvcC1ncmFkaWVudC1ob3Zlcik7XHJcblxyXG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3ctaG92ZXI7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgfVxyXG5cclxuICAmOmFjdGl2ZTpub3QoOmRpc2FibGVkKSxcclxuICAmOmZvY3VzOm5vdCg6ZGlzYWJsZWQpIHtcclxuICAgICRib3JkZXItYWN0aXZlOiAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiA5JSwgJGxpZ2h0bmVzczogLTE0JSk7XHJcbiAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogNyUsICRsaWdodG5lc3M6IC0xNyUpO1xyXG5cclxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xyXG4gICAgICAkYm9yZGVyLWFjdGl2ZTogICAgICAgZ3JheXNjYWxlKCRib3JkZXItYWN0aXZlKTtcclxuICAgICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6IGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWFjdGl2ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1hY3RpdmU7XHJcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgOHB4IDRweCAkaW5zZXQtc2hhZG93LWFjdGl2ZSwgaW5zZXQgMCAwIDhweCA0cHggJGluc2V0LXNoYWRvdy1hY3RpdmU7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBTaGlueSBCdXR0b25cclxuQG1peGluIHNoaW55KCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiBmYWxzZSwgJHRleHRzaXplOiBpbmhlcml0LCAkcGFkZGluZzogN3B4IDE4cHgpIHtcclxuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xyXG4gICRib3JkZXI6ICAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xMTcsICRncmVlbjogLTExMSwgJGJsdWU6IC04MSk7XHJcbiAgJGJvcmRlci1ib3R0b206IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTEyNiwgJGdyZWVuOiAtMTI3LCAkYmx1ZTogLTEyMik7XHJcbiAgJGZvdXJ0aC1zdG9wOiAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTc5LCAgJGdyZWVuOiAtNzAsICAkYmx1ZTogLTQ2KTtcclxuICAkaW5zZXQtc2hhZG93OiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAgMzcsICAkZ3JlZW46ICAyOSwgICRibHVlOiAgMTIpO1xyXG4gICRzZWNvbmQtc3RvcDogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC01NiwgICRncmVlbjogLTUwLCAgJGJsdWU6IC0zMyk7XHJcbiAgJHRleHQtc2hhZG93OiAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTE0MCwgJGdyZWVuOiAtMTQxLCAkYmx1ZTogLTExNCk7XHJcbiAgJHRoaXJkLXN0b3A6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTg2LCAgJGdyZWVuOiAtNzUsICAkYmx1ZTogLTQ4KTtcclxuXHJcbiAgQGlmIGlzLWxpZ2h0KCRiYXNlLWNvbG9yKSB7XHJcbiAgICAkY29sb3I6ICAgICAgIGhzbCgwLCAwLCAyMCUpO1xyXG4gICAgJHRleHQtc2hhZG93OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAxMCUsICRsaWdodG5lc3M6IDQlKTtcclxuICB9XHJcblxyXG4gIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xyXG4gICAgJGJvcmRlcjogICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyKTtcclxuICAgICRib3JkZXItYm90dG9tOiBncmF5c2NhbGUoJGJvcmRlci1ib3R0b20pO1xyXG4gICAgJGZvdXJ0aC1zdG9wOiAgIGdyYXlzY2FsZSgkZm91cnRoLXN0b3ApO1xyXG4gICAgJGluc2V0LXNoYWRvdzogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93KTtcclxuICAgICRzZWNvbmQtc3RvcDogICBncmF5c2NhbGUoJHNlY29uZC1zdG9wKTtcclxuICAgICR0ZXh0LXNoYWRvdzogICBncmF5c2NhbGUoJHRleHQtc2hhZG93KTtcclxuICAgICR0aGlyZC1zdG9wOiAgICBncmF5c2NhbGUoJHRoaXJkLXN0b3ApO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgbGluZWFyLWdyYWRpZW50KHRvcCwgJGJhc2UtY29sb3IgMCUsICRzZWNvbmQtc3RvcCA1MCUsICR0aGlyZC1zdG9wIDUwJSwgJGZvdXJ0aC1zdG9wIDEwMCUpO1xyXG5cclxuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyO1xyXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYm9yZGVyLWJvdHRvbTtcclxuICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3c7XHJcbiAgY29sb3I6ICRjb2xvcjtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgZm9udC1zaXplOiAkdGV4dHNpemU7XHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgcGFkZGluZzogJHBhZGRpbmc7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICB0ZXh0LXNoYWRvdzogMCAtMXB4IDFweCAkdGV4dC1zaGFkb3c7XHJcblxyXG4gICY6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xyXG4gICAgJGZpcnN0LXN0b3AtaG92ZXI6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xMywgJGdyZWVuOiAtMTUsICRibHVlOiAtMTgpO1xyXG4gICAgJHNlY29uZC1zdG9wLWhvdmVyOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC02NiwgJGdyZWVuOiAtNjIsICRibHVlOiAtNTEpO1xyXG4gICAgJHRoaXJkLXN0b3AtaG92ZXI6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC05MywgJGdyZWVuOiAtODUsICRibHVlOiAtNjYpO1xyXG4gICAgJGZvdXJ0aC1zdG9wLWhvdmVyOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC04NiwgJGdyZWVuOiAtODAsICRibHVlOiAtNjMpO1xyXG5cclxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xyXG4gICAgICAkZmlyc3Qtc3RvcC1ob3ZlcjogIGdyYXlzY2FsZSgkZmlyc3Qtc3RvcC1ob3Zlcik7XHJcbiAgICAgICRzZWNvbmQtc3RvcC1ob3ZlcjogZ3JheXNjYWxlKCRzZWNvbmQtc3RvcC1ob3Zlcik7XHJcbiAgICAgICR0aGlyZC1zdG9wLWhvdmVyOiAgZ3JheXNjYWxlKCR0aGlyZC1zdG9wLWhvdmVyKTtcclxuICAgICAgJGZvdXJ0aC1zdG9wLWhvdmVyOiBncmF5c2NhbGUoJGZvdXJ0aC1zdG9wLWhvdmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQodG9wLCAkZmlyc3Qtc3RvcC1ob3ZlciAgMCUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2Vjb25kLXN0b3AtaG92ZXIgNTAlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXJkLXN0b3AtaG92ZXIgIDUwJSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmb3VydGgtc3RvcC1ob3ZlciAxMDAlKTtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICB9XHJcblxyXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpLFxyXG4gICY6Zm9jdXM6bm90KDpkaXNhYmxlZCkge1xyXG4gICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTExMSwgJGdyZWVuOiAtMTE2LCAkYmx1ZTogLTEyMik7XHJcblxyXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XHJcbiAgICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1hY3RpdmUpO1xyXG4gICAgfVxyXG5cclxuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAyMHB4IDAgJGluc2V0LXNoYWRvdy1hY3RpdmU7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBQaWxsIEJ1dHRvblxyXG5AbWl4aW4gcGlsbCgkYmFzZS1jb2xvciwgJGdyYXlzY2FsZTogZmFsc2UsICR0ZXh0c2l6ZTogaW5oZXJpdCwgJHBhZGRpbmc6IDdweCAxOHB4KSB7XHJcbiAgJGNvbG9yOiAgICAgICAgIGhzbCgwLCAwLCAxMDAlKTtcclxuICAkYm9yZGVyLWJvdHRvbTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgOCwgJHNhdHVyYXRpb246IC0xMSUsICRsaWdodG5lc3M6IC0yNiUpO1xyXG4gICRib3JkZXItc2lkZXM6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA0LCAkc2F0dXJhdGlvbjogLTIxJSwgJGxpZ2h0bmVzczogLTIxJSk7XHJcbiAgJGJvcmRlci10b3A6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogLTEsICRzYXR1cmF0aW9uOiAtMzAlLCAkbGlnaHRuZXNzOiAtMTUlKTtcclxuICAkaW5zZXQtc2hhZG93OiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAtMSwgJHNhdHVyYXRpb246IC0xJSwgICRsaWdodG5lc3M6ICA3JSk7XHJcbiAgJHN0b3AtZ3JhZGllbnQ6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDgsICRzYXR1cmF0aW9uOiAgMTQlLCAkbGlnaHRuZXNzOiAtMTAlKTtcclxuICAkdGV4dC1zaGFkb3c6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgNSwgJHNhdHVyYXRpb246IC0xOSUsICRsaWdodG5lc3M6IC0xNSUpO1xyXG5cclxuICBAaWYgaXMtbGlnaHQoJGJhc2UtY29sb3IpIHtcclxuICAgICRjb2xvcjogICAgICAgaHNsKDAsIDAsIDIwJSk7XHJcbiAgICAkdGV4dC1zaGFkb3c6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDEwJSwgJGxpZ2h0bmVzczogNCUpO1xyXG4gIH1cclxuXHJcbiAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XHJcbiAgICAkYm9yZGVyLWJvdHRvbTogZ3JheXNjYWxlKCRib3JkZXItYm90dG9tKTtcclxuICAgICRib3JkZXItc2lkZXM6ICBncmF5c2NhbGUoJGJvcmRlci1zaWRlcyk7XHJcbiAgICAkYm9yZGVyLXRvcDogICAgZ3JheXNjYWxlKCRib3JkZXItdG9wKTtcclxuICAgICRpbnNldC1zaGFkb3c6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdyk7XHJcbiAgICAkc3RvcC1ncmFkaWVudDogZ3JheXNjYWxlKCRzdG9wLWdyYWRpZW50KTtcclxuICAgICR0ZXh0LXNoYWRvdzogICBncmF5c2NhbGUoJHRleHQtc2hhZG93KTtcclxuICB9XHJcblxyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItdG9wO1xyXG4gIGJvcmRlci1jb2xvcjogJGJvcmRlci10b3AgJGJvcmRlci1zaWRlcyAkYm9yZGVyLWJvdHRvbTtcclxuICBib3JkZXItcmFkaXVzOiAxNnB4O1xyXG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93O1xyXG4gIGNvbG9yOiAkY29sb3I7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIGZvbnQtc2l6ZTogJHRleHRzaXplO1xyXG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XHJcbiAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgQGluY2x1ZGUgbGluZWFyLWdyYWRpZW50ICgkYmFzZS1jb2xvciwgJHN0b3AtZ3JhZGllbnQpO1xyXG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgdGV4dC1zaGFkb3c6IDAgLTFweCAxcHggJHRleHQtc2hhZG93O1xyXG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XHJcblxyXG4gICY6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xyXG4gICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaWdodG5lc3M6IC00LjUlKTtcclxuICAgICRib3JkZXItYm90dG9tOiAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA4LCAkc2F0dXJhdGlvbjogIDEzLjUlLCAkbGlnaHRuZXNzOiAtMzIlKTtcclxuICAgICRib3JkZXItc2lkZXM6ICAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA0LCAkc2F0dXJhdGlvbjogLTIlLCAgICAkbGlnaHRuZXNzOiAtMjclKTtcclxuICAgICRib3JkZXItdG9wOiAgICAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IC0xLCAkc2F0dXJhdGlvbjogLTE3JSwgICAkbGlnaHRuZXNzOiAtMjElKTtcclxuICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICAgICAgICAgICAkc2F0dXJhdGlvbjogLTElLCAgICAkbGlnaHRuZXNzOiAgMyUpO1xyXG4gICAgJHN0b3AtZ3JhZGllbnQtaG92ZXI6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDgsICRzYXR1cmF0aW9uOiAtNCUsICAgICRsaWdodG5lc3M6IC0xNS41JSk7XHJcbiAgICAkdGV4dC1zaGFkb3ctaG92ZXI6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgNSwgJHNhdHVyYXRpb246IC01JSwgICAgJGxpZ2h0bmVzczogLTIyJSk7XHJcblxyXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XHJcbiAgICAgICRiYXNlLWNvbG9yLWhvdmVyOiAgICBncmF5c2NhbGUoJGJhc2UtY29sb3ItaG92ZXIpO1xyXG4gICAgICAkYm9yZGVyLWJvdHRvbTogICAgICAgZ3JheXNjYWxlKCRib3JkZXItYm90dG9tKTtcclxuICAgICAgJGJvcmRlci1zaWRlczogICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyLXNpZGVzKTtcclxuICAgICAgJGJvcmRlci10b3A6ICAgICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyLXRvcCk7XHJcbiAgICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1ob3Zlcik7XHJcbiAgICAgICRzdG9wLWdyYWRpZW50LWhvdmVyOiBncmF5c2NhbGUoJHN0b3AtZ3JhZGllbnQtaG92ZXIpO1xyXG4gICAgICAkdGV4dC1zaGFkb3ctaG92ZXI6ICAgZ3JheXNjYWxlKCR0ZXh0LXNoYWRvdy1ob3Zlcik7XHJcbiAgICB9XHJcblxyXG4gICAgQGluY2x1ZGUgbGluZWFyLWdyYWRpZW50ICgkYmFzZS1jb2xvci1ob3ZlciwgJHN0b3AtZ3JhZGllbnQtaG92ZXIpO1xyXG5cclxuICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLXRvcDtcclxuICAgIGJvcmRlci1jb2xvcjogJGJvcmRlci10b3AgJGJvcmRlci1zaWRlcyAkYm9yZGVyLWJvdHRvbTtcclxuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93LWhvdmVyO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgdGV4dC1zaGFkb3c6IDAgLTFweCAxcHggJHRleHQtc2hhZG93LWhvdmVyO1xyXG4gIH1cclxuXHJcbiAgJjphY3RpdmU6bm90KDpkaXNhYmxlZCksXHJcbiAgJjpmb2N1czpub3QoOmRpc2FibGVkKSB7XHJcbiAgICAkYWN0aXZlLWNvbG9yOiAgICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogNCwgICRzYXR1cmF0aW9uOiAtMTIlLCAgJGxpZ2h0bmVzczogLTEwJSk7XHJcbiAgICAkYm9yZGVyLWFjdGl2ZTogICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogNiwgICRzYXR1cmF0aW9uOiAtMi41JSwgJGxpZ2h0bmVzczogLTMwJSk7XHJcbiAgICAkYm9yZGVyLWJvdHRvbS1hY3RpdmU6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogMTEsICRzYXR1cmF0aW9uOiAgNiUsICAgJGxpZ2h0bmVzczogLTMxJSk7XHJcbiAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogOSwgICRzYXR1cmF0aW9uOiAgMiUsICAgJGxpZ2h0bmVzczogLTIxLjUlKTtcclxuICAgICR0ZXh0LXNoYWRvdy1hY3RpdmU6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiA1LCAgJHNhdHVyYXRpb246IC0xMiUsICAkbGlnaHRuZXNzOiAtMjEuNSUpO1xyXG5cclxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xyXG4gICAgICAkYWN0aXZlLWNvbG9yOiAgICAgICAgIGdyYXlzY2FsZSgkYWN0aXZlLWNvbG9yKTtcclxuICAgICAgJGJvcmRlci1hY3RpdmU6ICAgICAgICBncmF5c2NhbGUoJGJvcmRlci1hY3RpdmUpO1xyXG4gICAgICAkYm9yZGVyLWJvdHRvbS1hY3RpdmU6IGdyYXlzY2FsZSgkYm9yZGVyLWJvdHRvbS1hY3RpdmUpO1xyXG4gICAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWFjdGl2ZSk7XHJcbiAgICAgICR0ZXh0LXNoYWRvdy1hY3RpdmU6ICAgZ3JheXNjYWxlKCR0ZXh0LXNoYWRvdy1hY3RpdmUpO1xyXG4gICAgfVxyXG5cclxuICAgIGJhY2tncm91bmQ6ICRhY3RpdmUtY29sb3I7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWFjdGl2ZTtcclxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYm9yZGVyLWJvdHRvbS1hY3RpdmU7XHJcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgNnB4IDNweCAkaW5zZXQtc2hhZG93LWFjdGl2ZTtcclxuICAgIHRleHQtc2hhZG93OiAwIC0xcHggMXB4ICR0ZXh0LXNoYWRvdy1hY3RpdmU7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBGbGF0IEJ1dHRvblxyXG5AbWl4aW4gZmxhdCgkYmFzZS1jb2xvciwgJGdyYXlzY2FsZTogZmFsc2UsICR0ZXh0c2l6ZTogaW5oZXJpdCwgJHBhZGRpbmc6IDdweCAxOHB4KSB7XHJcbiAgJGNvbG9yOiAgICAgICAgIGhzbCgwLCAwLCAxMDAlKTtcclxuXHJcbiAgQGlmIGlzLWxpZ2h0KCRiYXNlLWNvbG9yKSB7XHJcbiAgICAkY29sb3I6ICAgICAgIGhzbCgwLCAwLCAyMCUpO1xyXG4gIH1cclxuXHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhc2UtY29sb3I7XHJcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gIGJvcmRlcjogMDtcclxuICBjb2xvcjogJGNvbG9yO1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICBmb250LXNpemU6ICR0ZXh0c2l6ZTtcclxuICBmb250LXdlaWdodDogYm9sZDtcclxuICBwYWRkaW5nOiAkcGFkZGluZztcclxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcclxuXHJcbiAgJjpob3Zlcjpub3QoOmRpc2FibGVkKXtcclxuICAgICRiYXNlLWNvbG9yLWhvdmVyOiAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiA0JSwgJGxpZ2h0bmVzczogNSUpO1xyXG5cclxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xyXG4gICAgICAkYmFzZS1jb2xvci1ob3ZlcjogZ3JheXNjYWxlKCRiYXNlLWNvbG9yLWhvdmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFzZS1jb2xvci1ob3ZlcjtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICB9XHJcblxyXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpLFxyXG4gICY6Zm9jdXM6bm90KDpkaXNhYmxlZCkge1xyXG4gICAgJGJhc2UtY29sb3ItYWN0aXZlOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAtNCUsICRsaWdodG5lc3M6IC01JSk7XHJcblxyXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XHJcbiAgICAgICRiYXNlLWNvbG9yLWFjdGl2ZTogZ3JheXNjYWxlKCRiYXNlLWNvbG9yLWFjdGl2ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhc2UtY29sb3ItYWN0aXZlO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIH1cclxufVxyXG5cclxuLy8gRmxleGlibGUgZ3JpZFxyXG5AZnVuY3Rpb24gZmxleC1ncmlkKCRjb2x1bW5zLCAkY29udGFpbmVyLWNvbHVtbnM6ICRmZy1tYXgtY29sdW1ucykge1xyXG4gICR3aWR0aDogJGNvbHVtbnMgKiAkZmctY29sdW1uICsgKCRjb2x1bW5zIC0gMSkgKiAkZmctZ3V0dGVyO1xyXG4gICRjb250YWluZXItd2lkdGg6ICRjb250YWluZXItY29sdW1ucyAqICRmZy1jb2x1bW4gKyAoJGNvbnRhaW5lci1jb2x1bW5zIC0gMSkgKiAkZmctZ3V0dGVyO1xyXG4gIEByZXR1cm4gcGVyY2VudGFnZSgkd2lkdGggLyAkY29udGFpbmVyLXdpZHRoKTtcclxuXHJcbiAgQHdhcm4gXCJUaGUgZmxleC1ncmlkIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIHJlbGVhc2VcIjtcclxufVxyXG5cclxuLy8gRmxleGlibGUgZ3V0dGVyXHJcbkBmdW5jdGlvbiBmbGV4LWd1dHRlcigkY29udGFpbmVyLWNvbHVtbnM6ICRmZy1tYXgtY29sdW1ucywgJGd1dHRlcjogJGZnLWd1dHRlcikge1xyXG4gICRjb250YWluZXItd2lkdGg6ICRjb250YWluZXItY29sdW1ucyAqICRmZy1jb2x1bW4gKyAoJGNvbnRhaW5lci1jb2x1bW5zIC0gMSkgKiAkZmctZ3V0dGVyO1xyXG4gIEByZXR1cm4gcGVyY2VudGFnZSgkZ3V0dGVyIC8gJGNvbnRhaW5lci13aWR0aCk7XHJcblxyXG4gIEB3YXJuIFwiVGhlIGZsZXgtZ3V0dGVyIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIHJlbGVhc2VcIjtcclxufVxyXG5cclxuQGZ1bmN0aW9uIGdyaWQtd2lkdGgoJG4pIHtcclxuICBAcmV0dXJuICRuICogJGd3LWNvbHVtbiArICgkbiAtIDEpICogJGd3LWd1dHRlcjtcclxuXHJcbiAgQHdhcm4gXCJUaGUgZ3JpZC13aWR0aCBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiByZWxlYXNlXCI7XHJcbn1cclxuXHJcbkBmdW5jdGlvbiBnb2xkZW4tcmF0aW8oJHZhbHVlLCAkaW5jcmVtZW50KSB7XHJcbiAgQHJldHVybiBtb2R1bGFyLXNjYWxlKCRpbmNyZW1lbnQsICR2YWx1ZSwgJHJhdGlvOiAkZ29sZGVuKTtcclxuXHJcbiAgQHdhcm4gXCJUaGUgZ29sZGVuLXJhdGlvIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIHJlbGVhc2UuIFBsZWFzZSB1c2UgdGhlIG1vZHVsYXItc2NhbGUgZnVuY3Rpb24sIGluc3RlYWQuXCI7XHJcbn1cclxuXHJcbkBtaXhpbiBib3gtc2l6aW5nKCRib3gpIHtcclxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtc2l6aW5nLCAkYm94LCB3ZWJraXQgbW96IHNwZWMpO1xyXG5cclxuICBAd2FybiBcIlRoZSBib3gtc2l6aW5nIG1peGluIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIHJlbGVhc2UuIFRoaXMgcHJvcGVydHkgY2FuIG5vdyBiZSB1c2VkIHVuLXByZWZpeGVkLlwiO1xyXG59XHJcbiIsIkBpbXBvcnQgXCJzYXNzLWxpYlwiO1xyXG5cclxuLmJhbm5lci1ob21le1xyXG4gICAgJjphZnRlcntcclxuICAgICAgICBjb250ZW50OicnOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDA7IHJpZ2h0OiAwOyBib3R0b206IC0xMDBweDsgYmFja2dyb3VuZDogdXJsKC4uL2ltYWdlcy9tYXRlcmlhbC9zaGQtYmFubmVyLWhvbWUucG5nKW5vLXJlcGVhdCB0b3A7XHJcbiAgICAgICAgaGVpZ2h0OiAyNjBweDtcclxuICAgIH1cclxuICAgIGltZ3tcclxuICAgICAgICB3aWR0aDoxMDAlO1xyXG4gICAgfVxyXG4gICAgLnNsaWRle3Bvc2l0aW9uOiByZWxhdGl2ZTttYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gODBweCk7bWluLWhlaWdodDo2MDBweDtvdmVyZmxvdzpoaWRkZW47aGVpZ2h0OjEwMHZoO1xyXG4gICAgICAgIGltZ3tcclxuICAgICAgICAgICAgbWF4LXdpZHRoOm5vbmU7bWluLWhlaWdodDoxMDAlO21pbi13aWR0aDoxMDAlO3dpZHRoOmF1dG87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLmNhcHRpb257XHJcbiAgICAgICAgd2lkdGg6ODAlO21hcmdpbjphdXRvO2hlaWdodDogMTcwcHg7cG9zaXRpb246IGFic29sdXRlO21hcmdpbjphdXRvO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6IDE7Y29sb3I6I0ZGRjtcclxuICAgICAgICBoMXttYXJnaW4tYm90dG9tOjIwcHg7fVxyXG4gICAgICAgIHB7Zm9udC1zaXplOjIwcHg7bGluZS1oZWlnaHQ6MzJweDt9XHJcbiAgICB9XHJcbiAgICAuc2xpY2stZG90c3tcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7d2lkdGg6MTAwJTtoZWlnaHQ6MTJweDtwb3NpdGlvbjogYWJzb2x1dGU7Ym90dG9tOiA1MHB4O3RleHQtYWxpZ246Y2VudGVyOyB6LWluZGV4OiAxO1xyXG4gICAgICAgIGxpe2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOnRvcDttYXJnaW46MCAxNXB4O31cclxuICAgICAgICBidXR0b257XHJcbiAgICAgICAgICAgIHdpZHRoOjEwcHg7aGVpZ2h0OjEwcHg7ZGlzcGxheTpibG9jaztib3JkZXI6MXB4IHNvbGlkICMwMDA7QGluY2x1ZGUgYm9yZGVyUmFkaXVzKDEwMCUpO3BhZGRpbmc6MDt0ZXh0LWluZGVudDotOTk5OTlweDtcclxuICAgICAgICAgICAgYmFja2dyb3VuZDpub25lO2N1cnNvcjpwb2ludGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgICAuc2xpY2stYWN0aXZlIGJ1dHRvbntcclxuICAgICAgICAgICAgYmFja2dyb3VuZDojMDAwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuLmhvbWV7XHJcbiAgICBwYWRkaW5nOjIwMHB4IDA7cG9zaXRpb246cmVsYXRpdmU7XHJcbiAgICBoMnttYXJnaW4tYm90dG9tOjUwcHg7dGV4dC1hbGlnbjpjZW50ZXJ9XHJcbiAgICBwe2ZvbnQtc2l6ZToyMHB4O2xpbmUtaGVpZ2h0OjMycHg7bWFyZ2luLWJvdHRvbTo1MHB4O31cclxuICAgIC50cmlnZ2VyLWFuaW17XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO3RvcDowO2JvdHRvbTowO2hlaWdodDoxcHg7bWFyZ2luOmF1dG87d2lkdGg6MTAwJTtcclxuICAgIH1cclxufVxyXG5cclxuLmhvbWUtdGFnbGluZXtcclxuICAgIHBhZGRpbmc6MjAwcHggMDt0ZXh0LWFsaWduOmNlbnRlcjtcclxuXHJcbn1cclxuXHJcbi5ob21lLXByb2R1Y3R7XHJcbiAgICBwYWRkaW5nOjEwMHB4IDA7XHJcbiAgICAmLm5vYmZye1xyXG4gICAgICAgICY6YWZ0ZXIsJjpiZWZvcmV7IGRpc3BsYXk6bm9uZTsgfVxyXG4gICAgfVxyXG4gICAgJjpiZWZvcmV7XHJcbiAgICAgICAgYmFja2dyb3VuZDojRjVGN0YxO2NvbnRlbnQ6Jyc7cG9zaXRpb246IGFic29sdXRlO3RvcDowO2JvdHRvbTowO3JpZ2h0OjYwcHg7bGVmdDo2MHB4OyBAaW5jbHVkZSBib3JkZXJSYWRpdXMoMjBweCk7XHJcbiAgICB9XHJcbiAgICAmOmFmdGVye1xyXG4gICAgICAgIGNvbnRlbnQ6Jyc7YmFja2dyb3VuZDp1cmwoLi4vaW1hZ2VzL21hdGVyaWFsL2Nvcm5lci1sZWFmLnBuZykgbm8tcmVwZWF0O3dpZHRoOjE2NXB4O2hlaWdodDoxMjhweDtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ym90dG9tOi0zMHB4O3JpZ2h0Oi0wcHg7XHJcbiAgICB9XHJcbiAgICAud3JhcHBlcntwb3NpdGlvbjogcmVsYXRpdmU7bWFyZ2luOjAgYXV0bzttYXgtd2lkdGg6MTI0MHB4O3dpZHRoOmF1dG87fVxyXG5cclxuICAgIC5saXN0LXByb2R1Y3R7XHJcbiAgICAgICAgLmJveHtcclxuICAgICAgICAgICAgd2lkdGg6MzAuMzMlO2Zsb2F0OmxlZnQ7dGV4dC1hbGlnbjpjZW50ZXI7QGluY2x1ZGUgYm94U2l6aW5nKGJvcmRlci1ib3gpO21hcmdpbjowIDEuNSU7cG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgICBAaW5jbHVkZSBib3JkZXJSYWRpdXMoMTBweCk7QGluY2x1ZGUgdHJhbnNpdGlvbigwLjJzIGVhc2Utb3V0IGFsbCk7cGFkZGluZy1ib3R0b206NTBweDsgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgICAgICAgLmltYWdle1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OjM5MHB4O3Bvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgICAgICBpbWd7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjMwcHg7bGVmdDowO3JpZ2h0OjA7bWFyZ2luOmF1dG87bWF4LXdpZHRoOjEwMCV9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaDN7bWFyZ2luLWJvdHRvbTozMHB4O2NvbG9yOiMxMjVCNDA7fVxyXG4gICAgICAgICAgICBwe2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjIwcHg7bWF4LXdpZHRoOjI1MHB4O21hcmdpbjphdXRvIGF1dG8gMjBweDt9XHJcbiAgICAgICAgICAgIC5idXR0b257cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOi01MHB4O2xlZnQ6MDtyaWdodDowO21hcmdpbjphdXRvO3dpZHRoOjE4MHB4O3BhZGRpbmc6MCAyMHB4O29wYWNpdHk6MDt2aXNpYmlsaXR5OmhpZGRlbjtcclxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oMC4zcyAkZWFzZSBhbGwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICY6aG92ZXJ7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiNGRkY7QGluY2x1ZGUgYm94U2hhZG93KDBweCAwcHggMTBweCByZ2JhKDAsMCwwLC4xKSk7IG92ZXJmbG93OiB2aXNpYmxlO1xyXG4gICAgICAgICAgICAgICAgLmJ1dHRvbntcclxuICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OnZpc2libGU7Ym90dG9tOi0yNnB4O29wYWNpdHk6MTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAmOmFmdGVye0BleHRlbmQgLmFmdGVyLWNsZWFyfVxyXG4gICAgfVxyXG59XHJcblxyXG4uaG9tZS1qb3VybmFse1xyXG4gICAgICYubWlkZGxle1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAmOmJlZm9yZXtcclxuICAgICAgICAgICAgY29udGVudDonJztiYWNrZ3JvdW5kOnVybCguLi9pbWFnZXMvbWF0ZXJpYWwvY29ybmVyLWxlYWYucG5nKSBuby1yZXBlYXQ7d2lkdGg6MTY1cHg7aGVpZ2h0OjEyOHB4O1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ym90dG9tOjBweDsgbGVmdDotMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgICAubGlzdC1qb3VybmFse1xyXG4gICAgICAgICAgICAuYm94eyBtYXJnaW4tYm90dG9tOiAxMDBweDsgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC53cmFwcGVye1xyXG4gICAgICAgIHdpZHRoOjExOTBweDttYXJnaW46YXV0bztcclxuICAgIH1cclxuICAgIC5saXN0LWpvdXJuYWx7XHJcbiAgICAgICAgbWFyZ2luOjAgMCA4MHB4IDA7XHJcbiAgICAgICAgLmJveHtcclxuICAgICAgICAgICAgd2lkdGg6MzIlO21hcmdpbi1yaWdodDoyJTtmbG9hdDpsZWZ0O1xyXG4gICAgICAgICAgICAmOm50aC1vZi10eXBlKDNuKXttYXJnaW4tcmlnaHQ6MDt9XHJcbiAgICAgICAgICAgIC5pbWFnZXtcclxuICAgICAgICAgICAgICAgIG92ZXJmbG93OmhpZGRlbjtoZWlnaHQ6NDIwcHg7XHJcbiAgICAgICAgICAgICAgICBpbWd7QGluY2x1ZGUgdHJhbnNpdGlvbigwLjNzICRlYXNlIGFsbCk7ZGlzcGxheTpibG9jazttaW4taGVpZ2h0OjEwMCU7bWluLXdpZHRoOjEwMCU7bWF4LXdpZHRoOm5vbmU7fVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGgze21hcmdpbi10b3A6MzBweDt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjAgMzBweDtjb2xvcjojNDQ0O31cclxuICAgICAgICAgICAgaDZ7IHRleHQtYWxpZ246IGNlbnRlcjsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogIzgyQTUzQzsgcGFkZGluZzoyNXB4IDMwcHggMDsgfVxyXG4gICAgICAgICAgICAmOmhvdmVye1xyXG4gICAgICAgICAgICAgICAgLmltYWdlIGltZ3tcclxuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0oc2NhbGUoMS4xKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgJjphZnRlcntAZXh0ZW5kIC5hZnRlci1jbGVhcn1cclxuICAgIH1cclxufVxyXG5cclxuLmhvbWUtYnJhbmR7XHJcbiAgICBwYWRkaW5nLXRvcDowO3RleHQtYWxpZ246Y2VudGVyO1xyXG4gICAgLndyYXBwZXJ7XHJcbiAgICAgICAgd2lkdGg6MTE5MHB4O21hcmdpbjphdXRvO1xyXG4gICAgfVxyXG4gICAgcHttYXJnaW4tYm90dG9tOjYwcHg7fVxyXG4gICAgLmxpc3QtYnJhbmR7XHJcbiAgICAgICAgbWFyZ2luOjBweCAtMjBweCA4MHB4IC0yMHB4O1xyXG4gICAgICAgIC5ib3h7XHJcbiAgICAgICAgICAgIHdpZHRoOjI1JTtmbG9hdDpsZWZ0OyBwYWRkaW5nOiAwcHggMjBweDsgQGluY2x1ZGUgYm94U2l6aW5nKGJvcmRlci1ib3gpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAmOmFmdGVye0BleHRlbmQgLmFmdGVyLWNsZWFyfVxyXG4gICAgfVxyXG59XHJcblxyXG4uZS1jb21tZXJjZXtcclxuICAgIHBhZGRpbmc6NzBweCAwIDEwMHB4O2JhY2tncm91bmQ6I0U5RTlFOTt0ZXh0LWFsaWduOmNlbnRlcjtcclxuICAgIC5saXN0LWltYWdle1xyXG4gICAgICAgIGF7bWFyZ2luOjAgMzBweDt2ZXJ0aWNhbC1hbGlnbjpib3R0b207ZGlzcGxheTppbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgICAgIGltZ3tmaWx0ZXI6Z3JheXNjYWxlKDEwMCUpO31cclxuICAgICAgICAgICAgJjpob3ZlciBpbWd7ZmlsdGVyOmdyYXlzY2FsZSgwKTt9XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxufVxyXG5cclxuIiwiQGltcG9ydCBcInNhc3MtbGliXCI7XHJcblxyXG4uY29udGFpbmVyLWxlYWZ7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO1xyXG4gICAgLmxlYWZ7XHJcbiAgICAgICAgcG9zaXRpb246YWJzb2x1dGU7dG9wOi0xMzBweDt6LWluZGV4OiAxO1xyXG4gICAgICAgICYubGVhZi0xe1xyXG4gICAgICAgICAgICAvLyB0b3A6LTQwMHB4O1xyXG4gICAgICAgICAgICBsZWZ0OjQ0JTtcclxuICAgICAgICAgICAgd2lkdGg6OTRweDtcclxuICAgICAgICAgICAgaGVpZ2h0Ojk3cHg7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6dXJsKC4uL2ltYWdlcy9tYXRlcmlhbC9sZWFmLTEucG5nKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgICAmLmxlYWYtMntcclxuICAgICAgICAgICAgbGVmdDo4JTtcclxuICAgICAgICAgICAgd2lkdGg6OTlweDtcclxuICAgICAgICAgICAgaGVpZ2h0OjExMnB4O1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOnVybCguLi9pbWFnZXMvbWF0ZXJpYWwvbGVhZi0yLnBuZykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgJi5sZWFmLTN7XHJcbiAgICAgICAgICAgIC8vIHRvcDotODAwcHg7XHJcbiAgICAgICAgICAgIGxlZnQ6MjAlO1xyXG4gICAgICAgICAgICB3aWR0aDo4OHB4O1xyXG4gICAgICAgICAgICBoZWlnaHQ6MTA0cHg7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6dXJsKC4uL2ltYWdlcy9tYXRlcmlhbC9sZWFmLTMucG5nKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgICAmLmxlYWYtNHtcclxuICAgICAgICAgICAgLy8gdG9wOi00NDBweDtcclxuICAgICAgICAgICAgbGVmdDozMSU7XHJcbiAgICAgICAgICAgIHdpZHRoOjg4cHg7XHJcbiAgICAgICAgICAgIGhlaWdodDoxMDhweDtcclxuICAgICAgICAgICAgYmFja2dyb3VuZDp1cmwoLi4vaW1hZ2VzL21hdGVyaWFsL2xlYWYtNC5wbmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICYubGVhZi01e1xyXG4gICAgICAgICAgICAvLyB0b3A6LTU1MHB4O1xyXG4gICAgICAgICAgICBsZWZ0OjU1JTtcclxuICAgICAgICAgICAgd2lkdGg6NzhweDtcclxuICAgICAgICAgICAgaGVpZ2h0Ojc2cHg7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6dXJsKC4uL2ltYWdlcy9tYXRlcmlhbC9sZWFmLTUucG5nKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgICAmLmxlYWYtNntcclxuICAgICAgICAgICAgLy8gdG9wOi03MDBweDtcclxuICAgICAgICAgICAgbGVmdDo2OSU7XHJcbiAgICAgICAgICAgIHdpZHRoOjE0MnB4O1xyXG4gICAgICAgICAgICBoZWlnaHQ6MTU2cHg7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6dXJsKC4uL2ltYWdlcy9tYXRlcmlhbC9sZWFmLTYucG5nKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgICAmLmxlYWYtN3tcclxuICAgICAgICAgICAgLy8gdG9wOi03NTBweDtcclxuICAgICAgICAgICAgbGVmdDo4NiU7XHJcbiAgICAgICAgICAgIHdpZHRoOjE2MnB4O1xyXG4gICAgICAgICAgICBoZWlnaHQ6MTQxcHg7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6dXJsKC4uL2ltYWdlcy9tYXRlcmlhbC9sZWFmLTcucG5nKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICYuYWJvdXR7XHJcbiAgICAgICAgJjpiZWZvcmUsJjphZnRlcnsgaGVpZ2h0OjNyZW07IH1cclxuICAgIH1cclxuXHJcbiAgICAmOmJlZm9yZXtcclxuICAgICAgICBoZWlnaHQ6Ny4ycmVtO3dpZHRoOjEwMCU7cG9zaXRpb246IGFic29sdXRlO3RvcDotMXB4O2xlZnQ6MDtjb250ZW50OlwiXCI7ei1pbmRleDogOTtcclxuICAgICAgICBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sd2hpdGUgMzUlLHJnYmEoMjU1LDI1NSwyNTUsMCkpO1xyXG4gICAgfVxyXG5cclxuICAgICY6YWZ0ZXJ7XHJcbiAgICAgICAgaGVpZ2h0OjguMnJlbTt3aWR0aDoxMDAlO3Bvc2l0aW9uOiBhYnNvbHV0ZTtib3R0b206LTFweDtsZWZ0OjA7Y29udGVudDpcIlwiO3otaW5kZXg6IDk7XHJcbiAgICAgICAgdHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpO1xyXG4gICAgICAgIGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSx3aGl0ZSAzNSUscmdiYSgyNTUsMjU1LDI1NSwwKSk7XHJcbiAgICB9XHJcblxyXG59Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztnR0FFZ0c7QUNGaEc7Ozs7Z0dBSWdHO0FBRWhHLDZDQUE2QztBQWtEN0MsQUFBQSxTQUFTLENBQUE7RUFBQyxVQUFVLEVBQUMsaUJBQWlCO0NBQUc7O0FBQ3pDLEFBQUEsT0FBTyxDQUFBO0VBQUMsVUFBVSxFQUFDLGVBQWU7Q0FBRzs7QUFDckMsQUFBQSxRQUFR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 */

.pagination {
    display: flex;
    justify-content: center; /* agar di tengah */
    gap: 6px; /* spasi antar link */
    padding: 10px 0;
    list-style: none;
    margin-bottom:10px;
}

/* Styling link page */
.pagination a,
.pagination span {
    padding: 8px 12px;
    text-decoration: none;
    border: 1px solid #ddd;
    color: #333;
    font-size: 14px;
    border-radius: 4px;
    transition: background-color 0.3s, color 0.3s;
}

/* Style untuk page aktif */
.pagination .active span,
.pagination .active a {
    background-color: #000;
    color: white;
    border-color: #000;
}

/* Hover effect untuk link */
.pagination a:hover {
    background-color: #f0f0f0;
    color: #000;
}

.alert {
    position: relative;
    padding: 12px 16px;
    margin-bottom: 16px;
    border: 1px solid transparent;
    border-radius: 6px;
    font-size: 14px;
    display: flex;
    align-items: center;
    gap: 10px;
    animation: fadeIn 0.3s ease-in-out;
}

/* ICON */
.alert-icon {
    font-weight: bold;
    font-size: 16px;
}

/* CLOSE BUTTON */
.alert-close {
    margin-left: auto;
    background: none;
    border: none;
    font-size: 18px;
    cursor: pointer;
    color: inherit;
}

/* SUCCESS */
.alert-success {
    color: #0f5132;
    background-color: #d1e7dd;
    border-color: #badbcc;
}

/* ERROR */
.alert-danger {
    color: #842029;
    background-color: #f8d7da;
    border-color: #f5c2c7;
}

/* WARNING */
.alert-warning {
    color: #664d03;
    background-color: #fff3cd;
    border-color: #ffecb5;
}

/* INFO */
.alert-info {
    color: #055160;
    background-color: #cff4fc;
    border-color: #b6effb;
}

/* ANIMATION */
@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(-5px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.news-content ol {
    list-style: decimal;
    padding-left: 20px;
    margin-bottom: 1em;
}

.news-content blockquote {
    border-left: 4px solid #3490dc;
    padding: 10px 20px;
    margin: 20px 0;
    background-color: #f9f9f9;
    font-style: italic;
    color: #555;
    quotes: "“" "”" "‘" "’"; 
}

.news-content blockquote:before {
    content: open-quote;
}

.news-content blockquote:after {
    content: close-quote;
}