header.header {
  padding-top: 0;
  padding-bottom: calc(400px + 10vw);
}
@media (min-width: 481px) {
  header.header {
    grid-column: 2/span 2;
  }
}
header.header > h1 {
  display: none;
}
header.header > h2 {
  font-size: 1.5625em;
  line-height: 1.6;
}
header.header .introduction {
  margin-top: calc(var(--gap) * 0.5);
}
header.header .introduction > h2 {
  font-size: 3.8125em;
  font-size: clamp(2.5em, 5vw, 3.8125em);
  line-height: 1.2;
}
header.header .introduction > h3:first-of-type {
  color: #6a6a6a;
  font-weight: normal;
}

body > background-image {
  height: calc(400px + 10vw);
  align-self: end;
  grid-row: 2;
}
body > background-image img {
  max-width: 1680px;
  -o-object-position: 50% 54%;
     object-position: 50% 54%;
}
body > background-image::after {
  opacity: 1;
  z-index: 2;
  background-image: linear-gradient(to bottom, white, transparent 300px, transparent calc(100% - 200px), black);
}
@media (min-width: 1681px) {
  body > background-image::before {
    content: "";
    z-index: 1;
    position: absolute;
    width: calc((100vw - 1680px) + 260px + 1px);
    height: 100%;
    right: -1px;
    top: 0;
    filter: blur(1px);
    background: linear-gradient(to right, transparent 260px, rgba(0, 0, 0, 0.4)), linear-gradient(177.7deg, rgb(9, 27, 71) 0%, rgb(34, 67, 119) 25%, rgb(43, 77, 113) 32%, rgb(82, 105, 124) 37%, rgb(115, 119, 112) 42%, rgb(144, 113, 85) 50%, rgb(133, 96, 69) 52%, rgb(124, 90, 66) 53%, rgb(2, 2, 0) 54%, rgb(2, 2, 1) 57%, rgb(74, 70, 71) 57%, rgb(62, 60, 61) 58%, rgb(30, 29, 29) 58%, rgb(34, 32, 34) 58%, rgb(80, 67, 59) 59%, rgb(112, 100, 94) 59.5%, rgb(67, 63, 62) 60%, rgb(18, 18, 18) 60.6%, rgb(36, 30, 16) 63%, rgb(63, 47, 28) 64%, rgb(63, 57, 62) 65%, rgb(29, 35, 52) 68%, rgb(3, 6, 25) 75%, rgb(4, 6, 22) 87%, rgb(3, 4, 13) 100%);
    -webkit-mask-image: linear-gradient(to right, transparent, black 260px);
            mask-image: linear-gradient(to right, transparent, black 260px);
  }
}
@media (max-width: 980px) {
  body > background-image {
    grid-column-end: 4;
  }
  body > background-image img {
    display: none;
  }
  body > background-image::after {
    background-image: linear-gradient(to bottom, white, #c4d0db);
  }
}

main .tag-line-sign-off {
  box-shadow: initial !important;
  background-color: #000000;
  padding-bottom: 0;
}
main .tag-line-sign-off tag-line {
  justify-content: center;
}
main .content-block {
  box-shadow: initial !important;
  background-color: #000000;
}
main .content-block article-list {
  grid-row-end: span 2;
  grid-gap: calc(var(--gap) * 0.5);
  align-content: flex-start;
  padding-top: 20vh;
}
main .content-block article-list .article .image {
  position: absolute;
  width: 33%;
  right: 0;
  top: 0;
  margin: 0;
  height: 20vh;
  left: initial;
}
main .content-block article-list .article a {
  padding: 0;
  background-color: initial;
  border: initial;
}
main .content-block article-list .article a h2 {
  margin: 0;
  color: #333236;
  text-transform: uppercase;
}
@media (hover: hover) {
  main .content-block article-list .article a:hover h2 {
    color: white;
  }
}
main .content-block.dark .text {
  color: #969695;
}
main .content-block.dark .text .heading-h3 {
  color: white;
}
@media (max-width: 1400px) {
  main .content-block > * {
    grid-column: initial !important;
  }
}
@media (min-width: 980px) and (max-width: 1400px) {
  main .content-block {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 980px) {
  main .content-block {
    grid-template-columns: 1fr;
  }
}

.widget {
  grid-row: 1/span 2;
}

figure#service-centre-map {
  grid-row: 2;
  grid-column: 4;
  position: relative;
  opacity: 0;
  height: -moz-fit-content;
  height: fit-content;
}
figure#service-centre-map .map {
  filter: drop-shadow(0px 0px 15px rgba(0, 0, 0, 0.2));
}
figure#service-centre-map .map path {
  transition: fill 0.5s cubic-bezier(0.42, 0, 0.58, 1);
}
figure#service-centre-map a {
  position: absolute;
  display: block;
  top: var(--y);
  left: var(--x);
  opacity: 0;
  transform: translateY(-20px);
  z-index: 1;
}
figure#service-centre-map a span {
  position: absolute;
  bottom: calc(100% - 3px);
  left: 50%;
  white-space: nowrap;
  font-size: 0.875em;
  background-color: white;
  padding: 1px 6px;
  border: 1px solid #f4f4f4;
  border-radius: 4px;
  pointer-events: none;
  opacity: 0;
  transform: translate(-50%, 10px);
  transition: opacity var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, ), transform 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
figure#service-centre-map a svg.pin {
  width: 16px;
  width: clamp(16px, 2vw, 22px);
  fill: #131f6b;
  display: block;
  position: relative;
  transition: fill var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, );
}
@media (hover: hover) {
  figure#service-centre-map a:hover {
    z-index: 1;
  }
  figure#service-centre-map a:hover span {
    opacity: 1;
    transform: translate(-50%, 0);
  }
  figure#service-centre-map a:hover svg.pin {
    fill: #df3035;
  }
}
@media (hover: hover) {
  figure#service-centre-map a:hover[data-for=bedford] ~ svg g path:nth-of-type(9) {
    fill: #f4f4f4;
  }
  figure#service-centre-map a:hover[data-for=bristol] ~ svg g path:nth-of-type(7) {
    fill: #f4f4f4;
  }
  figure#service-centre-map a:hover[data-for=gateshead] ~ svg g path:nth-of-type(1) {
    fill: #f4f4f4;
  }
  figure#service-centre-map a:hover[data-for=glasgow] ~ svg g path:nth-of-type(5) {
    fill: #f4f4f4;
  }
  figure#service-centre-map a:hover[data-for=leeds] ~ svg g path:nth-of-type(10) {
    fill: #f4f4f4;
  }
  figure#service-centre-map a:hover[data-for=manchester] ~ svg g path:nth-of-type(14) {
    fill: #f4f4f4;
  }
  figure#service-centre-map a:hover[data-for=norwich] ~ svg g path:nth-of-type(8) {
    fill: #f4f4f4;
  }
  figure#service-centre-map a:hover[data-for=plymouth] ~ svg g path:nth-of-type(3) {
    fill: #f4f4f4;
  }
  figure#service-centre-map a:hover[data-for=portsmouth] ~ svg g path:nth-of-type(4) {
    fill: #f4f4f4;
  }
  figure#service-centre-map a:hover[data-for=rb-centre] ~ svg g path:nth-of-type(6) {
    fill: #f4f4f4;
  }
}
@media (max-width: 980px) {
  figure#service-centre-map {
    grid-row: 2;
    grid-column: 2;
    height: 400px;
    z-index: 1;
    width: -moz-fit-content;
    width: fit-content;
    align-self: end;
    top: -30px;
    justify-self: center;
  }
  figure#service-centre-map .map {
    height: 100%;
  }
  figure#service-centre-map span {
    display: none;
  }
}
figure#service-centre-map.in-view {
  opacity: 1;
  transition: opacity 0.5s cubic-bezier(0.42, 0, 0.58, 1);
}
figure#service-centre-map.in-view a {
  opacity: 1;
  transform: translateY(0);
  transition: opacity var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, ), transform 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
