aside#logo-scroller {
  padding: var(--spacer0) 0;
  box-shadow: 0px -1px var(--border-top-colour, #dcdcdc);
}
aside#logo-scroller::before {
  box-shadow: inherit;
}

logo-scroller {
  --logo-width: 90px;
  --scroll-duration: 25s;
  --title-y-position: calc(var(--gap) * -0.5);
  --min-width: auto;
  display: flex;
  position: relative;
  overflow: hidden;
  min-height: clamp(125px, 15vw, 145px);
}
@media (hover: hover) {
  logo-scroller:hover ul {
    animation-play-state: paused !important;
  }
}
logo-scroller.in-view ul {
  animation-play-state: running;
}
logo-scroller ul {
  display: flex;
  justify-content: center;
  align-items: center;
  justify-content: space-around;
  min-width: var(--min-width);
  animation: var(--scroll-duration) linear 0s infinite paused logo-scroller;
}
@keyframes logo-scroller {
  100% {
    transform: translate3d(-100%, 0, 0);
  }
}
@media (min-width: 1681px) {
  logo-scroller ul {
    --min-width:100vw;
  }
}
logo-scroller ul li {
  position: relative;
  height: 100%;
  display: flex;
  place-content: center;
  place-items: center;
}
logo-scroller ul li .item {
  text-decoration: none;
  display: block;
  height: inherit;
  display: flex;
  place-content: center;
  place-items: center;
  padding: var(--gutter1);
  border: 1px solid transparent;
  transition: border-color var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, );
}
logo-scroller ul li .item::after {
  content: attr(data-title);
  white-space: nowrap;
  position: absolute;
  top: 100%;
  border: 1px solid #dcdcdc;
  left: 50%;
  background: white;
  font-size: 0.75em;
  padding: 5px 10px;
  opacity: 0;
  transform: translate(-50%, var(--title-y-position));
  transition: transform var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, ), opacity var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, );
  color: var(--primary, #131f6b);
}
logo-scroller ul li .item[target=_blank]::after {
  padding-right: 34px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23DF3035' d='M5 3c-1.093 0-2 .907-2 2v14c0 1.093.907 2 2 2h14c1.093 0 2-.907 2-2v-7h-2v7H5V5h7V3H5zm9 0v2h3.586l-9.293 9.293 1.414 1.414L19 6.414V10h2V3h-7z'/%3E%3C/svg%3E");
  background-size: 16px 16px;
  background-repeat: no-repeat;
  background-position: calc(100% - 10px) center;
}
@media (hover: hover) {
  logo-scroller ul li .item:hover {
    border-color: #dcdcdc;
  }
  logo-scroller ul li .item:hover::after {
    --title-y-position: calc(-100% - calc(var(--gap) * 0.5));
    opacity: 1;
  }
  logo-scroller ul li .item:hover img {
    opacity: 1;
    filter: grayscale(0%);
  }
}
logo-scroller ul img {
  max-width: var(--logo-width);
  width: 15vw;
  opacity: 0.7;
  filter: grayscale(100%);
  transition: filter var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, ), opacity var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, );
}

main logo-scroller {
  --title-y-position: -110%;
  width: 100%;
  padding: 0;
  -webkit-mask-image: linear-gradient(to right, transparent, black 20%, black 80%, transparent);
          mask-image: linear-gradient(to right, transparent, black 20%, black 80%, transparent);
}

body > #logo-scroller logo-scroller {
  --title-y-position: -50%;
  left: var(--gutter1-);
}
@media (min-width: 321px) {
  body > #logo-scroller logo-scroller {
    width: 100vw;
    left: 50%;
    transform: translateX(-50%);
  }
}

