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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhZ2VzL2NvbXBhbnkuc2NzcyIsInBhZ2VzL2NvbXBhbnkuY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bkb2dnaXN0eWxlL3Nhc3MvbGlicmFyeS9zcmMvaGVscGVycy9fYnJlYWsuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AZG9nZ2lzdHlsZS9zYXNzL2xpYnJhcnkvc3JjL2NyZWF0ZS9faGVhZGluZ3Muc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AZG9nZ2lzdHlsZS9zYXNzL2xpYnJhcnkvc3JjL2NyZWF0ZS9fdW5pdHMuc2NzcyIsIl92YXJpYWJsZXMvY29sb3Vycy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bkb2dnaXN0eWxlL3Nhc3MvbGlicmFyeS9zcmMvY3JlYXRlL19icmVha3BvaW50cy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bkb2dnaXN0eWxlL3Nhc3MvbGlicmFyeS9zcmMvY29sbGVjdGlvbnMvc3R5bGluZy9faG92ZXIuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFzREE7RUFDRSxjQUFBO0VBQ0Esa0NBQUE7QUNyREY7QUNFRTtFRmlERjtJQUc4QixxQkFBQTtFQ2xENUI7QUFDRjtBRGtERTtFQUFPLGFBQUE7QUMvQ1Q7QURnREU7RUd5R0EsbUJBQUE7RUFXSSxnQkExR2M7QUZ0RHBCO0FENkNFO0VBQ0Usa0NJWEk7QUhoQ1I7QUQ0Q0k7RUc4REYsbUJBQUE7RUFHRSxzQ0FBQTtFQVFFLGdCQTVFYztBRnBDcEI7QUR3Q0k7RUFBcUIsY0tyQ2Y7RUxxQ21DLG1CQUFBO0FDcEM3Qzs7QUR3Q0E7RUFFRSwwQkFBQTtFQUNBLGVBQUE7RUFDQSxXQUFBO0FDdENGO0FEd0NFO0VBQ0UsaUJNc0RLO0VOckRMLDJCQUFBO0tBQUEsd0JBQUE7QUN0Q0o7QUR5Q0U7RUFDRSxVQUFBO0VBQ0EsVUFBQTtFQUNBLDZHQUFBO0FDdkNKO0FDckNFO0VGZ0ZFO0lBQ0UsV0FBQTtJQUNBLFVBQUE7SUFDQSxrQkFBQTtJQUNBLDJDQUFBO0lBQ0EsWUFBQTtJQUNBLFdBQUE7SUFBWSxNQUFBO0lBQ1osaUJBQUE7SUFDQSx3bkJBQUE7SUFDQSx1RUFBQTtZQUFBLCtEQUFBO0VDdkNKO0FBQ0Y7QUM3Q0U7RUZ3REY7SUFnQ0ksa0JBQUE7RUN2Q0Y7RUR3Q0U7SUFBTSxhQUFBO0VDckNSO0VEc0NFO0lBQ0UsNERBQUE7RUNwQ0o7QUFDRjs7QUR5Q0U7RUFDRSw4QkFBQTtFQUNBLHlCQUFBO0VBQ0EsaUJBQUE7QUN0Q0o7QUR1Q0k7RUFBWSx1QkFBQTtBQ3BDaEI7QURzQ0U7RUFDRSw4QkFBQTtFQUNBLHlCQUFBO0FDcENKO0FEcUNJO0VBQ0Usb0JBQUE7RUFDQSxnQ0lyRUU7RUpzRUYseUJBQUE7RUFDQSxpQkFBQTtBQ25DTjtBRHFDUTtFQUNFLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLFFBQUE7RUFDQSxNQUFBO0VBQ0EsU0FBQTtFQUNBLFlBQUE7RUFDQSxhQUFBO0FDbkNWO0FEcUNRO0VBQ0UsVUFBQTtFQUNBLHlCQUFBO0VBQ0EsZUFBQTtBQ25DVjtBRG9DVTtFQUNFLFNBQUE7RUFDQSxjSzVHRjtFTDZHRSx5QkFBQTtBQ2xDWjtBTXBHRTtFUHlJVTtJQUFLLFlBQUE7RUNqQ2Y7QUFDRjtBRHFDSTtFQUNFLGNLM0hJO0FKd0ZWO0FEb0NNO0VBQWMsWUFBQTtBQ2pDcEI7QUN6R0U7RUY2SUk7SUFBTSwrQkFBQTtFQ2hDVjtBQUNGO0FDeEdFO0VGaUdBO0lBeUNJLHFDQUFBO0VDOUJKO0FBQ0Y7QUNuSEU7RUZ1R0E7SUE0Q0ksMEJBQUE7RUM1Qko7QUFDRjs7QURnQ0E7RUFDRSxrQkFBQTtBQzdCRjs7QURvQ0E7RUFFRSxXQUFBO0VBQ0EsY0FBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLHdCQUFBO0VBQUEsbUJBQUE7QUNsQ0Y7QURvQ0U7RUFDRSxvREFBQTtBQ2xDSjtBRG1DSTtFQUFPLG9EQUFBO0FDaENYO0FEbUNFO0VBQ0Usa0JBQUE7RUFDQSxjQUFBO0VBQ0EsYUFBQTtFQUNBLGNBQUE7RUFDQSxVQUFBO0VBQ0EsNEJBQUE7RUFDQSxVQUFBO0FDakNKO0FEbUNJO0VBQ0Usa0JBQUE7RUFDQSx3QkFBQTtFQUNBLFNBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsdUJBQUE7RUFDQSxnQkFBQTtFQUNBLHlCQUFBO0VBQ0Esa0JBQUE7RUFDQSxvQkFBQTtFQUNBLFVBQUE7RUFDQSxnQ0FBQTtFQUNBLDZMQUFBO0FDakNOO0FEb0NJO0VBQ0UsV0FBQTtFQUNBLDZCQUFBO0VBQ0EsYUtsTUk7RUxtTUosY0FBQTtFQUNBLGtCQUFBO0VBQ0Esa0lBQUE7QUNsQ047QU1oTEU7RUFDRTtJUHFORSxVQUFBO0VDbENKO0VEbUNJO0lBQ0UsVUFBQTtJQUNBLDZCQUFBO0VDakNOO0VEbUNJO0lBQVUsYUt4TU47RUp3S1I7QUFDRjtBTTVMRTtFUDZPTTtJQUFzRSxhS3ZOcEU7RUowS1I7RUQ2Q007SUFBc0UsYUt2TnBFO0VKNktSO0VEMENNO0lBQXNFLGFLdk5wRTtFSmdMUjtFRHVDTTtJQUFzRSxhS3ZOcEU7RUptTFI7RURvQ007SUFBc0UsYUt2TnBFO0VKc0xSO0VEaUNNO0lBQXNFLGFLdk5wRTtFSnlMUjtFRDhCTTtJQUFzRSxhS3ZOcEU7RUo0TFI7RUQyQk07SUFBc0UsYUt2TnBFO0VKK0xSO0VEd0JNO0lBQXNFLGFLdk5wRTtFSmtNUjtFRHFCTTtJQUFzRSxhS3ZOcEU7RUpxTVI7QUFDRjtBQ3RORTtFRmdLRjtJQThFSSxXQUFBO0lBQ0EsY0FBQTtJQUNBLGFBeFBtQjtJQXlQbkIsVUFBQTtJQUNBLHVCQUFBO0lBQUEsa0JBQUE7SUFDQSxlQUFBO0lBQ0EsVUFBQTtJQUNBLG9CQUFBO0VDcEJGO0VEcUJFO0lBQ0UsWUFBQTtFQ25CSjtFRHFCRTtJQUFPLGFBQUE7RUNsQlQ7QUFDRjtBRG9CRTtFQUNFLFVBQUE7RUFDQSx1REFBQTtBQ2xCSjtBRG1CSTtFQUNFLFVBQUE7RUFDQSx3QkFBQTtFQUNBLDZMQUFBO0FDakJOO0FEbUJRO0VBQ0UsdUJBQUE7QUNqQlY7QURnQlE7RUFDRSxzQkFBQTtBQ2RWO0FEYVE7RUFDRSx1QkFBQTtBQ1hWO0FEVVE7RUFDRSxzQkFBQTtBQ1JWO0FET1E7RUFDRSx1QkFBQTtBQ0xWO0FESVE7RUFDRSxzQkFBQTtBQ0ZWO0FEQ1E7RUFDRSx1QkFBQTtBQ0NWO0FERlE7RUFDRSxzQkFBQTtBQ0lWO0FETFE7RUFDRSx1QkFBQTtBQ09WO0FEUlE7RUFDRSxzQkFBQTtBQ1VWO0FEWFE7RUFDRSx1QkFBQTtBQ2FWO0FEZFE7RUFDRSxzQkFBQTtBQ2dCVjtBRGpCUTtFQUNFLHVCQUFBO0FDbUJWO0FEcEJRO0VBQ0Usb0JBQUE7QUNzQlY7QUR2QlE7RUFDRSx1QkFBQTtBQ3lCVjtBRDFCUTtFQUNFLHNCQUFBO0FDNEJWO0FEN0JRO0VBQ0UsdUJBQUE7QUMrQlY7QURoQ1E7RUFDRSxzQkFBQTtBQ2tDVjtBRG5DUTtFQUNFLHVCQUFBO0FDcUNWO0FEdENRO0VBQ0Usc0JBQUE7QUN3Q1YiLCJmaWxlIjoicGFnZXMvY29tcGFueS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICdfbW9kdWxlcycgYXMgKjtcblxuXG4kaW1hZ2UtaGVpZ2h0LW9mZnNldCA6IDQwMHB4OyBcbiRzcGVjaWFsLWdyYWRpZW50OmxpbmVhci1ncmFkaWVudCgxNzcuN2RlZyxcbnJnYmEoOSwyNyw3MSwxKSAwJSxcbnJnYmEoMzQsNjcsMTE5LDEpIDI1JSxcbnJnYmEoNDMsNzcsMTEzLDEpIDMyJSxcbnJnYmEoODIsMTA1LDEyNCwxKSAzNyUsXG5yZ2JhKDExNSwxMTksMTEyLDEpIDQyJSxcbnJnYigxNDQsIDExMywgODUpIDUwJSxcbnJnYmEoMTMzLDk2LDY5LDEpIDUyJSxcbnJnYmEoMTI0LDkwLDY2LDEpIDUzJSxcbnJnYmEoMiwyLDAsMSkgNTQlLFxucmdiYSgyLDIsMSwxKSA1NyUsXG5yZ2JhKDc0LDcwLDcxLDEpIDU3JSxcbnJnYmEoNjIsNjAsNjEsMSkgNTglLFxucmdiYSgzMCwyOSwyOSwxKSA1OCUsXG5yZ2JhKDM0LDMyLDM0LDEpIDU4JSxcbnJnYmEoODAsNjcsNTksMSkgNTklLFxucmdiKDExMiwgMTAwLCA5NCkgNTkuNSUsXG5yZ2IoNjcsIDYzLCA2MikgNjAlLFxucmdiYSgxOCwxOCwxOCwxKSA2MC42JSxcbnJnYigzNiwgMzAsIDE2KSA2MyUsXG5yZ2JhKDYzLDQ3LDI4LDEpIDY0JSxcbnJnYig2MywgNTcsIDYyKSA2NSUsXG5yZ2JhKDI5LDM1LDUyLDEpIDY4JSxcbnJnYmEoMyw2LDI1LDEpIDc1JSxcbnJnYmEoNCw2LDIyLDEpIDg3JSxcbnJnYmEoMyw0LDEzLDEpIDEwMCUpO1xuXG4vLyAkc3BlY2lhbC1ncmFkaWVudDogbGluZWFyLWdyYWRpZW50KDE4MGRlZyxcbi8vIHJnYmEoMjEzLDIwNSwxOTgsMSkgMSUsXG4vLyByZ2JhKDIyMywyMTYsMjEwLDEpIDklLFxuLy8gcmdiYSgyMzgsMjI3LDIyMSwxKSAxOSUsXG4vLyByZ2JhKDI0OSwyMzksMjI3LDEpIDMxJSxcbi8vIHJnYmEoMjU1LDI1MCwyMzIsMSkgNDElLFxuLy8gcmdiYSgyNTMsMjUxLDIzMywxKSA0NSUsXG4vLyByZ2JhKDI1NCwyNTQsMjQ2LDEpIDQ3JSxcbi8vIHJnYmEoMjUxLDI1MSwyMzMsMSkgNTElLFxuLy8gcmdiKDIzNiwgMjM5LCAyMjYpIDU1JSxcbi8vIHJnYmEoMjAwLDIwNiwyMDQsMSkgNjAlLFxuLy8gcmdiKDE1NiwgMTU5LCAxMzcpIDY0LjUlLFxuLy8gcmdiYSgxMzIsMTAyLDcxLDEpICA2My41JSxcbi8vIHJnYmEoMTMyLDk2LDY1LDEpICAgNjUlLFxuLy8gcmdiYSgxMjUsMTE0LDgwLDEpICA2NS44JSxcbi8vIHJnYigxMjgsIDEyMywgMTAxKSA2Ni4xJSxcbi8vIHJnYmEoMTE0LDExNCwxMTUsMSkgNjcuNCUsXG4vLyByZ2IoOTQsIDg1LCA5MCkgICAgNjcuOSUsXG4vLyByZ2IoNjMsIDU3LCA1OSkgICA3MSUsXG4vLyByZ2JhKDMzLDMyLDM2LDEpICAgIDc4JSxcbi8vIHJnYmEoOCwxNCwzMywxKSAgICAgODYlLFxuLy8gcmdiYSgwLDcsMjEsMSkgICAgICA5MyUpO1xuXG5oZWFkZXIuaGVhZGVyIHtcbiAgcGFkZGluZy10b3A6MDsgXG4gIHBhZGRpbmctYm90dG9tOmNhbGMoI3skaW1hZ2UtaGVpZ2h0LW9mZnNldH0gKyAxMHZ3KTsgXG4gIEBpbmNsdWRlIGJyZWFrLW91dChzbWFsbCkgeyBncmlkLWNvbHVtbjogMiAvIHNwYW4gMjsgfVxuICA+IGgxIHsgZGlzcGxheTogbm9uZTt9XG4gID4gaDIgeyBAaW5jbHVkZSBoZWFkaW5nLWgzOyB9XG4gIC5pbnRyb2R1Y3Rpb24ge1xuICAgIG1hcmdpbi10b3A6JGdhcDA7IFxuICAgID4gaDIgeyBAaW5jbHVkZSBoZWFkaW5nLWgxOyB9XG4gICAgPiBoMzpmaXJzdC1vZi10eXBlIHsgY29sb3I6JGZvbnQtY29sb3VyOyBmb250LXdlaWdodDpub3JtYWw7IH1cbiAgfVxufVxuXG5ib2R5ID4gYmFja2dyb3VuZC1pbWFnZSB7XG4gICRvdmVyZmxvdy13aWR0aCA6IDI2MHB4O1xuICBoZWlnaHQ6Y2FsYygjeyRpbWFnZS1oZWlnaHQtb2Zmc2V0fSArIDEwdncpO1xuICBhbGlnbi1zZWxmOiBlbmQ7XG4gIGdyaWQtcm93OiAyO1xuXG4gIGltZyB7XG4gICAgbWF4LXdpZHRoOiRtZWRpYS1tYXg7XG4gICAgb2JqZWN0LXBvc2l0aW9uOiA1MCUgNTQlO1xuICB9XG5cbiAgJjo6YWZ0ZXIgeyBcbiAgICBvcGFjaXR5OjE7XG4gICAgei1pbmRleDoyO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgd2hpdGUsIHRyYW5zcGFyZW50IDMwMHB4LCB0cmFuc3BhcmVudCBjYWxjKDEwMCUgLSAyMDBweCksIGJsYWNrKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrLW91dChtYXgpIHtcbiAgICAmOjpiZWZvcmUgeyBcbiAgICAgIGNvbnRlbnQ6XCJcIjtcbiAgICAgIHotaW5kZXg6MTtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHdpZHRoOmNhbGMoKDEwMHZ3IC0gI3skbWVkaWEtbWF4fSkgKyAjeyRvdmVyZmxvdy13aWR0aH0gKyAxcHgpOyBcbiAgICAgIGhlaWdodDoxMDAlOyBcbiAgICAgIHJpZ2h0Oi0xcHg7IHRvcDowOyBcbiAgICAgIGZpbHRlcjpibHVyKDFweCk7XG4gICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHRyYW5zcGFyZW50ICRvdmVyZmxvdy13aWR0aCwgcmdiYShibGFjaywgMC40KSksICRzcGVjaWFsLWdyYWRpZW50O1xuICAgICAgbWFzay1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB0cmFuc3BhcmVudCwgYmxhY2sgJG92ZXJmbG93LXdpZHRoKTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBicmVhay1pbignc21hbGwtbWVkaXVtJykge1xuICAgIGdyaWQtY29sdW1uLWVuZDogNDtcbiAgICBpbWcgeyBkaXNwbGF5Om5vbmU7IH1cbiAgICAmOjphZnRlciB7IFxuICAgICAgYmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCB3aGl0ZSwgI2M0ZDBkYik7IFxuICAgIH1cbiAgfVxufVxuXG5tYWluIHtcbiAgLnRhZy1saW5lLXNpZ24tb2ZmIHtcbiAgICBib3gtc2hhZG93OmluaXRpYWwgIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO1xuICAgIHBhZGRpbmctYm90dG9tOjA7XG4gICAgdGFnLWxpbmUgIHsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH1cbiAgfVxuICAuY29udGVudC1ibG9jayB7XG4gICAgYm94LXNoYWRvdzppbml0aWFsICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDtcbiAgICBhcnRpY2xlLWxpc3Qge1xuICAgICAgZ3JpZC1yb3ctZW5kOiBzcGFuIDI7XG4gICAgICBncmlkLWdhcDokZ2FwMDsgXG4gICAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgcGFkZGluZy10b3A6MjB2aDtcbiAgICAgIC5hcnRpY2xlIHtcbiAgICAgICAgLmltYWdlIHsgXG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOyBcbiAgICAgICAgICB3aWR0aDogMzMlO1xuICAgICAgICAgIHJpZ2h0OjA7IFxuICAgICAgICAgIHRvcDowOyBcbiAgICAgICAgICBtYXJnaW46MDsgXG4gICAgICAgICAgaGVpZ2h0OjIwdmg7XG4gICAgICAgICAgbGVmdDppbml0aWFsO1xuICAgICAgICB9XG4gICAgICAgIGEge1xuICAgICAgICAgIHBhZGRpbmc6MDsgXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5pdGlhbDtcbiAgICAgICAgICBib3JkZXI6aW5pdGlhbDtcbiAgICAgICAgICBoMiB7XG4gICAgICAgICAgICBtYXJnaW46MDsgXG4gICAgICAgICAgICBjb2xvcjokZ3JleTY7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBAaW5jbHVkZSBob3ZlciB7XG4gICAgICAgICAgICBoMiB7IGNvbG9yOndoaXRlOyB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgICYuZGFyayAudGV4dCB7XG4gICAgICBjb2xvcjokZ3JleTtcbiAgICAgIC5oZWFkaW5nLWgzIHsgY29sb3I6d2hpdGU7IH1cbiAgICB9XG4gICAgQGluY2x1ZGUgYnJlYWstaW4obGFyZ2UpIHtcbiAgICAgID4gKiB7IGdyaWQtY29sdW1uOiBpbml0aWFsICFpbXBvcnRhbnQ7IH1cbiAgICB9XG4gICAgQGluY2x1ZGUgYnJlYWstYmV0d2VlbihzbWFsbC1tZWRpdW0sIGxhcmdlKSB7XG4gICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBicmVhay1pbihzbWFsbC1tZWRpdW0pIHtcbiAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cbiAgfVxufVxuXG4ud2lkZ2V0IHtcbiAgZ3JpZC1yb3c6MSAvIHNwYW4gMjtcbn1cblxuXG4vLyBkaXNwbGF5Om5vbmU7IFxuXG5cbmZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAge1xuXG4gIGdyaWQtcm93OiAyO1xuICBncmlkLWNvbHVtbjogNDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvcGFjaXR5OjA7IFxuICBoZWlnaHQ6IGZpdC1jb250ZW50O1xuXG4gIC5tYXAge1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDBweCAxNXB4IHJnYmEoYmxhY2ssIDAuMikpO1xuICAgIHBhdGggeyB0cmFuc2l0aW9uOiBmaWxsIDAuNXMgJGVhc2UtaW4tb3V0OyB9XG4gIH1cblxuICBhIHtcbiAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB0b3AgOiB2YXIoLS15KTtcbiAgICBsZWZ0OiB2YXIoLS14KTtcbiAgICBvcGFjaXR5OjA7IFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjBweCk7XG4gICAgei1pbmRleDoxO1xuXG4gICAgc3BhbiB7IFxuICAgICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgICBib3R0b206Y2FsYygxMDAlIC0gM3B4KTtcbiAgICAgIGxlZnQ6NTAlO1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIGZvbnQtc2l6ZTogZm9udC1zaXplKDE0KTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6d2hpdGU7XG4gICAgICBwYWRkaW5nOjFweCA2cHg7XG4gICAgICBib3JkZXI6MXB4IHNvbGlkICRncmV5MztcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgb3BhY2l0eTowOyBcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIDEwcHgpO1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkdHJhbnNpdGlvbiwgdHJhbnNmb3JtIDAuNXMgJGVhc2Utb3V0LWJhY2s7XG4gICAgfVxuXG4gICAgc3ZnLnBpbiB7XG4gICAgICB3aWR0aDoxNnB4OyBcbiAgICAgIHdpZHRoOmNsYW1wKDE2cHgsIDJ2dywgMjJweCk7IFxuICAgICAgZmlsbDokYmx1ZTtcbiAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB0cmFuc2l0aW9uOiBmaWxsICR0cmFuc2l0aW9uO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGhvdmVyIHtcbiAgICAgIHotaW5kZXg6MTtcbiAgICAgIHNwYW4ge1xuICAgICAgICBvcGFjaXR5OjE7IFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAwKTtcbiAgICAgIH1cbiAgICAgIHN2Zy5waW4geyBmaWxsOiRyZWQ7IH1cbiAgICB9XG5cbiAgICAkb2ZmaWNlcyA6IChcbiAgICAgICdiZWRmb3JkJyAgICA6IDksIFxuICAgICAgJ2JyaXN0b2wnICAgIDogNywgXG4gICAgICAnZ2F0ZXNoZWFkJyAgOiAxLCBcbiAgICAgICdnbGFzZ293JyAgICA6IDUsIFxuICAgICAgJ2xlZWRzJyAgICAgIDogMTAsIFxuICAgICAgJ21hbmNoZXN0ZXInIDogMTQsIFxuICAgICAgJ25vcndpY2gnICAgIDogOCwgXG4gICAgICAncGx5bW91dGgnICAgOiAzLCBcbiAgICAgICdwb3J0c21vdXRoJyA6IDQsIFxuICAgICAgJ3JiLWNlbnRyZScgIDogNlxuICAgICk7XG5cbiAgICBAaW5jbHVkZSBob3ZlciB7XG4gICAgICBAZWFjaCAkcGluTmFtZSwgJGNvdW50eUluZGV4IGluICRvZmZpY2VzIHtcbiAgICAgICAgJltkYXRhLWZvcj1cIiN7JHBpbk5hbWV9XCJdIH4gc3ZnIGcgcGF0aDpudGgtb2YtdHlwZSgjeyRjb3VudHlJbmRleH0pIHsgZmlsbDokZ3JleTM7ICB9XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBAaW5jbHVkZSBicmVhay1pbignc21hbGwtbWVkaXVtJykge1xuICAgIGdyaWQtcm93OiAyO1xuICAgIGdyaWQtY29sdW1uOiAyO1xuICAgIGhlaWdodDokaW1hZ2UtaGVpZ2h0LW9mZnNldDsgXG4gICAgei1pbmRleDogMTtcbiAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgYWxpZ24tc2VsZjogZW5kO1xuICAgIHRvcDotMzBweDtcbiAgICBqdXN0aWZ5LXNlbGY6IGNlbnRlcjtcbiAgICAubWFwIHtcbiAgICAgIGhlaWdodDoxMDAlOyBcbiAgICB9XG4gICAgc3BhbiB7IGRpc3BsYXk6IG5vbmU7fVxuICB9XG5cbiAgJi5pbi12aWV3IHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC41cyAkZWFzZS1pbi1vdXQ7XG4gICAgYSB7XG4gICAgICBvcGFjaXR5OjE7IFxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkdHJhbnNpdGlvbiwgdHJhbnNmb3JtIDAuNXMgJGVhc2Utb3V0LWJhY2s7XG4gICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIDIwIHtcbiAgICAgICAgJjpudGgtb2YtdHlwZSgjeyRpfSkge1xuICAgICAgICAgIHRyYW5zaXRpb24tZGVsYXk6ICgwLjA1cyAqICRpKSArIDAuMztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cbn1cbiIsImhlYWRlci5oZWFkZXIge1xuICBwYWRkaW5nLXRvcDogMDtcbiAgcGFkZGluZy1ib3R0b206IGNhbGMoNDAwcHggKyAxMHZ3KTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA0ODFweCkge1xuICBoZWFkZXIuaGVhZGVyIHtcbiAgICBncmlkLWNvbHVtbjogMi9zcGFuIDI7XG4gIH1cbn1cbmhlYWRlci5oZWFkZXIgPiBoMSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5oZWFkZXIuaGVhZGVyID4gaDIge1xuICBmb250LXNpemU6IDEuNTYyNWVtO1xuICBsaW5lLWhlaWdodDogMS42O1xufVxuaGVhZGVyLmhlYWRlciAuaW50cm9kdWN0aW9uIHtcbiAgbWFyZ2luLXRvcDogY2FsYyh2YXIoLS1nYXApICogMC41KTtcbn1cbmhlYWRlci5oZWFkZXIgLmludHJvZHVjdGlvbiA+IGgyIHtcbiAgZm9udC1zaXplOiAzLjgxMjVlbTtcbiAgZm9udC1zaXplOiBjbGFtcCgyLjVlbSwgNXZ3LCAzLjgxMjVlbSk7XG4gIGxpbmUtaGVpZ2h0OiAxLjI7XG59XG5oZWFkZXIuaGVhZGVyIC5pbnRyb2R1Y3Rpb24gPiBoMzpmaXJzdC1vZi10eXBlIHtcbiAgY29sb3I6ICM2QTZBNkE7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG59XG5cbmJvZHkgPiBiYWNrZ3JvdW5kLWltYWdlIHtcbiAgaGVpZ2h0OiBjYWxjKDQwMHB4ICsgMTB2dyk7XG4gIGFsaWduLXNlbGY6IGVuZDtcbiAgZ3JpZC1yb3c6IDI7XG59XG5ib2R5ID4gYmFja2dyb3VuZC1pbWFnZSBpbWcge1xuICBtYXgtd2lkdGg6IDE2ODBweDtcbiAgb2JqZWN0LXBvc2l0aW9uOiA1MCUgNTQlO1xufVxuYm9keSA+IGJhY2tncm91bmQtaW1hZ2U6OmFmdGVyIHtcbiAgb3BhY2l0eTogMTtcbiAgei1pbmRleDogMjtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgd2hpdGUsIHRyYW5zcGFyZW50IDMwMHB4LCB0cmFuc3BhcmVudCBjYWxjKDEwMCUgLSAyMDBweCksIGJsYWNrKTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiAxNjgxcHgpIHtcbiAgYm9keSA+IGJhY2tncm91bmQtaW1hZ2U6OmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICB6LWluZGV4OiAxO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogY2FsYygoMTAwdncgLSAxNjgwcHgpICsgMjYwcHggKyAxcHgpO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICByaWdodDogLTFweDtcbiAgICB0b3A6IDA7XG4gICAgZmlsdGVyOiBibHVyKDFweCk7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB0cmFuc3BhcmVudCAyNjBweCwgcmdiYSgwLCAwLCAwLCAwLjQpKSwgbGluZWFyLWdyYWRpZW50KDE3Ny43ZGVnLCByZ2IoOSwgMjcsIDcxKSAwJSwgcmdiKDM0LCA2NywgMTE5KSAyNSUsIHJnYig0MywgNzcsIDExMykgMzIlLCByZ2IoODIsIDEwNSwgMTI0KSAzNyUsIHJnYigxMTUsIDExOSwgMTEyKSA0MiUsIHJnYigxNDQsIDExMywgODUpIDUwJSwgcmdiKDEzMywgOTYsIDY5KSA1MiUsIHJnYigxMjQsIDkwLCA2NikgNTMlLCByZ2IoMiwgMiwgMCkgNTQlLCByZ2IoMiwgMiwgMSkgNTclLCByZ2IoNzQsIDcwLCA3MSkgNTclLCByZ2IoNjIsIDYwLCA2MSkgNTglLCByZ2IoMzAsIDI5LCAyOSkgNTglLCByZ2IoMzQsIDMyLCAzNCkgNTglLCByZ2IoODAsIDY3LCA1OSkgNTklLCByZ2IoMTEyLCAxMDAsIDk0KSA1OS41JSwgcmdiKDY3LCA2MywgNjIpIDYwJSwgcmdiKDE4LCAxOCwgMTgpIDYwLjYlLCByZ2IoMzYsIDMwLCAxNikgNjMlLCByZ2IoNjMsIDQ3LCAyOCkgNjQlLCByZ2IoNjMsIDU3LCA2MikgNjUlLCByZ2IoMjksIDM1LCA1MikgNjglLCByZ2IoMywgNiwgMjUpIDc1JSwgcmdiKDQsIDYsIDIyKSA4NyUsIHJnYigzLCA0LCAxMykgMTAwJSk7XG4gICAgbWFzay1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB0cmFuc3BhcmVudCwgYmxhY2sgMjYwcHgpO1xuICB9XG59XG5AbWVkaWEgKG1heC13aWR0aDogOTgwcHgpIHtcbiAgYm9keSA+IGJhY2tncm91bmQtaW1hZ2Uge1xuICAgIGdyaWQtY29sdW1uLWVuZDogNDtcbiAgfVxuICBib2R5ID4gYmFja2dyb3VuZC1pbWFnZSBpbWcge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgYm9keSA+IGJhY2tncm91bmQtaW1hZ2U6OmFmdGVyIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCB3aGl0ZSwgI2M0ZDBkYik7XG4gIH1cbn1cblxubWFpbiAudGFnLWxpbmUtc2lnbi1vZmYge1xuICBib3gtc2hhZG93OiBpbml0aWFsICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7XG4gIHBhZGRpbmctYm90dG9tOiAwO1xufVxubWFpbiAudGFnLWxpbmUtc2lnbi1vZmYgdGFnLWxpbmUge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbm1haW4gLmNvbnRlbnQtYmxvY2sge1xuICBib3gtc2hhZG93OiBpbml0aWFsICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7XG59XG5tYWluIC5jb250ZW50LWJsb2NrIGFydGljbGUtbGlzdCB7XG4gIGdyaWQtcm93LWVuZDogc3BhbiAyO1xuICBncmlkLWdhcDogY2FsYyh2YXIoLS1nYXApICogMC41KTtcbiAgYWxpZ24tY29udGVudDogZmxleC1zdGFydDtcbiAgcGFkZGluZy10b3A6IDIwdmg7XG59XG5tYWluIC5jb250ZW50LWJsb2NrIGFydGljbGUtbGlzdCAuYXJ0aWNsZSAuaW1hZ2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAzMyU7XG4gIHJpZ2h0OiAwO1xuICB0b3A6IDA7XG4gIG1hcmdpbjogMDtcbiAgaGVpZ2h0OiAyMHZoO1xuICBsZWZ0OiBpbml0aWFsO1xufVxubWFpbiAuY29udGVudC1ibG9jayBhcnRpY2xlLWxpc3QgLmFydGljbGUgYSB7XG4gIHBhZGRpbmc6IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IGluaXRpYWw7XG4gIGJvcmRlcjogaW5pdGlhbDtcbn1cbm1haW4gLmNvbnRlbnQtYmxvY2sgYXJ0aWNsZS1saXN0IC5hcnRpY2xlIGEgaDIge1xuICBtYXJnaW46IDA7XG4gIGNvbG9yOiAjMzMzMjM2O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgbWFpbiAuY29udGVudC1ibG9jayBhcnRpY2xlLWxpc3QgLmFydGljbGUgYTpob3ZlciBoMiB7XG4gICAgY29sb3I6IHdoaXRlO1xuICB9XG59XG5tYWluIC5jb250ZW50LWJsb2NrLmRhcmsgLnRleHQge1xuICBjb2xvcjogIzk2OTY5NTtcbn1cbm1haW4gLmNvbnRlbnQtYmxvY2suZGFyayAudGV4dCAuaGVhZGluZy1oMyB7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cbkBtZWRpYSAobWF4LXdpZHRoOiAxNDAwcHgpIHtcbiAgbWFpbiAuY29udGVudC1ibG9jayA+ICoge1xuICAgIGdyaWQtY29sdW1uOiBpbml0aWFsICFpbXBvcnRhbnQ7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA5ODBweCkgYW5kIChtYXgtd2lkdGg6IDE0MDBweCkge1xuICBtYWluIC5jb250ZW50LWJsb2NrIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICB9XG59XG5AbWVkaWEgKG1heC13aWR0aDogOTgwcHgpIHtcbiAgbWFpbiAuY29udGVudC1ibG9jayB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gIH1cbn1cblxuLndpZGdldCB7XG4gIGdyaWQtcm93OiAxL3NwYW4gMjtcbn1cblxuZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcCB7XG4gIGdyaWQtcm93OiAyO1xuICBncmlkLWNvbHVtbjogNDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvcGFjaXR5OiAwO1xuICBoZWlnaHQ6IGZpdC1jb250ZW50O1xufVxuZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcCAubWFwIHtcbiAgZmlsdGVyOiBkcm9wLXNoYWRvdygwcHggMHB4IDE1cHggcmdiYSgwLCAwLCAwLCAwLjIpKTtcbn1cbmZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAgLm1hcCBwYXRoIHtcbiAgdHJhbnNpdGlvbjogZmlsbCAwLjVzIGN1YmljLWJlemllcigwLjQyLCAwLCAwLjU4LCAxKTtcbn1cbmZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAgYSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHRvcDogdmFyKC0teSk7XG4gIGxlZnQ6IHZhcigtLXgpO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwcHgpO1xuICB6LWluZGV4OiAxO1xufVxuZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcCBhIHNwYW4ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogY2FsYygxMDAlIC0gM3B4KTtcbiAgbGVmdDogNTAlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBmb250LXNpemU6IDAuODc1ZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBwYWRkaW5nOiAxcHggNnB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjRjRGNEY0O1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAxMHB4KTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10cmFuc2l0aW9uLWR1cmF0aW9uLCAwLjJzKSB2YXIoLS10cmFuc2l0aW9uLWVhc2UsIGN1YmljLWJlemllcigwLjQyLCAwLCAwLjU4LCAxKSkgdmFyKC0tdHJhbnNpdGlvbi1kZWxheSwgKSwgdHJhbnNmb3JtIDAuNXMgY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMS4yNzUpO1xufVxuZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcCBhIHN2Zy5waW4ge1xuICB3aWR0aDogMTZweDtcbiAgd2lkdGg6IGNsYW1wKDE2cHgsIDJ2dywgMjJweCk7XG4gIGZpbGw6ICMxMzFmNmI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRyYW5zaXRpb246IGZpbGwgdmFyKC0tdHJhbnNpdGlvbi1kdXJhdGlvbiwgMC4ycykgdmFyKC0tdHJhbnNpdGlvbi1lYXNlLCBjdWJpYy1iZXppZXIoMC40MiwgMCwgMC41OCwgMSkpIHZhcigtLXRyYW5zaXRpb24tZGVsYXksICk7XG59XG5AbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICBmaWd1cmUjc2VydmljZS1jZW50cmUtbWFwIGE6aG92ZXIge1xuICAgIHotaW5kZXg6IDE7XG4gIH1cbiAgZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcCBhOmhvdmVyIHNwYW4ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCk7XG4gIH1cbiAgZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcCBhOmhvdmVyIHN2Zy5waW4ge1xuICAgIGZpbGw6ICNERjMwMzU7XG4gIH1cbn1cbkBtZWRpYSAoaG92ZXI6IGhvdmVyKSB7XG4gIGZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAgYTpob3ZlcltkYXRhLWZvcj1iZWRmb3JkXSB+IHN2ZyBnIHBhdGg6bnRoLW9mLXR5cGUoOSkge1xuICAgIGZpbGw6ICNGNEY0RjQ7XG4gIH1cbiAgZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcCBhOmhvdmVyW2RhdGEtZm9yPWJyaXN0b2xdIH4gc3ZnIGcgcGF0aDpudGgtb2YtdHlwZSg3KSB7XG4gICAgZmlsbDogI0Y0RjRGNDtcbiAgfVxuICBmaWd1cmUjc2VydmljZS1jZW50cmUtbWFwIGE6aG92ZXJbZGF0YS1mb3I9Z2F0ZXNoZWFkXSB+IHN2ZyBnIHBhdGg6bnRoLW9mLXR5cGUoMSkge1xuICAgIGZpbGw6ICNGNEY0RjQ7XG4gIH1cbiAgZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcCBhOmhvdmVyW2RhdGEtZm9yPWdsYXNnb3ddIH4gc3ZnIGcgcGF0aDpudGgtb2YtdHlwZSg1KSB7XG4gICAgZmlsbDogI0Y0RjRGNDtcbiAgfVxuICBmaWd1cmUjc2VydmljZS1jZW50cmUtbWFwIGE6aG92ZXJbZGF0YS1mb3I9bGVlZHNdIH4gc3ZnIGcgcGF0aDpudGgtb2YtdHlwZSgxMCkge1xuICAgIGZpbGw6ICNGNEY0RjQ7XG4gIH1cbiAgZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcCBhOmhvdmVyW2RhdGEtZm9yPW1hbmNoZXN0ZXJdIH4gc3ZnIGcgcGF0aDpudGgtb2YtdHlwZSgxNCkge1xuICAgIGZpbGw6ICNGNEY0RjQ7XG4gIH1cbiAgZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcCBhOmhvdmVyW2RhdGEtZm9yPW5vcndpY2hdIH4gc3ZnIGcgcGF0aDpudGgtb2YtdHlwZSg4KSB7XG4gICAgZmlsbDogI0Y0RjRGNDtcbiAgfVxuICBmaWd1cmUjc2VydmljZS1jZW50cmUtbWFwIGE6aG92ZXJbZGF0YS1mb3I9cGx5bW91dGhdIH4gc3ZnIGcgcGF0aDpudGgtb2YtdHlwZSgzKSB7XG4gICAgZmlsbDogI0Y0RjRGNDtcbiAgfVxuICBmaWd1cmUjc2VydmljZS1jZW50cmUtbWFwIGE6aG92ZXJbZGF0YS1mb3I9cG9ydHNtb3V0aF0gfiBzdmcgZyBwYXRoOm50aC1vZi10eXBlKDQpIHtcbiAgICBmaWxsOiAjRjRGNEY0O1xuICB9XG4gIGZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAgYTpob3ZlcltkYXRhLWZvcj1yYi1jZW50cmVdIH4gc3ZnIGcgcGF0aDpudGgtb2YtdHlwZSg2KSB7XG4gICAgZmlsbDogI0Y0RjRGNDtcbiAgfVxufVxuQG1lZGlhIChtYXgtd2lkdGg6IDk4MHB4KSB7XG4gIGZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAge1xuICAgIGdyaWQtcm93OiAyO1xuICAgIGdyaWQtY29sdW1uOiAyO1xuICAgIGhlaWdodDogNDAwcHg7XG4gICAgei1pbmRleDogMTtcbiAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgYWxpZ24tc2VsZjogZW5kO1xuICAgIHRvcDogLTMwcHg7XG4gICAganVzdGlmeS1zZWxmOiBjZW50ZXI7XG4gIH1cbiAgZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcCAubWFwIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbiAgZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcCBzcGFuIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5maWd1cmUjc2VydmljZS1jZW50cmUtbWFwLmluLXZpZXcge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXMgY3ViaWMtYmV6aWVyKDAuNDIsIDAsIDAuNTgsIDEpO1xufVxuZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcC5pbi12aWV3IGEge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tdHJhbnNpdGlvbi1kdXJhdGlvbiwgMC4ycykgdmFyKC0tdHJhbnNpdGlvbi1lYXNlLCBjdWJpYy1iZXppZXIoMC40MiwgMCwgMC41OCwgMSkpIHZhcigtLXRyYW5zaXRpb24tZGVsYXksICksIHRyYW5zZm9ybSAwLjVzIGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIsIDEuMjc1KTtcbn1cbmZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAuaW4tdmlldyBhOm50aC1vZi10eXBlKDEpIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMC4zNXM7XG59XG5maWd1cmUjc2VydmljZS1jZW50cmUtbWFwLmluLXZpZXcgYTpudGgtb2YtdHlwZSgyKSB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDAuNHM7XG59XG5maWd1cmUjc2VydmljZS1jZW50cmUtbWFwLmluLXZpZXcgYTpudGgtb2YtdHlwZSgzKSB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDAuNDVzO1xufVxuZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcC5pbi12aWV3IGE6bnRoLW9mLXR5cGUoNCkge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAwLjVzO1xufVxuZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcC5pbi12aWV3IGE6bnRoLW9mLXR5cGUoNSkge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAwLjU1cztcbn1cbmZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAuaW4tdmlldyBhOm50aC1vZi10eXBlKDYpIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMC42cztcbn1cbmZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAuaW4tdmlldyBhOm50aC1vZi10eXBlKDcpIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMC42NXM7XG59XG5maWd1cmUjc2VydmljZS1jZW50cmUtbWFwLmluLXZpZXcgYTpudGgtb2YtdHlwZSg4KSB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDAuN3M7XG59XG5maWd1cmUjc2VydmljZS1jZW50cmUtbWFwLmluLXZpZXcgYTpudGgtb2YtdHlwZSg5KSB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDAuNzVzO1xufVxuZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcC5pbi12aWV3IGE6bnRoLW9mLXR5cGUoMTApIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMC44cztcbn1cbmZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAuaW4tdmlldyBhOm50aC1vZi10eXBlKDExKSB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDAuODVzO1xufVxuZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcC5pbi12aWV3IGE6bnRoLW9mLXR5cGUoMTIpIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMC45cztcbn1cbmZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAuaW4tdmlldyBhOm50aC1vZi10eXBlKDEzKSB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDAuOTVzO1xufVxuZmlndXJlI3NlcnZpY2UtY2VudHJlLW1hcC5pbi12aWV3IGE6bnRoLW9mLXR5cGUoMTQpIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMXM7XG59XG5maWd1cmUjc2VydmljZS1jZW50cmUtbWFwLmluLXZpZXcgYTpudGgtb2YtdHlwZSgxNSkge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAxLjA1cztcbn1cbmZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAuaW4tdmlldyBhOm50aC1vZi10eXBlKDE2KSB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDEuMXM7XG59XG5maWd1cmUjc2VydmljZS1jZW50cmUtbWFwLmluLXZpZXcgYTpudGgtb2YtdHlwZSgxNykge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAxLjE1cztcbn1cbmZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAuaW4tdmlldyBhOm50aC1vZi10eXBlKDE4KSB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDEuMnM7XG59XG5maWd1cmUjc2VydmljZS1jZW50cmUtbWFwLmluLXZpZXcgYTpudGgtb2YtdHlwZSgxOSkge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAxLjI1cztcbn1cbmZpZ3VyZSNzZXJ2aWNlLWNlbnRyZS1tYXAuaW4tdmlldyBhOm50aC1vZi10eXBlKDIwKSB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDEuM3M7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLyBCcmVhayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2JyZWFrXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gb3V0KCRicmVha3BvaW50KSB7XG4gIEBtZWRpYSAobWluLXdpZHRoOiN7JGJyZWFrcG9pbnQgKyAxfSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBpbigkYnJlYWtwb2ludCkge1xuICBAbWVkaWEgKG1heC13aWR0aDojeyRicmVha3BvaW50fSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBiZXR3ZWVuKCRtaW4sICRtYXgpIHtcbiAgQG1lZGlhIChtaW4td2lkdGg6I3skbWlufSkgYW5kIChtYXgtd2lkdGg6I3skbWF4fSkge1xuICAgIEBjb250ZW50O1xuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEhlYWRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AdXNlICdzYXNzOnN0cmluZyc7XG5AdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnc2FzczptYXRoJztcbkB1c2UgJy4vY29sbGVjdGlvbnMvZm9udCc7XG5AdXNlICcuL21vZHVsZXMvdW5pdCc7XG5cbi8vIERlZmF1bHQgSGVhZGluZyBWYWx1ZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRoMSA6IChcbiAgJ2ZvbnQtc2l6ZScgICA6IDMuMHJlbSxcbiAgJ2xpbmUtaGVpZ2h0JyA6IDEuMVxuKSAhZGVmYXVsdDtcblxuJGgyIDogKFxuICAnZm9udC1zaXplJyAgIDogMi41cmVtLFxuICAnbGluZS1oZWlnaHQnIDogMS4zXG4pICFkZWZhdWx0O1xuXG4kaDMgOiAoXG4gICdmb250LXNpemUnICAgOiAyLjJyZW0sXG4gICdsaW5lLWhlaWdodCcgOiAxLjRcbikgIWRlZmF1bHQ7XG5cbiRoNCA6IChcbiAgJ2ZvbnQtc2l6ZScgICA6IDIuMHJlbSxcbiAgJ2xpbmUtaGVpZ2h0JyA6IDEuNFxuKSAhZGVmYXVsdDtcblxuJGg1IDogKFxuICAnZm9udC1zaXplJyAgIDogMS44cmVtLFxuICAnbGluZS1oZWlnaHQnIDogMS40XG4pICFkZWZhdWx0O1xuXG4kaDYgOiAoXG4gICdmb250LXNpemUnICAgOiAxLjZyZW0sXG4gICdsaW5lLWhlaWdodCcgOiAxLjRcbikgIWRlZmF1bHQ7XG5cbiRiYXNlIDogNjIuNSAhZGVmYXVsdDtcbiRzY2FsZXIgOiAxLjV2dyAhZGVmYXVsdDtcbiRlbmFibGUtY3JvcHBpbmcgOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gRmFsbGJhY2sgTGluZS1oZWlnaHRzIHNob3VsZCB0aGV5IG5vdCBoYXZlIGJlZW4gcGFzc2VkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGlmIG5vdCBtYXAuaGFzLWtleSgkaDEsIFwibGluZS1oZWlnaHRcIikgeyAkaDEgOiBtYXAuc2V0KCRoMSwgJ2xpbmUtaGVpZ2h0JywgMS4xKTsgfVxuQGlmIG5vdCBtYXAuaGFzLWtleSgkaDIsIFwibGluZS1oZWlnaHRcIikgeyAkaDIgOiBtYXAuc2V0KCRoMiwgJ2xpbmUtaGVpZ2h0JywgMS4zKTsgfVxuQGlmIG5vdCBtYXAuaGFzLWtleSgkaDMsIFwibGluZS1oZWlnaHRcIikgeyAkaDMgOiBtYXAuc2V0KCRoMywgJ2xpbmUtaGVpZ2h0JywgMS40KTsgfVxuQGlmIG5vdCBtYXAuaGFzLWtleSgkaDQsIFwibGluZS1oZWlnaHRcIikgeyAkaDQgOiBtYXAuc2V0KCRoNCwgJ2xpbmUtaGVpZ2h0JywgMS40KTsgfVxuQGlmIG5vdCBtYXAuaGFzLWtleSgkaDUsIFwibGluZS1oZWlnaHRcIikgeyAkaDUgOiBtYXAuc2V0KCRoNSwgJ2xpbmUtaGVpZ2h0JywgMS40KTsgfVxuQGlmIG5vdCBtYXAuaGFzLWtleSgkaDYsIFwibGluZS1oZWlnaHRcIikgeyAkaDYgOiBtYXAuc2V0KCRoNiwgJ2xpbmUtaGVpZ2h0JywgMS40KTsgfVxuXG4vLyBEZWZpbmUgdGhlIHZhcmlhYmxlcyBzbyB0aGV5IGFyZSBzdGlsbCBhY2Nlc2libGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kaDEtZm9udC1zaXplICAgICA6IG1hcC1nZXQoJGgxLCAnZm9udC1zaXplJyk7XG4kaDEtbGluZS1oZWlnaHQgICA6IG1hcC1nZXQoJGgxLCAnbGluZS1oZWlnaHQnKTtcbiRoMS1mb250LXNpemUtbWluIDogaWYobWFwLmhhcy1rZXkoJGgxLCBcImZvbnQtc2l6ZS1taW5cIiksIG1hcC1nZXQoJGgxLCBcImZvbnQtc2l6ZS1taW5cIiksIGZhbHNlKTtcbiRoMS1zY2FsZXIgICAgICAgIDogaWYobWFwLmhhcy1rZXkoJGgxLCBcInNjYWxlclwiKSwgbWFwLWdldCgkaDEsIFwic2NhbGVyXCIpLCAkc2NhbGVyKTtcblxuJGgyLWZvbnQtc2l6ZSAgICAgOiBtYXAtZ2V0KCRoMiwgJ2ZvbnQtc2l6ZScpO1xuJGgyLWxpbmUtaGVpZ2h0ICAgOiBtYXAtZ2V0KCRoMiwgJ2xpbmUtaGVpZ2h0Jyk7XG4kaDItZm9udC1zaXplLW1pbiA6IGlmKG1hcC5oYXMta2V5KCRoMiwgXCJmb250LXNpemUtbWluXCIpLCBtYXAtZ2V0KCRoMiwgXCJmb250LXNpemUtbWluXCIpLCBmYWxzZSk7XG4kaDItc2NhbGVyICAgICAgICA6IGlmKG1hcC5oYXMta2V5KCRoMiwgXCJzY2FsZXJcIiksIG1hcC1nZXQoJGgyLCBcInNjYWxlclwiKSwgJHNjYWxlcik7XG5cbiRoMy1mb250LXNpemUgICAgIDogbWFwLWdldCgkaDMsICdmb250LXNpemUnKTtcbiRoMy1saW5lLWhlaWdodCAgIDogbWFwLWdldCgkaDMsICdsaW5lLWhlaWdodCcpO1xuJGgzLWZvbnQtc2l6ZS1taW4gOiBpZihtYXAuaGFzLWtleSgkaDMsIFwiZm9udC1zaXplLW1pblwiKSwgbWFwLWdldCgkaDMsIFwiZm9udC1zaXplLW1pblwiKSwgZmFsc2UpO1xuJGgzLXNjYWxlciAgICAgICAgOiBpZihtYXAuaGFzLWtleSgkaDMsIFwic2NhbGVyXCIpLCBtYXAtZ2V0KCRoMywgXCJzY2FsZXJcIiksICRzY2FsZXIpO1xuXG4kaDQtZm9udC1zaXplICAgICA6IG1hcC1nZXQoJGg0LCAnZm9udC1zaXplJyk7XG4kaDQtbGluZS1oZWlnaHQgICA6IG1hcC1nZXQoJGg0LCAnbGluZS1oZWlnaHQnKTtcbiRoNC1mb250LXNpemUtbWluIDogaWYobWFwLmhhcy1rZXkoJGg0LCBcImZvbnQtc2l6ZS1taW5cIiksIG1hcC1nZXQoJGg0LCBcImZvbnQtc2l6ZS1taW5cIiksIGZhbHNlKTtcbiRoNC1zY2FsZXIgICAgICAgIDogaWYobWFwLmhhcy1rZXkoJGg0LCBcInNjYWxlclwiKSwgbWFwLWdldCgkaDQsIFwic2NhbGVyXCIpLCAkc2NhbGVyKTtcblxuJGg1LWZvbnQtc2l6ZSAgICAgOiBtYXAtZ2V0KCRoNSwgJ2ZvbnQtc2l6ZScpO1xuJGg1LWxpbmUtaGVpZ2h0ICAgOiBtYXAtZ2V0KCRoNSwgJ2xpbmUtaGVpZ2h0Jyk7XG4kaDUtZm9udC1zaXplLW1pbiA6IGlmKG1hcC5oYXMta2V5KCRoNSwgXCJmb250LXNpemUtbWluXCIpLCBtYXAtZ2V0KCRoNSwgXCJmb250LXNpemUtbWluXCIpLCBmYWxzZSk7XG4kaDUtc2NhbGVyICAgICAgICA6IGlmKG1hcC5oYXMta2V5KCRoNSwgXCJzY2FsZXJcIiksIG1hcC1nZXQoJGg1LCBcInNjYWxlclwiKSwgJHNjYWxlcik7XG5cbiRoNi1mb250LXNpemUgICAgIDogbWFwLWdldCgkaDYsICdmb250LXNpemUnKTtcbiRoNi1saW5lLWhlaWdodCAgIDogbWFwLWdldCgkaDYsICdsaW5lLWhlaWdodCcpO1xuJGg2LWZvbnQtc2l6ZS1taW4gOiBpZihtYXAuaGFzLWtleSgkaDYsIFwiZm9udC1zaXplLW1pblwiKSwgbWFwLWdldCgkaDYsIFwiZm9udC1zaXplLW1pblwiKSwgZmFsc2UpO1xuJGg2LXNjYWxlciAgICAgICAgOiBpZihtYXAuaGFzLWtleSgkaDYsIFwic2NhbGVyXCIpLCBtYXAtZ2V0KCRoNiwgXCJzY2FsZXJcIiksICRzY2FsZXIpO1xuXG4vLyBIYW5kbGVzIENyb3BzIHNob3VsZCB0aGV5IG5vdCBoYXZlIGJlZW4gcGFzc2VkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kX2gxLWNyb3AtdG9wICAgIDogaWYobWFwLmhhcy1rZXkoJGgxLCBcImNyb3AtdG9wXCIpLCBtYXAtZ2V0KCRoMSwgXCJjcm9wLXRvcFwiKSwgZmFsc2UpO1xuJF9oMi1jcm9wLXRvcCAgICA6IGlmKG1hcC5oYXMta2V5KCRoMiwgXCJjcm9wLXRvcFwiKSwgbWFwLWdldCgkaDIsIFwiY3JvcC10b3BcIiksIGZhbHNlKTtcbiRfaDMtY3JvcC10b3AgICAgOiBpZihtYXAuaGFzLWtleSgkaDMsIFwiY3JvcC10b3BcIiksIG1hcC1nZXQoJGgzLCBcImNyb3AtdG9wXCIpLCBmYWxzZSk7XG4kX2g0LWNyb3AtdG9wICAgIDogaWYobWFwLmhhcy1rZXkoJGg0LCBcImNyb3AtdG9wXCIpLCBtYXAtZ2V0KCRoNCwgXCJjcm9wLXRvcFwiKSwgZmFsc2UpO1xuJF9oNS1jcm9wLXRvcCAgICA6IGlmKG1hcC5oYXMta2V5KCRoNSwgXCJjcm9wLXRvcFwiKSwgbWFwLWdldCgkaDUsIFwiY3JvcC10b3BcIiksIGZhbHNlKTtcbiRfaDYtY3JvcC10b3AgICAgOiBpZihtYXAuaGFzLWtleSgkaDYsIFwiY3JvcC10b3BcIiksIG1hcC1nZXQoJGg2LCBcImNyb3AtdG9wXCIpLCBmYWxzZSk7XG5cbiRfaDEtY3JvcC1ib3R0b20gOiBpZihtYXAuaGFzLWtleSgkaDEsIFwiY3JvcC1ib3R0b21cIiksIG1hcC1nZXQoJGgxLCBcImNyb3AtYm90dG9tXCIpLCBmYWxzZSk7XG4kX2gyLWNyb3AtYm90dG9tIDogaWYobWFwLmhhcy1rZXkoJGgyLCBcImNyb3AtYm90dG9tXCIpLCBtYXAtZ2V0KCRoMiwgXCJjcm9wLWJvdHRvbVwiKSwgZmFsc2UpO1xuJF9oMy1jcm9wLWJvdHRvbSA6IGlmKG1hcC5oYXMta2V5KCRoMywgXCJjcm9wLWJvdHRvbVwiKSwgbWFwLWdldCgkaDMsIFwiY3JvcC1ib3R0b21cIiksIGZhbHNlKTtcbiRfaDQtY3JvcC1ib3R0b20gOiBpZihtYXAuaGFzLWtleSgkaDQsIFwiY3JvcC1ib3R0b21cIiksIG1hcC1nZXQoJGg0LCBcImNyb3AtYm90dG9tXCIpLCBmYWxzZSk7XG4kX2g1LWNyb3AtYm90dG9tIDogaWYobWFwLmhhcy1rZXkoJGg1LCBcImNyb3AtYm90dG9tXCIpLCBtYXAtZ2V0KCRoNSwgXCJjcm9wLWJvdHRvbVwiKSwgZmFsc2UpO1xuJF9oNi1jcm9wLWJvdHRvbSA6IGlmKG1hcC5oYXMta2V5KCRoNiwgXCJjcm9wLWJvdHRvbVwiKSwgbWFwLWdldCgkaDYsIFwiY3JvcC1ib3R0b21cIiksIGZhbHNlKTtcblxuXG4vLyBNaXhpbnMgZm9yIGVhY2ggaGVhZGluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AbWl4aW4gX3NldC1jcm9wKCRmb250LXNpemUsICRsaW5lLWhlaWdodCwgJGNyb3ApIHtcblxuICBAaWYgKG1ldGEudHlwZS1vZigkY3JvcCkgPT0gJ21hcCcpIHtcblxuICAgICRmb250LXNpemUgICA6IHVuaXQuc3RyaXAoJGZvbnQtc2l6ZSkgKiAxMDtcbiAgICAkbGluZS1oZWlnaHQgOiB1bml0LnN0cmlwKCRsaW5lLWhlaWdodCk7XG4gICAgJHRvcCAgICAgICAgIDogaWYobWFwLmhhcy1rZXkoJGNyb3AsIFwidG9wXCIpLCB1bml0LnN0cmlwKG1hcC5nZXQoJGNyb3AsIFwidG9wXCIpKSwgMCk7XG4gICAgJGJvdHRvbSAgICAgIDogaWYobWFwLmhhcy1rZXkoJGNyb3AsIFwiYm90dG9tXCIpLCB1bml0LnN0cmlwKG1hcC5nZXQoJGNyb3AsIFwiYm90dG9tXCIpKSwgMCk7XG5cbiAgICBAaW5jbHVkZSBmb250LmNyb3AoJGZvbnQtc2l6ZSwgJGxpbmUtaGVpZ2h0LCAkdG9wLCAkYm90dG9tKTtcblxuICB9XG5cbn1cblxuQG1peGluIGgxKCRmb250LXNpemUtb25seSA6IGZhbHNlLCAkY3JvcCA6ICRlbmFibGUtY3JvcHBpbmcpIHtcblxuICBmb250LXNpemUgOiBmb250LnNpemUoJGgxLWZvbnQtc2l6ZSk7XG5cbiAgQGlmICggJGgxLWZvbnQtc2l6ZS1taW4gYW5kICRoMS1mb250LXNpemUtbWluIDwgJGgxLWZvbnQtc2l6ZSApIHtcbiAgICBmb250LXNpemUgOiBjbGFtcCgje2ZvbnQuc2l6ZSgkaDEtZm9udC1zaXplLW1pbil9LCAjeyRoMS1zY2FsZXJ9LCAje2ZvbnQuc2l6ZSgkaDEtZm9udC1zaXplKX0pO1xuICB9XG5cbiAgQGlmIG5vdCAkZm9udC1zaXplLW9ubHkgeyBcblxuICAgIEBpZiAoICRjcm9wICkgeyBcbiAgICAgIEBpbmNsdWRlIGZvbnQuY3JvcCgkaDEtZm9udC1zaXplLCAkaDEtbGluZS1oZWlnaHQsICRfaDEtY3JvcC10b3AsICRfaDEtY3JvcC1ib3R0b20gKTsgXG4gICAgfSBAZWxzZSB7XG4gICAgICBsaW5lLWhlaWdodCA6ICRoMS1saW5lLWhlaWdodDsgXG4gICAgfVxuXG4gIH1cblxufVxuXG5AbWl4aW4gaDIoJGZvbnQtc2l6ZS1vbmx5IDogZmFsc2UsICRjcm9wIDogJGVuYWJsZS1jcm9wcGluZykge1xuXG4gIGZvbnQtc2l6ZSA6IGZvbnQuc2l6ZSgkaDItZm9udC1zaXplKTtcblxuICBAaWYgKCAkaDItZm9udC1zaXplLW1pbiBhbmQgJGgyLWZvbnQtc2l6ZS1taW4gPCAkaDItZm9udC1zaXplICkge1xuICAgIGZvbnQtc2l6ZSA6IGNsYW1wKCN7Zm9udC5zaXplKCRoMi1mb250LXNpemUtbWluKX0sICN7JGgyLXNjYWxlcn0sICN7Zm9udC5zaXplKCRoMi1mb250LXNpemUpfSk7XG4gIH1cblxuICBAaWYgbm90ICRmb250LXNpemUtb25seSB7IFxuXG4gICAgQGlmICggJGNyb3AgKSB7IFxuICAgICAgQGluY2x1ZGUgZm9udC5jcm9wKCRoMi1mb250LXNpemUsICRoMi1saW5lLWhlaWdodCwgJF9oMi1jcm9wLXRvcCwgJF9oMi1jcm9wLWJvdHRvbSApOyBcbiAgICB9IEBlbHNlIHtcbiAgICAgIGxpbmUtaGVpZ2h0IDogJGgyLWxpbmUtaGVpZ2h0OyBcbiAgICB9XG4gICAgXG4gIH1cblxufVxuXG5AbWl4aW4gaDMoJGZvbnQtc2l6ZS1vbmx5IDogZmFsc2UsICRjcm9wIDogJGVuYWJsZS1jcm9wcGluZykge1xuXG4gIGZvbnQtc2l6ZSA6IGZvbnQuc2l6ZSgkaDMtZm9udC1zaXplKTtcblxuICBAaWYgKCAkaDMtZm9udC1zaXplLW1pbiBhbmQgJGgzLWZvbnQtc2l6ZS1taW4gPCAkaDMtZm9udC1zaXplICkge1xuICAgIGZvbnQtc2l6ZSA6IGNsYW1wKCN7Zm9udC5zaXplKCRoMy1mb250LXNpemUtbWluKX0sICN7JGgzLXNjYWxlcn0sICN7Zm9udC5zaXplKCRoMy1mb250LXNpemUpfSk7XG4gIH1cblxuICBAaWYgbm90ICRmb250LXNpemUtb25seSB7IFxuXG4gICAgQGlmICggJGNyb3AgKSB7IFxuICAgICAgQGluY2x1ZGUgZm9udC5jcm9wKCRoMy1mb250LXNpemUsICRoMy1saW5lLWhlaWdodCwgJF9oMy1jcm9wLXRvcCwgJF9oMy1jcm9wLWJvdHRvbSApOyBcbiAgICB9IEBlbHNlIHtcbiAgICAgIGxpbmUtaGVpZ2h0IDogJGgzLWxpbmUtaGVpZ2h0OyBcbiAgICB9XG4gICAgXG4gIH1cblxufVxuXG5AbWl4aW4gaDQoJGZvbnQtc2l6ZS1vbmx5IDogZmFsc2UsICRjcm9wIDogJGVuYWJsZS1jcm9wcGluZykge1xuXG4gIGZvbnQtc2l6ZSA6IGZvbnQuc2l6ZSgkaDQtZm9udC1zaXplKTtcblxuICBAaWYgKCAkaDQtZm9udC1zaXplLW1pbiBhbmQgJGg0LWZvbnQtc2l6ZS1taW4gPCAkaDQtZm9udC1zaXplICkge1xuICAgIGZvbnQtc2l6ZSA6IGNsYW1wKCN7Zm9udC5zaXplKCRoNC1mb250LXNpemUtbWluKX0sICN7JGg0LXNjYWxlcn0sICN7Zm9udC5zaXplKCRoNC1mb250LXNpemUpfSk7XG4gIH1cblxuICBAaWYgbm90ICRmb250LXNpemUtb25seSB7IFxuXG4gICAgQGlmICggJGNyb3AgKSB7IFxuICAgICAgQGluY2x1ZGUgZm9udC5jcm9wKCRoNC1mb250LXNpemUsICRoNC1saW5lLWhlaWdodCwgJF9oNC1jcm9wLXRvcCwgJF9oNC1jcm9wLWJvdHRvbSApOyBcbiAgICB9IEBlbHNlIHtcbiAgICAgIGxpbmUtaGVpZ2h0IDogJGg0LWxpbmUtaGVpZ2h0OyBcbiAgICB9XG4gICAgXG4gIH1cblxufVxuXG5AbWl4aW4gaDUoJGZvbnQtc2l6ZS1vbmx5IDogZmFsc2UsICRjcm9wIDogJGVuYWJsZS1jcm9wcGluZykge1xuXG4gIGZvbnQtc2l6ZSA6IGZvbnQuc2l6ZSgkaDUtZm9udC1zaXplKTtcblxuICBAaWYgKCAkaDUtZm9udC1zaXplLW1pbiBhbmQgJGg1LWZvbnQtc2l6ZS1taW4gPCAkaDUtZm9udC1zaXplICkge1xuICAgIGZvbnQtc2l6ZSA6IGNsYW1wKCN7Zm9udC5zaXplKCRoNS1mb250LXNpemUtbWluKX0sICN7JGg1LXNjYWxlcn0sICN7Zm9udC5zaXplKCRoNS1mb250LXNpemUpfSk7XG4gIH1cblxuICBAaWYgbm90ICRmb250LXNpemUtb25seSB7IFxuXG4gICAgQGlmICggJGNyb3AgKSB7IFxuICAgICAgQGluY2x1ZGUgZm9udC5jcm9wKCRoNS1mb250LXNpemUsICRoNS1saW5lLWhlaWdodCwgJF9oNS1jcm9wLXRvcCwgJF9oNS1jcm9wLWJvdHRvbSApOyBcbiAgICB9IEBlbHNlIHtcbiAgICAgIGxpbmUtaGVpZ2h0IDogJGg1LWxpbmUtaGVpZ2h0OyBcbiAgICB9XG4gICAgXG4gIH1cblxufVxuXG5AbWl4aW4gaDYoJGZvbnQtc2l6ZS1vbmx5IDogZmFsc2UsICRjcm9wIDogJGVuYWJsZS1jcm9wcGluZykge1xuXG4gIGZvbnQtc2l6ZSA6IGZvbnQuc2l6ZSgkaDYtZm9udC1zaXplKTtcblxuICBAaWYgKCAkaDYtZm9udC1zaXplLW1pbiBhbmQgJGg2LWZvbnQtc2l6ZS1taW4gPCAkaDYtZm9udC1zaXplICkge1xuICAgIGZvbnQtc2l6ZSA6IGNsYW1wKCN7Zm9udC5zaXplKCRoNi1mb250LXNpemUtbWluKX0sICN7JGg2LXNjYWxlcn0sICN7Zm9udC5zaXplKCRoNi1mb250LXNpemUpfSk7XG4gIH1cblxuICBAaWYgbm90ICRmb250LXNpemUtb25seSB7IFxuXG4gICAgQGlmICggJGNyb3AgKSB7IFxuICAgICAgQGluY2x1ZGUgZm9udC5jcm9wMigkaDYtZm9udC1zaXplLCAkaDYtbGluZS1oZWlnaHQsICRfaDYtY3JvcC10b3AsICRfaDYtY3JvcC1ib3R0b20gKTsgXG4gICAgfSBAZWxzZSB7XG4gICAgICBsaW5lLWhlaWdodCA6ICRoNi1saW5lLWhlaWdodDsgXG4gICAgfVxuICAgIFxuICB9XG5cbn1cblxuXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVW5pdHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkB1c2UgXCJzYXNzOm1hdGhcIjtcbkB1c2UgJ3Nhc3M6c3RyaW5nJztcbkB1c2UgJ3Nhc3M6bWV0YSc7XG5cbi8vIFRoaXMgdW5pdHMgY3JlYXRvciB3aWxsIHJlbmRlciBzaXggcG9zaXRpdmUgYW5kIHNpeCBuZWdhdGl2ZSBzYXNzIHZhcmlhYmxlcyBmb3IgXG4vLyBnYXBzLCBzcGFjZXJzLCBhbmQgZ3V0dGVycyByZWxhdGl2ZSB0byB0aGUgYmFzZXYgdmFsdWVzIGRlZmluZWQgYmVsb3cuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQmFzZSBWYWx1ZXMgXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLy8gQHNlZSBodHRwczovL2NvZGVwZW4uaW8vbWFya25vdHRvbi9wZW4vRXhQYk5HZVxuXG4vLyBUaGVzZSB0aHJlZSB2YWx1ZXMgd2lsbCBhY3QgYSBjb25zdGFudCBiYXNlbGluZSBmb3IgYWxsIGZvbGxvd2luZyB1bml0IGRlbGNhcmF0aW9ucy5cblxuLy8gR2FwcyBtdXN0IHVzZSBhbiBhYnNvbHV0ZSBhbmQgc3RhdGljICdweCcgdW5pdC4gSXQgc2hvdWxkIG5vdCBiZSByZWxhdGl2ZSB0byBhbnlcbi8vIHBhcmVudCBjb250YWluZXIgYW5kIGlzIG5vdCBpbnRlbmRlZCBmb3IgZm9udCBzaXplcywgc28geW91IHNob3VsZCBub3QgdXNlICdyZW0nIG9yICdlbScuIFxuJGdhcCA6IDE2cHggIWRlZmF1bHQ7XG4kYmFzZS1nYXAgOiAkZ2FwO1xuXG4vLyBTcGFjZXJzIG11c3QgdXNlIGEgJ3ZoJyB1bml0IHNvIHRoZXkgYXJlIHJlbGF0aXZlIHRvIHRoZSB1c2VycyB2aWV3cG9ydCBoZWlnaHQtd2lzZS5cbi8vIFRoZXkgc2hvdWxkIHByaW1hcmlseSBiZSB1c2VkIGZvciB0aGUgdG9wIGFuZCBib3R0b20gbWFyZ2lucyBvbiBhIGNvbXBvbmVudCBsZXZlbC5cbiRzcGFjZXIgOiA0dmggIWRlZmF1bHQ7IFxuJGJhc2Utc3BhY2VyIDogJHNwYWNlcjsgXG5cbi8vIEd1dHRlcnMgbXVzdCB1c2UgYSAndncnIHVuaXQgc28gdGhleSBhcmUgcmVsYXRpdmUgdG8gdGhlIHVzZXJzIHZpZXdwb3J0IHdpZHRoLXdpc2UuIFxuLy8gVGhleSBzaG91bGQgcHJpbWFyaWx5IGJlIHVzZWQgZm9yIHRoZSBsZWZ0IGFuZCByaWdodCBwYWRkaW5nIG9yIG1hcmdpbiBvbiBhIHBhcmVudCBsZXZlbC5cbi8vIEFzIGEgc3VnZ2VzdGlvbiwgdGhpcyBndXR0ZXIgY29uc3RhbnQgc2hvdWxkIGJlIGhhbGYgdGhlIHNpemUgb2YgdGhlIHNwYWNlciB2YWx1ZS5cbiRndXR0ZXIgOiAzdncgIWRlZmF1bHQ7XG4kYmFzZS1ndXR0ZXIgOiAkZ3V0dGVyOyBcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFzYm9sdXRlIFVuaXRzIFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gR2FwcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEdhcHMgYXJlIGFuIGFic29sdXRlIHVuaXQgKHB4KSBpbnRlbmRlZCB0byBiZSB1c2VkIG9uIGluZGl2aWR1YWwgZWxlbWVudHMgd2l0aGluIGEgY29tcG9uZW50ZWQuIFxuLy8gVGhlIGFpbSBpcyB0byByZXRhaW4gY29uc2lzdGFudCBzcGFjaW5nIGFtb25nc3QgYmxvY2ssIGlubGluZSwgdGFibGUgYW5kIGdyb3VwIGh0bWwgZWxlbWVudHMuXG5cbkBmdW5jdGlvbiBnYXAoJGFtb3VudCA6IDEpIHtcbiAgQGlmICggJGFtb3VudCA9PSAxICkgeyBcbiAgICBAcmV0dXJuIHZhcigtLWdhcCk7IFxuICB9IEBlbHNlIHsgXG4gICAgQHJldHVybiBjYWxjKHZhcigtLWdhcCkgKiAjeyRhbW91bnR9KTsgXG4gIH1cbn1cblxuJGdhcDAgOiBnYXAoMC41KTsgJGdhcDAtIDogZ2FwKC0wLjUpO1xuJGdhcCAgOiBnYXAoMSk7ICAgJGdhcC0gIDogZ2FwKC0xKTtcbiRnYXAyIDogZ2FwKDIpOyAgICRnYXAyLSA6IGdhcCgtMik7XG4kZ2FwMyA6IGdhcCgzKTsgICAkZ2FwMy0gOiBnYXAoLTMpO1xuJGdhcDQgOiBnYXAoNCk7ICAgJGdhcDQtIDogZ2FwKC00KTtcbiRnYXA1IDogZ2FwKDUpOyAgICRnYXA1LSA6IGdhcCgtNSk7XG4kZ2FwNiA6IGdhcCg2KTsgICAkZ2FwNi0gOiBnYXAoLTYpO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUmVsYXRpdmUgVW5pdHMgXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AZnVuY3Rpb24gX2R5bmFtaWMtdW5pdCgkY3VzdG9tLXByb3BlcnR5LCAkYW1vdW50LCAkbWluLCAkbWF4LCAkdXNlLW5lZ2F0aXZlIDogZmFsc2UsICR1c2UtY2xhbXAgOiB0cnVlKSB7XG5cbiAgLy8gQ2FsYyBNZXRob2RcbiAgJHJlc3VsdCA6IGNhbGMoKCN7JGN1c3RvbS1wcm9wZXJ0eX0gKiAjeyRhbW91bnR9KSArICN7aWYoJG1pbiA9PSAwLCAwcHgsICRtaW4pfSk7XG4gIFxuICAvLyBDbGFtcCBNZXRob2RcbiAgQGlmICggJHVzZS1jbGFtcCApIHtcbiAgICBAaWYgKCAkYW1vdW50ID09IDAgKSB7XG4gICAgICAkcmVzdWx0IDogY2xhbXAoI3ttYXRoLmRpdigkbWluLCAyKX0sICN7JGN1c3RvbS1wcm9wZXJ0eX0gKiAwLjUsICN7JG1heH0pO1xuICAgIH0gQGVsc2UgaWYgKCAkYW1vdW50ID09IDEgKSB7XG4gICAgICAkcmVzdWx0IDogY2xhbXAoI3skbWlufSwgI3skY3VzdG9tLXByb3BlcnR5fSwgI3skbWF4fSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcmVzdWx0IDogY2xhbXAoI3skbWlufSwgI3skY3VzdG9tLXByb3BlcnR5fSAqICN7JGFtb3VudH0sICN7JG1heH0pO1xuICAgIH1cbiAgfSBcblxuICBAaWYgKCAkdXNlLW5lZ2F0aXZlICkge1xuICAgICRyZXN1bHQgOiBjYWxjKC0xICogI3skcmVzdWx0fSk7XG4gIH1cblxuICBAcmV0dXJuICRyZXN1bHQ7XG5cbn0gXG5cbi8vIFNwYWNlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTcGFjZXJzIGFyZSBhIHJlbGF0aXZlIHZpZXdwb3J0IGhlaWdodCAodmgpIHVuaXQgaW50ZW5kZWQgdG8gYmUgdXNlZCBvbiBhIGNvbXBvbmVudGVkIGxldmVsLlxuLy8gVGhlIGFpbSBpcyB0byByZXRhaW4gY29uc2lzdGFudCB0b3AgYW5kIGJvdHRvbSBzcGFjaW5nIGFtb25nc3QgJ3NlY3Rpb24nIGFuZCAnY3VzdG9tJyBlbGVtZW50cy5cbi8vIFNwYWNlcnMgd2lsbCBlcXVhdGUgdG8gc29tZXRoaW5nIGxpa2U6IGAoJHNwYWNlciAqIHgpICsgJGdhcGAuIFxuLy8gVGhlICckZ2FwJyBpcyBhZGRlZCBzbyB0aGF0IHZoIHNwYWNpbmcgd2lsbCBuZXZlciBzY2FsZSB0b28gY2xvc2UgdG8gMHB4LiBcblxuQGZ1bmN0aW9uIHNwYWNlcigkYW1vdW50IDogMSwgJG1pbiA6ICRiYXNlLWdhcCwgJG1heCA6IG51bGwsICR1c2UtbmVnYXRpdmUgOiBmYWxzZSwgJHVzZS1jbGFtcCA6IHRydWUpIHtcbiAgQGlmICggJGFtb3VudCA9PSAwKSB7ICRhbW91bnQgOiAwLjU7ICRtaW4gOiBtYXRoLmRpdigkbWluLCAyKTsgfVxuICBAaWYgKCBtZXRhLnR5cGUtb2YoJG1heCkgPT0gJ251bGwnICkgeyBcbiAgICBAaWYgKCBtZXRhLnR5cGUtb2YoJG1pbikgPT0gJ3N0cmluZycgYW5kIHN0cmluZy5pbmRleCgkbWluLCAndmFyJykgKSB7XG4gICAgICAkbWF4IDogY2FsYygjeyRtaW59ICogI3skYW1vdW50ICsgMX0pOyBcbiAgICB9IEBlbHNlIHtcbiAgICAgICRtYXggOiAjeyRtaW4gKiAoJGFtb3VudCArIDEpfTsgXG4gICAgfVxuICB9XG4gIEByZXR1cm4gX2R5bmFtaWMtdW5pdCh2YXIoLS1zcGFjZXIpLCAkYW1vdW50LCAkbWluLCAkbWF4LCAkdXNlLW5lZ2F0aXZlLCAkdXNlLWNsYW1wKTtcbn1cblxuJHNwYWNlcjAgOiB2YXIoLS1zcGFjZXIwKTsgJHNwYWNlcjAtIDogdmFyKC0tc3BhY2VyMC0pO1xuJHNwYWNlciAgOiB2YXIoLS1zcGFjZXIxKTsgJHNwYWNlci0gIDogdmFyKC0tc3BhY2VyMS0pO1xuJHNwYWNlcjIgOiB2YXIoLS1zcGFjZXIyKTsgJHNwYWNlcjItIDogdmFyKC0tc3BhY2VyMi0pO1xuJHNwYWNlcjMgOiB2YXIoLS1zcGFjZXIzKTsgJHNwYWNlcjMtIDogdmFyKC0tc3BhY2VyMy0pO1xuJHNwYWNlcjQgOiB2YXIoLS1zcGFjZXI0KTsgJHNwYWNlcjQtIDogdmFyKC0tc3BhY2VyNC0pO1xuJHNwYWNlcjUgOiB2YXIoLS1zcGFjZXI1KTsgJHNwYWNlcjUtIDogdmFyKC0tc3BhY2VyNS0pO1xuJHNwYWNlcjYgOiB2YXIoLS1zcGFjZXI2KTsgJHNwYWNlcjYtIDogdmFyKC0tc3BhY2VyNi0pO1xuXG4vLyBHdXR0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gR3V0dGVycyBhcmUgYSByZWxhdGl2ZSB2aWV3cG9ydCB3aWR0aCAodncpIHVuaXQgaW50ZW5kZWQgdG8gYmUgdXNlZCBvbiBhIHBhcmVudCBsZXZlbDtcbi8vIGZvciBleGFtcGxlLCBhIHdyYXBwZXIgY29udGFpbmVyIG9yIGJvZHkgd2l0aCBuZXN0ZWQgY29tcG9uZW50cy4gXG4vLyBUaGUgYWltIGlzIHRvIHJldGFpbiBjb25zaXN0YW50IGxlZnQgYW5kIHJpZ2h0IHNwYWNpbmcgYW1vbmdzdCAnc2VjdGlvbicgYW5kICdjdXN0b20nIGVsZW1lbnRzLlxuLy8gR3V0dGVycyB3aWxsIGVxdWF0ZSB0byBzb21ldGhpbmcgbGlrZTogYCgkZ3V0dGVyICogeCkgKyAkZ2FwYC4gXG4vLyBUaGUgJyRnYXAnIGlzIGFkZGVkIHNvIHRoYXQgdncgc3BhY2luZyB3aWxsIG5ldmVyIHNjYWxlIHRvbyBjbG9zZSB0byAwcHguIFxuXG5AZnVuY3Rpb24gZ3V0dGVyKCRhbW91bnQgOiAxLCAkbWluIDogJGJhc2UtZ2FwLCAkbWF4IDogbnVsbCwgJHVzZS1uZWdhdGl2ZSA6IGZhbHNlLCAkdXNlLWNsYW1wIDogdHJ1ZSkge1xuICBAaWYgKCAkYW1vdW50ID09IDApIHsgJGFtb3VudCA6IDAuNTsgJG1pbiA6IG1hdGguZGl2KCRtaW4sIDIpOyB9XG4gIEBpZiAoIG1ldGEudHlwZS1vZigkbWF4KSA9PSAnbnVsbCcgKSB7IFxuICAgIEBpZiAoIG1ldGEudHlwZS1vZigkbWluKSA9PSAnc3RyaW5nJyBhbmQgc3RyaW5nLmluZGV4KCRtaW4sICd2YXInKSApIHtcbiAgICAgICRtYXggOiBjYWxjKCN7JG1pbn0gKiAjeyRhbW91bnQgKyAxfSk7IFxuICAgIH0gQGVsc2Uge1xuICAgICAgJG1heCA6ICN7JG1pbiAqICgkYW1vdW50ICsgMSl9OyBcbiAgICB9XG4gIH1cbiAgQHJldHVybiBfZHluYW1pYy11bml0KHZhcigtLWd1dHRlciksICRhbW91bnQsICRtaW4sICRtYXgsICR1c2UtbmVnYXRpdmUsICR1c2UtY2xhbXApO1xufVxuXG4kZ3V0dGVyMCA6IHZhcigtLWd1dHRlcjApOyAkZ3V0dGVyMC0gOiB2YXIoLS1ndXR0ZXIwLSk7XG4kZ3V0dGVyICA6IHZhcigtLWd1dHRlcjEpOyAkZ3V0dGVyLSAgOiB2YXIoLS1ndXR0ZXIxLSk7XG4kZ3V0dGVyMiA6IHZhcigtLWd1dHRlcjIpOyAkZ3V0dGVyMi0gOiB2YXIoLS1ndXR0ZXIyLSk7XG4kZ3V0dGVyMyA6IHZhcigtLWd1dHRlcjMpOyAkZ3V0dGVyMy0gOiB2YXIoLS1ndXR0ZXIzLSk7XG4kZ3V0dGVyNCA6IHZhcigtLWd1dHRlcjQpOyAkZ3V0dGVyNC0gOiB2YXIoLS1ndXR0ZXI0LSk7XG4kZ3V0dGVyNSA6IHZhcigtLWd1dHRlcjUpOyAkZ3V0dGVyNS0gOiB2YXIoLS1ndXR0ZXI1LSk7XG4kZ3V0dGVyNiA6IHZhcigtLWd1dHRlcjYpOyAkZ3V0dGVyNi0gOiB2YXIoLS1ndXR0ZXI2LSk7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3Vyc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLy8vIEV4cGxpY2l0IENvbG91cnMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vLyBFeHBsaWNpdCBjb2xvdXJzIGFyZSBhIHdoYXQgdGhleSBhcmUuIEdyZWVuIGlzIGdyZWVuLCBibHVlIGlzIGJsdWUuLi4gbm8gb2JzY3VyaXR5LlxuLy8vIFdlIHN1ZmZpeCBudW1iZXJzIHRvIGRlZmluZSB2YXJpYXRpb25zIG9mIGNvbG91cnMgaW4gbm8gcGFydGljdWxhciBvcmRlciBvZiBzaGFkZS4gXG4vLy8gRXhhbXBsZTogZ3JlZW4xLCBncmVlbjIsIGdyZWVuMywgZ3JlZW40LiBUaGlzIGlzIHNvIHdlIGNhbiBpbW1pZGlhdGVseSBzZWUgaG93IFxuLy8vIG1hbnkgb3B0aW9ucyB3ZSBoYXZlIGZvciBhIHNpbmdsZSBjb2xvdXIgYXQgYSBnbGFuY2UuIElmIHlvdSBzZWUgJGdyZWVuNCwgeW91IGtub3cgdGhpc1xuLy8vIHByb2plY3QgaXMgdXNpbmcgZm91ciB2YXJpYXRpb25zIG9mIGdyZWVuLiBUaGlzIGlzIGFsc28gb2Z0ZW4gdXNlZnVsIGJlY2F1c2UgbWFueSBkZXZlbG9wbWVudCBcbi8vLyB0b29scyB3aWxsIGF1dG8tc3VnZ2VzdCBjb2xvdXJzIHdpdGggYWN0dWFsIGV4YW1wbGVzIG9mIHRoZSBjb2xvdXIuIFxuLy8vIFRoZSBQYWxsZXRlcyBtb2R1bGUgKGF0IHRoZSBib3R0b20gb2YgdGhpcyBmaWxlKSB3aWxsIG91dHB1dCBzaGFkZWQgbmFtZWQgdmFyaWF0aW9ucywgXG4vLy8vIDxjb2xvdXI+LWRhcmsgYW5kIDxjb2xvdXI+LWxpZ2h0LiBJZiB5b3UgbmVlZCBhZGRpdGlvbmFsIHNoYWRlcyBwbGVhc2UgcmVmcmFpbSBmcm9tIGdvaW5nIGRvd24gXG4vLy8gdGhlICdsaWdodGVyJywgJ2xpZ2h0ZXN0JywgJ2RhcmtlcicsICdkYXJrZXN0JyBjb252ZW50aW9uLiBUaGVzZSBhcmUgbm90IHBhcnRpY3Vhcmx5IGxlZ2lhYmxlIFxuLy8vIGFuZCB0aGV5IGFyZSBsaW1pdGVkIGJ5IGhvdyBjcmVhdGl2ZSAoY29uZnVzaW5nKSB5b3VyIHdvcmRpbmcgY2FuIGJlLiBcbi8vLyBJdCBpcyBiZXR0ZXIgdG8gZGVmaW5lIGEgbmV3IGV4cGxjaXQgY29sb3VyIGVudGlyZWx5LiBcbi8vLyBAc2VlIGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vd2hhdC1kby15b3UtbmFtZS1jb2xvci12YXJpYWJsZXMvXG5cbiRibHVlICAgOiAjMTMxZjZiOyAvLyBQcmltYXJ5XG4kYmx1ZTIgIDogIzI5MkI2ODsgLy8gTmFrZWQgTGlua1xuJGJsdWUzICA6ICMzZDNmN2Y7IC8vIExpZ250IEdyYWRpZW50XG4kYmx1ZTQgIDogIzEwMTI0ZDsgLy8gRGFyayBHcmFkaWVudFxuJGJsdWU1ICA6ICMwMDk1RkY7IC8vIE5hdmlnYXRpb24gbGluayBob3ZlciAgXG4vLyAkcmVkICAgIDogI0UwM0E0MDsgLy8gU2Vjb25kYXJ5XG4kcmVkICAgIDogI0RGMzAzNTsgLy8gU2Vjb25kYXJ5IC0gVGhpcyBwYXNzZXMgdGhlIGNvbnRyYXN0IHJhdGlvIGFjY2Vzc2liaWxpdHkgdGVzdCBpbiBHb29nbGVzIExpZ2h0aG91c2UgXG4kZ3JleSAgIDogIzk2OTY5NTtcbiRncmV5MiAgOiAjNkE2QTZBOyAvLyBGb250XG4kZ3JleTMgIDogI0Y0RjRGNDsgLy8gTGlnaHRlciBHcmV5IEJhY2tncm91bmRcbiRncmV5NCAgOiAjZGNkY2RjOyBcbiRncmV5NSAgOiAjQjFCMUIxOyAvLyBTcGFjZXJzIDxocj5cbiRncmV5NiAgOiAjMzMzMjM2OyAvLyBOYXZpZ2F0aW9uIGxpbmsgaG92ZXIgIFxuJGdyZWVuICA6ICM1MEJDMDg7XG4kZ3JlZW4yIDogIzc2YmIyODsgLy8gRVNHIGdyZWVuXG4keWVsbG93IDogI0Y2RjREQjsgLy8gRGlzY2xhaW1lciBCYWNrZ3JvdW5kXG4keWVsbG93MiA6ICNGQ0IwMDI7IFxuJGJsYWNrICA6ICMxRTFBMUE7XG5cbiRtYXJrIDogJGJsdWU1OyAvLyBiYWNrZ3JvdW5kIGNvbG91ciBmb3IgPG1hcms+IHRhZ3NcblxuJHByaW1hcnkgICA6IHZhcigtLXByaW1hcnksICAjeyRibHVlfSk7XG4kc2Vjb25kYXJ5IDogdmFyKC0tc2Vjb25kYXJ5LCAjeyRyZWR9KTtcblxuLy8vIFBhbGV0dGUgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vLyBCeSBsb2FkaW5nIGNvbmZpZ3VyYXRpb25zIGludG8gdGhpcyAncGFsbGV0ZScgbW9kdWxlLCB3ZSB3aWxsIGJlIGFibGVcbi8vLyB0byBkZWNsYXJlIHZhcmlhbnRzIG9mIGEgZmV3IGNvbW1vbiBjb2xvdXJzLiBZb3UgY2FuIGFsc28gYWRqdXN0IHRoZSBsaWdodG5lc3Ncbi8vLyBvciBkYXJrbmVzcyBvZiBlYWNoIHZhcmlhbnQgYnkgcGFzc2luZyBpbiB0aGUgcmVsZXZhbnQgcHJpdmF0ZSBydWxlcy4gXG4vLy8gUGFsZXR0ZSB3aWxsIGFsc28gZXhwb3NlIHBvcHVsYXIgc29jaWFsIG1lZGlhIGNvbG91cnMgYW5kIHRoZSBZZWxsbyBicmFuZCBjb2xvdXIuXG4vLy8gQHNlZSBodHRwczovL3Nhc3MtbGFuZy5jb20vZG9jdW1lbnRhdGlvbi9hdC1ydWxlcy9mb3J3YXJkI2NvbmZpZ3VyaW5nLW1vZHVsZXNcbi8vLyBAb3V0cHV0ICRncmVlbiA6ICMwMjkyOUE7ICRncmVlbi1kYXJrIDogIzI1NjU2OTsgJGdyZWVuLWxpZ2h0OiAjMDRiOWM0O1xuXG5AZm9yd2FyZCAnY3JlYXRlL3BhbGV0dGUnIHdpdGggKFxuICAkYmx1ZSAgIDogJGJsdWUsXG4gICRyZWQgICAgOiAkcmVkLFxuICAkZ3JleSAgIDogJGdyZXksXG4gICR5ZWxsb3cgOiAkeWVsbG93LFxuICAkZ3JlZW4gIDogJGdyZWVuLFxuICAkYmxhY2sgIDogJGJsYWNrXG4pO1xuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLyBCcmVha3BvaW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2JyZWFrcG9pbnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnc2FzczpzdHJpbmcnO1xuQHVzZSAnc2FzczptYXRoJztcbkB1c2UgJy4uL2hlbHBlcnMvYnJlYWsnO1xuXG4vLy8gV2hlbiBPTkxZIHVzaW5nIHRoZSBmb2xsb3dpbmcgcHJlZGVmaW5lIGJyZWFrcG9pbnQgbmFtZXMgeW91IGNhbiB1c2UgdGhpcyBjcmVhdGUgZmlsZSBsaWtlIHRoaXM6XG4vLy8gQGV4YW1wbGUgXG4vLy8gQGZvcndhcmQgJ2NyZWF0ZS9icmVha3BvaW50cycgd2l0aCAoXG4vLy8gICAkbWluICAgICAgICAgIDogMzIwLFxuLy8vICAgJHNtYWxsICAgICAgICA6IDQ4MCxcbi8vLyAgICRzbWFsbC1tZWRpdW0gOiA3MjAsXG4vLy8gICAkbWVkaXVtICAgICAgIDogOTUwLFxuLy8vICAgJGxhcmdlICAgICAgICA6IDExMjAsXG4vLy8gICAkbWF4ICAgICAgICAgIDogMTY4MFxuLy8vICk7XG5cbiRtaW4gICAgICAgICAgOiBudWxsICFkZWZhdWx0OyAvLyAzMjBweFxuJG1pbi1zbWFsbCAgICA6IG51bGwgIWRlZmF1bHQ7IFxuJHNtYWxsICAgICAgICA6IG51bGwgIWRlZmF1bHQ7IC8vIDQ4MHB4XG4kc21hbGwtbWVkaXVtIDogbnVsbCAhZGVmYXVsdDsgLy8gNzIwcHhcbiRtZWRpdW0gICAgICAgOiBudWxsICFkZWZhdWx0OyAvLyA5NTBweFxuJG1lZGl1bS1sYXJnZSA6IG51bGwgIWRlZmF1bHQ7IFxuJGxhcmdlICAgICAgICA6IG51bGwgIWRlZmF1bHQ7IC8vIDExMjBweFxuJGxhcmdlLW1heCAgICA6IG51bGwgIWRlZmF1bHQ7IFxuJG1heCAgICAgICAgICA6IG51bGwgIWRlZmF1bHQ7IC8vIDE2ODBwXG5cbi8vLyBXaGVuIHVzaW5nIGFueSBudW1iZXIgb2YgYnJlYWtwb2ludHMgd2l0aCBhbnkgbmFtZSB5b3UgY2FuIHVzZSB0aGlzIGNyZWF0ZSBmaWxlIGxpa2UgdGhpczpcbi8vLyBAZXhhbXBsZSBcbi8vLyBAZm9yd2FyZCAnY3JlYXRlL2JyZWFrcG9pbnRzJyB3aXRoIChcbi8vLyAgICRicmVha3BvaW50cyA6IChcbi8vLyAgICAgJ21pbicgICAgICAgICAgOiAzMjAsXG4vLy8gICAgICdzbWFsbCcgICAgICAgIDogNDgwLFxuLy8vICAgICAnc21hbGwtbWVkaXVtJyA6IDcyMCxcbi8vLyAgICAgJ25hdicgICAgICAgICAgOiA2NjYsIDwtLSB3b24ndCBiZSBleHBvc2VkIGJlY3Vhc2UgaXQncyBub3QgYSBwcmVkZWZpbmVkIG5hbWUgKCRtZWRpYS1uYXYgd2lsbCBlcnJvcilcbi8vLyAgICAgJ21lZGl1bScgICAgICAgOiA5NTAsXG4vLy8gICAgICdsYXJnZScgICAgICAgIDogMTEyMCxcbi8vLyAgICAgJ21heCcgICAgICAgICAgOiAxNjgwXG4vLy8gICApXG4vLy8gKTtcblxuJGJyZWFrcG9pbnRzIDogKFxuICAnbWluJyAgICAgICAgICA6ICRtaW4sXG4gICdtaW4tc21hbGwnICAgIDogJG1pbi1zbWFsbCxcbiAgJ3NtYWxsJyAgICAgICAgOiAkc21hbGwsXG4gICdzbWFsbC1tZWRpdW0nIDogJHNtYWxsLW1lZGl1bSxcbiAgJ21lZGl1bScgICAgICAgOiAkbWVkaXVtLFxuICAnbWVkaXVtLWxhcmdlJyA6ICRtZWRpdW0tbGFyZ2UsXG4gICdsYXJnZScgICAgICAgIDogJGxhcmdlLFxuICAnbGFyZ2UtbWF4JyAgICA6ICRsYXJnZS1tYXgsXG4gICdtYXgnICAgICAgICAgIDogJG1heFxuKSAhZGVmYXVsdDtcblxuLy8vIFByaXZhdGUgYWRkLXVuaXQgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vLyBAc2VlIGh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kb2N1bWVudGF0aW9uL29wZXJhdG9ycy9udW1lcmljXG5cbkBmdW5jdGlvbiBfYWRkLXVuaXQoJHZhbHVlKSB7XG4gIEBpZiAobWV0YS50eXBlLW9mKCR2YWx1ZSkgPT0gJ251bWJlcicgYW5kIG1hdGguaXMtdW5pdGxlc3MoJHZhbHVlKSkge1xuICAgIEByZXR1cm4gJHZhbHVlICogMXB4O1xuICB9XG4gIEByZXR1cm4gJHZhbHVlO1xufSBcblxuLy8vIFVwZGF0ZSBhbGwgdGhlIHByZWRlZmluZWQgYnJlYWtwb2ludHMgZnJvbSB0aGUgJGJyZWFrcG9pbnRzIG1hcCAtLS0tLS0tLS0tLS0tXG4vLy8gV2UgaGF2ZSB0byBkbyBpdCB0aGlzIHdheSBiZWNhdXNlIHdlIGNhbid0IGR5bmFtaWNhbGx5IGRlZmluZSB2YXJpYWJsZXNcbi8vLyBuYW1lcy4gVGhpcyBpcyB3aHkgd2UgaGF2ZSB0aGUgcHJlZGVmaW5lZCBuYW1lcy4gXG5cbkBpZiBtYXAuaGFzLWtleSgkYnJlYWtwb2ludHMsIFwibWluXCIpIHsgXG4gICRtaW4gOiBfYWRkLXVuaXQobWFwLWdldCgkYnJlYWtwb2ludHMsIFwibWluXCIpKTsgXG4gIEBpZiBtZXRhLnR5cGUtb2YobWFwLWdldCgkYnJlYWtwb2ludHMsIFwibWluXCIpKSA9PSAnbnVsbCcgIHtcbiAgICAkYnJlYWtwb2ludHMgOiBtYXAucmVtb3ZlKCRicmVha3BvaW50cywgXCJtaW5cIik7IFxuICB9XG59XG5cbkBpZiBtYXAuaGFzLWtleSgkYnJlYWtwb2ludHMsIFwibWluLXNtYWxsXCIpIHsgXG4gICRtaW4tc21hbGwgOiBfYWRkLXVuaXQobWFwLWdldCgkYnJlYWtwb2ludHMsIFwibWluLXNtYWxsXCIpKTsgXG4gIEBpZiBtZXRhLnR5cGUtb2YobWFwLWdldCgkYnJlYWtwb2ludHMsIFwibWluLXNtYWxsXCIpKSA9PSAnbnVsbCcgIHtcbiAgICAkYnJlYWtwb2ludHMgOiBtYXAucmVtb3ZlKCRicmVha3BvaW50cywgXCJtaW4tc21hbGxcIik7IFxuICB9XG59XG5cbkBpZiBtYXAuaGFzLWtleSgkYnJlYWtwb2ludHMsIFwic21hbGxcIikgeyBcbiAgJHNtYWxsIDogX2FkZC11bml0KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBcInNtYWxsXCIpKTsgXG4gIEBpZiBtZXRhLnR5cGUtb2YobWFwLWdldCgkYnJlYWtwb2ludHMsIFwic21hbGxcIikpID09ICdudWxsJyAge1xuICAgICRicmVha3BvaW50cyA6IG1hcC5yZW1vdmUoJGJyZWFrcG9pbnRzLCBcInNtYWxsXCIpOyBcbiAgfVxufVxuXG5AaWYgbWFwLmhhcy1rZXkoJGJyZWFrcG9pbnRzLCBcInNtYWxsLW1lZGl1bVwiKSB7IFxuICAkc21hbGwtbWVkaXVtIDogX2FkZC11bml0KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBcInNtYWxsLW1lZGl1bVwiKSk7IFxuICBAaWYgbWV0YS50eXBlLW9mKG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBcInNtYWxsLW1lZGl1bVwiKSkgPT0gJ251bGwnICB7XG4gICAgJGJyZWFrcG9pbnRzIDogbWFwLnJlbW92ZSgkYnJlYWtwb2ludHMsIFwic21hbGwtbWVkaXVtXCIpOyBcbiAgfVxufVxuXG5AaWYgbWFwLmhhcy1rZXkoJGJyZWFrcG9pbnRzLCBcIm1lZGl1bVwiKSB7IFxuICAkbWVkaXVtIDogX2FkZC11bml0KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBcIm1lZGl1bVwiKSk7IFxuICBAaWYgbWV0YS50eXBlLW9mKG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBcIm1lZGl1bVwiKSkgPT0gJ251bGwnICB7XG4gICAgJGJyZWFrcG9pbnRzIDogbWFwLnJlbW92ZSgkYnJlYWtwb2ludHMsIFwibWVkaXVtXCIpOyBcbiAgfVxufVxuXG5AaWYgbWFwLmhhcy1rZXkoJGJyZWFrcG9pbnRzLCBcIm1lZGl1bS1sYXJnZVwiKSB7IFxuICAkbWVkaXVtLWxhcmdlIDogX2FkZC11bml0KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBcIm1lZGl1bS1sYXJnZVwiKSk7IFxuICBAaWYgbWV0YS50eXBlLW9mKG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBcIm1lZGl1bS1sYXJnZVwiKSkgPT0gJ251bGwnICB7XG4gICAgJGJyZWFrcG9pbnRzIDogbWFwLnJlbW92ZSgkYnJlYWtwb2ludHMsIFwibWVkaXVtLWxhcmdlXCIpOyBcbiAgfVxufVxuXG5AaWYgbWFwLmhhcy1rZXkoJGJyZWFrcG9pbnRzLCBcImxhcmdlXCIpIHsgXG4gICRsYXJnZSA6IF9hZGQtdW5pdChtYXAtZ2V0KCRicmVha3BvaW50cywgXCJsYXJnZVwiKSk7IFxuICBAaWYgbWV0YS50eXBlLW9mKG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBcImxhcmdlXCIpKSA9PSAnbnVsbCcgIHtcbiAgICAkYnJlYWtwb2ludHMgOiBtYXAucmVtb3ZlKCRicmVha3BvaW50cywgXCJsYXJnZVwiKTsgXG4gIH1cbn1cblxuQGlmIG1hcC5oYXMta2V5KCRicmVha3BvaW50cywgXCJsYXJnZS1tYXhcIikgeyBcbiAgJGxhcmdlLW1heCA6IF9hZGQtdW5pdChtYXAtZ2V0KCRicmVha3BvaW50cywgXCJsYXJnZS1tYXhcIikpOyBcbiAgQGlmIG1ldGEudHlwZS1vZihtYXAtZ2V0KCRicmVha3BvaW50cywgXCJsYXJnZS1tYXhcIikpID09ICdudWxsJyAge1xuICAgICRicmVha3BvaW50cyA6IG1hcC5yZW1vdmUoJGJyZWFrcG9pbnRzLCBcImxhcmdlLW1heFwiKTsgXG4gIH1cbn1cblxuQGlmIG1hcC5oYXMta2V5KCRicmVha3BvaW50cywgXCJtYXhcIikgeyBcbiAgJG1heCA6IF9hZGQtdW5pdChtYXAtZ2V0KCRicmVha3BvaW50cywgXCJtYXhcIikpOyBcbiAgQGlmIG1ldGEudHlwZS1vZihtYXAtZ2V0KCRicmVha3BvaW50cywgXCJtYXhcIikpID09ICdudWxsJyAge1xuICAgICRicmVha3BvaW50cyA6IG1hcC5yZW1vdmUoJGJyZWFrcG9pbnRzLCBcIm1heFwiKTsgXG4gIH1cbn1cblxuLy8gTWFrZSBzdXJlIGFsbCB0aGUgdmFsdWVzIGluIHRoZSAkYnJlYWtwb2ludHMgbWFwIGhhdmUgdW5pdHNcblxuQGVhY2ggJGtleSwgJHZhbHVlIGluICRicmVha3BvaW50cyB7XG4gICRicmVha3BvaW50cyA6IG1hcC5zZXQoJGJyZWFrcG9pbnRzLCAka2V5LCBfYWRkLXVuaXQoJHZhbHVlKSk7IFxufVxuXG4vLy8gQnJlYWtwb2ludCBmdW5jdGlvblxuLy8vIEFjY2VwdHMgYSBzdHJpbmcgdG8gcHVsbCBmcm9tIHRoZSAkYnJlYWtwb2ludHMgbWFwIGlmIGl0IGV4aXN0c1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludCgkdmFsdWUpIHtcbiAgQGlmIG1ldGEudHlwZS1vZigkdmFsdWUpID09ICdzdHJpbmcnIHtcbiAgICBAaWYgbWFwLmhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkdmFsdWUpIGFuZCBtZXRhLnR5cGUtb2YobWFwLWdldCgkYnJlYWtwb2ludHMsICR2YWx1ZSkgIT0gbnVsbCkge1xuICAgICAgJHZhbHVlIDogbWFwLWdldCgkYnJlYWtwb2ludHMsICR2YWx1ZSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAd2FybiAnXCInICsgJHZhbHVlICsgJ1wiIGJyZWFrcG9pbnQgaGFzIG5vdCBiZWVuIGRlZmluZWQuIENoZWNrIHRoZSBydWxlcyB3aGVyZXZlciB5b3UgYXJlIHJlZ2lzdGVyaW5nIHlvdXIgXCJjcmVhdGUvYnJlYWtwb2ludHNcIiBoZWxwZXInO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIF9hZGQtdW5pdCgkdmFsdWUpO1xufVxuXG4vLy8gQnJlYWsgbWl4aW5zXG4vLy8gUmVkZWZpbmUgdGhlIGJyZWFrIG1peGlucyB3aXRoIG9uZXMgdGhhdCB1c2UgdGhlIGJyZWFrcG9pbnRzIGZ1bmN0aW9uIGZvciB2YWxpZGF0aW9uXG5cbkBtaXhpbiBvdXQoJGJyZWFrcG9pbnQpIHtcbiAgQGluY2x1ZGUgYnJlYWsub3V0KGJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGluKCRicmVha3BvaW50KSB7XG4gIEBpbmNsdWRlIGJyZWFrLmluKGJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGJldHdlZW4oJG1pbiwgJG1heCkge1xuICBAaW5jbHVkZSBicmVhay5iZXR3ZWVuKGJyZWFrcG9pbnQoJG1pbiksIGJyZWFrcG9pbnQoJG1heCkpIHtcbiAgICBAY29udGVudDtcbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8gSG92ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNob3ZlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQG1peGluIGhvdmVyKCRzZWxlY3RvciA6IG51bGwpIHtcbiAgQG1lZGlhICggaG92ZXIgOiBob3ZlciApIHtcbiAgICAmOmhvdmVyIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkc2VsZWN0b3Ige1xuICAgICYjeyRzZWxlY3Rvcn0geyBcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59Il19 */