figure#service-centre-map.in-view a:nth-of-type(1) {
  transition-delay: 0.35s;
}
figure#service-centre-map.in-view a:nth-of-type(2) {
  transition-delay: 0.4s;
}
figure#service-centre-map.in-view a:nth-of-type(3) {
  transition-delay: 0.45s;
}
figure#service-centre-map.in-view a:nth-of-type(4) {
  transition-delay: 0.5s;
}
figure#service-centre-map.in-view a:nth-of-type(5) {
  transition-delay: 0.55s;
}
figure#service-centre-map.in-view a:nth-of-type(6) {
  transition-delay: 0.6s;
}
figure#service-centre-map.in-view a:nth-of-type(7) {
  transition-delay: 0.65s;
}
figure#service-centre-map.in-view a:nth-of-type(8) {
  transition-delay: 0.7s;
}
figure#service-centre-map.in-view a:nth-of-type(9) {
  transition-delay: 0.75s;
}
figure#service-centre-map.in-view a:nth-of-type(10) {
  transition-delay: 0.8s;
}
figure#service-centre-map.in-view a:nth-of-type(11) {
  transition-delay: 0.85s;
}
figure#service-centre-map.in-view a:nth-of-type(12) {
  transition-delay: 0.9s;
}
figure#service-centre-map.in-view a:nth-of-type(13) {
  transition-delay: 0.95s;
}
figure#service-centre-map.in-view a:nth-of-type(14) {
  transition-delay: 1s;
}
figure#service-centre-map.in-view a:nth-of-type(15) {
  transition-delay: 1.05s;
}
figure#service-centre-map.in-view a:nth-of-type(16) {
  transition-delay: 1.1s;
}
figure#service-centre-map.in-view a:nth-of-type(17) {
  transition-delay: 1.15s;
}
figure#service-centre-map.in-view a:nth-of-type(18) {
  transition-delay: 1.2s;
}
figure#service-centre-map.in-view a:nth-of-type(19) {
  transition-delay: 1.25s;
}
figure#service-centre-map.in-view a:nth-of-type(20) {
  transition-delay: 1.3s;
}
/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhZ2VzL2NvbXBhbnkuc2NzcyIsInBhZ2VzL2NvbXBhbnkuY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bkb2dnaXN0eWxlL3Nhc3MvbGlicmFyeS9zcmMvaGVscGVycy9fYnJlYWsuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AZG9nZ2lzdHlsZS9zYXNzL2xpYnJhcnkvc3JjL2NyZWF0ZS9faGVhZGluZ3Muc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AZG9nZ2lzdHlsZS9zYXNzL2xpYnJhcnkvc3JjL2NyZWF0ZS9fdW5pdHMuc2NzcyIsIl92YXJpYWJsZXMvY29sb3Vycy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bkb2dnaXN0eWxlL3Nhc3MvbGlicmFyeS9zcmMvY3JlYXRlL19icmVha3BvaW50cy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bkb2dnaXN0eWxlL3Nhc3MvbGlicmFyeS9zcmMvY29sbGVjdGlvbnMvc3R5bGluZy9faG92ZXIuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzREE7RUFDRSxjQUFBO0VBQ0Esa0NBQUE7QUNyREY7QUNFRTtFRmlERjtJQUc4QixxQkFBQTtFQ2xENUI7QUFDRjtBRGtERTtFQUFPLGFBQUE7QUMvQ1Q7QURnREU7RUd5R0EsbUJBQUE7RUFXSSxnQkExR2M7QUZ0RHBCO0FENkNFO0VBQ0Usa0NJWEk7QUhoQ1I7QUQ0Q0k7RUc4REYsbUJBQUE7RUFHRSxzQ0FBQTtFQVFFLGdCQTVFYztBRnBDcEI7QUR3Q0k7RUFBcUIsY0tyQ2pCO0VMcUNxQyxtQkFBQTtBQ3BDN0M7O0FEd0NBO0VBRUUsMEJBQUE7RUFDQSxlQUFBO0VBQ0EsV0FBQTtBQ3RDRjtBRHdDRTtFQUNFLGlCTXNESztFTnJETCwyQkFBQTtLQUFBLHdCQUFBO0FDdENKO0FEeUNFO0VBQ0UsVUFBQTtFQUNBLFVBQUE7RUFDQSw2R0FBQTtBQ3ZDSjtBQ3JDRTtFRmdGRTtJQUNFLFdBQUE7SUFDQSxVQUFBO0lBQ0Esa0JBQUE7SUFDQSwyQ0FBQTtJQUNBLFlBQUE7SUFDQSxXQUFBO0lBQVksTUFBQTtJQUNaLGlCQUFBO0lBQ0Esd25CQUFBO0lBQ0EsdUVBQUE7WUFBQSwrREFBQTtFQ3ZDSjtBQUNGO0FDN0NFO0VGd0RGO0lBZ0NJLGtCQUFBO0VDdkNGO0VEd0NFO0lBQU0sYUFBQTtFQ3JDUjtFRHNDRTtJQUNFLDREQUFBO0VDcENKO0FBQ0Y7O0FEeUNFO0VBQ0UsOEJBQUE7RUFDQSx5QkFBQTtFQUNBLGlCQUFBO0FDdENKO0FEdUNJO0VBQVksdUJBQUE7QUNwQ2hCO0FEc0NFO0VBQ0UsOEJBQUE7RUFDQSx5QkFBQTtBQ3BDSjtBRHFDSTtFQUNFLG9CQUFBO0VBQ0EsZ0NJckVFO0VKc0VGLHlCQUFBO0VBQ0EsaUJBQUE7QUNuQ047QURxQ1E7RUFDRSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxRQUFBO0VBQ0EsTUFBQTtFQUNBLFNBQUE7RUFDQSxZQUFBO0VBQ0EsYUFBQTtBQ25DVjtBRHFDUTtFQUNFLFVBQUE7RUFDQSx5QkFBQTtFQUNBLGVBQUE7QUNuQ1Y7QURvQ1U7RUFDRSxTQUFBO0VBQ0EsY0s1R0o7RUw2R0kseUJBQUE7QUNsQ1o7QU1wR0U7RVB5SVU7SUFBSyxZQUFBO0VDakNmO0FBQ0Y7QURxQ0k7RUFDRSxjSzNIQztBSndGUDtBRG9DTTtFQUFjLFlBQUE7QUNqQ3BCO0FDekdFO0VGNklJO0lBQU0sK0JBQUE7RUNoQ1Y7QUFDRjtBQ3hHRTtFRmlHQTtJQXlDSSxxQ0FBQTtFQzlCSjtBQUNGO0FDbkhFO0VGdUdBO0lBNENJLDBCQUFBO0VDNUJKO0FBQ0Y7O0FEZ0NBO0VBQ0Usa0JBQUE7QUM3QkY7O0FEb0NBO0VBRUUsV0FBQTtFQUNBLGNBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7RUFDQSx3QkFBQTtFQUFBLG1CQUFBO0FDbENGO0FEb0NFO0VBQ0Usb0RBQUE7QUNsQ0o7QURtQ0k7RUFBTyxvREFBQTtBQ2hDWDtBRG1DRTtFQUNFLGtCQUFBO0VBQ0EsY0FBQTtFQUNBLGFBQUE7RUFDQSxjQUFBO0VBQ0EsVUFBQTtFQUNBLDRCQUFBO0VBQ0EsVUFBQTtBQ2pDSjtBRG1DSTtFQUNFLGtCQUFBO0VBQ0Esd0JBQUE7RUFDQSxTQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTtFQUNBLHVCQUFBO0VBQ0EsZ0JBQUE7RUFDQSx5QkFBQTtFQUNBLGtCQUFBO0VBQ0Esb0JBQUE7RUFDQSxVQUFBO0VBQ0EsZ0NBQUE7RUFDQSw2TEFBQTtBQ2pDTjtBRG9DSTtFQUNFLFdBQUE7RUFDQSw2QkFBQTtFQUNBLGFLbE1DO0VMbU1ELGNBQUE7RUFDQSxrQkFBQTtFQUNBLGtJQUFBO0FDbENOO0FNaExFO0VBQ0U7SVBxTkUsVUFBQTtFQ2xDSjtFRG1DSTtJQUNFLFVBQUE7SUFDQSw2QkFBQTtFQ2pDTjtFRG1DSTtJQUFVLGFLeE1WO0VKd0tKO0FBQ0Y7QU01TEU7RVA2T007SUFBc0UsYUt2TnRFO0VKMEtOO0VENkNNO0lBQXNFLGFLdk50RTtFSjZLTjtFRDBDTTtJQUFzRSxhS3ZOdEU7RUpnTE47RUR1Q007SUFBc0UsYUt2TnRFO0VKbUxOO0VEb0NNO0lBQXNFLGFLdk50RTtFSnNMTjtFRGlDTTtJQUFzRSxhS3ZOdEU7RUp5TE47RUQ4Qk07SUFBc0UsYUt2TnRFO0VKNExOO0VEMkJNO0lBQXNFLGFLdk50RTtFSitMTjtFRHdCTTtJQUFzRSxhS3ZOdEU7RUprTU47RURxQk07SUFBc0UsYUt2TnRFO0VKcU1OO0FBQ0Y7QUN0TkU7RUZnS0Y7SUE4RUksV0FBQTtJQUNBLGNBQUE7SUFDQSxhQXhQbUI7SUF5UG5CLFVBQUE7SUFDQSx1QkFBQTtJQUFBLGtCQUFBO0lBQ0EsZUFBQTtJQUNBLFVBQUE7SUFDQSxvQkFBQTtFQ3BCRjtFRHFCRTtJQUNFLFlBQUE7RUNuQko7RURxQkU7SUFBTyxhQUFBO0VDbEJUO0FBQ0Y7QURvQkU7RUFDRSxVQUFBO0VBQ0EsdURBQUE7QUNsQko7QURtQkk7RUFDRSxVQUFBO0VBQ0Esd0JBQUE7RUFDQSw2TEFBQTtBQ2pCTjtBRG1CUTtFQUNFLHVCQUFBO0FDakJWO0FEZ0JRO0VBQ0Usc0JBQUE7QUNkVjtBRGFRO0VBQ0UsdUJBQUE7QUNYVjtBRFVRO0VBQ0Usc0JBQUE7QUNSVjtBRE9RO0VBQ0UsdUJBQUE7QUNMVjtBRElRO0VBQ0Usc0JBQUE7QUNGVjtBRENRO0VBQ0UsdUJBQUE7QUNDVjtBREZRO0VBQ0Usc0JBQUE7QUNJVjtBRExRO0VBQ0UsdUJBQUE7QUNPVjtBRFJRO0VBQ0Usc0JBQUE7QUNVVjtBRFhRO0VBQ0UsdUJBQUE7QUNhVjtBRGRRO0VBQ0Usc0JBQUE7QUNnQlY7QURqQlE7RUFDRSx1QkFBQTtBQ21CVjtBRHBCUTtFQUNFLG9CQUFBO0FDc0JWO0FEdkJRO0VBQ0UsdUJBQUE7QUN5QlY7QUQxQlE7RUFDRSxzQkFBQTtBQzRCVjtBRDdCUTtFQUNFLHVCQUFBO0FDK0JWO0FEaENRO0VBQ0Usc0JBQUE7QUNrQ1Y7QURuQ1E7RUFDRSx1QkFBQTtBQ3FDVjtBRHRDUTtFQUNFLHNCQUFBO0FDd0NWIiwiZmlsZSI6InBhZ2VzL2NvbXBhbnkuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnX21vZHVsZXMnIGFzICo7XG5cblxuJGltYWdlLWhlaWdodC1vZmZzZXQgOiA0MDBweDsgXG4kc3BlY2lhbC1ncmFkaWVudDpsaW5lYXItZ3JhZGllbnQoMTc3LjdkZWcsXG5yZ2JhKDksMjcsNzEsMSkgMCUsXG5yZ2JhKDM0LDY3LDExOSwxKSAyNSUsXG5yZ2JhKDQzLDc3LDExMywxKSAzMiUsXG5yZ2JhKDgyLDEwNSwxMjQsMSkgMzclLFxucmdiYSgxMTUsMTE5LDExMiwxKSA0MiUsXG5yZ2IoMTQ0LCAxMTMsIDg1KSA1MCUsXG5yZ2JhKDEzMyw5Niw2OSwxKSA1MiUsXG5yZ2JhKDEyNCw5MCw2NiwxKSA1MyUsXG5yZ2JhKDIsMiwwLDEpIDU0JSxcbnJnYmEoMiwyLDEsMSkgNTclLFxucmdiYSg3NCw3MCw3MSwxKSA1NyUsXG5yZ2JhKDYyLDYwLDYxLDEpIDU4JSxcbnJnYmEoMzAsMjksMjksMSkgNTglLFxucmdiYSgzNCwzMiwzNCwxKSA1OCUsXG5yZ2JhKDgwLDY3LDU5LDEpIDU5JSxcbnJnYigxMTIsIDEwMCwgOTQpIDU5LjUlLFxucmdiKDY3LCA2MywgNjIpIDYwJSxcbnJnYmEoMTgsMTgsMTgsMSkgNjAuNiUsXG5yZ2IoMzYsIDMwLCAxNikgNjMlLFxucmdiYSg2Myw0NywyOCwxKSA2NCUsXG5yZ2IoNjMsIDU3LCA2MikgNjUlLFxucmdiYSgyOSwzNSw1MiwxKSA2OCUsXG5yZ2JhKDMsNiwyNSwxKSA3NSUsXG5yZ2JhKDQsNiwyMiwxKSA4NyUsXG5yZ2JhKDMsNCwxMywxKSAxMDAlKTtcblxuLy8gJHNwZWNpYWwtZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsXG4vLyByZ2JhKDIxMywyMDUsMTk4LDEpIDElLFxuLy8gcmdiYSgyMjMsMjE2LDIxMCwxKSA5JSxcbi8vIHJnYmEoMjM4LDIyNywyMjEsMSkgMTklLFxuLy8gcmdiYSgyNDksMjM5LDIyNywxKSAzMSUsXG4vLyByZ2JhKDI1NSwyNTAsMjMyLDEpIDQxJSxcbi8vIHJnYmEoMjUzLDI1MSwyMzMsMSkgNDUlLFxuLy8gcmdiYSgyNTQsMjU0LDI0NiwxKSA0NyUsXG4vLyByZ2JhKDI1MSwyNTEsMjMzLDEpIDUxJSxcbi8vIHJnYigyMzYsIDIzOSwgMjI2KSA1NSUsXG4vLyByZ2JhKDIwMCwyMDYsMjA0LDEpIDYwJSxcbi8vIHJnYigxNTYsIDE1OSwgMTM3KSA2NC41JSxcbi8vIHJnYmEoMTMyLDEwMiw3MSwxKSAgNjMuNSUsXG4vLyByZ2JhKDEzMiw5Niw2NSwxKSAgIDY1JSxcbi8vIHJnYmEoMTI1LDExNCw4MCwxKSAgNjUuOCUsXG4vLyByZ2IoMTI4LCAxMjMsIDEwMSkgNjYuMSUsXG4vLyByZ2JhKDExNCwxMTQsMTE1LDEpIDY3LjQlLFxuLy8gcmdiKDk0LCA4NSwgOTApICAgIDY3LjklLFxuLy8gcmdiKDYzLCA1NywgNTkpICAgNzElLFxuLy8gcmdiYSgzMywzMiwzNiwxKSAgICA3OCUsXG4vLyByZ2JhKDgsMTQsMzMsMSkgICAgIDg2JSxcbi8vIHJnYmEoMCw3LDIxLDEpICAgICAgOTMlKTtcblxuaGVhZGVyLmhlYWRlciB7XG4gIHBhZGRpbmctdG9wOjA7IFxuICBwYWRkaW5nLWJvdHRvbTpjYWxjKCN7JGltYWdlLWhlaWdodC1vZmZzZXR9ICsgMTB2dyk7IFxuICBAaW5jbHVkZSBicmVhay1vdXQoc21hbGwpIHsgZ3JpZC1jb2x1bW46IDIgLyBzcGFuIDI7IH1cbiAgPiBoMSB7IGRpc3BsYXk6IG5vbmU7fVxuICA+IGgyIHsgQGluY2x1ZGUgaGVhZGluZy1oMzsgfVxuICAuaW50cm9kdWN0aW9uIHtcbiAgICBtYXJnaW4tdG9wOiRnYXAwOyBcbiAgICA+IGgyIHsgQGluY2x1ZGUgaGVhZGluZy1oMTsgfVxuICAgID4gaDM6Zmlyc3Qtb2YtdHlwZSB7IGNvbG9yOiRmb250LWNvbG91cjsgZm9udC13ZWlnaHQ6bm9ybWFsOyB9XG4gIH1cbn1cblxuYm9keSA+IGJhY2tncm91bmQtaW1hZ2Uge1xuICAkb3ZlcmZsb3ctd2lkdGggOiAyNjBweDtcbiAgaGVpZ2h0OmNhbGMoI3skaW1hZ2UtaGVpZ2h0LW9mZnNldH0gKyAxMHZ3KTtcbiAgYWxpZ24tc2VsZjogZW5kO1xuICBncmlkLXJvdzogMjtcblxuICBpbWcge1xuICAgIG1heC13aWR0aDokbWVkaWEtbWF4O1xuICAgIG9iamVjdC1wb3NpdGlvbjogNTAlIDU0JTtcbiAgfVxuXG4gICY6OmFmdGVyIHsgXG4gICAgb3BhY2l0eToxO1xuICAgIHotaW5kZXg6MjtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHdoaXRlLCB0cmFuc3BhcmVudCAzMDBweCwgdHJhbnNwYXJlbnQgY2FsYygxMDAlIC0gMjAwcHgpLCBibGFjayk7XG4gIH1cblxuICBAaW5jbHVkZSBicmVhay1vdXQobWF4KSB7XG4gICAgJjo6YmVmb3JlIHsgXG4gICAgICBjb250ZW50OlwiXCI7XG4gICAgICB6LWluZGV4OjE7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDpjYWxjKCgxMDB2dyAtICN7JG1lZGlhLW1heH0pICsgI3skb3ZlcmZsb3ctd2lkdGh9ICsgMXB4KTsgXG4gICAgICBoZWlnaHQ6MTAwJTsgXG4gICAgICByaWdodDotMXB4OyB0b3A6MDsgXG4gICAgICBmaWx0ZXI6Ymx1cigxcHgpO1xuICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB0cmFuc3BhcmVudCAkb3ZlcmZsb3ctd2lkdGgsIHJnYmEoYmxhY2ssIDAuNCkpLCAkc3BlY2lhbC1ncmFkaWVudDtcbiAgICAgIG1hc2staW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdHJhbnNwYXJlbnQsIGJsYWNrICRvdmVyZmxvdy13aWR0aCk7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWstaW4oJ3NtYWxsLW1lZGl1bScpIHtcbiAgICBncmlkLWNvbHVtbi1lbmQ6IDQ7XG4gICAgaW1nIHsgZGlzcGxheTpub25lOyB9XG4gICAgJjo6YWZ0ZXIgeyBcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgd2hpdGUsICNjNGQwZGIpOyBcbiAgICB9XG4gIH1cbn1cblxubWFpbiB7XG4gIC50YWctbGluZS1zaWduLW9mZiB7XG4gICAgYm94LXNoYWRvdzppbml0aWFsICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDtcbiAgICBwYWRkaW5nLWJvdHRvbTowO1xuICAgIHRhZy1saW5lICB7IGp1c3RpZnktY29udGVudDogY2VudGVyOyB9XG4gIH1cbiAgLmNvbnRlbnQtYmxvY2sge1xuICAgIGJveC1zaGFkb3c6aW5pdGlhbCAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7XG4gICAgYXJ0aWNsZS1saXN0IHtcbiAgICAgIGdyaWQtcm93LWVuZDogc3BhbiAyO1xuICAgICAgZ3JpZC1nYXA6JGdhcDA7IFxuICAgICAgYWxpZ24tY29udGVudDogZmxleC1zdGFydDtcbiAgICAgIHBhZGRpbmctdG9wOjIwdmg7XG4gICAgICAuYXJ0aWNsZSB7XG4gICAgICAgIC5pbWFnZSB7IFxuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgXG4gICAgICAgICAgd2lkdGg6IDMzJTtcbiAgICAgICAgICByaWdodDowOyBcbiAgICAgICAgICB0b3A6MDsgXG4gICAgICAgICAgbWFyZ2luOjA7IFxuICAgICAgICAgIGhlaWdodDoyMHZoO1xuICAgICAgICAgIGxlZnQ6aW5pdGlhbDtcbiAgICAgICAgfVxuICAgICAgICBhIHtcbiAgICAgICAgICBwYWRkaW5nOjA7IFxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaXRpYWw7XG4gICAgICAgICAgYm9yZGVyOmluaXRpYWw7XG4gICAgICAgICAgaDIge1xuICAgICAgICAgICAgbWFyZ2luOjA7IFxuICAgICAgICAgICAgY29sb3I6JGdyZXk2O1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgQGluY2x1ZGUgaG92ZXIge1xuICAgICAgICAgICAgaDIgeyBjb2xvcjp3aGl0ZTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAmLmRhcmsgLnRleHQge1xuICAgICAgY29sb3I6JGdyZXk7XG4gICAgICAuaGVhZGluZy1oMyB7IGNvbG9yOndoaXRlOyB9XG4gICAgfVxuICAgIEBpbmNsdWRlIGJyZWFrLWluKGxhcmdlKSB7XG4gICAgICA+ICogeyBncmlkLWNvbHVtbjogaW5pdGlhbCAhaW1wb3J0YW50OyB9XG4gICAgfVxuICAgIEBpbmNsdWRlIGJyZWFrLWJldHdlZW4oc21hbGwtbWVkaXVtLCBsYXJnZSkge1xuICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICB9XG4gICAgQGluY2x1ZGUgYnJlYWstaW4oc21hbGwtbWVkaXVtKSB7XG4gICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG4gIH1cbn1cblxuLndpZGdldCB7XG4gIGdyaWQtcm93OjEgLyBzcGFuIDI7XG59XG5cblxuLy8gZGlzcGxheTpub25lOyBcblxuXG5maWd1cmUjc2VydmljZS1jZW50cmUtbWFwIHtcblxuICBncmlkLXJvdzogMjtcbiAgZ3JpZC1jb2x1bW46IDQ7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3BhY2l0eTowOyBcbiAgaGVpZ2h0OiBmaXQtY29udGVudDtcblxuICAubWFwIHtcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDBweCAwcHggMTVweCByZ2JhKGJsYWNrLCAwLjIpKTtcbiAgICBwYXRoIHsgdHJhbnNpdGlvbjogZmlsbCAwLjVzICRlYXNlLWluLW91dDsgfVxuICB9XG5cbiAgYSB7XG4gICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgdG9wIDogdmFyKC0teSk7XG4gICAgbGVmdDogdmFyKC0teCk7XG4gICAgb3BhY2l0eTowOyBcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwcHgpO1xuICAgIHotaW5kZXg6MTtcblxuICAgIHNwYW4geyBcbiAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgICAgYm90dG9tOmNhbGMoMTAwJSAtIDNweCk7XG4gICAgICBsZWZ0OjUwJTtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICBmb250LXNpemU6IGZvbnQtc2l6ZSgxNCk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlO1xuICAgICAgcGFkZGluZzoxcHggNnB4O1xuICAgICAgYm9yZGVyOjFweCBzb2xpZCAkZ3JleTM7XG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIG9wYWNpdHk6MDsgXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAxMHB4KTtcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgJHRyYW5zaXRpb24sIHRyYW5zZm9ybSAwLjVzICRlYXNlLW91dC1iYWNrO1xuICAgIH1cblxuICAgIHN2Zy5waW4ge1xuICAgICAgd2lkdGg6MTZweDsgXG4gICAgICB3aWR0aDpjbGFtcCgxNnB4LCAydncsIDIycHgpOyBcbiAgICAgIGZpbGw6JGJsdWU7XG4gICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgdHJhbnNpdGlvbjogZmlsbCAkdHJhbnNpdGlvbjtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBob3ZlciB7XG4gICAgICB6LWluZGV4OjE7XG4gICAgICBzcGFuIHtcbiAgICAgICAgb3BhY2l0eToxOyBcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCk7XG4gICAgICB9XG4gICAgICBzdmcucGluIHsgZmlsbDokcmVkOyB9XG4gICAgfVxuXG4gICAgJG9mZmljZXMgOiAoXG4gICAgICAnYmVkZm9yZCcgICAgOiA5LCBcbiAgICAgICdicmlzdG9sJyAgICA6IDcsIFxuICAgICAgJ2dhdGVzaGVhZCcgIDogMSwgXG4gICAgICAnZ2xhc2dvdycgICAgOiA1LCBcbiAgICAgICdsZWVkcycgICAgICA6IDEwLCBcbiAgICAgICdtYW5jaGVzdGVyJyA6IDE0LCBcbiAgICAgICdub3J3aWNoJyAgICA6IDgsIFxuICAgICAgJ3BseW1vdXRoJyAgIDogMywgXG4gICAgICAncG9ydHNtb3V0aCcgOiA0LCBcbiAgICAgICdyYi1jZW50cmUnICA6IDZcbiAgICApO1xuXG4gICAgQGluY2x1ZGUgaG92ZXIge1xuICAgICAgQGVhY2ggJHBpbk5hbWUsICRjb3VudHlJbmRleCBpbiAkb2ZmaWNlcyB7XG4gICAgICAgICZbZGF0YS1mb3I9XCIjeyRwaW5OYW1lfVwiXSB+IHN2ZyBnIHBhdGg6bnRoLW9mLXR5cGUoI3skY291bnR5SW5kZXh9KSB7IGZpbGw6JGdyZXkzOyAgfVxuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWstaW4oJ3NtYWxsLW1lZGl1bScpIHtcbiAgICBncmlkLXJvdzogMjtcbiAgICBncmlkLWNvbHVtbjogMjtcbiAgICBoZWlnaHQ6JGltYWdlLWhlaWdodC1vZmZzZXQ7IFxuICAgIHotaW5kZXg6IDE7XG4gICAgd2lkdGg6IGZpdC1jb250ZW50O1xuICAgIGFsaWduLXNlbGY6IGVuZDtcbiAgICB0b3A6LTMwcHg7XG4gICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gICAgLm1hcCB7XG4gICAgICBoZWlnaHQ6MTAwJTsgXG4gICAgfVxuICAgIHNwYW4geyBkaXNwbGF5OiBub25lO31cbiAgfVxuXG4gICYuaW4tdmlldyB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXMgJGVhc2UtaW4tb3V0O1xuICAgIGEge1xuICAgICAgb3BhY2l0eToxOyBcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgJHRyYW5zaXRpb24sIHRyYW5zZm9ybSAwLjVzICRlYXNlLW91dC1iYWNrO1xuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAyMCB7XG4gICAgICAgICY6bnRoLW9mLXR5cGUoI3skaX0pIHtcbiAgICAgICAgICB0cmFuc2l0aW9uLWRlbGF5OiAoMC4wNXMgKiAkaSkgKyAwLjM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG59XG4iLCJoZWFkZXIuaGVhZGVyIHtcbiAgcGFkZGluZy10b3A6IDA7XG4gIHBhZGRpbmctYm90dG9tOiBjYWxjKDQwMHB4ICsgMTB2dyk7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNDgxcHgpIHtcbiAgaGVhZGVyLmhlYWRlciB7XG4gICAgZ3JpZC1jb2x1bW46IDIvc3BhbiAyO1xuICB9XG59XG5oZWFkZXIuaGVhZGVyID4gaDEge1xuICBkaXNwbGF5OiBub25lO1xufVxuaGVhZGVyLmhlYWRlciA+IGgyIHtcbiAgZm9udC1zaXplOiAxLjU2MjVlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbn1cbmhlYWRlci5oZWFkZXIgLmludHJvZHVjdGlvbiB7XG4gIG1hcmdpbi10b3A6IGNhbGModmFyKC0tZ2FwKSAqIDAuNSk7XG59XG5oZWFkZXIuaGVhZGVyIC5pbnRyb2R1Y3Rpb24gPiBoMiB7XG4gIGZvbnQtc2l6ZTogMy44MTI1ZW07XG4gIGZvbnQtc2l6ZTogY2xhbXAoMi41ZW0sIDV2dywgMy44MTI1ZW0pO1xuICBsaW5lLWhlaWdodDogMS4yO1xufVxuaGVhZGVyLmhlYWRlciAuaW50cm9kdWN0aW9uID4gaDM6Zmlyc3Qtb2YtdHlwZSB7XG4gIGNvbG9yOiAjNmE2YTZhO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xufVxuXG5ib2R5ID4gYmFja2dyb3VuZC1pbWFnZSB7XG4gIGhlaWdodDogY2FsYyg0MDBweCArIDEwdncpO1xuICBhbGlnbi1zZWxmOiBlbmQ7XG4gIGdyaWQtcm93OiAyO1xufVxuYm9keSA+IGJhY2tncm91bmQtaW1hZ2UgaW1nIHtcbiAgbWF4LXdpZHRoOiAxNjgwcHg7XG4gIG9iamVjdC1wb3NpdGlvbjogNTAlIDU0JTtcbn1cbmJvZHkgPiBiYWNrZ3JvdW5kLWltYWdlOjphZnRlciB7XG4gIG9wYWNpdHk6IDE7XG4gIHotaW5kZXg6IDI7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHdoaXRlLCB0cmFuc3BhcmVudCAzMDBweCwgdHJhbnNwYXJlbnQgY2FsYygxMDAlIC0gMjAwcHgpLCBibGFjayk7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMTY4MXB4KSB7XG4gIGJvZHkgPiBiYWNrZ3JvdW5kLWltYWdlOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgei1pbmRleDogMTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IGNhbGMoKDEwMHZ3IC0gMTY4MHB4KSArIDI2MHB4ICsgMXB4KTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcmlnaHQ6IC0xcHg7XG4gICAgdG9wOiAwO1xuICAgIGZpbHRlcjogYmx1cigxcHgpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdHJhbnNwYXJlbnQgMjYwcHgsIHJnYmEoMCwgMCwgMCwgMC40KSksIGxpbmVhci1ncmFkaWVudCgxNzcuN2RlZywgcmdiKDksIDI3LCA3MSkgMCUsIHJnYigzNCwgNjcsIDExOSkgMjUlLCByZ2IoNDMsIDc3LCAxMTMpIDMyJSwgcmdiKDgyLCAxMDUsIDEyNCkgMzclLCByZ2IoMTE1LCAxMTksIDExMikgNDIlLCByZ2IoMTQ0LCAxMTMsIDg1KSA1MCUsIHJnYigxMzMsIDk2LCA2OSkgNTIlLCByZ2IoMTI0LCA5MCwgNjYpIDUzJSwgcmdiKDIsIDIsIDApIDU0JSwgcmdiKDIsIDIsIDEpIDU3JSwgcmdiKDc0LCA3MCwgNzEpIDU3JSwgcmdiKDYyLCA2MCwgNjEpIDU4JSwgcmdiKDMwLCAyOSwgMjkpIDU4JSwgcmdiKDM0LCAzMiwgMzQpIDU4JSwgcmdiKDgwLCA2NywgNTkpIDU5JSwgcmdiKDExMiwgMTAwLCA5NCkgNTkuNSUsIHJnYig2NywgNjMsIDYyKSA2MCUsIHJnYigxOCwgMTgsIDE4KSA2MC42JSwgcmdiKDM2LCAzMCwgMTYpIDYzJSwgcmdiKDYzLCA0NywgMjgpIDY0JSwgcmdiKDYzLCA1NywgNjIpIDY1JSwgcmdiKDI5LCAzNSwgNTIpIDY4JSwgcmdiKDMsIDYsIDI1KSA3NSUsIHJnYig0LCA2LCAyMikgODclLCByZ2IoMywgNCwgMTMpIDEwMCUpO1xuICAgIG1hc2staW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdHJhbnNwYXJlbnQsIGJsYWNrIDI2MHB4KTtcbiAgfVxufVxuQG1lZGlhIChtYXgtd2lkdGg6IDk4MHB4KSB7XG4gIGJvZHkgPiBiYWNrZ3JvdW5kLWltYWdlIHtcbiAgICBncmlkLWNvbHVtbi1lbmQ6IDQ7XG4gIH1cbiAgYm9keSA+IGJhY2tncm91bmQtaW1hZ2UgaW1nIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIGJvZHkgPiBiYWNrZ3JvdW5kLWltYWdlOjphZnRlciB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgd2hpdGUsICNjNGQwZGIpO1xuICB9XG59XG5cbm1haW4gLnRhZy1saW5lLXNpZ24tb2ZmIHtcbiAgYm94LXNoYWRvdzogaW5pdGlhbCAhaW1wb3J0YW50O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO1xuICBwYWRkaW5nLWJvdHRvbTogMDtcbn1cbm1haW4gLnRhZy1saW5lLXNpZ24tb2ZmIHRhZy1saW5lIHtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5tYWluIC5jb250ZW50LWJsb2NrIHtcbiAgYm94LXNoYWRvdzogaW5pdGlhbCAhaW1wb3J0YW50O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO1xufVxubWFpbiAuY29udGVudC1ibG9jayBhcnRpY2xlLWxpc3Qge1xuICBncmlkLXJvdy1lbmQ6IHNwYW4gMjtcbiAgZ3JpZC1nYXA6IGNhbGModmFyKC0tZ2FwKSAqIDAuNSk7XG4gIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIHBhZGRpbmctdG9wOiAyMHZoO1xufVxubWFpbiAuY29udGVudC1ibG9jayBhcnRpY2xlLWxpc3QgLmFydGljbGUgLmltYWdlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMzMlO1xuICByaWdodDogMDtcbiAgdG9wOiAwO1xuICBtYXJnaW46IDA7XG4gIGhlaWdodDogMjB2aDtcbiAgbGVmdDogaW5pdGlhbDtcbn1cbm1haW4gLmNvbnRlbnQtYmxvY2sgYXJ0aWNsZS1saXN0IC5hcnRpY2xlIGEge1xuICBwYWRkaW5nOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBpbml0aWFsO1xuICBib3JkZXI6IGluaXRpYWw7XG59XG5tYWluIC5jb250ZW50LWJsb2NrIGFydGljbGUtbGlzdCAuYXJ0aWNsZSBhIGgyIHtcbiAgbWFyZ2luOiAwO1xuICBjb2xvcjogIzMzMzIzNjtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cbkBtZWRpYSAoaG92ZXI6IGhvdmVyKSB7XG4gIG1haW4gLmNvbnRlbnQtYmxvY2sgYXJ0aWNsZS1saXN0IC5hcnRpY2xlIGE6aG92ZXIgaDIge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgfVxufVxubWFpbiAuY29udGVudC1ibG9jay5kYXJrIC50ZXh0IHtcbiAgY29sb3I6ICM5Njk2OTU7XG59XG5tYWluIC5jb250ZW50LWJsb2NrLmRhcmsgLnRleHQgLmhlYWRpbmctaDMge1xuICBjb2xvcjogd2hpdGU7XG59XG5AbWVkaWEgKG1heC13aWR0aDogMTQwMHB4KSB7XG4gIG1haW4gLmNvbnRlbnQtYmxvY2sgPiAqIHtcbiAgICBncmlkLWNvbHVtbjogaW5pdGlhbCAhaW1wb3J0YW50O1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogOTgwcHgpIGFuZCAobWF4LXdpZHRoOiAxNDAwcHgpIHtcbiAgbWFpbiAuY29udGVudC1ibG9jayB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgfVxufVxuQG1lZGlhIChtYXgtd2lkdGg6IDk4MHB4KSB7XG4gIG1haW4gLmNvbnRlbnQtYmxvY2sge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICB9XG59XG5cbi53aWRnZXQge1xuICBncmlkLXJvdzogMS9zcGFuIDI7XG59XG5cbmZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAge1xuICBncmlkLXJvdzogMjtcbiAgZ3JpZC1jb2x1bW46IDQ7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3BhY2l0eTogMDtcbiAgaGVpZ2h0OiBmaXQtY29udGVudDtcbn1cbmZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAgLm1hcCB7XG4gIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDBweCAxNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSk7XG59XG5maWd1cmUjc2VydmljZS1jZW50cmUtbWFwIC5tYXAgcGF0aCB7XG4gIHRyYW5zaXRpb246IGZpbGwgMC41cyBjdWJpYy1iZXppZXIoMC40MiwgMCwgMC41OCwgMSk7XG59XG5maWd1cmUjc2VydmljZS1jZW50cmUtbWFwIGEge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB0b3A6IHZhcigtLXkpO1xuICBsZWZ0OiB2YXIoLS14KTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMHB4KTtcbiAgei1pbmRleDogMTtcbn1cbmZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAgYSBzcGFuIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IGNhbGMoMTAwJSAtIDNweCk7XG4gIGxlZnQ6IDUwJTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgZm9udC1zaXplOiAwLjg3NWVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgcGFkZGluZzogMXB4IDZweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2Y0ZjRmNDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMTBweCk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tdHJhbnNpdGlvbi1kdXJhdGlvbiwgMC4ycykgdmFyKC0tdHJhbnNpdGlvbi1lYXNlLCBjdWJpYy1iZXppZXIoMC40MiwgMCwgMC41OCwgMSkpIHZhcigtLXRyYW5zaXRpb24tZGVsYXksICksIHRyYW5zZm9ybSAwLjVzIGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIsIDEuMjc1KTtcbn1cbmZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAgYSBzdmcucGluIHtcbiAgd2lkdGg6IDE2cHg7XG4gIHdpZHRoOiBjbGFtcCgxNnB4LCAydncsIDIycHgpO1xuICBmaWxsOiAjMTMxZjZiO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0cmFuc2l0aW9uOiBmaWxsIHZhcigtLXRyYW5zaXRpb24tZHVyYXRpb24sIDAuMnMpIHZhcigtLXRyYW5zaXRpb24tZWFzZSwgY3ViaWMtYmV6aWVyKDAuNDIsIDAsIDAuNTgsIDEpKSB2YXIoLS10cmFuc2l0aW9uLWRlbGF5LCApO1xufVxuQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcCBhOmhvdmVyIHtcbiAgICB6LWluZGV4OiAxO1xuICB9XG4gIGZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAgYTpob3ZlciBzcGFuIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIDApO1xuICB9XG4gIGZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAgYTpob3ZlciBzdmcucGluIHtcbiAgICBmaWxsOiAjZGYzMDM1O1xuICB9XG59XG5AbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICBmaWd1cmUjc2VydmljZS1jZW50cmUtbWFwIGE6aG92ZXJbZGF0YS1mb3I9YmVkZm9yZF0gfiBzdmcgZyBwYXRoOm50aC1vZi10eXBlKDkpIHtcbiAgICBmaWxsOiAjZjRmNGY0O1xuICB9XG4gIGZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAgYTpob3ZlcltkYXRhLWZvcj1icmlzdG9sXSB+IHN2ZyBnIHBhdGg6bnRoLW9mLXR5cGUoNykge1xuICAgIGZpbGw6ICNmNGY0ZjQ7XG4gIH1cbiAgZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcCBhOmhvdmVyW2RhdGEtZm9yPWdhdGVzaGVhZF0gfiBzdmcgZyBwYXRoOm50aC1vZi10eXBlKDEpIHtcbiAgICBmaWxsOiAjZjRmNGY0O1xuICB9XG4gIGZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAgYTpob3ZlcltkYXRhLWZvcj1nbGFzZ293XSB+IHN2ZyBnIHBhdGg6bnRoLW9mLXR5cGUoNSkge1xuICAgIGZpbGw6ICNmNGY0ZjQ7XG4gIH1cbiAgZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcCBhOmhvdmVyW2RhdGEtZm9yPWxlZWRzXSB+IHN2ZyBnIHBhdGg6bnRoLW9mLXR5cGUoMTApIHtcbiAgICBmaWxsOiAjZjRmNGY0O1xuICB9XG4gIGZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAgYTpob3ZlcltkYXRhLWZvcj1tYW5jaGVzdGVyXSB+IHN2ZyBnIHBhdGg6bnRoLW9mLXR5cGUoMTQpIHtcbiAgICBmaWxsOiAjZjRmNGY0O1xuICB9XG4gIGZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAgYTpob3ZlcltkYXRhLWZvcj1ub3J3aWNoXSB+IHN2ZyBnIHBhdGg6bnRoLW9mLXR5cGUoOCkge1xuICAgIGZpbGw6ICNmNGY0ZjQ7XG4gIH1cbiAgZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcCBhOmhvdmVyW2RhdGEtZm9yPXBseW1vdXRoXSB+IHN2ZyBnIHBhdGg6bnRoLW9mLXR5cGUoMykge1xuICAgIGZpbGw6ICNmNGY0ZjQ7XG4gIH1cbiAgZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcCBhOmhvdmVyW2RhdGEtZm9yPXBvcnRzbW91dGhdIH4gc3ZnIGcgcGF0aDpudGgtb2YtdHlwZSg0KSB7XG4gICAgZmlsbDogI2Y0ZjRmNDtcbiAgfVxuICBmaWd1cmUjc2VydmljZS1jZW50cmUtbWFwIGE6aG92ZXJbZGF0YS1mb3I9cmItY2VudHJlXSB+IHN2ZyBnIHBhdGg6bnRoLW9mLXR5cGUoNikge1xuICAgIGZpbGw6ICNmNGY0ZjQ7XG4gIH1cbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA5ODBweCkge1xuICBmaWd1cmUjc2VydmljZS1jZW50cmUtbWFwIHtcbiAgICBncmlkLXJvdzogMjtcbiAgICBncmlkLWNvbHVtbjogMjtcbiAgICBoZWlnaHQ6IDQwMHB4O1xuICAgIHotaW5kZXg6IDE7XG4gICAgd2lkdGg6IGZpdC1jb250ZW50O1xuICAgIGFsaWduLXNlbGY6IGVuZDtcbiAgICB0b3A6IC0zMHB4O1xuICAgIGp1c3RpZnktc2VsZjogY2VudGVyO1xuICB9XG4gIGZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAgLm1hcCB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG4gIGZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAgc3BhbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcC5pbi12aWV3IHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGN1YmljLWJlemllcigwLjQyLCAwLCAwLjU4LCAxKTtcbn1cbmZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAuaW4tdmlldyBhIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRyYW5zaXRpb24tZHVyYXRpb24sIDAuMnMpIHZhcigtLXRyYW5zaXRpb24tZWFzZSwgY3ViaWMtYmV6aWVyKDAuNDIsIDAsIDAuNTgsIDEpKSB2YXIoLS10cmFuc2l0aW9uLWRlbGF5LCApLCB0cmFuc2Zvcm0gMC41cyBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyLCAxLjI3NSk7XG59XG5maWd1cmUjc2VydmljZS1jZW50cmUtbWFwLmluLXZpZXcgYTpudGgtb2YtdHlwZSgxKSB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDAuMzVzO1xufVxuZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcC5pbi12aWV3IGE6bnRoLW9mLXR5cGUoMikge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAwLjRzO1xufVxuZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcC5pbi12aWV3IGE6bnRoLW9mLXR5cGUoMykge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAwLjQ1cztcbn1cbmZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAuaW4tdmlldyBhOm50aC1vZi10eXBlKDQpIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMC41cztcbn1cbmZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAuaW4tdmlldyBhOm50aC1vZi10eXBlKDUpIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMC41NXM7XG59XG5maWd1cmUjc2VydmljZS1jZW50cmUtbWFwLmluLXZpZXcgYTpudGgtb2YtdHlwZSg2KSB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDAuNnM7XG59XG5maWd1cmUjc2VydmljZS1jZW50cmUtbWFwLmluLXZpZXcgYTpudGgtb2YtdHlwZSg3KSB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDAuNjVzO1xufVxuZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcC5pbi12aWV3IGE6bnRoLW9mLXR5cGUoOCkge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAwLjdzO1xufVxuZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcC5pbi12aWV3IGE6bnRoLW9mLXR5cGUoOSkge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAwLjc1cztcbn1cbmZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAuaW4tdmlldyBhOm50aC1vZi10eXBlKDEwKSB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDAuOHM7XG59XG5maWd1cmUjc2VydmljZS1jZW50cmUtbWFwLmluLXZpZXcgYTpudGgtb2YtdHlwZSgxMSkge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAwLjg1cztcbn1cbmZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAuaW4tdmlldyBhOm50aC1vZi10eXBlKDEyKSB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDAuOXM7XG59XG5maWd1cmUjc2VydmljZS1jZW50cmUtbWFwLmluLXZpZXcgYTpudGgtb2YtdHlwZSgxMykge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAwLjk1cztcbn1cbmZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAuaW4tdmlldyBhOm50aC1vZi10eXBlKDE0KSB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDFzO1xufVxuZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcC5pbi12aWV3IGE6bnRoLW9mLXR5cGUoMTUpIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMS4wNXM7XG59XG5maWd1cmUjc2VydmljZS1jZW50cmUtbWFwLmluLXZpZXcgYTpudGgtb2YtdHlwZSgxNikge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAxLjFzO1xufVxuZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcC5pbi12aWV3IGE6bnRoLW9mLXR5cGUoMTcpIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMS4xNXM7XG59XG5maWd1cmUjc2VydmljZS1jZW50cmUtbWFwLmluLXZpZXcgYTpudGgtb2YtdHlwZSgxOCkge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAxLjJzO1xufVxuZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcC5pbi12aWV3IGE6bnRoLW9mLXR5cGUoMTkpIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMS4yNXM7XG59XG5maWd1cmUjc2VydmljZS1jZW50cmUtbWFwLmluLXZpZXcgYTpudGgtb2YtdHlwZSgyMCkge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAxLjNzO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8gQnJlYWsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNicmVha1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQG1peGluIG91dCgkYnJlYWtwb2ludCkge1xuICBAbWVkaWEgKG1pbi13aWR0aDojeyRicmVha3BvaW50ICsgMX0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gaW4oJGJyZWFrcG9pbnQpIHtcbiAgQG1lZGlhIChtYXgtd2lkdGg6I3skYnJlYWtwb2ludH0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gYmV0d2VlbigkbWluLCAkbWF4KSB7XG4gIEBtZWRpYSAobWluLXdpZHRoOiN7JG1pbn0pIGFuZCAobWF4LXdpZHRoOiN7JG1heH0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIZWFkaW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQHVzZSAnc2FzczpzdHJpbmcnO1xuQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJ3Nhc3M6bWF0aCc7XG5AdXNlICcuL2NvbGxlY3Rpb25zL2ZvbnQnO1xuQHVzZSAnLi9tb2R1bGVzL3VuaXQnO1xuXG4vLyBEZWZhdWx0IEhlYWRpbmcgVmFsdWVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kaDEgOiAoXG4gICdmb250LXNpemUnICAgOiAzLjByZW0sXG4gICdsaW5lLWhlaWdodCcgOiAxLjFcbikgIWRlZmF1bHQ7XG5cbiRoMiA6IChcbiAgJ2ZvbnQtc2l6ZScgICA6IDIuNXJlbSxcbiAgJ2xpbmUtaGVpZ2h0JyA6IDEuM1xuKSAhZGVmYXVsdDtcblxuJGgzIDogKFxuICAnZm9udC1zaXplJyAgIDogMi4ycmVtLFxuICAnbGluZS1oZWlnaHQnIDogMS40XG4pICFkZWZhdWx0O1xuXG4kaDQgOiAoXG4gICdmb250LXNpemUnICAgOiAyLjByZW0sXG4gICdsaW5lLWhlaWdodCcgOiAxLjRcbikgIWRlZmF1bHQ7XG5cbiRoNSA6IChcbiAgJ2ZvbnQtc2l6ZScgICA6IDEuOHJlbSxcbiAgJ2xpbmUtaGVpZ2h0JyA6IDEuNFxuKSAhZGVmYXVsdDtcblxuJGg2IDogKFxuICAnZm9udC1zaXplJyAgIDogMS42cmVtLFxuICAnbGluZS1oZWlnaHQnIDogMS40XG4pICFkZWZhdWx0O1xuXG4kYmFzZSA6IDYyLjUgIWRlZmF1bHQ7XG4kc2NhbGVyIDogMS41dncgIWRlZmF1bHQ7XG4kZW5hYmxlLWNyb3BwaW5nIDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIEZhbGxiYWNrIExpbmUtaGVpZ2h0cyBzaG91bGQgdGhleSBub3QgaGF2ZSBiZWVuIHBhc3NlZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBpZiBub3QgbWFwLmhhcy1rZXkoJGgxLCBcImxpbmUtaGVpZ2h0XCIpIHsgJGgxIDogbWFwLnNldCgkaDEsICdsaW5lLWhlaWdodCcsIDEuMSk7IH1cbkBpZiBub3QgbWFwLmhhcy1rZXkoJGgyLCBcImxpbmUtaGVpZ2h0XCIpIHsgJGgyIDogbWFwLnNldCgkaDIsICdsaW5lLWhlaWdodCcsIDEuMyk7IH1cbkBpZiBub3QgbWFwLmhhcy1rZXkoJGgzLCBcImxpbmUtaGVpZ2h0XCIpIHsgJGgzIDogbWFwLnNldCgkaDMsICdsaW5lLWhlaWdodCcsIDEuNCk7IH1cbkBpZiBub3QgbWFwLmhhcy1rZXkoJGg0LCBcImxpbmUtaGVpZ2h0XCIpIHsgJGg0IDogbWFwLnNldCgkaDQsICdsaW5lLWhlaWdodCcsIDEuNCk7IH1cbkBpZiBub3QgbWFwLmhhcy1rZXkoJGg1LCBcImxpbmUtaGVpZ2h0XCIpIHsgJGg1IDogbWFwLnNldCgkaDUsICdsaW5lLWhlaWdodCcsIDEuNCk7IH1cbkBpZiBub3QgbWFwLmhhcy1rZXkoJGg2LCBcImxpbmUtaGVpZ2h0XCIpIHsgJGg2IDogbWFwLnNldCgkaDYsICdsaW5lLWhlaWdodCcsIDEuNCk7IH1cblxuLy8gRGVmaW5lIHRoZSB2YXJpYWJsZXMgc28gdGhleSBhcmUgc3RpbGwgYWNjZXNpYmxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJGgxLWZvbnQtc2l6ZSAgICAgOiBtYXAtZ2V0KCRoMSwgJ2ZvbnQtc2l6ZScpO1xuJGgxLWxpbmUtaGVpZ2h0ICAgOiBtYXAtZ2V0KCRoMSwgJ2xpbmUtaGVpZ2h0Jyk7XG4kaDEtZm9udC1zaXplLW1pbiA6IGlmKG1hcC5oYXMta2V5KCRoMSwgXCJmb250LXNpemUtbWluXCIpLCBtYXAtZ2V0KCRoMSwgXCJmb250LXNpemUtbWluXCIpLCBmYWxzZSk7XG4kaDEtc2NhbGVyICAgICAgICA6IGlmKG1hcC5oYXMta2V5KCRoMSwgXCJzY2FsZXJcIiksIG1hcC1nZXQoJGgxLCBcInNjYWxlclwiKSwgJHNjYWxlcik7XG5cbiRoMi1mb250LXNpemUgICAgIDogbWFwLWdldCgkaDIsICdmb250LXNpemUnKTtcbiRoMi1saW5lLWhlaWdodCAgIDogbWFwLWdldCgkaDIsICdsaW5lLWhlaWdodCcpO1xuJGgyLWZvbnQtc2l6ZS1taW4gOiBpZihtYXAuaGFzLWtleSgkaDIsIFwiZm9udC1zaXplLW1pblwiKSwgbWFwLWdldCgkaDIsIFwiZm9udC1zaXplLW1pblwiKSwgZmFsc2UpO1xuJGgyLXNjYWxlciAgICAgICAgOiBpZihtYXAuaGFzLWtleSgkaDIsIFwic2NhbGVyXCIpLCBtYXAtZ2V0KCRoMiwgXCJzY2FsZXJcIiksICRzY2FsZXIpO1xuXG4kaDMtZm9udC1zaXplICAgICA6IG1hcC1nZXQoJGgzLCAnZm9udC1zaXplJyk7XG4kaDMtbGluZS1oZWlnaHQgICA6IG1hcC1nZXQoJGgzLCAnbGluZS1oZWlnaHQnKTtcbiRoMy1mb250LXNpemUtbWluIDogaWYobWFwLmhhcy1rZXkoJGgzLCBcImZvbnQtc2l6ZS1taW5cIiksIG1hcC1nZXQoJGgzLCBcImZvbnQtc2l6ZS1taW5cIiksIGZhbHNlKTtcbiRoMy1zY2FsZXIgICAgICAgIDogaWYobWFwLmhhcy1rZXkoJGgzLCBcInNjYWxlclwiKSwgbWFwLWdldCgkaDMsIFwic2NhbGVyXCIpLCAkc2NhbGVyKTtcblxuJGg0LWZvbnQtc2l6ZSAgICAgOiBtYXAtZ2V0KCRoNCwgJ2ZvbnQtc2l6ZScpO1xuJGg0LWxpbmUtaGVpZ2h0ICAgOiBtYXAtZ2V0KCRoNCwgJ2xpbmUtaGVpZ2h0Jyk7XG4kaDQtZm9udC1zaXplLW1pbiA6IGlmKG1hcC5oYXMta2V5KCRoNCwgXCJmb250LXNpemUtbWluXCIpLCBtYXAtZ2V0KCRoNCwgXCJmb250LXNpemUtbWluXCIpLCBmYWxzZSk7XG4kaDQtc2NhbGVyICAgICAgICA6IGlmKG1hcC5oYXMta2V5KCRoNCwgXCJzY2FsZXJcIiksIG1hcC1nZXQoJGg0LCBcInNjYWxlclwiKSwgJHNjYWxlcik7XG5cbiRoNS1mb250LXNpemUgICAgIDogbWFwLWdldCgkaDUsICdmb250LXNpemUnKTtcbiRoNS1saW5lLWhlaWdodCAgIDogbWFwLWdldCgkaDUsICdsaW5lLWhlaWdodCcpO1xuJGg1LWZvbnQtc2l6ZS1taW4gOiBpZihtYXAuaGFzLWtleSgkaDUsIFwiZm9udC1zaXplLW1pblwiKSwgbWFwLWdldCgkaDUsIFwiZm9udC1zaXplLW1pblwiKSwgZmFsc2UpO1xuJGg1LXNjYWxlciAgICAgICAgOiBpZihtYXAuaGFzLWtleSgkaDUsIFwic2NhbGVyXCIpLCBtYXAtZ2V0KCRoNSwgXCJzY2FsZXJcIiksICRzY2FsZXIpO1xuXG4kaDYtZm9udC1zaXplICAgICA6IG1hcC1nZXQoJGg2LCAnZm9udC1zaXplJyk7XG4kaDYtbGluZS1oZWlnaHQgICA6IG1hcC1nZXQoJGg2LCAnbGluZS1oZWlnaHQnKTtcbiRoNi1mb250LXNpemUtbWluIDogaWYobWFwLmhhcy1rZXkoJGg2LCBcImZvbnQtc2l6ZS1taW5cIiksIG1hcC1nZXQoJGg2LCBcImZvbnQtc2l6ZS1taW5cIiksIGZhbHNlKTtcbiRoNi1zY2FsZXIgICAgICAgIDogaWYobWFwLmhhcy1rZXkoJGg2LCBcInNjYWxlclwiKSwgbWFwLWdldCgkaDYsIFwic2NhbGVyXCIpLCAkc2NhbGVyKTtcblxuLy8gSGFuZGxlcyBDcm9wcyBzaG91bGQgdGhleSBub3QgaGF2ZSBiZWVuIHBhc3NlZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJF9oMS1jcm9wLXRvcCAgICA6IGlmKG1hcC5oYXMta2V5KCRoMSwgXCJjcm9wLXRvcFwiKSwgbWFwLWdldCgkaDEsIFwiY3JvcC10b3BcIiksIGZhbHNlKTtcbiRfaDItY3JvcC10b3AgICAgOiBpZihtYXAuaGFzLWtleSgkaDIsIFwiY3JvcC10b3BcIiksIG1hcC1nZXQoJGgyLCBcImNyb3AtdG9wXCIpLCBmYWxzZSk7XG4kX2gzLWNyb3AtdG9wICAgIDogaWYobWFwLmhhcy1rZXkoJGgzLCBcImNyb3AtdG9wXCIpLCBtYXAtZ2V0KCRoMywgXCJjcm9wLXRvcFwiKSwgZmFsc2UpO1xuJF9oNC1jcm9wLXRvcCAgICA6IGlmKG1hcC5oYXMta2V5KCRoNCwgXCJjcm9wLXRvcFwiKSwgbWFwLWdldCgkaDQsIFwiY3JvcC10b3BcIiksIGZhbHNlKTtcbiRfaDUtY3JvcC10b3AgICAgOiBpZihtYXAuaGFzLWtleSgkaDUsIFwiY3JvcC10b3BcIiksIG1hcC1nZXQoJGg1LCBcImNyb3AtdG9wXCIpLCBmYWxzZSk7XG4kX2g2LWNyb3AtdG9wICAgIDogaWYobWFwLmhhcy1rZXkoJGg2LCBcImNyb3AtdG9wXCIpLCBtYXAtZ2V0KCRoNiwgXCJjcm9wLXRvcFwiKSwgZmFsc2UpO1xuXG4kX2gxLWNyb3AtYm90dG9tIDogaWYobWFwLmhhcy1rZXkoJGgxLCBcImNyb3AtYm90dG9tXCIpLCBtYXAtZ2V0KCRoMSwgXCJjcm9wLWJvdHRvbVwiKSwgZmFsc2UpO1xuJF9oMi1jcm9wLWJvdHRvbSA6IGlmKG1hcC5oYXMta2V5KCRoMiwgXCJjcm9wLWJvdHRvbVwiKSwgbWFwLWdldCgkaDIsIFwiY3JvcC1ib3R0b21cIiksIGZhbHNlKTtcbiRfaDMtY3JvcC1ib3R0b20gOiBpZihtYXAuaGFzLWtleSgkaDMsIFwiY3JvcC1ib3R0b21cIiksIG1hcC1nZXQoJGgzLCBcImNyb3AtYm90dG9tXCIpLCBmYWxzZSk7XG4kX2g0LWNyb3AtYm90dG9tIDogaWYobWFwLmhhcy1rZXkoJGg0LCBcImNyb3AtYm90dG9tXCIpLCBtYXAtZ2V0KCRoNCwgXCJjcm9wLWJvdHRvbVwiKSwgZmFsc2UpO1xuJF9oNS1jcm9wLWJvdHRvbSA6IGlmKG1hcC5oYXMta2V5KCRoNSwgXCJjcm9wLWJvdHRvbVwiKSwgbWFwLWdldCgkaDUsIFwiY3JvcC1ib3R0b21cIiksIGZhbHNlKTtcbiRfaDYtY3JvcC1ib3R0b20gOiBpZihtYXAuaGFzLWtleSgkaDYsIFwiY3JvcC1ib3R0b21cIiksIG1hcC1nZXQoJGg2LCBcImNyb3AtYm90dG9tXCIpLCBmYWxzZSk7XG5cblxuLy8gTWl4aW5zIGZvciBlYWNoIGhlYWRpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQG1peGluIF9zZXQtY3JvcCgkZm9udC1zaXplLCAkbGluZS1oZWlnaHQsICRjcm9wKSB7XG5cbiAgQGlmIChtZXRhLnR5cGUtb2YoJGNyb3ApID09ICdtYXAnKSB7XG5cbiAgICAkZm9udC1zaXplICAgOiB1bml0LnN0cmlwKCRmb250LXNpemUpICogMTA7XG4gICAgJGxpbmUtaGVpZ2h0IDogdW5pdC5zdHJpcCgkbGluZS1oZWlnaHQpO1xuICAgICR0b3AgICAgICAgICA6IGlmKG1hcC5oYXMta2V5KCRjcm9wLCBcInRvcFwiKSwgdW5pdC5zdHJpcChtYXAuZ2V0KCRjcm9wLCBcInRvcFwiKSksIDApO1xuICAgICRib3R0b20gICAgICA6IGlmKG1hcC5oYXMta2V5KCRjcm9wLCBcImJvdHRvbVwiKSwgdW5pdC5zdHJpcChtYXAuZ2V0KCRjcm9wLCBcImJvdHRvbVwiKSksIDApO1xuXG4gICAgQGluY2x1ZGUgZm9udC5jcm9wKCRmb250LXNpemUsICRsaW5lLWhlaWdodCwgJHRvcCwgJGJvdHRvbSk7XG5cbiAgfVxuXG59XG5cbkBtaXhpbiBoMSgkZm9udC1zaXplLW9ubHkgOiBmYWxzZSwgJGNyb3AgOiAkZW5hYmxlLWNyb3BwaW5nKSB7XG5cbiAgZm9udC1zaXplIDogZm9udC5zaXplKCRoMS1mb250LXNpemUpO1xuXG4gIEBpZiAoICRoMS1mb250LXNpemUtbWluIGFuZCAkaDEtZm9udC1zaXplLW1pbiA8ICRoMS1mb250LXNpemUgKSB7XG4gICAgZm9udC1zaXplIDogY2xhbXAoI3tmb250LnNpemUoJGgxLWZvbnQtc2l6ZS1taW4pfSwgI3skaDEtc2NhbGVyfSwgI3tmb250LnNpemUoJGgxLWZvbnQtc2l6ZSl9KTtcbiAgfVxuXG4gIEBpZiBub3QgJGZvbnQtc2l6ZS1vbmx5IHsgXG5cbiAgICBAaWYgKCAkY3JvcCApIHsgXG4gICAgICBAaW5jbHVkZSBmb250LmNyb3AoJGgxLWZvbnQtc2l6ZSwgJGgxLWxpbmUtaGVpZ2h0LCAkX2gxLWNyb3AtdG9wLCAkX2gxLWNyb3AtYm90dG9tICk7IFxuICAgIH0gQGVsc2Uge1xuICAgICAgbGluZS1oZWlnaHQgOiAkaDEtbGluZS1oZWlnaHQ7IFxuICAgIH1cblxuICB9XG5cbn1cblxuQG1peGluIGgyKCRmb250LXNpemUtb25seSA6IGZhbHNlLCAkY3JvcCA6ICRlbmFibGUtY3JvcHBpbmcpIHtcblxuICBmb250LXNpemUgOiBmb250LnNpemUoJGgyLWZvbnQtc2l6ZSk7XG5cbiAgQGlmICggJGgyLWZvbnQtc2l6ZS1taW4gYW5kICRoMi1mb250LXNpemUtbWluIDwgJGgyLWZvbnQtc2l6ZSApIHtcbiAgICBmb250LXNpemUgOiBjbGFtcCgje2ZvbnQuc2l6ZSgkaDItZm9udC1zaXplLW1pbil9LCAjeyRoMi1zY2FsZXJ9LCAje2ZvbnQuc2l6ZSgkaDItZm9udC1zaXplKX0pO1xuICB9XG5cbiAgQGlmIG5vdCAkZm9udC1zaXplLW9ubHkgeyBcblxuICAgIEBpZiAoICRjcm9wICkgeyBcbiAgICAgIEBpbmNsdWRlIGZvbnQuY3JvcCgkaDItZm9udC1zaXplLCAkaDItbGluZS1oZWlnaHQsICRfaDItY3JvcC10b3AsICRfaDItY3JvcC1ib3R0b20gKTsgXG4gICAgfSBAZWxzZSB7XG4gICAgICBsaW5lLWhlaWdodCA6ICRoMi1saW5lLWhlaWdodDsgXG4gICAgfVxuICAgIFxuICB9XG5cbn1cblxuQG1peGluIGgzKCRmb250LXNpemUtb25seSA6IGZhbHNlLCAkY3JvcCA6ICRlbmFibGUtY3JvcHBpbmcpIHtcblxuICBmb250LXNpemUgOiBmb250LnNpemUoJGgzLWZvbnQtc2l6ZSk7XG5cbiAgQGlmICggJGgzLWZvbnQtc2l6ZS1taW4gYW5kICRoMy1mb250LXNpemUtbWluIDwgJGgzLWZvbnQtc2l6ZSApIHtcbiAgICBmb250LXNpemUgOiBjbGFtcCgje2ZvbnQuc2l6ZSgkaDMtZm9udC1zaXplLW1pbil9LCAjeyRoMy1zY2FsZXJ9LCAje2ZvbnQuc2l6ZSgkaDMtZm9udC1zaXplKX0pO1xuICB9XG5cbiAgQGlmIG5vdCAkZm9udC1zaXplLW9ubHkgeyBcblxuICAgIEBpZiAoICRjcm9wICkgeyBcbiAgICAgIEBpbmNsdWRlIGZvbnQuY3JvcCgkaDMtZm9udC1zaXplLCAkaDMtbGluZS1oZWlnaHQsICRfaDMtY3JvcC10b3AsICRfaDMtY3JvcC1ib3R0b20gKTsgXG4gICAgfSBAZWxzZSB7XG4gICAgICBsaW5lLWhlaWdodCA6ICRoMy1saW5lLWhlaWdodDsgXG4gICAgfVxuICAgIFxuICB9XG5cbn1cblxuQG1peGluIGg0KCRmb250LXNpemUtb25seSA6IGZhbHNlLCAkY3JvcCA6ICRlbmFibGUtY3JvcHBpbmcpIHtcblxuICBmb250LXNpemUgOiBmb250LnNpemUoJGg0LWZvbnQtc2l6ZSk7XG5cbiAgQGlmICggJGg0LWZvbnQtc2l6ZS1taW4gYW5kICRoNC1mb250LXNpemUtbWluIDwgJGg0LWZvbnQtc2l6ZSApIHtcbiAgICBmb250LXNpemUgOiBjbGFtcCgje2ZvbnQuc2l6ZSgkaDQtZm9udC1zaXplLW1pbil9LCAjeyRoNC1zY2FsZXJ9LCAje2ZvbnQuc2l6ZSgkaDQtZm9udC1zaXplKX0pO1xuICB9XG5cbiAgQGlmIG5vdCAkZm9udC1zaXplLW9ubHkgeyBcblxuICAgIEBpZiAoICRjcm9wICkgeyBcbiAgICAgIEBpbmNsdWRlIGZvbnQuY3JvcCgkaDQtZm9udC1zaXplLCAkaDQtbGluZS1oZWlnaHQsICRfaDQtY3JvcC10b3AsICRfaDQtY3JvcC1ib3R0b20gKTsgXG4gICAgfSBAZWxzZSB7XG4gICAgICBsaW5lLWhlaWdodCA6ICRoNC1saW5lLWhlaWdodDsgXG4gICAgfVxuICAgIFxuICB9XG5cbn1cblxuQG1peGluIGg1KCRmb250LXNpemUtb25seSA6IGZhbHNlLCAkY3JvcCA6ICRlbmFibGUtY3JvcHBpbmcpIHtcblxuICBmb250LXNpemUgOiBmb250LnNpemUoJGg1LWZvbnQtc2l6ZSk7XG5cbiAgQGlmICggJGg1LWZvbnQtc2l6ZS1taW4gYW5kICRoNS1mb250LXNpemUtbWluIDwgJGg1LWZvbnQtc2l6ZSApIHtcbiAgICBmb250LXNpemUgOiBjbGFtcCgje2ZvbnQuc2l6ZSgkaDUtZm9udC1zaXplLW1pbil9LCAjeyRoNS1zY2FsZXJ9LCAje2ZvbnQuc2l6ZSgkaDUtZm9udC1zaXplKX0pO1xuICB9XG5cbiAgQGlmIG5vdCAkZm9udC1zaXplLW9ubHkgeyBcblxuICAgIEBpZiAoICRjcm9wICkgeyBcbiAgICAgIEBpbmNsdWRlIGZvbnQuY3JvcCgkaDUtZm9udC1zaXplLCAkaDUtbGluZS1oZWlnaHQsICRfaDUtY3JvcC10b3AsICRfaDUtY3JvcC1ib3R0b20gKTsgXG4gICAgfSBAZWxzZSB7XG4gICAgICBsaW5lLWhlaWdodCA6ICRoNS1saW5lLWhlaWdodDsgXG4gICAgfVxuICAgIFxuICB9XG5cbn1cblxuQG1peGluIGg2KCRmb250LXNpemUtb25seSA6IGZhbHNlLCAkY3JvcCA6ICRlbmFibGUtY3JvcHBpbmcpIHtcblxuICBmb250LXNpemUgOiBmb250LnNpemUoJGg2LWZvbnQtc2l6ZSk7XG5cbiAgQGlmICggJGg2LWZvbnQtc2l6ZS1taW4gYW5kICRoNi1mb250LXNpemUtbWluIDwgJGg2LWZvbnQtc2l6ZSApIHtcbiAgICBmb250LXNpemUgOiBjbGFtcCgje2ZvbnQuc2l6ZSgkaDYtZm9udC1zaXplLW1pbil9LCAjeyRoNi1zY2FsZXJ9LCAje2ZvbnQuc2l6ZSgkaDYtZm9udC1zaXplKX0pO1xuICB9XG5cbiAgQGlmIG5vdCAkZm9udC1zaXplLW9ubHkgeyBcblxuICAgIEBpZiAoICRjcm9wICkgeyBcbiAgICAgIEBpbmNsdWRlIGZvbnQuY3JvcDIoJGg2LWZvbnQtc2l6ZSwgJGg2LWxpbmUtaGVpZ2h0LCAkX2g2LWNyb3AtdG9wLCAkX2g2LWNyb3AtYm90dG9tICk7IFxuICAgIH0gQGVsc2Uge1xuICAgICAgbGluZS1oZWlnaHQgOiAkaDYtbGluZS1oZWlnaHQ7IFxuICAgIH1cbiAgICBcbiAgfVxuXG59XG5cblxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFVuaXRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AdXNlIFwic2FzczptYXRoXCI7XG5AdXNlICdzYXNzOnN0cmluZyc7XG5AdXNlICdzYXNzOm1ldGEnO1xuXG4vLyBUaGlzIHVuaXRzIGNyZWF0b3Igd2lsbCByZW5kZXIgc2l4IHBvc2l0aXZlIGFuZCBzaXggbmVnYXRpdmUgc2FzcyB2YXJpYWJsZXMgZm9yIFxuLy8gZ2Fwcywgc3BhY2VycywgYW5kIGd1dHRlcnMgcmVsYXRpdmUgdG8gdGhlIGJhc2V2IHZhbHVlcyBkZWZpbmVkIGJlbG93LlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJhc2UgVmFsdWVzIFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8vIEBzZWUgaHR0cHM6Ly9jb2RlcGVuLmlvL21hcmtub3R0b24vcGVuL0V4UGJOR2VcblxuLy8gVGhlc2UgdGhyZWUgdmFsdWVzIHdpbGwgYWN0IGEgY29uc3RhbnQgYmFzZWxpbmUgZm9yIGFsbCBmb2xsb3dpbmcgdW5pdCBkZWxjYXJhdGlvbnMuXG5cbi8vIEdhcHMgbXVzdCB1c2UgYW4gYWJzb2x1dGUgYW5kIHN0YXRpYyAncHgnIHVuaXQuIEl0IHNob3VsZCBub3QgYmUgcmVsYXRpdmUgdG8gYW55XG4vLyBwYXJlbnQgY29udGFpbmVyIGFuZCBpcyBub3QgaW50ZW5kZWQgZm9yIGZvbnQgc2l6ZXMsIHNvIHlvdSBzaG91bGQgbm90IHVzZSAncmVtJyBvciAnZW0nLiBcbiRnYXAgOiAxNnB4ICFkZWZhdWx0O1xuJGJhc2UtZ2FwIDogJGdhcDtcblxuLy8gU3BhY2VycyBtdXN0IHVzZSBhICd2aCcgdW5pdCBzbyB0aGV5IGFyZSByZWxhdGl2ZSB0byB0aGUgdXNlcnMgdmlld3BvcnQgaGVpZ2h0LXdpc2UuXG4vLyBUaGV5IHNob3VsZCBwcmltYXJpbHkgYmUgdXNlZCBmb3IgdGhlIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgb24gYSBjb21wb25lbnQgbGV2ZWwuXG4kc3BhY2VyIDogNHZoICFkZWZhdWx0OyBcbiRiYXNlLXNwYWNlciA6ICRzcGFjZXI7IFxuXG4vLyBHdXR0ZXJzIG11c3QgdXNlIGEgJ3Z3JyB1bml0IHNvIHRoZXkgYXJlIHJlbGF0aXZlIHRvIHRoZSB1c2VycyB2aWV3cG9ydCB3aWR0aC13aXNlLiBcbi8vIFRoZXkgc2hvdWxkIHByaW1hcmlseSBiZSB1c2VkIGZvciB0aGUgbGVmdCBhbmQgcmlnaHQgcGFkZGluZyBvciBtYXJnaW4gb24gYSBwYXJlbnQgbGV2ZWwuXG4vLyBBcyBhIHN1Z2dlc3Rpb24sIHRoaXMgZ3V0dGVyIGNvbnN0YW50IHNob3VsZCBiZSBoYWxmIHRoZSBzaXplIG9mIHRoZSBzcGFjZXIgdmFsdWUuXG4kZ3V0dGVyIDogM3Z3ICFkZWZhdWx0O1xuJGJhc2UtZ3V0dGVyIDogJGd1dHRlcjsgXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBc2JvbHV0ZSBVbml0cyBcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEdhcHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBHYXBzIGFyZSBhbiBhYnNvbHV0ZSB1bml0IChweCkgaW50ZW5kZWQgdG8gYmUgdXNlZCBvbiBpbmRpdmlkdWFsIGVsZW1lbnRzIHdpdGhpbiBhIGNvbXBvbmVudGVkLiBcbi8vIFRoZSBhaW0gaXMgdG8gcmV0YWluIGNvbnNpc3RhbnQgc3BhY2luZyBhbW9uZ3N0IGJsb2NrLCBpbmxpbmUsIHRhYmxlIGFuZCBncm91cCBodG1sIGVsZW1lbnRzLlxuXG5AZnVuY3Rpb24gZ2FwKCRhbW91bnQgOiAxKSB7XG4gIEBpZiAoICRhbW91bnQgPT0gMSApIHsgXG4gICAgQHJldHVybiB2YXIoLS1nYXApOyBcbiAgfSBAZWxzZSB7IFxuICAgIEByZXR1cm4gY2FsYyh2YXIoLS1nYXApICogI3skYW1vdW50fSk7IFxuICB9XG59XG5cbiRnYXAwIDogZ2FwKDAuNSk7ICRnYXAwLSA6IGdhcCgtMC41KTtcbiRnYXAgIDogZ2FwKDEpOyAgICRnYXAtICA6IGdhcCgtMSk7XG4kZ2FwMiA6IGdhcCgyKTsgICAkZ2FwMi0gOiBnYXAoLTIpO1xuJGdhcDMgOiBnYXAoMyk7ICAgJGdhcDMtIDogZ2FwKC0zKTtcbiRnYXA0IDogZ2FwKDQpOyAgICRnYXA0LSA6IGdhcCgtNCk7XG4kZ2FwNSA6IGdhcCg1KTsgICAkZ2FwNS0gOiBnYXAoLTUpO1xuJGdhcDYgOiBnYXAoNik7ICAgJGdhcDYtIDogZ2FwKC02KTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJlbGF0aXZlIFVuaXRzIFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQGZ1bmN0aW9uIF9keW5hbWljLXVuaXQoJGN1c3RvbS1wcm9wZXJ0eSwgJGFtb3VudCwgJG1pbiwgJG1heCwgJHVzZS1uZWdhdGl2ZSA6IGZhbHNlLCAkdXNlLWNsYW1wIDogdHJ1ZSkge1xuXG4gIC8vIENhbGMgTWV0aG9kXG4gICRyZXN1bHQgOiBjYWxjKCgjeyRjdXN0b20tcHJvcGVydHl9ICogI3skYW1vdW50fSkgKyAje2lmKCRtaW4gPT0gMCwgMHB4LCAkbWluKX0pO1xuICBcbiAgLy8gQ2xhbXAgTWV0aG9kXG4gIEBpZiAoICR1c2UtY2xhbXAgKSB7XG4gICAgQGlmICggJGFtb3VudCA9PSAwICkge1xuICAgICAgJHJlc3VsdCA6IGNsYW1wKCN7bWF0aC5kaXYoJG1pbiwgMil9LCAjeyRjdXN0b20tcHJvcGVydHl9ICogMC41LCAjeyRtYXh9KTtcbiAgICB9IEBlbHNlIGlmICggJGFtb3VudCA9PSAxICkge1xuICAgICAgJHJlc3VsdCA6IGNsYW1wKCN7JG1pbn0sICN7JGN1c3RvbS1wcm9wZXJ0eX0sICN7JG1heH0pO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHJlc3VsdCA6IGNsYW1wKCN7JG1pbn0sICN7JGN1c3RvbS1wcm9wZXJ0eX0gKiAjeyRhbW91bnR9LCAjeyRtYXh9KTtcbiAgICB9XG4gIH0gXG5cbiAgQGlmICggJHVzZS1uZWdhdGl2ZSApIHtcbiAgICAkcmVzdWx0IDogY2FsYygtMSAqICN7JHJlc3VsdH0pO1xuICB9XG5cbiAgQHJldHVybiAkcmVzdWx0O1xuXG59IFxuXG4vLyBTcGFjZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU3BhY2VycyBhcmUgYSByZWxhdGl2ZSB2aWV3cG9ydCBoZWlnaHQgKHZoKSB1bml0IGludGVuZGVkIHRvIGJlIHVzZWQgb24gYSBjb21wb25lbnRlZCBsZXZlbC5cbi8vIFRoZSBhaW0gaXMgdG8gcmV0YWluIGNvbnNpc3RhbnQgdG9wIGFuZCBib3R0b20gc3BhY2luZyBhbW9uZ3N0ICdzZWN0aW9uJyBhbmQgJ2N1c3RvbScgZWxlbWVudHMuXG4vLyBTcGFjZXJzIHdpbGwgZXF1YXRlIHRvIHNvbWV0aGluZyBsaWtlOiBgKCRzcGFjZXIgKiB4KSArICRnYXBgLiBcbi8vIFRoZSAnJGdhcCcgaXMgYWRkZWQgc28gdGhhdCB2aCBzcGFjaW5nIHdpbGwgbmV2ZXIgc2NhbGUgdG9vIGNsb3NlIHRvIDBweC4gXG5cbkBmdW5jdGlvbiBzcGFjZXIoJGFtb3VudCA6IDEsICRtaW4gOiAkYmFzZS1nYXAsICRtYXggOiBudWxsLCAkdXNlLW5lZ2F0aXZlIDogZmFsc2UsICR1c2UtY2xhbXAgOiB0cnVlKSB7XG4gIEBpZiAoICRhbW91bnQgPT0gMCkgeyAkYW1vdW50IDogMC41OyAkbWluIDogbWF0aC5kaXYoJG1pbiwgMik7IH1cbiAgQGlmICggbWV0YS50eXBlLW9mKCRtYXgpID09ICdudWxsJyApIHsgXG4gICAgQGlmICggbWV0YS50eXBlLW9mKCRtaW4pID09ICdzdHJpbmcnIGFuZCBzdHJpbmcuaW5kZXgoJG1pbiwgJ3ZhcicpICkge1xuICAgICAgJG1heCA6IGNhbGMoI3skbWlufSAqICN7JGFtb3VudCArIDF9KTsgXG4gICAgfSBAZWxzZSB7XG4gICAgICAkbWF4IDogI3skbWluICogKCRhbW91bnQgKyAxKX07IFxuICAgIH1cbiAgfVxuICBAcmV0dXJuIF9keW5hbWljLXVuaXQodmFyKC0tc3BhY2VyKSwgJGFtb3VudCwgJG1pbiwgJG1heCwgJHVzZS1uZWdhdGl2ZSwgJHVzZS1jbGFtcCk7XG59XG5cbiRzcGFjZXIwIDogdmFyKC0tc3BhY2VyMCk7ICRzcGFjZXIwLSA6IHZhcigtLXNwYWNlcjAtKTtcbiRzcGFjZXIgIDogdmFyKC0tc3BhY2VyMSk7ICRzcGFjZXItICA6IHZhcigtLXNwYWNlcjEtKTtcbiRzcGFjZXIyIDogdmFyKC0tc3BhY2VyMik7ICRzcGFjZXIyLSA6IHZhcigtLXNwYWNlcjItKTtcbiRzcGFjZXIzIDogdmFyKC0tc3BhY2VyMyk7ICRzcGFjZXIzLSA6IHZhcigtLXNwYWNlcjMtKTtcbiRzcGFjZXI0IDogdmFyKC0tc3BhY2VyNCk7ICRzcGFjZXI0LSA6IHZhcigtLXNwYWNlcjQtKTtcbiRzcGFjZXI1IDogdmFyKC0tc3BhY2VyNSk7ICRzcGFjZXI1LSA6IHZhcigtLXNwYWNlcjUtKTtcbiRzcGFjZXI2IDogdmFyKC0tc3BhY2VyNik7ICRzcGFjZXI2LSA6IHZhcigtLXNwYWNlcjYtKTtcblxuLy8gR3V0dGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEd1dHRlcnMgYXJlIGEgcmVsYXRpdmUgdmlld3BvcnQgd2lkdGggKHZ3KSB1bml0IGludGVuZGVkIHRvIGJlIHVzZWQgb24gYSBwYXJlbnQgbGV2ZWw7XG4vLyBmb3IgZXhhbXBsZSwgYSB3cmFwcGVyIGNvbnRhaW5lciBvciBib2R5IHdpdGggbmVzdGVkIGNvbXBvbmVudHMuIFxuLy8gVGhlIGFpbSBpcyB0byByZXRhaW4gY29uc2lzdGFudCBsZWZ0IGFuZCByaWdodCBzcGFjaW5nIGFtb25nc3QgJ3NlY3Rpb24nIGFuZCAnY3VzdG9tJyBlbGVtZW50cy5cbi8vIEd1dHRlcnMgd2lsbCBlcXVhdGUgdG8gc29tZXRoaW5nIGxpa2U6IGAoJGd1dHRlciAqIHgpICsgJGdhcGAuIFxuLy8gVGhlICckZ2FwJyBpcyBhZGRlZCBzbyB0aGF0IHZ3IHNwYWNpbmcgd2lsbCBuZXZlciBzY2FsZSB0b28gY2xvc2UgdG8gMHB4LiBcblxuQGZ1bmN0aW9uIGd1dHRlcigkYW1vdW50IDogMSwgJG1pbiA6ICRiYXNlLWdhcCwgJG1heCA6IG51bGwsICR1c2UtbmVnYXRpdmUgOiBmYWxzZSwgJHVzZS1jbGFtcCA6IHRydWUpIHtcbiAgQGlmICggJGFtb3VudCA9PSAwKSB7ICRhbW91bnQgOiAwLjU7ICRtaW4gOiBtYXRoLmRpdigkbWluLCAyKTsgfVxuICBAaWYgKCBtZXRhLnR5cGUtb2YoJG1heCkgPT0gJ251bGwnICkgeyBcbiAgICBAaWYgKCBtZXRhLnR5cGUtb2YoJG1pbikgPT0gJ3N0cmluZycgYW5kIHN0cmluZy5pbmRleCgkbWluLCAndmFyJykgKSB7XG4gICAgICAkbWF4IDogY2FsYygjeyRtaW59ICogI3skYW1vdW50ICsgMX0pOyBcbiAgICB9IEBlbHNlIHtcbiAgICAgICRtYXggOiAjeyRtaW4gKiAoJGFtb3VudCArIDEpfTsgXG4gICAgfVxuICB9XG4gIEByZXR1cm4gX2R5bmFtaWMtdW5pdCh2YXIoLS1ndXR0ZXIpLCAkYW1vdW50LCAkbWluLCAkbWF4LCAkdXNlLW5lZ2F0aXZlLCAkdXNlLWNsYW1wKTtcbn1cblxuJGd1dHRlcjAgOiB2YXIoLS1ndXR0ZXIwKTsgJGd1dHRlcjAtIDogdmFyKC0tZ3V0dGVyMC0pO1xuJGd1dHRlciAgOiB2YXIoLS1ndXR0ZXIxKTsgJGd1dHRlci0gIDogdmFyKC0tZ3V0dGVyMS0pO1xuJGd1dHRlcjIgOiB2YXIoLS1ndXR0ZXIyKTsgJGd1dHRlcjItIDogdmFyKC0tZ3V0dGVyMi0pO1xuJGd1dHRlcjMgOiB2YXIoLS1ndXR0ZXIzKTsgJGd1dHRlcjMtIDogdmFyKC0tZ3V0dGVyMy0pO1xuJGd1dHRlcjQgOiB2YXIoLS1ndXR0ZXI0KTsgJGd1dHRlcjQtIDogdmFyKC0tZ3V0dGVyNC0pO1xuJGd1dHRlcjUgOiB2YXIoLS1ndXR0ZXI1KTsgJGd1dHRlcjUtIDogdmFyKC0tZ3V0dGVyNS0pO1xuJGd1dHRlcjYgOiB2YXIoLS1ndXR0ZXI2KTsgJGd1dHRlcjYtIDogdmFyKC0tZ3V0dGVyNi0pO1xuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG91cnNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbi8vLyBFeHBsaWNpdCBDb2xvdXJzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLy8gRXhwbGljaXQgY29sb3VycyBhcmUgYSB3aGF0IHRoZXkgYXJlLiBHcmVlbiBpcyBncmVlbiwgYmx1ZSBpcyBibHVlLi4uIG5vIG9ic2N1cml0eS5cbi8vLyBXZSBzdWZmaXggbnVtYmVycyB0byBkZWZpbmUgdmFyaWF0aW9ucyBvZiBjb2xvdXJzIGluIG5vIHBhcnRpY3VsYXIgb3JkZXIgb2Ygc2hhZGUuXG4vLy8gRXhhbXBsZTogZ3JlZW4xLCBncmVlbjIsIGdyZWVuMywgZ3JlZW40LiBUaGlzIGlzIHNvIHdlIGNhbiBpbW1pZGlhdGVseSBzZWUgaG93XG4vLy8gbWFueSBvcHRpb25zIHdlIGhhdmUgZm9yIGEgc2luZ2xlIGNvbG91ciBhdCBhIGdsYW5jZS4gSWYgeW91IHNlZSAkZ3JlZW40LCB5b3Uga25vdyB0aGlzXG4vLy8gcHJvamVjdCBpcyB1c2luZyBmb3VyIHZhcmlhdGlvbnMgb2YgZ3JlZW4uIFRoaXMgaXMgYWxzbyBvZnRlbiB1c2VmdWwgYmVjYXVzZSBtYW55IGRldmVsb3BtZW50XG4vLy8gdG9vbHMgd2lsbCBhdXRvLXN1Z2dlc3QgY29sb3VycyB3aXRoIGFjdHVhbCBleGFtcGxlcyBvZiB0aGUgY29sb3VyLlxuLy8vIFRoZSBQYWxsZXRlcyBtb2R1bGUgKGF0IHRoZSBib3R0b20gb2YgdGhpcyBmaWxlKSB3aWxsIG91dHB1dCBzaGFkZWQgbmFtZWQgdmFyaWF0aW9ucyxcbi8vLy8gPGNvbG91cj4tZGFyayBhbmQgPGNvbG91cj4tbGlnaHQuIElmIHlvdSBuZWVkIGFkZGl0aW9uYWwgc2hhZGVzIHBsZWFzZSByZWZyYWltIGZyb20gZ29pbmcgZG93blxuLy8vIHRoZSAnbGlnaHRlcicsICdsaWdodGVzdCcsICdkYXJrZXInLCAnZGFya2VzdCcgY29udmVudGlvbi4gVGhlc2UgYXJlIG5vdCBwYXJ0aWN1YXJseSBsZWdpYWJsZVxuLy8vIGFuZCB0aGV5IGFyZSBsaW1pdGVkIGJ5IGhvdyBjcmVhdGl2ZSAoY29uZnVzaW5nKSB5b3VyIHdvcmRpbmcgY2FuIGJlLlxuLy8vIEl0IGlzIGJldHRlciB0byBkZWZpbmUgYSBuZXcgZXhwbGNpdCBjb2xvdXIgZW50aXJlbHkuXG4vLy8gQHNlZSBodHRwczovL2Nzcy10cmlja3MuY29tL3doYXQtZG8teW91LW5hbWUtY29sb3ItdmFyaWFibGVzL1xuXG4kYmx1ZTogIzEzMWY2YjsgLy8gUHJpbWFyeVxuJGJsdWUyOiAjMjkyYjY4OyAvLyBOYWtlZCBMaW5rXG4kYmx1ZTM6ICMzZDNmN2Y7IC8vIExpZ250IEdyYWRpZW50XG4kYmx1ZTQ6ICMxMDEyNGQ7IC8vIERhcmsgR3JhZGllbnRcbiRibHVlNTogIzAwOTVmZjsgLy8gTmF2aWdhdGlvbiBsaW5rIGhvdmVyXG4vLyAkcmVkICAgIDogI0UwM0E0MDsgLy8gU2Vjb25kYXJ5XG4kcmVkOiAjZGYzMDM1OyAvLyBTZWNvbmRhcnkgLSBUaGlzIHBhc3NlcyB0aGUgY29udHJhc3QgcmF0aW8gYWNjZXNzaWJpbGl0eSB0ZXN0IGluIEdvb2dsZXMgTGlnaHRob3VzZVxuJGdyZXk6ICM5Njk2OTU7XG4kZ3JleTI6ICM2YTZhNmE7IC8vIEZvbnRcbiRncmV5MzogI2Y0ZjRmNDsgLy8gTGlnaHRlciBHcmV5IEJhY2tncm91bmRcbiRncmV5NDogI2RjZGNkYztcbiRncmV5NTogI2IxYjFiMTsgLy8gU3BhY2VycyA8aHI+XG4kZ3JleTY6ICMzMzMyMzY7IC8vIE5hdmlnYXRpb24gbGluayBob3ZlclxuJGdyZWVuOiAjNTBiYzA4O1xuJGdyZWVuMjogIzc2YmIyODsgLy8gRVNHIGdyZWVuXG4keWVsbG93OiAjZjZmNGRiOyAvLyBEaXNjbGFpbWVyIEJhY2tncm91bmRcbiR5ZWxsb3cyOiAjZmNiMDAyO1xuJG9yYW5nZTogI2ZmNmEwMDtcbiRvcmFuZ2UyOiAjZGE4YjBmO1xuJGJsYWNrOiAjMWUxYzFjO1xuXG4kbWFyazogJGJsdWU1OyAvLyBiYWNrZ3JvdW5kIGNvbG91ciBmb3IgPG1hcms+IHRhZ3NcblxuJHByaW1hcnk6IHZhcigtLXByaW1hcnksICN7JGJsdWV9KTtcbiRzZWNvbmRhcnk6IHZhcigtLXNlY29uZGFyeSwgI3skcmVkfSk7XG5cbi8vLyBQYWxldHRlID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLy8gQnkgbG9hZGluZyBjb25maWd1cmF0aW9ucyBpbnRvIHRoaXMgJ3BhbGxldGUnIG1vZHVsZSwgd2Ugd2lsbCBiZSBhYmxlXG4vLy8gdG8gZGVjbGFyZSB2YXJpYW50cyBvZiBhIGZldyBjb21tb24gY29sb3Vycy4gWW91IGNhbiBhbHNvIGFkanVzdCB0aGUgbGlnaHRuZXNzXG4vLy8gb3IgZGFya25lc3Mgb2YgZWFjaCB2YXJpYW50IGJ5IHBhc3NpbmcgaW4gdGhlIHJlbGV2YW50IHByaXZhdGUgcnVsZXMuXG4vLy8gUGFsZXR0ZSB3aWxsIGFsc28gZXhwb3NlIHBvcHVsYXIgc29jaWFsIG1lZGlhIGNvbG91cnMgYW5kIHRoZSBZZWxsbyBicmFuZCBjb2xvdXIuXG4vLy8gQHNlZSBodHRwczovL3Nhc3MtbGFuZy5jb20vZG9jdW1lbnRhdGlvbi9hdC1ydWxlcy9mb3J3YXJkI2NvbmZpZ3VyaW5nLW1vZHVsZXNcbi8vLyBAb3V0cHV0ICRncmVlbiA6ICMwMjkyOUE7ICRncmVlbi1kYXJrIDogIzI1NjU2OTsgJGdyZWVuLWxpZ2h0OiAjMDRiOWM0O1xuXG5AZm9yd2FyZCAnY3JlYXRlL3BhbGV0dGUnIHdpdGggKFxuICAkYmx1ZTogJGJsdWUsXG4gICRyZWQ6ICRyZWQsXG4gICRncmV5OiAkZ3JleSxcbiAgJHllbGxvdzogJHllbGxvdyxcbiAgJG9yYW5nZTogJG9yYW5nZSxcbiAgJGdyZWVuOiAkZ3JlZW4sXG4gICRibGFjazogJGJsYWNrXG4pO1xuXG4kbWFwOiAoXG4gIGJsdWU6ICRibHVlLFxuICByZWQ6ICRyZWQsXG4gIGdyZXk6ICRncmV5MyxcbiAgeWVsbG93OiAkeWVsbG93LFxuICBvcmFuZ2U6ICRvcmFuZ2UsXG4gIGdyZWVuOiAkZ3JlZW4sXG4gIGJsYWNrOiAkYmxhY2ssXG4pO1xuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLyBCcmVha3BvaW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2JyZWFrcG9pbnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnc2FzczpzdHJpbmcnO1xuQHVzZSAnc2FzczptYXRoJztcbkB1c2UgJy4uL2hlbHBlcnMvYnJlYWsnO1xuXG4vLy8gV2hlbiBPTkxZIHVzaW5nIHRoZSBmb2xsb3dpbmcgcHJlZGVmaW5lIGJyZWFrcG9pbnQgbmFtZXMgeW91IGNhbiB1c2UgdGhpcyBjcmVhdGUgZmlsZSBsaWtlIHRoaXM6XG4vLy8gQGV4YW1wbGUgXG4vLy8gQGZvcndhcmQgJ2NyZWF0ZS9icmVha3BvaW50cycgd2l0aCAoXG4vLy8gICAkbWluICAgICAgICAgIDogMzIwLFxuLy8vICAgJHNtYWxsICAgICAgICA6IDQ4MCxcbi8vLyAgICRzbWFsbC1tZWRpdW0gOiA3MjAsXG4vLy8gICAkbWVkaXVtICAgICAgIDogOTUwLFxuLy8vICAgJGxhcmdlICAgICAgICA6IDExMjAsXG4vLy8gICAkbWF4ICAgICAgICAgIDogMTY4MFxuLy8vICk7XG5cbiRtaW4gICAgICAgICAgOiBudWxsICFkZWZhdWx0OyAvLyAzMjBweFxuJG1pbi1zbWFsbCAgICA6IG51bGwgIWRlZmF1bHQ7IFxuJHNtYWxsICAgICAgICA6IG51bGwgIWRlZmF1bHQ7IC8vIDQ4MHB4XG4kc21hbGwtbWVkaXVtIDogbnVsbCAhZGVmYXVsdDsgLy8gNzIwcHhcbiRtZWRpdW0gICAgICAgOiBudWxsICFkZWZhdWx0OyAvLyA5NTBweFxuJG1lZGl1bS1sYXJnZSA6IG51bGwgIWRlZmF1bHQ7IFxuJGxhcmdlICAgICAgICA6IG51bGwgIWRlZmF1bHQ7IC8vIDExMjBweFxuJGxhcmdlLW1heCAgICA6IG51bGwgIWRlZmF1bHQ7IFxuJG1heCAgICAgICAgICA6IG51bGwgIWRlZmF1bHQ7IC8vIDE2ODBwXG5cbi8vLyBXaGVuIHVzaW5nIGFueSBudW1iZXIgb2YgYnJlYWtwb2ludHMgd2l0aCBhbnkgbmFtZSB5b3UgY2FuIHVzZSB0aGlzIGNyZWF0ZSBmaWxlIGxpa2UgdGhpczpcbi8vLyBAZXhhbXBsZSBcbi8vLyBAZm9yd2FyZCAnY3JlYXRlL2JyZWFrcG9pbnRzJyB3aXRoIChcbi8vLyAgICRicmVha3BvaW50cyA6IChcbi8vLyAgICAgJ21pbicgICAgICAgICAgOiAzMjAsXG4vLy8gICAgICdzbWFsbCcgICAgICAgIDogNDgwLFxuLy8vICAgICAnc21hbGwtbWVkaXVtJyA6IDcyMCxcbi8vLyAgICAgJ25hdicgICAgICAgICAgOiA2NjYsIDwtLSB3b24ndCBiZSBleHBvc2VkIGJlY3Vhc2UgaXQncyBub3QgYSBwcmVkZWZpbmVkIG5hbWUgKCRtZWRpYS1uYXYgd2lsbCBlcnJvcilcbi8vLyAgICAgJ21lZGl1bScgICAgICAgOiA5NTAsXG4vLy8gICAgICdsYXJnZScgICAgICAgIDogMTEyMCxcbi8vLyAgICAgJ21heCcgICAgICAgICAgOiAxNjgwXG4vLy8gICApXG4vLy8gKTtcblxuJGJyZWFrcG9pbnRzIDogKFxuICAnbWluJyAgICAgICAgICA6ICRtaW4sXG4gICdtaW4tc21hbGwnICAgIDogJG1pbi1zbWFsbCxcbiAgJ3NtYWxsJyAgICAgICAgOiAkc21hbGwsXG4gICdzbWFsbC1tZWRpdW0nIDogJHNtYWxsLW1lZGl1bSxcbiAgJ21lZGl1bScgICAgICAgOiAkbWVkaXVtLFxuICAnbWVkaXVtLWxhcmdlJyA6ICRtZWRpdW0tbGFyZ2UsXG4gICdsYXJnZScgICAgICAgIDogJGxhcmdlLFxuICAnbGFyZ2UtbWF4JyAgICA6ICRsYXJnZS1tYXgsXG4gICdtYXgnICAgICAgICAgIDogJG1heFxuKSAhZGVmYXVsdDtcblxuLy8vIFByaXZhdGUgYWRkLXVuaXQgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vLyBAc2VlIGh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kb2N1bWVudGF0aW9uL29wZXJhdG9ycy9udW1lcmljXG5cbkBmdW5jdGlvbiBfYWRkLXVuaXQoJHZhbHVlKSB7XG4gIEBpZiAobWV0YS50eXBlLW9mKCR2YWx1ZSkgPT0gJ251bWJlcicgYW5kIG1hdGguaXMtdW5pdGxlc3MoJHZhbHVlKSkge1xuICAgIEByZXR1cm4gJHZhbHVlICogMXB4O1xuICB9XG4gIEByZXR1cm4gJHZhbHVlO1xufSBcblxuLy8vIFVwZGF0ZSBhbGwgdGhlIHByZWRlZmluZWQgYnJlYWtwb2ludHMgZnJvbSB0aGUgJGJyZWFrcG9pbnRzIG1hcCAtLS0tLS0tLS0tLS0tXG4vLy8gV2UgaGF2ZSB0byBkbyBpdCB0aGlzIHdheSBiZWNhdXNlIHdlIGNhbid0IGR5bmFtaWNhbGx5IGRlZmluZSB2YXJpYWJsZXNcbi8vLyBuYW1lcy4gVGhpcyBpcyB3aHkgd2UgaGF2ZSB0aGUgcHJlZGVmaW5lZCBuYW1lcy4gXG5cbkBpZiBtYXAuaGFzLWtleSgkYnJlYWtwb2ludHMsIFwibWluXCIpIHsgXG4gICRtaW4gOiBfYWRkLXVuaXQobWFwLWdldCgkYnJlYWtwb2ludHMsIFwibWluXCIpKTsgXG4gIEBpZiBtZXRhLnR5cGUtb2YobWFwLWdldCgkYnJlYWtwb2ludHMsIFwibWluXCIpKSA9PSAnbnVsbCcgIHtcbiAgICAkYnJlYWtwb2ludHMgOiBtYXAucmVtb3ZlKCRicmVha3BvaW50cywgXCJtaW5cIik7IFxuICB9XG59XG5cbkBpZiBtYXAuaGFzLWtleSgkYnJlYWtwb2ludHMsIFwibWluLXNtYWxsXCIpIHsgXG4gICRtaW4tc21hbGwgOiBfYWRkLXVuaXQobWFwLWdldCgkYnJlYWtwb2ludHMsIFwibWluLXNtYWxsXCIpKTsgXG4gIEBpZiBtZXRhLnR5cGUtb2YobWFwLWdldCgkYnJlYWtwb2ludHMsIFwibWluLXNtYWxsXCIpKSA9PSAnbnVsbCcgIHtcbiAgICAkYnJlYWtwb2ludHMgOiBtYXAucmVtb3ZlKCRicmVha3BvaW50cywgXCJtaW4tc21hbGxcIik7IFxuICB9XG59XG5cbkBpZiBtYXAuaGFzLWtleSgkYnJlYWtwb2ludHMsIFwic21hbGxcIikgeyBcbiAgJHNtYWxsIDogX2FkZC11bml0KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBcInNtYWxsXCIpKTsgXG4gIEBpZiBtZXRhLnR5cGUtb2YobWFwLWdldCgkYnJlYWtwb2ludHMsIFwic21hbGxcIikpID09ICdudWxsJyAge1xuICAgICRicmVha3BvaW50cyA6IG1hcC5yZW1vdmUoJGJyZWFrcG9pbnRzLCBcInNtYWxsXCIpOyBcbiAgfVxufVxuXG5AaWYgbWFwLmhhcy1rZXkoJGJyZWFrcG9pbnRzLCBcInNtYWxsLW1lZGl1bVwiKSB7IFxuICAkc21hbGwtbWVkaXVtIDogX2FkZC11bml0KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBcInNtYWxsLW1lZGl1bVwiKSk7IFxuICBAaWYgbWV0YS50eXBlLW9mKG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBcInNtYWxsLW1lZGl1bVwiKSkgPT0gJ251bGwnICB7XG4gICAgJGJyZWFrcG9pbnRzIDogbWFwLnJlbW92ZSgkYnJlYWtwb2ludHMsIFwic21hbGwtbWVkaXVtXCIpOyBcbiAgfVxufVxuXG5AaWYgbWFwLmhhcy1rZXkoJGJyZWFrcG9pbnRzLCBcIm1lZGl1bVwiKSB7IFxuICAkbWVkaXVtIDogX2FkZC11bml0KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBcIm1lZGl1bVwiKSk7IFxuICBAaWYgbWV0YS50eXBlLW9mKG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBcIm1lZGl1bVwiKSkgPT0gJ251bGwnICB7XG4gICAgJGJyZWFrcG9pbnRzIDogbWFwLnJlbW92ZSgkYnJlYWtwb2ludHMsIFwibWVkaXVtXCIpOyBcbiAgfVxufVxuXG5AaWYgbWFwLmhhcy1rZXkoJGJyZWFrcG9pbnRzLCBcIm1lZGl1bS1sYXJnZVwiKSB7IFxuICAkbWVkaXVtLWxhcmdlIDogX2FkZC11bml0KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBcIm1lZGl1bS1sYXJnZVwiKSk7IFxuICBAaWYgbWV0YS50eXBlLW9mKG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBcIm1lZGl1bS1sYXJnZVwiKSkgPT0gJ251bGwnICB7XG4gICAgJGJyZWFrcG9pbnRzIDogbWFwLnJlbW92ZSgkYnJlYWtwb2ludHMsIFwibWVkaXVtLWxhcmdlXCIpOyBcbiAgfVxufVxuXG5AaWYgbWFwLmhhcy1rZXkoJGJyZWFrcG9pbnRzLCBcImxhcmdlXCIpIHsgXG4gICRsYXJnZSA6IF9hZGQtdW5pdChtYXAtZ2V0KCRicmVha3BvaW50cywgXCJsYXJnZVwiKSk7IFxuICBAaWYgbWV0YS50eXBlLW9mKG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBcImxhcmdlXCIpKSA9PSAnbnVsbCcgIHtcbiAgICAkYnJlYWtwb2ludHMgOiBtYXAucmVtb3ZlKCRicmVha3BvaW50cywgXCJsYXJnZVwiKTsgXG4gIH1cbn1cblxuQGlmIG1hcC5oYXMta2V5KCRicmVha3BvaW50cywgXCJsYXJnZS1tYXhcIikgeyBcbiAgJGxhcmdlLW1heCA6IF9hZGQtdW5pdChtYXAtZ2V0KCRicmVha3BvaW50cywgXCJsYXJnZS1tYXhcIikpOyBcbiAgQGlmIG1ldGEudHlwZS1vZihtYXAtZ2V0KCRicmVha3BvaW50cywgXCJsYXJnZS1tYXhcIikpID09ICdudWxsJyAge1xuICAgICRicmVha3BvaW50cyA6IG1hcC5yZW1vdmUoJGJyZWFrcG9pbnRzLCBcImxhcmdlLW1heFwiKTsgXG4gIH1cbn1cblxuQGlmIG1hcC5oYXMta2V5KCRicmVha3BvaW50cywgXCJtYXhcIikgeyBcbiAgJG1heCA6IF9hZGQtdW5pdChtYXAtZ2V0KCRicmVha3BvaW50cywgXCJtYXhcIikpOyBcbiAgQGlmIG1ldGEudHlwZS1vZihtYXAtZ2V0KCRicmVha3BvaW50cywgXCJtYXhcIikpID09ICdudWxsJyAge1xuICAgICRicmVha3BvaW50cyA6IG1hcC5yZW1vdmUoJGJyZWFrcG9pbnRzLCBcIm1heFwiKTsgXG4gIH1cbn1cblxuLy8gTWFrZSBzdXJlIGFsbCB0aGUgdmFsdWVzIGluIHRoZSAkYnJlYWtwb2ludHMgbWFwIGhhdmUgdW5pdHNcblxuQGVhY2ggJGtleSwgJHZhbHVlIGluICRicmVha3BvaW50cyB7XG4gICRicmVha3BvaW50cyA6IG1hcC5zZXQoJGJyZWFrcG9pbnRzLCAka2V5LCBfYWRkLXVuaXQoJHZhbHVlKSk7IFxufVxuXG4vLy8gQnJlYWtwb2ludCBmdW5jdGlvblxuLy8vIEFjY2VwdHMgYSBzdHJpbmcgdG8gcHVsbCBmcm9tIHRoZSAkYnJlYWtwb2ludHMgbWFwIGlmIGl0IGV4aXN0c1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludCgkdmFsdWUpIHtcbiAgQGlmIG1ldGEudHlwZS1vZigkdmFsdWUpID09ICdzdHJpbmcnIHtcbiAgICBAaWYgbWFwLmhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkdmFsdWUpIGFuZCBtZXRhLnR5cGUtb2YobWFwLWdldCgkYnJlYWtwb2ludHMsICR2YWx1ZSkgIT0gbnVsbCkge1xuICAgICAgJHZhbHVlIDogbWFwLWdldCgkYnJlYWtwb2ludHMsICR2YWx1ZSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAd2FybiAnXCInICsgJHZhbHVlICsgJ1wiIGJyZWFrcG9pbnQgaGFzIG5vdCBiZWVuIGRlZmluZWQuIENoZWNrIHRoZSBydWxlcyB3aGVyZXZlciB5b3UgYXJlIHJlZ2lzdGVyaW5nIHlvdXIgXCJjcmVhdGUvYnJlYWtwb2ludHNcIiBoZWxwZXInO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIF9hZGQtdW5pdCgkdmFsdWUpO1xufVxuXG4vLy8gQnJlYWsgbWl4aW5zXG4vLy8gUmVkZWZpbmUgdGhlIGJyZWFrIG1peGlucyB3aXRoIG9uZXMgdGhhdCB1c2UgdGhlIGJyZWFrcG9pbnRzIGZ1bmN0aW9uIGZvciB2YWxpZGF0aW9uXG5cbkBtaXhpbiBvdXQoJGJyZWFrcG9pbnQpIHtcbiAgQGluY2x1ZGUgYnJlYWsub3V0KGJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGluKCRicmVha3BvaW50KSB7XG4gIEBpbmNsdWRlIGJyZWFrLmluKGJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGJldHdlZW4oJG1pbiwgJG1heCkge1xuICBAaW5jbHVkZSBicmVhay5iZXR3ZWVuKGJyZWFrcG9pbnQoJG1pbiksIGJyZWFrcG9pbnQoJG1heCkpIHtcbiAgICBAY29udGVudDtcbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8gSG92ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNob3ZlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQG1peGluIGhvdmVyKCRzZWxlY3RvciA6IG51bGwpIHtcbiAgQG1lZGlhICggaG92ZXIgOiBob3ZlciApIHtcbiAgICAmOmhvdmVyIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkc2VsZWN0b3Ige1xuICAgICYjeyRzZWxlY3Rvcn0geyBcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59Il19 */