side-bar logo-scroller {
  width: 100%;
  padding-top: var(--gutter0);
  padding-bottom: var(--gutter0);
  --logo-width:50px;
}
@media (min-width: 1681px) {
  side-bar logo-scroller ul {
    --min-width: auto !important;
  }
}
@media (max-width: 980px) {
  side-bar logo-scroller {
    display: none;
  }
}
/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvbG9nby1zY3JvbGxlci5zY3NzIiwiY29tcG9uZW50cy9sb2dvLXNjcm9sbGVyLmNzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AZG9nZ2lzdHlsZS9zYXNzL2xpYnJhcnkvc3JjL2NvbGxlY3Rpb25zL3N0eWxpbmcvX2hvdmVyLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGRvZ2dpc3R5bGUvc2Fzcy9saWJyYXJ5L3NyYy9jb2xsZWN0aW9ucy9hbmltYXRpb24vX2tleWZyYW1lcy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bkb2dnaXN0eWxlL3Nhc3MvbGlicmFyeS9zcmMvaGVscGVycy9fYnJlYWsuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AZG9nZ2lzdHlsZS9zYXNzL2xpYnJhcnkvc3JjL2NyZWF0ZS9fdW5pdHMuc2NzcyIsIl92YXJpYWJsZXMvY29sb3Vycy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BO0VBQ0UseUJBQUE7RUFDQSxzREFBQTtBQ05GO0FET0U7RUFBWSxtQkFBQTtBQ0pkOztBRE9BO0VBRUUsa0JBQUE7RUFDQSxzQkFBQTtFQUNBLDJDQUFBO0VBQ0EsaUJBQUE7RUFFQSxhQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtFQUVBLHFDQUFBO0FDUEY7QUNaRTtFRnNCRTtJQUFLLHVDQUFBO0VDTlA7QUFDRjtBRFlFO0VBQ0UsNkJBQUE7QUNWSjtBRGFFO0VBQ0UsYUFBQTtFQUNBLHVCQUFBO0VBQ0EsbUJBQUE7RUFDQSw2QkFBQTtFQUNBLDJCQUFBO0VBUUEseUVBQUE7QUNsQko7QUUvQkk7RUg0Q0U7SUFBTyxtQ0FBQTtFQ1RYO0FBQ0Y7QUdqQ0U7RUppQ0E7SUFXNEIsaUJBQUE7RUNQNUI7QUFDRjtBRFVJO0VBQ0Usa0JBQUE7RUFDQSxZQUFBO0VBQ0EsYUFBQTtFQUNBLHFCQUFBO0VBQ0EsbUJBQUE7QUNSTjtBRFVNO0VBQ0UscUJBQUE7RUFDQSxjQUFBO0VBQ0EsZUFBQTtFQUNBLGFBQUE7RUFDQSxxQkFBQTtFQUNBLG1CQUFBO0VBQ0EsdUJLaUVHO0VMaEVILDZCQUFBO0VBQ0EsMElBQUE7QUNSUjtBRFVRO0VBQ0UseUJBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLHlCQUFBO0VBQ0EsU0FBQTtFQUNBLGlCQUFBO0VBQ0EsaUJBQUE7RUFDQSxpQkFBQTtFQUNBLFVBQUE7RUFDQSxtREFBQTtFQUNBLGtRQUFBO0VBQ0EsOEJNN0NHO0FMcUNiO0FEV1E7RUFDRSxtQkFBQTtFQUNBLHNTQUFBO0VBQ0EsMEJBQUE7RUFDQSw0QkFBQTtFQUNBLDZDQUFBO0FDVFY7QUM5RUU7RUFDRTtJRjhGTSxxQk14RUE7RUwyRFI7RURTUTtJQUNFLHdEQUFBO0lBQ0EsVUFBQTtFQ1BWO0VEVVE7SUFDRSxVQUFBO0lBQ0EscUJBQUE7RUNSVjtBQUNGO0FEYUk7RUFDRSw0QkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsdUJBQUE7RUFDQSwrUEFBQTtBQ1hOOztBRG9CQTtFQUNFLHlCQUFBO0VBQ0EsV0FBQTtFQUNBLFVBQUE7RUFDQSw2RkFBQTtVQUFBLHFGQUFBO0FDakJGOztBRHdCQTtFQUNFLHdCQUFBO0VBQ0EscUJLSnFDO0FKakJ2QztBRzlHRTtFSmlJRjtJQUlJLFlBQUE7SUFDQSxTQUFBO0lBQ0EsMkJBQUE7RUNuQkY7QUFDRjs7QUQwQkE7RUFDRSxXQUFBO0VBQ0EsMkJLbkJTO0VMb0JULDhCS3BCUztFTHFCVCxpQkFBQTtBQ3ZCRjtBRzVIRTtFSm9KMEI7SUFBSyw0QkFBQTtFQ3BCL0I7QUFDRjtBRzNIRTtFSnlJRjtJQU1zQyxhQUFBO0VDaEJwQztBQUNGIiwiZmlsZSI6ImNvbXBvbmVudHMvbG9nby1zY3JvbGxlci5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICdfbW9kdWxlcycgYXMgKjtcbkB1c2UgJ21vZHVsZXMvY29sb3VyL2VuY29kZScgYXMgY29sb3VyO1xuXG5AZnVuY3Rpb24gYmFzZTY0LWV4dGVybmFsLWxpbmsoJGNvbG91cikge1xuICBAcmV0dXJuIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMjQgMjQnJTNFJTNDcGF0aCBmaWxsPSdcIitjb2xvdXIuZW5jb2RlKCRjb2xvdXIpK1wiJyBkPSdNNSAzYy0xLjA5MyAwLTIgLjkwNy0yIDJ2MTRjMCAxLjA5My45MDcgMiAyIDJoMTRjMS4wOTMgMCAyLS45MDcgMi0ydi03aC0ydjdINVY1aDdWM0g1em05IDB2MmgzLjU4NmwtOS4yOTMgOS4yOTMgMS40MTQgMS40MTRMMTkgNi40MTRWMTBoMlYzaC03eicvJTNFJTNDL3N2ZyUzRVwiKTtcbn1cblxuYXNpZGUjbG9nby1zY3JvbGxlciB7XG4gIHBhZGRpbmc6JHNwYWNlcjAgMDsgXG4gIGJveC1zaGFkb3c6IDBweCAtMXB4IHZhcigtLWJvcmRlci10b3AtY29sb3VyLCAjeyRncmV5NH0pO1xuICAmOjpiZWZvcmUgeyBib3gtc2hhZG93OiBpbmhlcml0OyB9XG59XG5cbmxvZ28tc2Nyb2xsZXIge1xuXG4gIC0tbG9nby13aWR0aCAgIDogOTBweDtcbiAgLS1zY3JvbGwtZHVyYXRpb24gIDogMjVzO1xuICAtLXRpdGxlLXktcG9zaXRpb24gOiAjeyRnYXAwLX07IFxuICAtLW1pbi13aWR0aCAgICAgICAgOiBhdXRvOyBcbiAgXG4gIGRpc3BsYXk6ZmxleDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIG1pbi1oZWlnaHQ6Y2xhbXAoMTI1cHgsIDE1dncsIDE0NXB4KTtcblxuICBAaW5jbHVkZSBob3ZlciB7XG4gICAgdWwgeyBhbmltYXRpb24tcGxheS1zdGF0ZTogcGF1c2VkICFpbXBvcnRhbnQ7IH1cbiAgfVxuICBcbiAgLy8gJi5sb2FkLXRlbXBsYXRlLWluLXZpZXcge1xuICAvLyAgIG1pbi1oZWlnaHQ6MjQwcHg7IFxuICAvLyB9XG5cbiAgJi5pbi12aWV3IHVsIHtcbiAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZztcbiAgfVxuXG4gIHVsIHsgXG4gICAgZGlzcGxheTpmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG4gICAgbWluLXdpZHRoOnZhcigtLW1pbi13aWR0aCk7XG5cbiAgICBAaW5jbHVkZSBhbmltYXRpb24ta2V5ZnJhbWVzKCdsb2dvLXNjcm9sbGVyJykge1xuICAgICAgMTAwJSB7IHRyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCkgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrLW91dChtYXgpIHsgLS1taW4td2lkdGg6MTAwdnc7IH1cbiAgICBcbiAgICBhbmltYXRpb246IHZhcigtLXNjcm9sbC1kdXJhdGlvbikgbGluZWFyIDBzIGluZmluaXRlIHBhdXNlZCBsb2dvLXNjcm9sbGVyO1xuXG4gICAgbGkgeyBcbiAgICAgIHBvc2l0aW9uOnJlbGF0aXZlOyBcbiAgICAgIGhlaWdodDoxMDAlOyBcbiAgICAgIGRpc3BsYXk6ZmxleDsgXG4gICAgICBwbGFjZS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuXG4gICAgICAuaXRlbSB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgZGlzcGxheTpibG9jazsgXG4gICAgICAgIGhlaWdodDppbmhlcml0OyBcbiAgICAgICAgZGlzcGxheTpmbGV4OyBcbiAgICAgICAgcGxhY2UtY29udGVudDogY2VudGVyO1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiRndXR0ZXI7XG4gICAgICAgIGJvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAkdHJhbnNpdGlvbjtcblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgY29udGVudDphdHRyKGRhdGEtdGl0bGUpO1xuICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIHRvcDoxMDAlO1xuICAgICAgICAgIGJvcmRlcjoxcHggc29saWQgJGdyZXk0OyBcbiAgICAgICAgICBsZWZ0OjUwJTtcbiAgICAgICAgICBiYWNrZ3JvdW5kOndoaXRlOyBcbiAgICAgICAgICBmb250LXNpemU6IGZvbnQtc2l6ZSgxMik7XG4gICAgICAgICAgcGFkZGluZzo1cHggMTBweDsgXG4gICAgICAgICAgb3BhY2l0eTowOyBcbiAgICAgICAgICB0cmFuc2Zvcm0gOiB0cmFuc2xhdGUoLTUwJSwgdmFyKC0tdGl0bGUteS1wb3NpdGlvbikpO1xuICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAkdHJhbnNpdGlvbiwgb3BhY2l0eSAkdHJhbnNpdGlvbjtcbiAgICAgICAgICBjb2xvcjokcHJpbWFyeTtcbiAgICAgICAgfVxuXG4gICAgICAgICZbdGFyZ2V0PVwiX2JsYW5rXCJdOjphZnRlciB7XG4gICAgICAgICAgcGFkZGluZy1yaWdodDoxMHB4ICsgMTZweCArIDhweDsgLy8gcGFkZGluZyArIGljb24gc2l6ZSArIGFkZGl0aW9uYWwgcGFkZGluZ1xuICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGJhc2U2NC1leHRlcm5hbC1saW5rKCRyZWQpO1xuICAgICAgICAgIGJhY2tncm91bmQtc2l6ZToxNnB4IDE2cHg7XG4gICAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOmNhbGMoMTAwJSAtIDEwcHgpIGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGhvdmVyIHtcbiAgICAgICAgICAmOjphZnRlciB7IFxuICAgICAgICAgICAgLS10aXRsZS15LXBvc2l0aW9uIDogY2FsYygtMTAwJSAtICN7JGdhcDB9KTtcbiAgICAgICAgICAgIG9wYWNpdHk6MTsgXG4gICAgICAgICAgfVxuICAgICAgICAgIGJvcmRlci1jb2xvcjogJGdyZXk0O1xuICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICBvcGFjaXR5OjE7XG4gICAgICAgICAgICBmaWx0ZXI6IGdyYXlzY2FsZSgwJSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaW1nIHsgXG4gICAgICBtYXgtd2lkdGg6dmFyKC0tbG9nby13aWR0aCk7XG4gICAgICB3aWR0aDoxNXZ3O1xuICAgICAgb3BhY2l0eTowLjc7XG4gICAgICBmaWx0ZXI6IGdyYXlzY2FsZSgxMDAlKTtcbiAgICAgIHRyYW5zaXRpb246IGZpbHRlciAkdHJhbnNpdGlvbiwgb3BhY2l0eSAkdHJhbnNpdGlvbjtcbiAgICB9XG4gIH1cbn1cblxuLy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLy8gTWFpbiBDb21wb25lbnRcbi8vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5tYWluIGxvZ28tc2Nyb2xsZXIge1xuICAtLXRpdGxlLXktcG9zaXRpb24gOiAtMTEwJTtcbiAgd2lkdGg6MTAwJTtcbiAgcGFkZGluZzowOyBcbiAgbWFzay1pbWFnZTogIGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdHJhbnNwYXJlbnQsIGJsYWNrIDIwJSwgYmxhY2sgODAlLCB0cmFuc3BhcmVudCk7XG59XG5cbi8vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8vIFJvb3QgQ29tcG9uZW50XG4vLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuYm9keSA+ICNsb2dvLXNjcm9sbGVyIGxvZ28tc2Nyb2xsZXIge1xuICAtLXRpdGxlLXktcG9zaXRpb24gOiAtNTAlO1xuICBsZWZ0IDogJGd1dHRlci07XG4gIEBpbmNsdWRlIGJyZWFrLW91dChtaW4pIHtcbiAgICB3aWR0aDoxMDB2dzsgXG4gICAgbGVmdDo1MCU7XG4gICAgdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSk7XG4gIH1cbn1cblxuLy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLy8gU2lkZWJhciBDb21wb25lbnRcbi8vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5zaWRlLWJhciBsb2dvLXNjcm9sbGVyIHtcbiAgd2lkdGg6MTAwJTtcbiAgcGFkZGluZy10b3A6JGd1dHRlcjA7XG4gIHBhZGRpbmctYm90dG9tOiRndXR0ZXIwO1xuICAtLWxvZ28td2lkdGg6NTBweDsgXG4gIEBpbmNsdWRlIGJyZWFrLW91dChtYXgpIHsgdWwgeyAtLW1pbi13aWR0aCA6IGF1dG8gIWltcG9ydGFudDsgfX1cbiAgQGluY2x1ZGUgYnJlYWstaW4oJ3NtYWxsLW1lZGl1bScpIHsgZGlzcGxheTpub25lOyB9XG59IiwiYXNpZGUjbG9nby1zY3JvbGxlciB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlcjApIDA7XG4gIGJveC1zaGFkb3c6IDBweCAtMXB4IHZhcigtLWJvcmRlci10b3AtY29sb3VyLCAjZGNkY2RjKTtcbn1cbmFzaWRlI2xvZ28tc2Nyb2xsZXI6OmJlZm9yZSB7XG4gIGJveC1zaGFkb3c6IGluaGVyaXQ7XG59XG5cbmxvZ28tc2Nyb2xsZXIge1xuICAtLWxvZ28td2lkdGg6IDkwcHg7XG4gIC0tc2Nyb2xsLWR1cmF0aW9uOiAyNXM7XG4gIC0tdGl0bGUteS1wb3NpdGlvbjogY2FsYyh2YXIoLS1nYXApICogLTAuNSk7XG4gIC0tbWluLXdpZHRoOiBhdXRvO1xuICBkaXNwbGF5OiBmbGV4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIG1pbi1oZWlnaHQ6IGNsYW1wKDEyNXB4LCAxNXZ3LCAxNDVweCk7XG59XG5AbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICBsb2dvLXNjcm9sbGVyOmhvdmVyIHVsIHtcbiAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogcGF1c2VkICFpbXBvcnRhbnQ7XG4gIH1cbn1cbmxvZ28tc2Nyb2xsZXIuaW4tdmlldyB1bCB7XG4gIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nO1xufVxubG9nby1zY3JvbGxlciB1bCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbiAgbWluLXdpZHRoOiB2YXIoLS1taW4td2lkdGgpO1xuICBhbmltYXRpb246IHZhcigtLXNjcm9sbC1kdXJhdGlvbikgbGluZWFyIDBzIGluZmluaXRlIHBhdXNlZCBsb2dvLXNjcm9sbGVyO1xufVxuQGtleWZyYW1lcyBsb2dvLXNjcm9sbGVyIHtcbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiAxNjgxcHgpIHtcbiAgbG9nby1zY3JvbGxlciB1bCB7XG4gICAgLS1taW4td2lkdGg6MTAwdnc7XG4gIH1cbn1cbmxvZ28tc2Nyb2xsZXIgdWwgbGkge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgcGxhY2UtY29udGVudDogY2VudGVyO1xuICBwbGFjZS1pdGVtczogY2VudGVyO1xufVxubG9nby1zY3JvbGxlciB1bCBsaSAuaXRlbSB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogaW5oZXJpdDtcbiAgZGlzcGxheTogZmxleDtcbiAgcGxhY2UtY29udGVudDogY2VudGVyO1xuICBwbGFjZS1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiB2YXIoLS1ndXR0ZXIxKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS10cmFuc2l0aW9uLWR1cmF0aW9uLCAwLjJzKSB2YXIoLS10cmFuc2l0aW9uLWVhc2UsIGN1YmljLWJlemllcigwLjQyLCAwLCAwLjU4LCAxKSkgdmFyKC0tdHJhbnNpdGlvbi1kZWxheSwgKTtcbn1cbmxvZ28tc2Nyb2xsZXIgdWwgbGkgLml0ZW06OmFmdGVyIHtcbiAgY29udGVudDogYXR0cihkYXRhLXRpdGxlKTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEwMCU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkY2RjZGM7XG4gIGxlZnQ6IDUwJTtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGZvbnQtc2l6ZTogMC43NWVtO1xuICBwYWRkaW5nOiA1cHggMTBweDtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgdmFyKC0tdGl0bGUteS1wb3NpdGlvbikpO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdHJhbnNpdGlvbi1kdXJhdGlvbiwgMC4ycykgdmFyKC0tdHJhbnNpdGlvbi1lYXNlLCBjdWJpYy1iZXppZXIoMC40MiwgMCwgMC41OCwgMSkpIHZhcigtLXRyYW5zaXRpb24tZGVsYXksICksIG9wYWNpdHkgdmFyKC0tdHJhbnNpdGlvbi1kdXJhdGlvbiwgMC4ycykgdmFyKC0tdHJhbnNpdGlvbi1lYXNlLCBjdWJpYy1iZXppZXIoMC40MiwgMCwgMC41OCwgMSkpIHZhcigtLXRyYW5zaXRpb24tZGVsYXksICk7XG4gIGNvbG9yOiB2YXIoLS1wcmltYXJ5LCAjMTMxZjZiKTtcbn1cbmxvZ28tc2Nyb2xsZXIgdWwgbGkgLml0ZW1bdGFyZ2V0PV9ibGFua106OmFmdGVyIHtcbiAgcGFkZGluZy1yaWdodDogMzRweDtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyNCAyNCclM0UlM0NwYXRoIGZpbGw9JyUyM0RGMzAzNScgZD0nTTUgM2MtMS4wOTMgMC0yIC45MDctMiAydjE0YzAgMS4wOTMuOTA3IDIgMiAyaDE0YzEuMDkzIDAgMi0uOTA3IDItMnYtN2gtMnY3SDVWNWg3VjNINXptOSAwdjJoMy41ODZsLTkuMjkzIDkuMjkzIDEuNDE0IDEuNDE0TDE5IDYuNDE0VjEwaDJWM2gtN3onLyUzRSUzQy9zdmclM0VcIik7XG4gIGJhY2tncm91bmQtc2l6ZTogMTZweCAxNnB4O1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDEwMCUgLSAxMHB4KSBjZW50ZXI7XG59XG5AbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICBsb2dvLXNjcm9sbGVyIHVsIGxpIC5pdGVtOmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6ICNkY2RjZGM7XG4gIH1cbiAgbG9nby1zY3JvbGxlciB1bCBsaSAuaXRlbTpob3Zlcjo6YWZ0ZXIge1xuICAgIC0tdGl0bGUteS1wb3NpdGlvbjogY2FsYygtMTAwJSAtIGNhbGModmFyKC0tZ2FwKSAqIDAuNSkpO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgbG9nby1zY3JvbGxlciB1bCBsaSAuaXRlbTpob3ZlciBpbWcge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgZmlsdGVyOiBncmF5c2NhbGUoMCUpO1xuICB9XG59XG5sb2dvLXNjcm9sbGVyIHVsIGltZyB7XG4gIG1heC13aWR0aDogdmFyKC0tbG9nby13aWR0aCk7XG4gIHdpZHRoOiAxNXZ3O1xuICBvcGFjaXR5OiAwLjc7XG4gIGZpbHRlcjogZ3JheXNjYWxlKDEwMCUpO1xuICB0cmFuc2l0aW9uOiBmaWx0ZXIgdmFyKC0tdHJhbnNpdGlvbi1kdXJhdGlvbiwgMC4ycykgdmFyKC0tdHJhbnNpdGlvbi1lYXNlLCBjdWJpYy1iZXppZXIoMC40MiwgMCwgMC41OCwgMSkpIHZhcigtLXRyYW5zaXRpb24tZGVsYXksICksIG9wYWNpdHkgdmFyKC0tdHJhbnNpdGlvbi1kdXJhdGlvbiwgMC4ycykgdmFyKC0tdHJhbnNpdGlvbi1lYXNlLCBjdWJpYy1iZXppZXIoMC40MiwgMCwgMC41OCwgMSkpIHZhcigtLXRyYW5zaXRpb24tZGVsYXksICk7XG59XG5cbm1haW4gbG9nby1zY3JvbGxlciB7XG4gIC0tdGl0bGUteS1wb3NpdGlvbjogLTExMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwO1xuICBtYXNrLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHRyYW5zcGFyZW50LCBibGFjayAyMCUsIGJsYWNrIDgwJSwgdHJhbnNwYXJlbnQpO1xufVxuXG5ib2R5ID4gI2xvZ28tc2Nyb2xsZXIgbG9nby1zY3JvbGxlciB7XG4gIC0tdGl0bGUteS1wb3NpdGlvbjogLTUwJTtcbiAgbGVmdDogdmFyKC0tZ3V0dGVyMS0pO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDMyMXB4KSB7XG4gIGJvZHkgPiAjbG9nby1zY3JvbGxlciBsb2dvLXNjcm9sbGVyIHtcbiAgICB3aWR0aDogMTAwdnc7XG4gICAgbGVmdDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgfVxufVxuXG5zaWRlLWJhciBsb2dvLXNjcm9sbGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmctdG9wOiB2YXIoLS1ndXR0ZXIwKTtcbiAgcGFkZGluZy1ib3R0b206IHZhcigtLWd1dHRlcjApO1xuICAtLWxvZ28td2lkdGg6NTBweDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiAxNjgxcHgpIHtcbiAgc2lkZS1iYXIgbG9nby1zY3JvbGxlciB1bCB7XG4gICAgLS1taW4td2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbiAgfVxufVxuQG1lZGlhIChtYXgtd2lkdGg6IDk4MHB4KSB7XG4gIHNpZGUtYmFyIGxvZ28tc2Nyb2xsZXIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vIEhvdmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaG92ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiBob3Zlcigkc2VsZWN0b3IgOiBudWxsKSB7XG4gIEBtZWRpYSAoIGhvdmVyIDogaG92ZXIgKSB7XG4gICAgJjpob3ZlciB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICBAaWYgJHNlbGVjdG9yIHtcbiAgICAmI3skc2VsZWN0b3J9IHsgXG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxufSIsIkBtaXhpbiBrZXlmcmFtZXMoJG5hbWUpIHtcbiAgQGF0LXJvb3QgKHdpdGhvdXQ6IG1lZGlhKSB7XG4gICAgQGtleWZyYW1lcyAjeyRuYW1lfSB7IEBjb250ZW50OyB9XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8gQnJlYWsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNicmVha1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQG1peGluIG91dCgkYnJlYWtwb2ludCkge1xuICBAbWVkaWEgKG1pbi13aWR0aDojeyRicmVha3BvaW50ICsgMX0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gaW4oJGJyZWFrcG9pbnQpIHtcbiAgQG1lZGlhIChtYXgtd2lkdGg6I3skYnJlYWtwb2ludH0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gYmV0d2VlbigkbWluLCAkbWF4KSB7XG4gIEBtZWRpYSAobWluLXdpZHRoOiN7JG1pbn0pIGFuZCAobWF4LXdpZHRoOiN7JG1heH0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBVbml0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQHVzZSBcInNhc3M6bWF0aFwiO1xuQHVzZSAnc2FzczpzdHJpbmcnO1xuQHVzZSAnc2FzczptZXRhJztcblxuLy8gVGhpcyB1bml0cyBjcmVhdG9yIHdpbGwgcmVuZGVyIHNpeCBwb3NpdGl2ZSBhbmQgc2l4IG5lZ2F0aXZlIHNhc3MgdmFyaWFibGVzIGZvciBcbi8vIGdhcHMsIHNwYWNlcnMsIGFuZCBndXR0ZXJzIHJlbGF0aXZlIHRvIHRoZSBiYXNldiB2YWx1ZXMgZGVmaW5lZCBiZWxvdy5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCYXNlIFZhbHVlcyBcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vLyBAc2VlIGh0dHBzOi8vY29kZXBlbi5pby9tYXJrbm90dG9uL3Blbi9FeFBiTkdlXG5cbi8vIFRoZXNlIHRocmVlIHZhbHVlcyB3aWxsIGFjdCBhIGNvbnN0YW50IGJhc2VsaW5lIGZvciBhbGwgZm9sbG93aW5nIHVuaXQgZGVsY2FyYXRpb25zLlxuXG4vLyBHYXBzIG11c3QgdXNlIGFuIGFic29sdXRlIGFuZCBzdGF0aWMgJ3B4JyB1bml0LiBJdCBzaG91bGQgbm90IGJlIHJlbGF0aXZlIHRvIGFueVxuLy8gcGFyZW50IGNvbnRhaW5lciBhbmQgaXMgbm90IGludGVuZGVkIGZvciBmb250IHNpemVzLCBzbyB5b3Ugc2hvdWxkIG5vdCB1c2UgJ3JlbScgb3IgJ2VtJy4gXG4kZ2FwIDogMTZweCAhZGVmYXVsdDtcbiRiYXNlLWdhcCA6ICRnYXA7XG5cbi8vIFNwYWNlcnMgbXVzdCB1c2UgYSAndmgnIHVuaXQgc28gdGhleSBhcmUgcmVsYXRpdmUgdG8gdGhlIHVzZXJzIHZpZXdwb3J0IGhlaWdodC13aXNlLlxuLy8gVGhleSBzaG91bGQgcHJpbWFyaWx5IGJlIHVzZWQgZm9yIHRoZSB0b3AgYW5kIGJvdHRvbSBtYXJnaW5zIG9uIGEgY29tcG9uZW50IGxldmVsLlxuJHNwYWNlciA6IDR2aCAhZGVmYXVsdDsgXG4kYmFzZS1zcGFjZXIgOiAkc3BhY2VyOyBcblxuLy8gR3V0dGVycyBtdXN0IHVzZSBhICd2dycgdW5pdCBzbyB0aGV5IGFyZSByZWxhdGl2ZSB0byB0aGUgdXNlcnMgdmlld3BvcnQgd2lkdGgtd2lzZS4gXG4vLyBUaGV5IHNob3VsZCBwcmltYXJpbHkgYmUgdXNlZCBmb3IgdGhlIGxlZnQgYW5kIHJpZ2h0IHBhZGRpbmcgb3IgbWFyZ2luIG9uIGEgcGFyZW50IGxldmVsLlxuLy8gQXMgYSBzdWdnZXN0aW9uLCB0aGlzIGd1dHRlciBjb25zdGFudCBzaG91bGQgYmUgaGFsZiB0aGUgc2l6ZSBvZiB0aGUgc3BhY2VyIHZhbHVlLlxuJGd1dHRlciA6IDN2dyAhZGVmYXVsdDtcbiRiYXNlLWd1dHRlciA6ICRndXR0ZXI7IFxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQXNib2x1dGUgVW5pdHMgXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBHYXBzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gR2FwcyBhcmUgYW4gYWJzb2x1dGUgdW5pdCAocHgpIGludGVuZGVkIHRvIGJlIHVzZWQgb24gaW5kaXZpZHVhbCBlbGVtZW50cyB3aXRoaW4gYSBjb21wb25lbnRlZC4gXG4vLyBUaGUgYWltIGlzIHRvIHJldGFpbiBjb25zaXN0YW50IHNwYWNpbmcgYW1vbmdzdCBibG9jaywgaW5saW5lLCB0YWJsZSBhbmQgZ3JvdXAgaHRtbCBlbGVtZW50cy5cblxuQGZ1bmN0aW9uIGdhcCgkYW1vdW50IDogMSkge1xuICBAaWYgKCAkYW1vdW50ID09IDEgKSB7IFxuICAgIEByZXR1cm4gdmFyKC0tZ2FwKTsgXG4gIH0gQGVsc2UgeyBcbiAgICBAcmV0dXJuIGNhbGModmFyKC0tZ2FwKSAqICN7JGFtb3VudH0pOyBcbiAgfVxufVxuXG4kZ2FwMCA6IGdhcCgwLjUpOyAkZ2FwMC0gOiBnYXAoLTAuNSk7XG4kZ2FwICA6IGdhcCgxKTsgICAkZ2FwLSAgOiBnYXAoLTEpO1xuJGdhcDIgOiBnYXAoMik7ICAgJGdhcDItIDogZ2FwKC0yKTtcbiRnYXAzIDogZ2FwKDMpOyAgICRnYXAzLSA6IGdhcCgtMyk7XG4kZ2FwNCA6IGdhcCg0KTsgICAkZ2FwNC0gOiBnYXAoLTQpO1xuJGdhcDUgOiBnYXAoNSk7ICAgJGdhcDUtIDogZ2FwKC01KTtcbiRnYXA2IDogZ2FwKDYpOyAgICRnYXA2LSA6IGdhcCgtNik7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSZWxhdGl2ZSBVbml0cyBcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBmdW5jdGlvbiBfZHluYW1pYy11bml0KCRjdXN0b20tcHJvcGVydHksICRhbW91bnQsICRtaW4sICRtYXgsICR1c2UtbmVnYXRpdmUgOiBmYWxzZSwgJHVzZS1jbGFtcCA6IHRydWUpIHtcblxuICAvLyBDYWxjIE1ldGhvZFxuICAkcmVzdWx0IDogY2FsYygoI3skY3VzdG9tLXByb3BlcnR5fSAqICN7JGFtb3VudH0pICsgI3tpZigkbWluID09IDAsIDBweCwgJG1pbil9KTtcbiAgXG4gIC8vIENsYW1wIE1ldGhvZFxuICBAaWYgKCAkdXNlLWNsYW1wICkge1xuICAgIEBpZiAoICRhbW91bnQgPT0gMCApIHtcbiAgICAgICRyZXN1bHQgOiBjbGFtcCgje21hdGguZGl2KCRtaW4sIDIpfSwgI3skY3VzdG9tLXByb3BlcnR5fSAqIDAuNSwgI3skbWF4fSk7XG4gICAgfSBAZWxzZSBpZiAoICRhbW91bnQgPT0gMSApIHtcbiAgICAgICRyZXN1bHQgOiBjbGFtcCgjeyRtaW59LCAjeyRjdXN0b20tcHJvcGVydHl9LCAjeyRtYXh9KTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRyZXN1bHQgOiBjbGFtcCgjeyRtaW59LCAjeyRjdXN0b20tcHJvcGVydHl9ICogI3skYW1vdW50fSwgI3skbWF4fSk7XG4gICAgfVxuICB9IFxuXG4gIEBpZiAoICR1c2UtbmVnYXRpdmUgKSB7XG4gICAgJHJlc3VsdCA6IGNhbGMoLTEgKiAjeyRyZXN1bHR9KTtcbiAgfVxuXG4gIEByZXR1cm4gJHJlc3VsdDtcblxufSBcblxuLy8gU3BhY2VycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNwYWNlcnMgYXJlIGEgcmVsYXRpdmUgdmlld3BvcnQgaGVpZ2h0ICh2aCkgdW5pdCBpbnRlbmRlZCB0byBiZSB1c2VkIG9uIGEgY29tcG9uZW50ZWQgbGV2ZWwuXG4vLyBUaGUgYWltIGlzIHRvIHJldGFpbiBjb25zaXN0YW50IHRvcCBhbmQgYm90dG9tIHNwYWNpbmcgYW1vbmdzdCAnc2VjdGlvbicgYW5kICdjdXN0b20nIGVsZW1lbnRzLlxuLy8gU3BhY2VycyB3aWxsIGVxdWF0ZSB0byBzb21ldGhpbmcgbGlrZTogYCgkc3BhY2VyICogeCkgKyAkZ2FwYC4gXG4vLyBUaGUgJyRnYXAnIGlzIGFkZGVkIHNvIHRoYXQgdmggc3BhY2luZyB3aWxsIG5ldmVyIHNjYWxlIHRvbyBjbG9zZSB0byAwcHguIFxuXG5AZnVuY3Rpb24gc3BhY2VyKCRhbW91bnQgOiAxLCAkbWluIDogJGJhc2UtZ2FwLCAkbWF4IDogbnVsbCwgJHVzZS1uZWdhdGl2ZSA6IGZhbHNlLCAkdXNlLWNsYW1wIDogdHJ1ZSkge1xuICBAaWYgKCAkYW1vdW50ID09IDApIHsgJGFtb3VudCA6IDAuNTsgJG1pbiA6IG1hdGguZGl2KCRtaW4sIDIpOyB9XG4gIEBpZiAoIG1ldGEudHlwZS1vZigkbWF4KSA9PSAnbnVsbCcgKSB7IFxuICAgIEBpZiAoIG1ldGEudHlwZS1vZigkbWluKSA9PSAnc3RyaW5nJyBhbmQgc3RyaW5nLmluZGV4KCRtaW4sICd2YXInKSApIHtcbiAgICAgICRtYXggOiBjYWxjKCN7JG1pbn0gKiAjeyRhbW91bnQgKyAxfSk7IFxuICAgIH0gQGVsc2Uge1xuICAgICAgJG1heCA6ICN7JG1pbiAqICgkYW1vdW50ICsgMSl9OyBcbiAgICB9XG4gIH1cbiAgQHJldHVybiBfZHluYW1pYy11bml0KHZhcigtLXNwYWNlciksICRhbW91bnQsICRtaW4sICRtYXgsICR1c2UtbmVnYXRpdmUsICR1c2UtY2xhbXApO1xufVxuXG4kc3BhY2VyMCA6IHZhcigtLXNwYWNlcjApOyAkc3BhY2VyMC0gOiB2YXIoLS1zcGFjZXIwLSk7XG4kc3BhY2VyICA6IHZhcigtLXNwYWNlcjEpOyAkc3BhY2VyLSAgOiB2YXIoLS1zcGFjZXIxLSk7XG4kc3BhY2VyMiA6IHZhcigtLXNwYWNlcjIpOyAkc3BhY2VyMi0gOiB2YXIoLS1zcGFjZXIyLSk7XG4kc3BhY2VyMyA6IHZhcigtLXNwYWNlcjMpOyAkc3BhY2VyMy0gOiB2YXIoLS1zcGFjZXIzLSk7XG4kc3BhY2VyNCA6IHZhcigtLXNwYWNlcjQpOyAkc3BhY2VyNC0gOiB2YXIoLS1zcGFjZXI0LSk7XG4kc3BhY2VyNSA6IHZhcigtLXNwYWNlcjUpOyAkc3BhY2VyNS0gOiB2YXIoLS1zcGFjZXI1LSk7XG4kc3BhY2VyNiA6IHZhcigtLXNwYWNlcjYpOyAkc3BhY2VyNi0gOiB2YXIoLS1zcGFjZXI2LSk7XG5cbi8vIEd1dHRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBHdXR0ZXJzIGFyZSBhIHJlbGF0aXZlIHZpZXdwb3J0IHdpZHRoICh2dykgdW5pdCBpbnRlbmRlZCB0byBiZSB1c2VkIG9uIGEgcGFyZW50IGxldmVsO1xuLy8gZm9yIGV4YW1wbGUsIGEgd3JhcHBlciBjb250YWluZXIgb3IgYm9keSB3aXRoIG5lc3RlZCBjb21wb25lbnRzLiBcbi8vIFRoZSBhaW0gaXMgdG8gcmV0YWluIGNvbnNpc3RhbnQgbGVmdCBhbmQgcmlnaHQgc3BhY2luZyBhbW9uZ3N0ICdzZWN0aW9uJyBhbmQgJ2N1c3RvbScgZWxlbWVudHMuXG4vLyBHdXR0ZXJzIHdpbGwgZXF1YXRlIHRvIHNvbWV0aGluZyBsaWtlOiBgKCRndXR0ZXIgKiB4KSArICRnYXBgLiBcbi8vIFRoZSAnJGdhcCcgaXMgYWRkZWQgc28gdGhhdCB2dyBzcGFjaW5nIHdpbGwgbmV2ZXIgc2NhbGUgdG9vIGNsb3NlIHRvIDBweC4gXG5cbkBmdW5jdGlvbiBndXR0ZXIoJGFtb3VudCA6IDEsICRtaW4gOiAkYmFzZS1nYXAsICRtYXggOiBudWxsLCAkdXNlLW5lZ2F0aXZlIDogZmFsc2UsICR1c2UtY2xhbXAgOiB0cnVlKSB7XG4gIEBpZiAoICRhbW91bnQgPT0gMCkgeyAkYW1vdW50IDogMC41OyAkbWluIDogbWF0aC5kaXYoJG1pbiwgMik7IH1cbiAgQGlmICggbWV0YS50eXBlLW9mKCRtYXgpID09ICdudWxsJyApIHsgXG4gICAgQGlmICggbWV0YS50eXBlLW9mKCRtaW4pID09ICdzdHJpbmcnIGFuZCBzdHJpbmcuaW5kZXgoJG1pbiwgJ3ZhcicpICkge1xuICAgICAgJG1heCA6IGNhbGMoI3skbWlufSAqICN7JGFtb3VudCArIDF9KTsgXG4gICAgfSBAZWxzZSB7XG4gICAgICAkbWF4IDogI3skbWluICogKCRhbW91bnQgKyAxKX07IFxuICAgIH1cbiAgfVxuICBAcmV0dXJuIF9keW5hbWljLXVuaXQodmFyKC0tZ3V0dGVyKSwgJGFtb3VudCwgJG1pbiwgJG1heCwgJHVzZS1uZWdhdGl2ZSwgJHVzZS1jbGFtcCk7XG59XG5cbiRndXR0ZXIwIDogdmFyKC0tZ3V0dGVyMCk7ICRndXR0ZXIwLSA6IHZhcigtLWd1dHRlcjAtKTtcbiRndXR0ZXIgIDogdmFyKC0tZ3V0dGVyMSk7ICRndXR0ZXItICA6IHZhcigtLWd1dHRlcjEtKTtcbiRndXR0ZXIyIDogdmFyKC0tZ3V0dGVyMik7ICRndXR0ZXIyLSA6IHZhcigtLWd1dHRlcjItKTtcbiRndXR0ZXIzIDogdmFyKC0tZ3V0dGVyMyk7ICRndXR0ZXIzLSA6IHZhcigtLWd1dHRlcjMtKTtcbiRndXR0ZXI0IDogdmFyKC0tZ3V0dGVyNCk7ICRndXR0ZXI0LSA6IHZhcigtLWd1dHRlcjQtKTtcbiRndXR0ZXI1IDogdmFyKC0tZ3V0dGVyNSk7ICRndXR0ZXI1LSA6IHZhcigtLWd1dHRlcjUtKTtcbiRndXR0ZXI2IDogdmFyKC0tZ3V0dGVyNik7ICRndXR0ZXI2LSA6IHZhcigtLWd1dHRlcjYtKTtcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb2xvdXJzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLy8gRXhwbGljaXQgQ29sb3VycyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8vIEV4cGxpY2l0IGNvbG91cnMgYXJlIGEgd2hhdCB0aGV5IGFyZS4gR3JlZW4gaXMgZ3JlZW4sIGJsdWUgaXMgYmx1ZS4uLiBubyBvYnNjdXJpdHkuXG4vLy8gV2Ugc3VmZml4IG51bWJlcnMgdG8gZGVmaW5lIHZhcmlhdGlvbnMgb2YgY29sb3VycyBpbiBubyBwYXJ0aWN1bGFyIG9yZGVyIG9mIHNoYWRlLiBcbi8vLyBFeGFtcGxlOiBncmVlbjEsIGdyZWVuMiwgZ3JlZW4zLCBncmVlbjQuIFRoaXMgaXMgc28gd2UgY2FuIGltbWlkaWF0ZWx5IHNlZSBob3cgXG4vLy8gbWFueSBvcHRpb25zIHdlIGhhdmUgZm9yIGEgc2luZ2xlIGNvbG91ciBhdCBhIGdsYW5jZS4gSWYgeW91IHNlZSAkZ3JlZW40LCB5b3Uga25vdyB0aGlzXG4vLy8gcHJvamVjdCBpcyB1c2luZyBmb3VyIHZhcmlhdGlvbnMgb2YgZ3JlZW4uIFRoaXMgaXMgYWxzbyBvZnRlbiB1c2VmdWwgYmVjYXVzZSBtYW55IGRldmVsb3BtZW50IFxuLy8vIHRvb2xzIHdpbGwgYXV0by1zdWdnZXN0IGNvbG91cnMgd2l0aCBhY3R1YWwgZXhhbXBsZXMgb2YgdGhlIGNvbG91ci4gXG4vLy8gVGhlIFBhbGxldGVzIG1vZHVsZSAoYXQgdGhlIGJvdHRvbSBvZiB0aGlzIGZpbGUpIHdpbGwgb3V0cHV0IHNoYWRlZCBuYW1lZCB2YXJpYXRpb25zLCBcbi8vLy8gPGNvbG91cj4tZGFyayBhbmQgPGNvbG91cj4tbGlnaHQuIElmIHlvdSBuZWVkIGFkZGl0aW9uYWwgc2hhZGVzIHBsZWFzZSByZWZyYWltIGZyb20gZ29pbmcgZG93biBcbi8vLyB0aGUgJ2xpZ2h0ZXInLCAnbGlnaHRlc3QnLCAnZGFya2VyJywgJ2Rhcmtlc3QnIGNvbnZlbnRpb24uIFRoZXNlIGFyZSBub3QgcGFydGljdWFybHkgbGVnaWFibGUgXG4vLy8gYW5kIHRoZXkgYXJlIGxpbWl0ZWQgYnkgaG93IGNyZWF0aXZlIChjb25mdXNpbmcpIHlvdXIgd29yZGluZyBjYW4gYmUuIFxuLy8vIEl0IGlzIGJldHRlciB0byBkZWZpbmUgYSBuZXcgZXhwbGNpdCBjb2xvdXIgZW50aXJlbHkuIFxuLy8vIEBzZWUgaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS93aGF0LWRvLXlvdS1uYW1lLWNvbG9yLXZhcmlhYmxlcy9cblxuJGJsdWUgICA6ICMxMzFmNmI7IC8vIFByaW1hcnlcbiRibHVlMiAgOiAjMjkyQjY4OyAvLyBOYWtlZCBMaW5rXG4kYmx1ZTMgIDogIzNkM2Y3ZjsgLy8gTGlnbnQgR3JhZGllbnRcbiRibHVlNCAgOiAjMTAxMjRkOyAvLyBEYXJrIEdyYWRpZW50XG4kYmx1ZTUgIDogIzAwOTVGRjsgLy8gTmF2aWdhdGlvbiBsaW5rIGhvdmVyICBcbi8vICRyZWQgICAgOiAjRTAzQTQwOyAvLyBTZWNvbmRhcnlcbiRyZWQgICAgOiAjREYzMDM1OyAvLyBTZWNvbmRhcnkgLSBUaGlzIHBhc3NlcyB0aGUgY29udHJhc3QgcmF0aW8gYWNjZXNzaWJpbGl0eSB0ZXN0IGluIEdvb2dsZXMgTGlnaHRob3VzZSBcbiRncmV5ICAgOiAjOTY5Njk1O1xuJGdyZXkyICA6ICM2QTZBNkE7IC8vIEZvbnRcbiRncmV5MyAgOiAjRjRGNEY0OyAvLyBMaWdodGVyIEdyZXkgQmFja2dyb3VuZFxuJGdyZXk0ICA6ICNkY2RjZGM7IFxuJGdyZXk1ICA6ICNCMUIxQjE7IC8vIFNwYWNlcnMgPGhyPlxuJGdyZXk2ICA6ICMzMzMyMzY7IC8vIE5hdmlnYXRpb24gbGluayBob3ZlciAgXG4kZ3JlZW4gIDogIzUwQkMwODtcbiRncmVlbjIgOiAjNzZiYjI4OyAvLyBFU0cgZ3JlZW5cbiR5ZWxsb3cgOiAjRjZGNERCOyAvLyBEaXNjbGFpbWVyIEJhY2tncm91bmRcbiR5ZWxsb3cyIDogI0ZDQjAwMjsgXG4kYmxhY2sgIDogIzFFMUExQTtcblxuJG1hcmsgOiAkYmx1ZTU7IC8vIGJhY2tncm91bmQgY29sb3VyIGZvciA8bWFyaz4gdGFnc1xuXG4kcHJpbWFyeSAgIDogdmFyKC0tcHJpbWFyeSwgICN7JGJsdWV9KTtcbiRzZWNvbmRhcnkgOiB2YXIoLS1zZWNvbmRhcnksICN7JHJlZH0pO1xuXG4vLy8gUGFsZXR0ZSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8vIEJ5IGxvYWRpbmcgY29uZmlndXJhdGlvbnMgaW50byB0aGlzICdwYWxsZXRlJyBtb2R1bGUsIHdlIHdpbGwgYmUgYWJsZVxuLy8vIHRvIGRlY2xhcmUgdmFyaWFudHMgb2YgYSBmZXcgY29tbW9uIGNvbG91cnMuIFlvdSBjYW4gYWxzbyBhZGp1c3QgdGhlIGxpZ2h0bmVzc1xuLy8vIG9yIGRhcmtuZXNzIG9mIGVhY2ggdmFyaWFudCBieSBwYXNzaW5nIGluIHRoZSByZWxldmFudCBwcml2YXRlIHJ1bGVzLiBcbi8vLyBQYWxldHRlIHdpbGwgYWxzbyBleHBvc2UgcG9wdWxhciBzb2NpYWwgbWVkaWEgY29sb3VycyBhbmQgdGhlIFllbGxvIGJyYW5kIGNvbG91ci5cbi8vLyBAc2VlIGh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kb2N1bWVudGF0aW9uL2F0LXJ1bGVzL2ZvcndhcmQjY29uZmlndXJpbmctbW9kdWxlc1xuLy8vIEBvdXRwdXQgJGdyZWVuIDogIzAyOTI5QTsgJGdyZWVuLWRhcmsgOiAjMjU2NTY5OyAkZ3JlZW4tbGlnaHQ6ICMwNGI5YzQ7XG5cbkBmb3J3YXJkICdjcmVhdGUvcGFsZXR0ZScgd2l0aCAoXG4gICRibHVlICAgOiAkYmx1ZSxcbiAgJHJlZCAgICA6ICRyZWQsXG4gICRncmV5ICAgOiAkZ3JleSxcbiAgJHllbGxvdyA6ICR5ZWxsb3csXG4gICRncmVlbiAgOiAkZ3JlZW4sXG4gICRibGFjayAgOiAkYmxhY2tcbik7XG4iXX0= */