/* ====================================*/
/* ====================================*/
/* ====================================*/
/* ====================================*/
/* ====================================*/
/* ====================================*/
/* ====================================*/
/* ====================================*/
/* ====================================*/
/* ====================================*/
/* ====================================*/
/* ====================================*/
/* ====================================*/
/* ====================================*/
/* ====================================*/
/* ====================================*/
/* ====================================*/
/* ====================================*/
/* ====================================*/
/* ====================================*/
/* ====================================*/
/* ====================================*/
/* ====================================*/
/* ====================================*/
.form__control-select, .form__control {
  padding-top: 0;
  padding-left: 0;
  padding-right: 0;
  padding-bottom: 0;
}
.form__control-select:not(.form__control--textarea), .form__control:not(.form__control--textarea) {
  border-top: none;
  border-left: none;
  border-right: none;
}
.form__control-select, .form__control {
  border-bottom: 1px solid;
  background-color: transparent;
  display: block;
  width: 100%;
  border-color: #c7c7c8;
  transition: border-color 0.21s;
}
.form__control-select select, .form__control {
  outline: none;
}
.form__control-select, .form__control-select select, .form__control-select::before, .form__control {
  line-height: 1.5625;
  font-weight: 400;
}
.form__control-select:not(.form__control--textarea), .form__control-select select:not(.form__control--textarea), .form__control-select::before:not(.form__control--textarea), .form__control:not(.form__control--textarea) {
  padding: 0px 20px 7px 0px;
}
.form__control--textarea {
  min-height: 110px;
  padding: 7px 20px 7px 11px;
}
.form__control-select {
  position: relative;
}
.form__control-select::before {
  content: ".";
  opacity: 0;
  width: 0;
  overflow: hidden;
  z-index: -1;
}
.form__control-select::after {
  content: "";
  position: absolute;
  right: 20px;
  top: 0;
  height: 100%;
  width: 10px;
  background-position: center;
  background-repeat: no-repeat;
  background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iNyIgdmlld0JveD0iMCAwIDEwIDciIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIG9wYWNpdHk9IjAuNSIgZD0iTTUuODEzNzMgNi4zNjA3N0M1LjQxNDkxIDYuOTE5MTIgNC41ODUwOSA2LjkxOTEyIDQuMTg2MjcgNi4zNjA3N0wxLjEyOTQ2IDIuMDgxMjRDMC42NTY2OTMgMS40MTkzNyAxLjEyOTgyIDAuNSAxLjk0MzE5IDAuNUw4LjA1NjgxIDAuNTAwMDAxQzguODcwMTggMC41MDAwMDEgOS4zNDMzMSAxLjQxOTM3IDguODcwNTQgMi4wODEyNEw1LjgxMzczIDYuMzYwNzdaIiBmaWxsPSIjMjAyMDIwIi8+Cjwvc3ZnPgo=");
}
.form__control-select select {
  position: absolute;
  height: 100%;
  width: 100%;
  left: 0;
  top: 0;
  border: none;
  background: none;
  z-index: 1;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  cursor: pointer;
}
.form__control-select select:has(option:disabled:checked) {
  opacity: 0.5;
}
.form__control::placeholder {
  color: #55565a;
  opacity: 1;
  text-transform: uppercase;
  transition: opacity 0.21s;
}
.form__control:focus::placeholder {
  opacity: 0;
}
.form__control--invalid:not(.form__control--valid) ~ .form__control-label:not(.form__control-label--invalid) {
  display: none;
}
.form__control:-webkit-autofill, .form__control:-webkit-autofill:hover, .form__control:-webkit-autofill:focus, .form__control:autofill, .form__control:autofill:hover, .form__control:autofill:focus {
  -webkit-box-shadow: 0 0 0px 1000px transparent inset;
  transition: background-color 5000s ease-in-out 0s;
}
.form__group-checkbox {
  display: flex;
  align-items: start;
}
.form__group-radio {
  display: flex;
  align-items: start;
}
.form__control-radio:not(:checked) + .form__control-radio-label {
  cursor: pointer;
}
.form__group {
  display: flex;
  flex-wrap: wrap;
  position: relative;
  width: 100%;
}
.form__group:not(.form__group--checkbox-line):not(.form__group--btn):not(.form__group--margin-bottom-none) {
  margin-bottom: 26px;
}
@media (min-width: 1201px) {
  .form__group-inline-input--margin-bottom-none .form__group {
    margin-bottom: 0 !important;
  }
}
.form__group label {
  cursor: pointer;
}
.form__group label.form__control--invalid {
  color: #e63816;
}
.form__group--label-before label {
  order: 1;
}
.form__group--btn:not(.form__group--margin-bottom-none) {
  margin-bottom: 10px;
}
.form__group--margin-bottom-none {
  margin-bottom: 0;
}
.form__group--checkbox-line {
  align-items: flex-start;
  position: relative;
}
.form__group .btn {
  width: 100%;
}
@media (min-width: 601px) {
  .form__group-inline-input .form__group {
    width: calc(50% - 15px);
  }
}
@media (max-width: 600px) {
  .form__group-inline-input:not(.form__group-inline-input--mobile-none) .form__group {
    width: calc(50% - 15px);
  }
}
.form__group--center {
  text-align: center;
  justify-content: center;
}
.form__control-label--invalid {
  color: #e63816;
}
.form__control-checkbox-checkbox:not(.form-control--invalid) ~ label.form-control--invalid {
  display: none !important;
}
.form__quantity {
  -webkit-touch-callout: none; /* iOS Safari */
  -webkit-user-select: none; /* Chrome/Safari/Opera */
  -khtml-user-select: none; /* Konqueror */
  -moz-user-select: none; /* Firefox */
  -ms-user-select: none; /* Internet Explorer/Edge */
  user-select: none;
  display: inline-block;
}
.form__quantity--red {
  background-color: #e63816;
  border-color: #e63816;
}
.form__group-inline:has(.btn:hover) .form__quantity--red {
  background-color: transparent;
}
.form__control-select-multiple + .ms-options-wrap > button, .form__control-select-multiple + .ms-options-wrap > button:focus {
  font-size: 1rem;
  line-height: 1.375;
}
.form__control-select-multiple + .ms-options-wrap > .ms-options input[type=checkbox] {
  display: none;
}
@media (min-width: 601px) {
  .form__group-inline-input {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
  }
}
@media (max-width: 600px) {
  .form__group-inline-input:not(.form__group-inline-input--mobile-none) {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
  }
}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl92YXJpYWJsZXMuc2NzcyIsImZvcm0uc2NzcyIsIl9mdW5jdGlvbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQTZDQTtBQUtBO0FBSUE7QUFzQkE7QUFVQTtBQXRGQTtBQTZDQTtBQUtBO0FBSUE7QUFzQkE7QUFVQTtBQXRGQTtBQTZDQTtBQUtBO0FBSUE7QUFzQkE7QUFVQTtBQXRGQTtBQTZDQTtBQUtBO0FBSUE7QUFzQkE7QUFVQTtBQy9FSTtFQUdJO0VBQ0E7RUFDQTtFQUNBOztBQUdBO0VBQ0k7RUFDQTtFQUNBOztBQVpSO0VBZ0JJO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsY0RQQztFQ1FEOztBQUdKO0VBRUk7O0FBR0o7RUFJSTtFQUNBOztBQUVBO0VBQ0k7O0FBWVI7RUFDSTtFQUNBOztBQUtKO0VBQ0k7O0FBRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdKO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0k7O0FBZ0JSO0VBQ0ksT0RsSEM7RUNtSEQ7RUFDQTtFQUNBOztBQUdKO0VBQ0k7O0FBUUE7RUFFSTs7QUFJUjtFQU1JO0VBQ0E7O0FBTVI7RUFDSTtFQUNBOztBQUtKO0VBQ0k7RUFDQTs7QUFnQkE7RUFDSTs7QUFNUjtFQUNJO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBR0k7O0FBSUE7RUFESjtJQUVROzs7QUFJUjtFQUNJOztBQUVBO0VBQ0ksT0RyTVY7O0FDME1NO0VBQ0k7O0FBT0o7RUFDSTs7QUFNUjtFQUNJOztBQUtKO0VBQ0k7RUFDQTs7QUFPSjtFQUNJOztBQUlBO0VBREo7SUFFUTs7O0FBTUo7RUFGSjtJQUdROzs7QUFJUjtFQUNJO0VBQ0E7O0FBMEJSO0VBQ0ksT0R0UkY7O0FDK1hFO0VBQ0k7O0FBTVI7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFVSjtFQUNJLGtCRHhaRjtFQ3laRSxjRHpaRjs7QUMyWkU7RUFDSTs7QUFtREE7RUM3Y1I7RUFDQTs7QURxZVk7RUFDSTs7QUFtRVo7RUFISjtJQUlRO0lBQ0E7SUFDQTs7O0FBSUE7RUFESjtJQUVRO0lBQ0E7SUFDQSIsInNvdXJjZXNDb250ZW50IjpbIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cbiRmb250LXNpemUtYmFzZTogMXJlbSAhZGVmYXVsdDsgLy8gQXNzdW1lcyB0aGUgYnJvd3NlciBkZWZhdWx0LCB0eXBpY2FsbHkgYDE2cHhgXG4kbGluZS1oZWlnaHQtYmFzZTogMS44O1xuJGZvbnQtc2l6ZS1tYWluOiAxNjtcbiRjb2xvci1iYXNlOiAjNTU1NjVhO1xuJGJhY2tncm91bmQtYmFzZS1jb2xvcjogI2Y3ZjdmNztcblxuJHByb2R1Y3QtZ3JheS1jb2xvcjogI2U2ZTZlNjtcblxuJHJlZDogI2U2MzgxNjtcblxuXG4kZXJyb3I6ICRyZWQ7XG4kc3VjY2VzczogIzI4YTc0NTtcblxuXG4kZm9ybS1ib3JkZXItcmFkaXVzOiAzMnB4O1xuXG4kZ3JheS0xOiAjNjU2NTY1O1xuJGdyYXktMjogI2M3YzdjODtcbiRncmF5LTM6ICM5ZDlkOWQ7XG4kZ3JheS00OiAjYTZhN2E5O1xuXG5cbiRibHVlLTE6ICMwMDk1ZDY7XG5cbiR3aGl0ZTogI2ZmZjtcblxuXG5cblxuXG4kYmFja2dyb3VuZC1iYXNlLWNvbG9yOiAjZjlmOWY5O1xuLy8kYmx1ZS0xOiAjMDA3N0FCO1xuLy8kZ3JheS00OiAjNkM2RDZFO1xuLy8kcmVkOiAjQ0YzMjE0O1xuXG4kY29udHJhc3QtYmx1ZS0xOiAjMDA3N0FCO1xuJGNvbnRyYXN0LWdyYXktMzogIzZFNkU2RTtcbiRjb250cmFzdC1ncmF5LTQ6ICM2QzZENkU7XG4kY29udHJhc3QtcmVkOiAjQ0YzMjE0O1xuXG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuJGRpc3BsYXlzOiBub25lLCBpbmxpbmUsIGlubGluZS1ibG9jaywgYmxvY2ssIHRhYmxlLCB0YWJsZS1yb3csIHRhYmxlLWNlbGwsIGZsZXgsXG5pbmxpbmUtZmxleCAhZGVmYXVsdDtcblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuJG1haW4tY29udGFpbmVyLW1heC13aWRodDogMTY3MnB4O1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG4kbWVkaWEteHhsOiAxOTIwcHg7IC8vIGZ1bGwgaGRcbiRtZWRpYS14bDogMTUwMHB4OyAvLyBsYXB0b3AgPFxuJG1lZGlhLW1kOiAxMjAwcHg7IC8vIHRhYmxldCA8XG4kbWVkaWEtc206IDYwMHB4OyAvLyBtb2JpbGUgPFxuXG4kZm9udC1tZWRpYS14eGw6IDE5MjBweDsgLy8gZnVsbCBoZFxuJGZvbnQtbWVkaWEteGw6IDE0MjBweDsgLy8gbGFwdG9wIDxcbiRmb250LW1lZGlhLW1kOiA3NjhweDsgLy8gdGFibGV0IDxcbiRmb250LW1lZGlhLXNtOiAzNzVweDsgLy8gbW9iaWxlIDxcblxuJGNvbnRhaW5lci1wYWRkaW5nLXh4bC1sLXI6IDMycHg7XG4kY29udGFpbmVyLXBhZGRpbmcteGwtbC1yOiAzMnB4O1xuJGNvbnRhaW5lci1wYWRkaW5nLW1kLWwtcjogMzJweDtcbiRjb250YWluZXItcGFkZGluZy1zbS1sLXI6IDE1cHg7XG5cbiRjb250YWluZXIteHhsOiAkbWFpbi1jb250YWluZXItbWF4LXdpZGh0ICsgJGNvbnRhaW5lci1wYWRkaW5nLXh4bC1sLXIgKiAyO1xuJGNvbnRhaW5lci14bDogJG1lZGlhLXhsIC0gJGNvbnRhaW5lci1wYWRkaW5nLXhsLWwtciAqIDI7XG4kY29udGFpbmVyLW1kOiAkbWVkaWEtbWQgLSAkY29udGFpbmVyLXBhZGRpbmctbWQtbC1yICogMjtcbiRjb250YWluZXItc206ICRtZWRpYS1zbSAtICRjb250YWluZXItcGFkZGluZy1zbS1sLXIgKiAyO1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG4vLyDQlNCw0L3QvdGL0LUg0LTQu9GPINCx0LvQvtC60LAg0LPQsNC70LXRgNC10LlcblxuJGdhbGxlcnlOYXZCdXR0b25XaWR0aDogMTYwcHg7XG4kZ2FsbGVyeUl0ZW1QYWRkaW5nOiAyMnB4O1xuJGdhbGxlcnlXaWR0aEFiczogMTQ2OHB4O1xuJGdhbGxlcnlXaWR0aEltZ0hvcjogNzEycHg7XG4kZ2FsbGVyeVdpZHRoSW1nVmVyOiAzMzRweDtcblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cbiIsIkBpbXBvcnQgXCJib290c3RyYXAtZnVuY3Rpb25zXCI7XG5AaW1wb3J0IFwiYm9vdHN0cmFwLXZhcmlhYmxlc1wiO1xuQGltcG9ydCBcInZhcmlhYmxlc1wiO1xuQGltcG9ydCBcImZ1bmN0aW9uc1wiO1xuQGltcG9ydCBcImZvbnQtc3R5bGVcIjtcblxuLmZvcm0ge1xuICAgICZfX2NvbnRyb2wtc2VsZWN0LFxuICAgICZfX2NvbnRyb2wge1xuXG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuXG5cbiAgICAgICAgJjpub3QoLmZvcm1fX2NvbnRyb2wtLXRleHRhcmVhKSB7XG4gICAgICAgICAgICBib3JkZXItdG9wOiBub25lO1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkZ3JheS0yO1xuICAgICAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4yMXM7XG4gICAgfVxuXG4gICAgJl9fY29udHJvbC1zZWxlY3Qgc2VsZWN0LFxuICAgICZfX2NvbnRyb2wge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgIH1cblxuICAgICZfX2NvbnRyb2wtc2VsZWN0LFxuICAgICZfX2NvbnRyb2wtc2VsZWN0IHNlbGVjdCxcbiAgICAmX19jb250cm9sLXNlbGVjdDo6YmVmb3JlLFxuICAgICZfX2NvbnRyb2wge1xuICAgICAgICBsaW5lLWhlaWdodDogKDI1LzE2KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcblxuICAgICAgICAmOm5vdCguZm9ybV9fY29udHJvbC0tdGV4dGFyZWEpIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDBweCAyMHB4IDdweCAwcHg7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1lZGlhLW1kICsgMXB4KSB7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogJG1lZGlhLW1kKSB7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAuZm9ybV9fY29udHJvbC0tdGV4dGFyZWFcblxuICAgICZfX2NvbnRyb2wtLXRleHRhcmVhIHtcbiAgICAgICAgbWluLWhlaWdodDogMTEwcHg7XG4gICAgICAgIHBhZGRpbmc6IDdweCAyMHB4IDdweCAxMXB4O1xuICAgIH1cblxuICAgIC8vIC5mb3JtX19jb250cm9sLXNlbGVjdFxuXG4gICAgJl9fY29udHJvbC1zZWxlY3Qge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiLlwiO1xuICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgIHdpZHRoOiAwO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIHotaW5kZXg6IC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHJpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgd2lkdGg6IDEwcHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCM2FXUjBhRDBpTVRBaUlHaGxhV2RvZEQwaU55SWdkbWxsZDBKdmVEMGlNQ0F3SURFd0lEY2lJR1pwYkd3OUltNXZibVVpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUkrQ2p4d1lYUm9JRzl3WVdOcGRIazlJakF1TlNJZ1pEMGlUVFV1T0RFek56TWdOaTR6TmpBM04wTTFMalF4TkRreElEWXVPVEU1TVRJZ05DNDFPRFV3T1NBMkxqa3hPVEV5SURRdU1UZzJNamNnTmk0ek5qQTNOMHd4TGpFeU9UUTJJREl1TURneE1qUkRNQzQyTlRZMk9UTWdNUzQwTVRrek55QXhMakV5T1RneUlEQXVOU0F4TGprME16RTVJREF1TlV3NExqQTFOamd4SURBdU5UQXdNREF4UXpndU9EY3dNVGdnTUM0MU1EQXdNREVnT1M0ek5ETXpNU0F4TGpReE9UTTNJRGd1T0Rjd05UUWdNaTR3T0RFeU5FdzFMamd4TXpjeklEWXVNell3TnpkYUlpQm1hV3hzUFNJak1qQXlNREl3SWk4K0Nqd3ZjM1puUGdvPVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGVjdCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICAgICAgei1pbmRleDogMTtcblxuICAgICAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgICAgICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAgICAgJjpoYXMob3B0aW9uOmRpc2FibGVkOmNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAuZm9ybV9fY29udHJvbFxuXG4gICAgJl9fY29udHJvbCB7XG4gICAgICAgICY6bm90KC5mb3JtX19jb250cm9sLS1pbnZhbGlkKTpob3ZlciB7XG5cbiAgICAgICAgfVxuXG4gICAgICAgICY6bm90KC5mb3JtX19jb250cm9sLS1pbnZhbGlkKTpmb2N1cyB7XG5cbiAgICAgICAgfVxuXG4gICAgICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3ItYmFzZTtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjIxcztcbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXM6OnBsYWNlaG9sZGVyIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAuZm9ybV9fY29udHJvbC0taW52YWxpZFxuXG4gICAgICAgICYtLWludmFsaWQge1xuXG5cbiAgICAgICAgICAgICY6bm90KC5mb3JtX19jb250cm9sLS12YWxpZClcbiAgICAgICAgICAgIH4gLmZvcm1fX2NvbnRyb2wtbGFiZWw6bm90KC5mb3JtX19jb250cm9sLWxhYmVsLS1pbnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6LXdlYmtpdC1hdXRvZmlsbCxcbiAgICAgICAgJjotd2Via2l0LWF1dG9maWxsOmhvdmVyLFxuICAgICAgICAmOi13ZWJraXQtYXV0b2ZpbGw6Zm9jdXMsXG4gICAgICAgICY6YXV0b2ZpbGwsXG4gICAgICAgICY6YXV0b2ZpbGw6aG92ZXIsXG4gICAgICAgICY6YXV0b2ZpbGw6Zm9jdXMge1xuICAgICAgICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMHB4IDEwMDBweCB0cmFuc3BhcmVudCBpbnNldDtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgNTAwMHMgZWFzZS1pbi1vdXQgMHM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAuZm9ybV9fZ3JvdXAtY2hlY2tib3hcblxuICAgICZfX2dyb3VwLWNoZWNrYm94IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgIH1cblxuICAgIC8vIC5mb3JtX19ncm91cC1yYWRpb1xuXG4gICAgJl9fZ3JvdXAtcmFkaW8ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG5cbiAgICAgICAgJjpub3QoOmZpcnN0LWNoaWxkKSB7XG5cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIC5mb3JtX19jb250cm9sLXJhZGlvXG5cbiAgICAmX19jb250cm9sLXJhZGlvIHtcbiAgICB9XG5cbiAgICAvLyAuZm9ybV9fY29udHJvbC1yYWRpby1sYWJlbFxuXG4gICAgJl9fY29udHJvbC1yYWRpby1sYWJlbCB7XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtcmFkaW86bm90KDpjaGVja2VkKSArICYge1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gLmZvcm1fX2dyb3VwXG5cbiAgICAmX19ncm91cCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAmOm5vdCgmLS1jaGVja2JveC1saW5lKTpub3QoLmZvcm1fX2dyb3VwLS1idG4pOm5vdChcbiAgICAgICAgICAgICAgICAuZm9ybV9fZ3JvdXAtLW1hcmdpbi1ib3R0b20tbm9uZVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2dyb3VwLWlubGluZS1pbnB1dC0tbWFyZ2luLWJvdHRvbS1ub25lICYge1xuICAgICAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6ICRtZWRpYS1tZCArIDFweCkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAgICAgJi5mb3JtX19jb250cm9sLS1pbnZhbGlkIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJHJlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYtLWxhYmVsLWJlZm9yZSB7XG4gICAgICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICAgICAgb3JkZXI6IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyAuZm9ybV9fZ3JvdXAtLWJ0blxuXG4gICAgICAgICYtLWJ0biB7XG4gICAgICAgICAgICAmOm5vdCguZm9ybV9fZ3JvdXAtLW1hcmdpbi1ib3R0b20tbm9uZSkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyAuZm9ybV9fZ3JvdXAtLW1hcmdpbi1ib3R0b20tbm9uZVxuXG4gICAgICAgICYtLW1hcmdpbi1ib3R0b20tbm9uZSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gLmZvcm1fX2dyb3VwLS1jaGVja2JveC1saW5lXG5cbiAgICAgICAgJi0tY2hlY2tib3gtbGluZSB7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgJjpoYXMoLmZvcm0tY29udHJvbC1jaGVja2JveF9fY2hlY2tib3guZm9ybS1jb250cm9sLS1pbnZhbGlkKSB7XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5idG4ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybV9fZ3JvdXAtaW5saW5lLWlucHV0ICYge1xuICAgICAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6ICRtZWRpYS1zbSArIDFweCkge1xuICAgICAgICAgICAgICAgIHdpZHRoOiBjYWxjKDUwJSAtIDE1cHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2dyb3VwLWlubGluZS1pbnB1dDpub3QoLmZvcm1fX2dyb3VwLWlubGluZS1pbnB1dC0tbW9iaWxlLW5vbmUpXG4gICAgICAgICYge1xuICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtZWRpYS1zbSkge1xuICAgICAgICAgICAgICAgIHdpZHRoOiBjYWxjKDUwJSAtIDE1cHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi0tY2VudGVyIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gLmZvcm1fX2NvbnRyb2wtbGFiZWxcblxuICAgICZfX2NvbnRyb2wtbGFiZWwge1xuXG4gICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWVkaWEtbWQgKyAxcHgpIHtcbiAgICAgICAgfVxuXG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkbWVkaWEtbWQpIHtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19jb250cm9sOmZvY3VzIH4gJixcbiAgICAgICAgLmZvcm1fX2NvbnRyb2w6bm90KDpwbGFjZWhvbGRlci1zaG93bikgfiAmLFxuICAgICAgICAuZm9ybV9fY29udHJvbC1zZWxlY3Q6aGFzKG9wdGlvbjpkaXNhYmxlZDpub3QoOmNoZWNrZWQpKSB+ICYsXG4gICAgICAgICYuZm9ybV9fY29udHJvbC1sYWJlbC0taW52YWxpZCB7XG5cbiAgICAgICAgICAgICY6bm90KC5mb3JtX19jb250cm9sLWxhYmVsLS1pbnZhbGlkKSB7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAuZm9ybV9fY29udHJvbC1sYWJlbC0taW52YWxpZFxuXG4gICAgJl9fY29udHJvbC1sYWJlbC0taW52YWxpZCB7XG4gICAgICAgIGNvbG9yOiAkcmVkO1xuICAgIH1cblxuICAgIC8vIC5mb3JtX19ncm91cC0tbGFiZWwtYmVmb3JlXG5cbiAgICAmX19ncm91cC0tbGFiZWwtYmVmb3JlIHtcbiAgICB9XG5cbiAgICAvLyAuZm9ybV9fY29udHJvbC1jaGVja2JveFxuXG4gICAgJl9fY29udHJvbC1jaGVja2JveCB7XG4gICAgICAgIC8vbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgLy9kaXNwbGF5OiBmbGV4O1xuICAgICAgICAvL2ZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgLy9wb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgJixcbiAgICAgICAgLmZvcm1fX2dyb3VwICYge1xuICAgICAgICAgICAgLy9saW5lLWhlaWdodDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgICAgICAgICAvL2hlaWdodDogMXB4O1xuICAgICAgICAgICAgLy93aWR0aDogMXB4O1xuICAgICAgICAgICAgLy9vdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgLy9vcGFjaXR5OiAwO1xuICAgICAgICAgICAgLy9wb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAvL2xlZnQ6IDA7XG4gICAgICAgICAgICAvL3JpZ2h0OiAwO1xuICAgICAgICAgICAgLy90b3A6IDA7XG4gICAgICAgICAgICAvL2JvdHRvbTogMDtcbiAgICAgICAgICAgIC8vbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICAgICAgICAvL21hcmdpbi1yaWdodDogYXV0bztcbiAgICAgICAgICAgIC8vbWFyZ2luLXRvcDogYXV0bztcbiAgICAgICAgICAgIC8vbWFyZ2luLWJvdHRvbTogYXV0bztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIC5mb3JtX19jb250cm9sLWNoZWNrYm94LWNvbnRlbnRcblxuICAgICZfX2NvbnRyb2wtY2hlY2tib3gtY29udGVudCB7XG4gICAgICAgIC8vcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAvL2hlaWdodDogMjhweDtcbiAgICAgICAgLy93aWR0aDogMjhweDtcblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAvL3Bvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIC8vdG9wOiAwO1xuICAgICAgICAgICAgLy9sZWZ0OiAwO1xuICAgICAgICAgICAgLy9kaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIC8vd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAvL2hlaWdodDogMTAwJTtcbiAgICAgICAgICAgIC8vY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIC8vYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgIC8vYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcbiAgICAgICAgICAgIC8vYmFja2dyb3VuZC1zaXplOiAxMDAlO1xuICAgICAgICAgICAgLy96LWluZGV4OiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIC8vcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgLy90b3A6IDA7XG4gICAgICAgICAgICAvL2xlZnQ6IDA7XG4gICAgICAgICAgICAvL2Rpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgLy93aWR0aDogMTAwJTtcbiAgICAgICAgICAgIC8vaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgLy9wb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgICAgIC8vY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIC8vdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgICAgICAvL2JhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgLy96LWluZGV4OiAwO1xuICAgICAgICAgICAgLy9ib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgICAgICAvL2JvcmRlcjogMXB4IHNvbGlkO1xuICAgICAgICAgICAgLy9ib3JkZXItY29sb3I6IHJnYmEoMTksIDIwLCAyMSwgMC4zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlucHV0OmNoZWNrZWQgfiAmOjphZnRlciB7XG4gICAgICAgICAgICAvL2JhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgd2lkdGg9JzI4JyBoZWlnaHQ9JzI4JyB2aWV3Qm94PScwIDAgMjggMjgnIGZpbGw9J25vbmUnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NyZWN0IG9wYWNpdHk9JzAuMycgeD0nMC41JyB5PScwLjUnIHdpZHRoPScyNycgaGVpZ2h0PScyNycgcng9JzMuNScgc3Ryb2tlPSclMjMxMzE0MTUnLyUzRSUzQ3BhdGggZmlsbC1ydWxlPSdldmVub2RkJyBjbGlwLXJ1bGU9J2V2ZW5vZGQnIGQ9J00yMC45OTgzIDguMDAwMDJMMTAuMDIzNCAxOC40MjQ2TDYuMDczNjkgMTQuNDc0OScgZmlsbD0nd2hpdGUnLyUzRSUzQ3BhdGggZD0nTTIwLjk5ODMgOC4wMDAwMkwxMC4wMjM0IDE4LjQyNDZMNi4wNzM2OSAxNC40NzQ5JyBzdHJva2U9J2JsYWNrJyBzdHJva2Utd2lkdGg9JzInLyUzRSUzQy9zdmclM0UlMEFcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAuZm9ybV9fY29udHJvbC1jaGVja2JveC1sYWJlbFxuXG4gICAgJl9fY29udHJvbC1jaGVja2JveC1sYWJlbCB7XG4gICAgICAgIC8vQGluY2x1ZGUgRlNMKDE2LCAyNCk7XG4gICAgICAgIC8vbWFyZ2luLWxlZnQ6IDdweDtcbiAgICAgICAgLy9tYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgICAgIC5mb3JtX19ncm91cC0tY2hlY2tib3gtbGluZSAmIHtcbiAgICAgICAgICAgIC8vbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICAgICAgICAvL3dpZHRoOiA5MCU7XG4gICAgICAgICAgICAvL3dpZHRoOiBjYWxjKDEwMCUgLSAzOHB4KTtcbiAgICAgICAgICAgIC8vbWFyZ2luLXRvcDogM3B4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gLmZvcm1fX2NvbnRyb2wtY2hlY2tib3gtY2hlY2tib3hcblxuICAgICZfX2NvbnRyb2wtY2hlY2tib3gtY2hlY2tib3gge1xuICAgICAgICAmLmZvcm0tY29udHJvbC0taW52YWxpZCB+IGxhYmVsLmZvcm0tY29udHJvbC0taW52YWxpZCB7XG4gICAgICAgICAgICAvL3Bvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIC8vYm90dG9tOiAtMjVweDtcbiAgICAgICAgICAgIC8vbGVmdDogMzBweDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6bm90KC5mb3JtLWNvbnRyb2wtLWludmFsaWQpIH4gbGFiZWwuZm9ybS1jb250cm9sLS1pbnZhbGlkIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIC5mb3JtX19xdWFudGl0eVxuXG4gICAgJl9fcXVhbnRpdHkge1xuICAgICAgICAtd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7IC8qIGlPUyBTYWZhcmkgKi9cbiAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgLyogQ2hyb21lL1NhZmFyaS9PcGVyYSAqL1xuICAgICAgICAta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7IC8qIEtvbnF1ZXJvciAqL1xuICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOyAvKiBGaXJlZm94ICovXG4gICAgICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTsgLyogSW50ZXJuZXQgRXhwbG9yZXIvRWRnZSAqL1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG5cbiAgICAgICAgJi5mb3JtX19ncm91cC1pbmxpbmUtZWxlbS0tc2Vjb25kYXJ5IHtcblxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gLmZvcm1fX3F1YW50aXR5LS1yZWRcblxuICAgICZfX3F1YW50aXR5LS1yZWQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcmVkO1xuICAgICAgICBib3JkZXItY29sb3I6ICRyZWQ7XG5cbiAgICAgICAgLmZvcm1fX2dyb3VwLWlubGluZTpoYXMoLmJ0bjpob3ZlcikgJiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIC5mb3JtX19xdWFudGl0eS13cmFwcGVyXG5cbiAgICAmX19xdWFudGl0eS13cmFwcGVyIHtcblxuXG4gICAgICAgIC5mb3JtX19xdWFudGl0eTpub3QoLmZvcm1fX2dyb3VwLWlubGluZS1lbGVtLS1zZWNvbmRhcnkpICYge1xuXG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybV9fZ3JvdXAtaW5saW5lLWVsZW0tLXNlY29uZGFyeSAmIHtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIC5mb3JtX19xdWFudGl0eS1idG5cblxuICAgICZfX3F1YW50aXR5LWJ0biB7XG4gICAgfVxuXG4gICAgLy8gLmZvcm1fX3F1YW50aXR5LWJ0bi0tbWludXNcblxuICAgICZfX3F1YW50aXR5LWJ0bi0tbWludXMge1xuICAgIH1cblxuICAgIC8vIC5mb3JtX19xdWFudGl0eS1pbnB1dFxuXG4gICAgJl9fcXVhbnRpdHktaW5wdXQge1xuXG4gICAgICAgICY6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24sXG4gICAgICAgICY6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24ge1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gLmZvcm1fX3F1YW50aXR5LWJ0bi0tcGx1c1xuXG4gICAgJl9fcXVhbnRpdHktYnRuLS1wbHVzIHtcbiAgICB9XG5cbiAgICAvLyAuZm9ybV9fY29udHJvbC1zZWxlY3QtbXVsdGlwbGVcblxuICAgICZfX2NvbnRyb2wtc2VsZWN0LW11bHRpcGxlIHtcblxuXG4gICAgICAgIG9wdGlvbiB7XG4gICAgICAgIH1cblxuICAgICAgICAmICsgLm1zLW9wdGlvbnMtd3JhcCB7XG5cbiAgICAgICAgICAgICYgPiBidXR0b24sXG4gICAgICAgICAgICAmID4gYnV0dG9uOmZvY3VzIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBGU0woMTYsIDIyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJiA+IGJ1dHRvbiB7XG5cbiAgICAgICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYgPiAubXMtb3B0aW9ucyB7XG5cbiAgICAgICAgICAgICAgICB1bCB7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGkge1xuXG4gICAgICAgICAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICYuc2VsZWN0ZWQ6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAuZm9ybV9fZ3JvdXAtaW5saW5lXG5cbiAgICAmX19ncm91cC1pbmxpbmUge1xuXG4gICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWVkaWEtc20gKyAxcHgpIHtcblxuICAgICAgICB9XG5cblxuICAgIH1cblxuICAgIC8vIC5mb3JtX19ncm91cC1pbmxpbmUtLWlucHV0LWFuZC1idG5cblxuICAgICZfX2dyb3VwLWlubGluZS0taW5wdXQtYW5kLWJ0biB7XG4gICAgICAgICY6bm90KC5mb3JtX19ncm91cC1pbmxpbmUtLW1hcmdpbi1ib3R0b20tbm9uZSkge1xuICAgICAgICB9XG5cbiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6ICRtZWRpYS1zbSArIDFweCkge1xuXG4gICAgICAgICAgICAuYnRuIHtcblxuICAgICAgICAgICAgICAgICY6bm90KC5idG4tLW5vLXdvcmQtdHJhbnNwb3NpdGlvbikge1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkbWVkaWEtc20pIHtcblxuICAgICAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAuZm9ybV9fZ3JvdXAtaW5saW5lLWVsZW0tLW1haW5cblxuICAgICZfX2dyb3VwLWlubGluZS1lbGVtLS1tYWluIHtcbiAgICB9XG5cbiAgICAvLyAuZm9ybV9fZ3JvdXAtaW5saW5lLWVsZW0tLXJpZ2h0XG5cbiAgICAmX19ncm91cC1pbmxpbmUtZWxlbS0tcmlnaHQge1xuICAgIH1cblxuICAgIC8vIC5mb3JtX19ncm91cC1pbmxpbmUtZWxlbS0tbGVmdFxuXG4gICAgJl9fZ3JvdXAtaW5saW5lLWVsZW0tLWxlZnQge1xuICAgIH1cblxuICAgIC8vIC5mb3JtX19ncm91cC1pbmxpbmUtc2Vjb25kYXJ5LS1sZWZ0XG5cbiAgICAmX19ncm91cC1pbmxpbmUtc2Vjb25kYXJ5LS1sZWZ0IHtcbiAgICB9XG5cbiAgICAvLyAuZm9ybV9fZ3JvdXAtaW5saW5lLWlucHV0XG5cbiAgICAmX19ncm91cC1pbmxpbmUtaW5wdXQge1xuXG5cbiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6ICRtZWRpYS1zbSArIDFweCkge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICB9XG5cbiAgICAgICAgJjpub3QoJi0tbW9iaWxlLW5vbmUpIHtcbiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkbWVkaWEtc20pIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBpbXBvcnQgXCJ2YXJpYWJsZXNcIjtcblxuLy8g0J/QtdGA0LXQstC+0LTQuNGC0Ywg0YDQsNC30LzQtdGAINC40Lcg0L/QuNC60YHQtdC70LXQuSDQsiByZW0g0L7RgtC90L7RgdC40YLQtdC70YzQvdC+INCx0LDQt9C+0LLQvtCz0L4g0YDQsNGJ0LzQtdGA0LAg0YjRgNC40YTRgtC+0LIg0LIg0LHRgNCw0YPQt9C10YDQtVxuQGZ1bmN0aW9uIHJlbUZTKCRmb250LXNpemUpIHtcbiAgICAkZm9udC1zaXplLXB4OiAkZm9udC1zaXplICogMXB4O1xuICAgICRmb250LXNpemUtbWFpbi1weDogJGZvbnQtc2l6ZS1tYWluICogMXB4O1xuICAgIEByZXR1cm4gKCRmb250LXNpemUtcHgvJGZvbnQtc2l6ZS1tYWluLXB4KSAqIDFyZW07XG59XG5cbi8vINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINGA0LDQt9C80LXRgNGLINGI0YDQuNGE0YLQsCDQuCDQstGL0YHQvtGC0Ysg0YjRgNC40YTRgtCwXG4vLyBAaW5jbHVkZSBGU0woMjAsIDMyKTtcbkBtaXhpbiBGU0woJGZvbnQtc2l6ZSwgJGZvbnQtbGluZS1oZWlnaHQpIHtcbiAgICBmb250LXNpemU6IHJlbUZTKCRmb250LXNpemUpO1xuICAgIGxpbmUtaGVpZ2h0OiAoJGZvbnQtbGluZS1oZWlnaHQvJGZvbnQtc2l6ZSk7XG59XG5cbkBtaXhpbiBtYXJnaW4tdG9wKCkge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWVkaWEtc20gKyAxcHgpIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMTgwcHg7XG4gICAgfVxuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtZWRpYS1zbSkge1xuICAgICAgICBtYXJnaW4tdG9wOiAxMDBweDtcbiAgICB9XG59XG5cbkBtaXhpbiBtYXJnaW4tYm90dG9tKCkge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWVkaWEtc20gKyAxcHgpIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTgwcHg7XG4gICAgfVxuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtZWRpYS1zbSkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMDBweDtcbiAgICB9XG59XG5cbkBtaXhpbiBtYXJnaW4tdG9wLWJvdHRvbSgpIHtcbiAgICBAaW5jbHVkZSBtYXJnaW4tdG9wKCk7XG4gICAgQGluY2x1ZGUgbWFyZ2luLWJvdHRvbSgpO1xufVxuXG5cbkBmdW5jdGlvbiBzdHJpcC11bml0KCRudW1iZXIpIHtcbiAgICBAaWYgdHlwZS1vZigkbnVtYmVyKSA9PSBcIm51bWJlclwiIGFuZCBub3QgdW5pdGxlc3MoJG51bWJlcikge1xuICAgICAgICBAcmV0dXJuICRudW1iZXIgLyAoJG51bWJlciAqIDAgKyAxKTtcbiAgICB9XG5cbiAgICBAcmV0dXJuICRudW1iZXI7XG59XG5cbkBmdW5jdGlvbiBjYWxjRmx1aWRGb250U2l6ZSgkdy1tYXgsICR3LW1pbiwgJGYtbWF4LCAkZi1taW4sICR1bml0czogcHgpIHtcbiAgICAkZi1taW46IHN0cmlwLXVuaXQoJGYtbWluKTtcbiAgICAkZi1tYXg6IHN0cmlwLXVuaXQoJGYtbWF4KTtcbiAgICAkdy1taW46IHN0cmlwLXVuaXQoJHctbWluKTtcbiAgICAkdy1tYXg6IHN0cmlwLXVuaXQoJHctbWF4KTtcblxuICAgICRrOiAoJGYtbWF4IC0gJGYtbWluKS8gKCR3LW1heCAtICR3LW1pbik7XG4gICAgJGI6ICRmLW1pbiAtICRrICogJHctbWluO1xuXG4gICAgJGI6ICRiICsgJHVuaXRzO1xuXG4gICAgQHJldHVybiBjYWxjKCN7JGt9ICogMTAwdncgKyAjeyRifSk7XG59XG5cbi8vXG5cbkBtaXhpbiBtZWRpYV9mb250X3NpemVfd2lkdGhfX3YyKFxuICAgICRtZWRpYV9tYXgsXG4gICAgJG1lZGlhX21pbixcbiAgICAkZm9udF9uYW1lX21heCxcbiAgICAkZm9udF9uYW1lX21pbixcbiAgICAkaXNfbWVkaWFfbWluXG4pIHtcbiAgICAkbWVkaWFfbWF4OiBzdHJpcC11bml0KCRtZWRpYV9tYXgpO1xuICAgICRtZWRpYV9taW46IHN0cmlwLXVuaXQoJG1lZGlhX21pbik7XG4gICAgJGZvbnRfbmFtZV9tYXg6IHN0cmlwLXVuaXQoJGZvbnRfbmFtZV9tYXgpO1xuICAgICRmb250X25hbWVfbWluOiBzdHJpcC11bml0KCRmb250X25hbWVfbWluKTtcblxuICAgICRrOiAoJGZvbnRfbmFtZV9tYXggLSAkZm9udF9uYW1lX21pbikvICgkbWVkaWFfbWF4IC0gJG1lZGlhX21pbik7XG4gICAgJGI6ICRmb250X25hbWVfbWluIC0gJGsgKiAkbWVkaWFfbWluO1xuXG4gICAgJGI6ICRiIC8gJGZvbnQtc2l6ZS1tYWluICogMXJlbTtcblxuICAgICRtZWRpYV9tYXhfcHg6ICRtZWRpYV9tYXggKiAxcHg7XG5cbiAgICBAaWYgJGlzX21lZGlhX21pbiA9PSAxIHtcbiAgICAgICAgJG1lZGlhX21pbl9weDogJG1lZGlhX21pbiAqIDFweDtcblxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogJG1lZGlhX21heF9weCkgYW5kIChtaW4td2lkdGg6ICRtZWRpYV9taW5fcHgpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogY2FsYygjeyRrfSAqIDEwMHZ3ICsgI3skYn0pO1xuICAgICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkbWVkaWFfbWF4X3B4KSB7XG4gICAgICAgICAgICBmb250LXNpemU6IGNhbGMoI3ska30gKiAxMDB2dyArICN7JGJ9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gQGluY2x1ZGUgbWVkaWFfZm9udF9zaXplX3dpZHRoKDkwMCwgMzIwLCA4MCwgNTgsIDApO1xuQG1peGluIG1lZGlhX2ZvbnRfc2l6ZV93aWR0aChcbiAgICAkbWVkaWFfbWF4LFxuICAgICRtZWRpYV9taW4sXG4gICAgJGZvbnRfbmFtZV9tYXgsXG4gICAgJGZvbnRfbmFtZV9taW4sXG4gICAgJGlzX21pbl9tZWRpYVxuKSB7XG4gICAgJHJhem46ICRmb250X25hbWVfbWF4IC0gJGZvbnRfbmFtZV9taW47XG5cbiAgICBAZm9yICRmb250X25hbWVfaSBmcm9tIDEgdGhyb3VnaCAkcmF6biB7XG4gICAgICAgICRtZWRpYTogJG1lZGlhX21heC8kZm9udF9uYW1lX21heDtcblxuICAgICAgICAkbWVkaWFfY29lZjogKCRtZWRpYV9tYXggLSAkbWVkaWFfbWluKSAvXG4gICAgICAgICAgICAoJGZvbnRfbmFtZV9tYXggLSAkZm9udF9uYW1lX21pbik7XG5cbiAgICAgICAgQGlmICRpc19taW5fbWVkaWEgPT0gMSB7XG4gICAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogKCRtZWRpYV9tYXggLSAoKCRmb250X25hbWVfaSAtIDEpICogJG1lZGlhX2NvZWYpKSAqIDFweCkgYW5kIChtaW4td2lkdGg6ICRtZWRpYV9taW4gKiAxcHgpIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICgoJGZvbnRfbmFtZV9tYXggLSAkZm9udF9uYW1lX2kpIC8gJGZvbnQtc2l6ZS1tYWluKSAqXG4gICAgICAgICAgICAgICAgICAgIDFyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgJGZvbnRfbWF4X21lZGlhOiAkbWVkaWFfbWF4IC1cbiAgICAgICAgICAgICAgICBmbG9vcigoJGZvbnRfbmFtZV9pIC0gMSkgKiAkbWVkaWFfY29lZikgKlxuICAgICAgICAgICAgICAgIDFweDtcblxuICAgICAgICAgICAgJGZvbnRfbWluX21lZGlhOiAkbWVkaWFfbWF4IC1cbiAgICAgICAgICAgICAgICBmbG9vcigoJGZvbnRfbmFtZV9pKSAqICRtZWRpYV9jb2VmKSAqXG4gICAgICAgICAgICAgICAgMXB4O1xuXG4gICAgICAgICAgICBAaWYgJGZvbnRfbWluX21lZGlhID4gJG1lZGlhX21pbiB7XG4gICAgICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6ICRmb250X21heF9tZWRpYSkgYW5kIChtaW4td2lkdGg6ICgkZm9udF9taW5fbWVkaWEgKyAxcHgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgkZm9udF9uYW1lX21heCAtICRmb250X25hbWVfaSkgLyAkZm9udC1zaXplLW1haW5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgKiAxcmVtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkZm9udF9tYXhfbWVkaWEpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCRmb250X25hbWVfbWF4IC0gJGZvbnRfbmFtZV9pKSAvICRmb250LXNpemUtbWFpblxuICAgICAgICAgICAgICAgICAgICAgICAgKSAqIDFyZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBAaW5jbHVkZSBtZWRpYV9mb250X3NpemVfd2lkdGgoOTAwLCAzMjAsIDgwLCA1OCwgMCk7XG4vLyBAbWl4aW4gbWVkaWFfZm9udF9zaXplX3dpZHRoKFxuLy8gICAgICRtZWRpYV9tYXgsXG4vLyAgICAgJG1lZGlhX21pbixcbi8vICAgICAkZm9udF9uYW1lX21heCxcbi8vICAgICAkZm9udF9uYW1lX21pbixcbi8vICAgICAkaXNfbWluX21lZGlhXG4vLyApIHtcbi8vICAgICAkcmF6bjogJGZvbnRfbmFtZV9tYXggLSAkZm9udF9uYW1lX21pbjtcblxuLy8gICAgIEBmb3IgJGZvbnRfbmFtZV9pIGZyb20gMSB0aHJvdWdoICRyYXpuIHtcbi8vICAgICAgICAgJG1lZGlhOiAkbWVkaWFfbWF4LyRmb250X25hbWVfbWF4O1xuXG4vLyAgICAgICAgICRtZWRpYV9jb2VmOiAoJG1lZGlhX21heCAtICRtZWRpYV9taW4pIC9cbi8vICAgICAgICAgICAgICgkZm9udF9uYW1lX21heCAtICRmb250X25hbWVfbWluKTtcblxuLy8gICAgICAgICBAaWYgJGlzX21pbl9tZWRpYSA9PSAxIHtcbi8vICAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAoJG1lZGlhX21heCAtICgoJGZvbnRfbmFtZV9pIC0gMSkgKiAkbWVkaWFfY29lZikpICogMXB4KSBhbmQgKG1pbi13aWR0aDogJG1lZGlhX21pbiAqIDFweCkge1xuLy8gICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogKCgkZm9udF9uYW1lX21heCAtICRmb250X25hbWVfaSkgLyAkZm9udC1zaXplLW1haW4pICpcbi8vICAgICAgICAgICAgICAgICAgICAgMXJlbTtcbi8vICAgICAgICAgICAgIH1cbi8vICAgICAgICAgfSBAZWxzZSB7XG4vLyAgICAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogKCRtZWRpYV9tYXggLSAoKCRmb250X25hbWVfaSAtIDEpICogJG1lZGlhX2NvZWYpKSAqIDFweCkge1xuLy8gICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogKCgkZm9udF9uYW1lX21heCAtICRmb250X25hbWVfaSkgLyAkZm9udC1zaXplLW1haW4pICpcbi8vICAgICAgICAgICAgICAgICAgICAgMXJlbTtcbi8vICAgICAgICAgICAgIH1cbi8vICAgICAgICAgfVxuLy8gICAgIH1cbi8vIH1cblxuLy8gQGluY2x1ZGUgbWVkaWFfZm9udF9zaXplX2hlaWdodCg5MDAsIDMyMCwgODAsIDU4LCAwKTtcbkBtaXhpbiBtZWRpYV9mb250X3NpemVfaGVpZ2h0KFxuICAgICRtZWRpYV9tYXgsXG4gICAgJG1lZGlhX21pbixcbiAgICAkZm9udF9zaXplX21heCxcbiAgICAkZm9udF9zaXplX21pbixcbiAgICAkaXNfbWluX21lZGlhXG4pIHtcbiAgICAkcmF6bjogJGZvbnRfc2l6ZV9tYXggLSAkZm9udF9zaXplX21pbjtcblxuICAgIEBmb3IgJGZvbnRfc2l6ZV9pIGZyb20gMSB0aHJvdWdoICRyYXpuIHtcbiAgICAgICAgJG1lZGlhOiAkbWVkaWFfbWF4LyRmb250X3NpemVfbWF4O1xuXG4gICAgICAgICRtZWRpYV9jb2VmOiAoJG1lZGlhX21heCAtICRtZWRpYV9taW4pIC9cbiAgICAgICAgICAgICgkZm9udF9zaXplX21heCAtICRmb250X3NpemVfbWluKTtcblxuICAgICAgICBAaWYgJGlzX21pbl9tZWRpYSA9PSAxIHtcbiAgICAgICAgICAgIEBtZWRpYSAobWF4LWhlaWdodDogKCRtZWRpYV9tYXggLSAoKCRmb250X3NpemVfaSAtIDEpICogJG1lZGlhX2NvZWYpKSAqIDFweCkgYW5kIChtaW4taGVpZ2h0OiAkbWVkaWFfbWluICogMXB4KSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAoKCRmb250X3NpemVfbWF4IC0gJGZvbnRfbmFtZV9pKSAvICRmb250LXNpemUtbWFpbikgKlxuICAgICAgICAgICAgICAgICAgICAxcmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIEBtZWRpYSAobWF4LWhlaWdodDogKCRtZWRpYV9tYXggLSAoKCRmb250X3NpemVfaSAtIDEpICogJG1lZGlhX2NvZWYpKSAqIDFweCkge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogKCgkZm9udF9zaXplX21heCAtICRmb250X3NpemVfaSkgLyAkZm9udC1zaXplLW1haW4pICpcbiAgICAgICAgICAgICAgICAgICAgMXJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gUmV0dXJucyBhIGJsYW5rIHN0cmluZyBpZiBzbWFsbGVzdCBicmVha3BvaW50LCBvdGhlcndpc2UgcmV0dXJucyB0aGUgbmFtZSB3aXRoIGEgZGFzaCBpbiBmcm9udC5cbi8vIFVzZWZ1bCBmb3IgbWFraW5nIHJlc3BvbnNpdmUgdXRpbGl0aWVzLlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoeHMsICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICBcIlwiICAoUmV0dXJucyBhIGJsYW5rIHN0cmluZylcbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkpXG4vLyAgICBcIi1zbVwiXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pbmZpeCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAgIEByZXR1cm4gaWYoYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cykgPT0gbnVsbCwgXCJcIiwgXCItI3skbmFtZX1cIik7XG59XG5cbi8vIE1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTnVsbCBmb3IgdGhlIHNtYWxsZXN0IChmaXJzdCkgYnJlYWtwb2ludC5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW1pbihzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4KSlcbi8vICAgIDU3NnB4XG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgICAkbWluOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICAgIEByZXR1cm4gaWYoJG1pbiAhPSAwLCAkbWluLCBudWxsKTtcbn1cblxuLy8gTWVkaWEgb2YgYXQgbGVhc3QgdGhlIG1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCB3aWRlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRtZWRpYS1icmVha3BvaW50cykge1xuICAgICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICAgIEBpZiAkbWluIHtcbiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuQG1peGluIHNsaWNrRG90cygpIHtcbiAgICAuc2xpY2stZG90cyB7XG4gICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHdpZHRoOiBpbmhlcml0O1xuICAgICAgICBsaW5lLWhlaWdodDogMDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6ICgkbWVkaWEteGwrMSkpIHtcbiAgICAgICAgICAgIGJvdHRvbTogNjVweDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkbWVkaWEteGwpIGFuZCAobWluLXdpZHRoOiAoJG1lZGlhLW1kKzEpKSB7XG4gICAgICAgICAgICBib3R0b206IDUwcHg7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogJG1lZGlhLW1kKSBhbmQgKG1pbi13aWR0aDogKCRtZWRpYS1zbSsxKSkge1xuICAgICAgICAgICAgYm90dG9tOiA0MHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtZWRpYS1zbSkge1xuICAgICAgICAgICAgYm90dG9tOiAzMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgd2lkdGg6IGluaXRpYWw7XG4gICAgICAgICAgICBoZWlnaHQ6IGluaXRpYWw7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogNy41cHg7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDcuNXB4O1xuXG4gICAgICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxNHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTRweDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xuXG4gICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiBpbmhlcml0O1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaW5pdGlhbDtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogMC4yMXMgYmFja2dyb3VuZC1jb2xvciwgMC4yMXMgd2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIDAuMjFzIGhlaWdodDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuc2xpY2stYWN0aXZlIGJ1dHRvbjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogaW5oZXJpdDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHJlZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpub3QoLnNsaWNrLWFjdGl2ZSkgYnV0dG9uOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA4cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA4cHg7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWl4aW4gc2xpY2tCaWdBcnJvd3MoKSB7XG4gICAgLnNsaWNrLWFycm93IHtcbiAgICAgICAgd2lkdGg6IDY1cHg7XG4gICAgICAgIGhlaWdodDogNjVweDtcblxuICAgICAgICAmLnNsaWNrLXByZXYge1xuICAgICAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6ICRtZWRpYS14eGwgKyAxcHgpIHtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtZWRpYS14eGwpIGFuZCAobWluLXdpZHRoOiAkbWVkaWEteGwgKyAxcHgpIHtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtZWRpYS14bCkge1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5zbGljay1uZXh0IHtcbiAgICAgICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWVkaWEteHhsICsgMXB4KSB7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkbWVkaWEteHhsKSBhbmQgKG1pbi13aWR0aDogJG1lZGlhLXhsICsgMXB4KSB7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkbWVkaWEteGwpIHtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG4vLy8g0JLQvtC30LLRgNCw0YnQsNC10YIgQ1NTLdCy0YvRgNCw0LbQtdC90LjQtSDQstC40LTQsFxuLy8vIG1pbihjYWxjKCgxMDB2dyAtIGNvbnRhaW5lciAtIG5hdiAtIGl0ZW1zIC0gc2Nyb2xsYmFyKSAqICh3aWR0aFggLyB0b3RhbFdpZHRoKSksIHdpZHRoWClcbkBmdW5jdGlvbiBmbHVpZC1tYXgoJHdpZHRoWHB4KSB7XG4gICAgJHVuaXRsZXNzWDogJHdpZHRoWHB4ICAgICAgICAgIC8gMXB4O1xuICAgICR1bml0bGVzc1RvdGFsOiAkZ2FsbGVyeVdpZHRoQWJzICAgLyAxcHg7XG5cbiAgICAvLyDQktGL0LHQuNGA0LDQtdC8INC90YPQttC90YPRjiDRhNGD0L3QutGG0LjRjjog0LXRgdC70Lgg0L7RgtGA0LjRhtCw0YLQtdC70YzQvdC+0LUg4oCUIG1heCwg0LjQvdCw0YfQtSBtaW5cbiAgICAkZm46IGlmKCR1bml0bGVzc1ggPCAwLCBcIm1heFwiLCBcIm1pblwiKTtcblxuICAgIEByZXR1cm4gdW5xdW90ZShcbiAgICAgICAgICAgICAgICAgICAgXCIjeyRmbn0oY2FsYygoMTAwdncgLSAjeyRjb250YWluZXItcGFkZGluZy14eGwtbC1yICogMn0gLSAjeyRnYWxsZXJ5TmF2QnV0dG9uV2lkdGh9IC0gI3skZ2FsbGVyeUl0ZW1QYWRkaW5nICogMn0gLSB2YXIoLS1zY3JvbGxCYXIpKSAqICgjeyR1bml0bGVzc1h9IC8gI3skdW5pdGxlc3NUb3RhbH0pKSwgI3skd2lkdGhYcHh9KVwiXG4gICAgKTtcblxufVxuIl0sImZpbGUiOiJmb3JtLmNzcyJ9 */
